IMX6ULL开发笔记(二)解决字符设备驱动加载失败问题
驱动开发篇字符设备驱动加载失败问题解决
一、前言
在正点原子嵌入式Linux开发板驱动开发——Linu新字符设备驱动实验中,发现出现如下报错,字符设备驱动加载失败,报错信息如下图所示,为解决该问题,特写下此博客进行记录、总结。
二、开发环境及开发板
开发环境:Ubuntu22.04
开发板:正点原子阿尔法开发板
三、问题描述
字符设备驱动加载失败,报错信息如上
四、问题原因
内核版本与模块版本不一致
五、解决方法
(1)重新编译内核
./mx6ull_alientek_emmc.sh
(2)找到设备树和zImage,并复制到nfs和tftpboot下
(3)修改Makefile和驱动文件,改成你所修改源码的路径
(4)编译,并拷贝.ko文件到开发板
sudo cp newchrled.ko /home/***/linux/nfs/rootfs/lib/modules/4.1.15/ -rf
(5)重启开发板,进入指定目录
进入到目录 lib/modules/4.1.15 中,输入如下命令加载 newchrled.ko 驱动
模块:
depmod //第一次加载驱动的时候需要运行此命令
加载驱动使用如下命令:
modprobe newchrled.ko //加载驱动
驱动加载成功以后会输出申请到的主设备号和次设备号。驱动加载成功以后会自动在/dev 目录下创建设备节点文件/dev/newchrdev,输入如下命令查看/dev/newchrdev 这个设备节点文件是否存在:
ls /dev/newchrled -l
结果如图所示:
/dev/newchrled 这个设备文件存在,而且主设备号为 249,此设备号为 0,说明设备节点文件创建成功。
输入命令:
./ledApp /dev/newchrled 1 //打开 LED 灯
开发板LED灯亮起,问题成功解决,从而便于后续开发。