- 若该文为原创文章,未经允许不得转载
- 风释雪
- QQ:627833006
- E-mail:hn.cy@foxmail.com
- CSDN博客地址:https://blog.csdn.net/weixin_46718879
目录
1.版本说明
Data | Author | Version Revision |
---|---|---|
2021/01/19 | abner | 1.0 初定版本 |
2.概要
- 本教程需要使用PetaLinux创建内核驱动代码,同时在修改内核驱动代码之后,使用PetaLinux编译为.ko文件,最终在硬件上运行;
- 本教程所需要的硬件平台上,实际运行的为ubuntu文件系统,因此缺少必要的/lib/modules/* 文件夹,需要手动创建;
3.命令
petalinux-create -t modules -n <module-name> --enable
petalinux-build -c <module-name>
4.示例
4.1.创建PetaLinux的helloworld驱动代码;
petalinux-create -t modules -n helloworld --enable
4.2.编译驱动代码
petalinux-build -c helloworld
4.3.从PetaLinux工程目录中找到 helloworld.ko
实际目录
:./工程目录/build/tmp/sysroots-components/zynqmp_generic/helloworld/lib/modules/5.4.0/extra/
helloworld.ko
4.4.拷贝到嵌入式设备运行
scp *.ko root@192.168.0.100:/mnt
scp *.ko root@192.168.1.138:/lib/modules/5.4.0/extra/
注意:第一次在嵌入式设备上复制.ko文件的时候可能缺少 /lib/modules 所需要的所有文件夹,需要手动拷贝!!!!!
手动拷贝来源: PetaLinux编译生成的rootfs.tar.gz解压后 从 /lib/modules下全部原封不动的拷贝过来
不同PetaLinux版本,可能/lib/nodules/下的版本还不一样,需要参考 上文中提到的实际目录来创建
4.5.加载驱动
insmod helloworld.ko
4.6.查看各类信息命令
lsmod : 查看当前系统中存在的模块
cat /proc/devices : 查看当前占用了的主设备号,从中可以找出自己的驱动模块
4.7.创建设备节点
mknod /dev/<节点名称> <c:字符设备> <主设备号> <次设备号>
示例:
mknod /dev/helloworld c 200 0
通过 ls /dev/ 可以查看到 /dev目录下产生了 /dev/helloworld字符型文件
4.8.卸载驱动
rmmod helloworld.ko