看了正点原子的zynq系列的Linux开发指南(pdf和视频均有),因此从最简单的程序开始。
驱动程序开发:(第四期视频)
第3.1讲 我的第一个Linux驱动-字符设备驱动框架_哔哩哔哩_bilibili
学习驱动程序编写之前,要先学习uboot,kernel等内容(操作系统):(第三期视频)
第5.2讲 Uboot顶层Makefile分析-Makefile前期所作的内容_哔哩哔哩_bilibili
Linux驱动开发分为三种:
- 字符驱动:不定长的字符传输
 - 块驱动:存储设备(定长字符传输)
 - 网络驱动
 
一种设备可以是上述一种或多种类型。如USB的wifi模块,就不只是网络驱动。
比较难,且比较多的是第一种,字符驱动。
因此,跟着视频一起来学习吧。
- 字符驱动
 
- 新建.c文件,打开并编写程序。
 
驱动设备需要入口和出口函数:
module_init();    //驱动模块入口
module_exit();    //驱动模块出口 

- 新建Makefile文件
 
KERN_DIR为kernel源码的目录。
运行make build

- Failed
 

可能的原因:没有交叉工具编译;前期环境配置没弄好(见正点原子第三期视频)
ARCH CROSSSOMPILE:arm_genueabihf_...
- 后来先设置了patalinux(每个终端都要配置) ,就成功了
 
进入petalinux安装目录:source setting.sh


make编译成功了,生成了.ko可执行文件:

P.S 我用的软件是VScode,安装方式如下:

安装插件:
 
 VS Code常用插件安装及使用_vscode支持arm汇编语法高亮插件-CSDN博客 
                

















