一、前言
今日收获颇多,抓紧机会写上调试心得,否则日后又忘记了
本编文章介绍加载驱动的方式,亲测可用,可能还有更好的方式,欢迎补充
二、环境
window10
全志A40i
linux3.10
三、正文
总共总结了3种方式加载驱动ko文件,编译进入内核的这里不介绍,只说明广义上的手动加载驱动的方式
将驱动放入到目标机器中,共有开机自动加载,开机手动加载,和执行某个程序在加载3种
1.开机自动加载(飞凌配套源码。全志A40i。)
在rcS文件中加入如下
#指向开发环境中需要在开发板中执行的驱动路径
TS_MODULE=`cat /etc/init.d/autorun_drv`
#加载驱动文件
insmod ${TS_MODULE}
然后在rcS同级放入文件auto_config_drv,文件内容为/system/vendor/modules/gt9xxnew_ts.ko
这种方式有个缺点就是每次不同的驱动需要修改rcS文件,而且一个命令只能加载一个驱动
改进如下
#指向开发环境中需要在开发板中执行的驱动路径
#TS_MODULE=`cat /etc/init.d/autorun_drv`
#加载驱动文件
#insmod ${TS_MODULE}
sh /etc/init.d/autorun_drv
注释掉原来改为使用脚本去加载,自动调用脚本名称仍为auto_config_drv
脚本内容为
#!/bin/sh
insmod /system/vendor/modules/gt9xxnew_ts.ko &
insmod /system/vendor/modules/gt9xxnew_ts1.ko &
insmod /system/vendor/modules/gt9xxnew_ts2.ko &
insmod /system/vendor/modules/gt9xxnew_ts3.ko &
这种方式的好处是每次不用修改rcS文件,只改脚本auto_config_drv内的驱动名称和数量即可。
2.通过应用程序加载(qt程序)
在已知目标机的驱动路径后,使用system("insmod /xxx/xxx/xxx.ko");函数去加载驱动
3.手动加载驱动
- modinfo linux_test.ko查看内核模块信息
- lsmod查看当前已经加载的内核模块
- insmod linux_test.ko加载内核模块到内核中
- rmmod linux_test.ko卸载内核模块
- dmesg查看日志信息
- dmesg -c清除日志信息