自己写了个input_device模块,做个按键输入设备驱动的小测试。
request_irq 的时候老是提示 request_irq_err,
cat /proc/interrupts
发现我要注册的key2的中断号168被占用了。
找了一圈发现是linux启动的时候自动加载了一些模块,
lsmod 发现 buttons_drv.ko 这个模块自动加载的,嫌疑很大(我的是key2)
那么我要想办法把自启动模块给干掉。
在etc目录下面
[root@GEC6818 /]#cd /etc
[root@GEC6818 /etc]#ls
fstab hosts issue passwd profile.d services
group init.d mdev.conf pointercal protocols
hostname inittab mtab profile resolv.conf
启动 profile文件和init.d都是和linux系统启动加载相关的文件
cat profile文件
[root@inittab /]#cat /etc/profile
# Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; do //一大段巴拉巴拉 表示遍历整个profile.d 把里面所有shell脚本都执行一遍
if [ -r "$i" ]; then. $i
fi
unset i
done
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/lib:/usr/lib
USER="`id -un`"
LOGNAME=$USER
HOME=/root
PS1='[\u@\h \w]\#'
export USER LOGNAME HOME PS1 PATH LD_LIBRARY_PATH
export QTDIR=/usr/local/Qt-Embedded-5.7.0
export PATH=$QTDIR/bin:$PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=/usr/share/fonts
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
export QMLSCENE_DEVICE=softwarecontext
export QML2_IMPORT_PATH=$QTDIR/qml
ifconfig eth0 up
#source /IOT/driver_ko/insmod_driver.sh //对 我要找的就是这个 ,把他用#号注释掉(这是注释后的样子)
//这句的意思是 执行/IOT/IOT/driver_ko/insmod_driver.sh 脚本
./iot &
cd /
有兴趣也可以cat /IOT/driver_ko/insmod_driver.sh
DIR_PATH=/IOT/driver_ko
insmod $DIR_PATH/buttons_drv.ko // 对 就是 在 这里加载了 那个搞事情的buttons_drv.ko模块,也可以在这里#注释掉的
insmod $DIR_PATH/dc_motor.ko
insmod $DIR_PATH/gas_drv.ko
嗯 好啦 把脚本保存一下,重启板子,lsmod一看,原先自动加载的模块都没了,可以正常申请KEY2的 IRQ中断了。
哈哈哈哈! 就是这样。