fmql之驱动程序编写(首次)

看了正点原子的zynq系列的Linux开发指南(pdf和视频均有),因此从最简单的程序开始。

驱动程序开发:(第四期视频)

第3.1讲 我的第一个Linux驱动-字符设备驱动框架_哔哩哔哩_bilibili

学习驱动程序编写之前,要先学习uboot,kernel等内容(操作系统):(第三期视频)

第5.2讲 Uboot顶层Makefile分析-Makefile前期所作的内容_哔哩哔哩_bilibili

参考文章:

【Linux驱动】字符设备驱动模板(一)—— 驱动模块加载测试-CSDN博客

Linux驱动开发分为三种:

  • 字符驱动:不定长的字符传输
  • 块驱动:存储设备(定长字符传输)
  • 网络驱动

一种设备可以是上述一种或多种类型。如USB的wifi模块,就不只是网络驱动。

比较难,且比较多的是第一种,字符驱动。

因此,跟着视频一起来学习吧。

  1. 字符驱动
  • 新建.c文件,打开并编写程序。

驱动设备需要入口和出口函数:

module_init();    //驱动模块入口
module_exit();    //驱动模块出口

  •  新建Makefile文件

KERN_DIR为kernel源码的目录

运行make build

  • Failed

可能的原因:没有交叉工具编译;前期环境配置没弄好(见正点原子第三期视频)

        ARCH CROSSSOMPILE:arm_genueabihf_...

  • 后来先设置了patalinux(每个终端都要配置) ,就成功了:

进入petalinux安装目录:source setting.sh

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

SSH连接开发板,把.ko放到开发板ubuntu中,modprobe命令加载驱动

 

不止是要把chrdevbase.ko放到/lib/modules/4.14.55-fmsh20230801/目录下,还要把linux内核源码目录下生成的modules.builtinmodules.order也放到该路径下。

其中,4.14.55-fmsh20230801是kernel版本,输入uname -r即可查看。

modprobe和rmmod不报错了,但是没有打印printk。

printk打印无输出是的解决方法_printk没有输出-CSDN博客

MobaXterm连接的话仍然没有printk输出,但是:

VMware下的ubuntu通过串口连接,则有printk。

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

安装插件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值