使用Qemu模拟Arm处理器,加载第一个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时也显示未加载任何驱动。