UIO Kernel Driver with Buildroot and QEMU

Greg KH greg at kroah.com
Tue Oct 20 18:54:04 EDT 2015


On Tue, Oct 20, 2015 at 11:58:21AM -0400, Kenneth Adam Miller wrote:
> So I'm building a uio kernel driver with buildroot, and I've gotten the driver
> to compile, installed it and can insmod it in the final buildroot target after
> booting the image with QEMU.
> 
> I'm on linux kernel version 3.14, and I followed the guide here:
> 
> https://www.kernel.org/doc/htmldocs/uio-howto/userspace_driver.html
> 
> And it describes the location on where the device file that should be opened by
> userland code as either one of two locations:
> 
> /dev/uioX, with X being a number
> 
> or /sys/class/uio/uioX
> 
> But the each of following returns nothing:
> 
> ls /dev/uio*
> ls /sys/class/uio/
> 
> After I compile the uio example that is provided in the linux source at source/
> drivers/uio/uio.c and uio_dmem_genirq.c, and insmod them, I do modprobe uio and
> modprobe uio_dmem_genirq and each of those return nothing. However, I do see
> that /sys/modules/uio and /sys/modules/uio_dmem_genirq 

uio.ko is the uio "core", you need a uio driver in order to actually use
it.

uio_dmem_genirq is a uio driver, have you added the needed device tree
entries to have it actually create a device for you?  Without them, this
driver can not find any hardware to bind to, and as such, no device node
will ever be created.

I would suggest reading the UIO documentation, it should explain all of
this for you already.  If not, specific questions are always gladly
answered.

thanks,

greg k-h



More information about the Kernelnewbies mailing list