栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

字符设备驱动

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符设备驱动

MCU中设备驱动程序

在基于MCU的普通嵌入式驱动程序开发中,并不会经常接触到鼠标、键盘、硬盘这一类的设备,多数是一些较为简单的传感器设备、小容量的存储设备等等,通常数据的传输使用的是spi、i2c、串口这一类的串行通信协议,通常一个设备驱动程序的开发就是这样的流程:

数据传输层,一般在MCU上集成相应的硬件控制器,配置寄存器即可数据处理层,根据收发的数据对数据进行解析,然后控制设备做相应处理。

linux设备驱动程序

编译

编译这个程序,我们都知道,linux下编译程序一般使用make工具(简单的程序可以直接命令行来操作),以及一个Makefile文件,在内核开发中,Makefile并不像应用程序那样,而是经过了一些封装,我们只需要往其中添加需要编译的目标文件即可:

obj-m+=hello_world.o
all:
        make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
        make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean

其中hello_world.o就是目标文件,make工具会根据目标文件自动推导来编译hello_world.c文件。

加载

编译生成了内核文件,接下来就要将其加载到内核中,linux支持动态地添加和删除模块,所以我们可以直接在系统中进行加载:

sudo insmod hello_world.ko

我们可以通过lsmod命令来检查模块是否被成功加载:

 

我们也可以卸载这个模块:

sudo rmmod hello_world.ko  

printk属于内核函数,它与printf在实现上唯一的区别就是printk可以通过指定消息等级来区分消息输出,在在这里,printk输出的消息被输出到/var/log/kern.log文件中,我们可以通过另开一个终端来查看内核日志消息:

tail -f /var/log/kern.log

 

tail -f表示循环读取/var/log/kern.log文件中的消息并显示在当前终端中,这样我们就可以在终端查看内核中printk输出的消息。

如果你不想重新开一个终端来显示内核日志,希望直接显示在当前终端,你可以这样做:

tail -f /var/log/kern.log &

后面的内容再加 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757109.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号