In Module 07, you created the PetaLinux software platform with a custom DTSI file that listed out the generic UIO drivers for each PL kernel instance. Each UIO driver in the DTSI file has the same name as each PL kernel instance name specified in the config_2regslice.ini
file in Module 04.
One of the first things the host application does is bind the UIO drivers to the PL kernels. It searches for the UIO devices in the system for the known PL kernel names. This is done by calling the dlbf_assign_addr
and ulbf_assign_addr
functions defined in the src/utils/utils_dlbf.cpp
and src/utils/utils_ulbf.cpp
files.
These functions call the mmap
function to bind the physical address of the PL kernels to a memory pointer. The host application uses the memory pointer to access the register maps of the PL kernels.