使用Qemu模拟Arm处理器,加载第一个Linux驱动
文章标签:
linux打印机驱动
使用Qemu模拟Arm处理器,下载第一个Linux驱动到模拟板讲述了如何下载一个ko文件(hellodriver.ko)到模拟板,这一篇就演示如何将这个驱动加载到Linux系统里。
首先在乌班图主机上运行run-nolcd.sh,将模拟Arm地虚拟机运行起来,出现提示符#。
lsmod可以列出当前加载的驱动,我们看一下命令运行结果。
h@ub2004:~/linuxQemuEvb/linux-work/aqemu$ ./run-nolcd.sh
Please press Enter to activate this console. / #
/ # lsmod
/ #
可见没有加载任何驱动。我们看看以前下载的hellodriver.ko是否存在,上篇已经下载到/lib/modules目录。
# ls -l /lib/modules
-rw-r--r-- 1 root 0 85584 Jul 31 01:53 hellodriver.ko
可以看到该驱动已经保存在/lib/modules目录里。我们可以通过insmod命令加载,加载过程会输出日志(参考使用Qemu模拟Arm处理器,开发第一个Linux驱动程序里的源码),hellodriver.c 里的printk("HanJ %s %s\n" , __FILE__ , __func__ ) 语句,输出两个字符串,__FILE__会被编译成这个源文件的文件名,__func__会编译出函数名。使用lsmod也列出了hellodriver驱动。
/ # insmod /lib/modules/hellodriver.ko
HanJ drivers/hellodriver/hellodriver.c hellodriver_init
/ # lsmod
hellodriver 16384 0 - Live 0x7f000000
/ #
最后我们可以使用rmmod将它卸载。
/ # rmmod hellodriver
HanJ drivers/hellodriver/hellodriver.c hellodriver_exit
/ # lsmod
/ #
可以看到卸载时会调用hellodriver_exit函数,输出了文件名和函数名。lsmod时也显示未加载任何驱动。