嵌入式驱动及2440添加驱动

1.关于驱动

驱动作用为承接应用层与底层硬件设备工作的桥梁。
逐条理解:
应用层的应用通俗讲,就是有功能的函数。这些函数实现执行起来由C库进行。
C库和应用均属于应用层。
应用程序调用硬件设备接口时需要进入系统内核。此处内核即为Linux内核。
驱动也属于内核的一部分。
应用层的应用实现功能实质是执行SWI(软件中断)指令。
应用的中断发出后,内核中的系统调用接口根据中断原因调用对应的处理函数。
处理函数发出后,在虚拟文件系统,会根据需求找到对应的驱动程序。
驱动程序最终驱动硬件,满足应用功能。
整体系统框图如下:
驱动原理框图

2.系统添加驱动

1.依据需求编写驱动程序
驱动程序实质就是函数。编写个main函数“HELLO WORLD”也可以。
TQ2440内核源码放在drivers/char/目录下。

2.内核源码中添加对驱动支持
驱动编写完成,修改drivers/char/目录下的Kconfig文件。
menu “Character devices” 后添加
config XXXX(驱动文件名)
tristate “YYYY(驱动名)”
dephends on ARCH_S3C2440
help
YYYY.
完成后修改makefile文件
obj-y下一行添加
obj-$(CONFIG_YYYY) += XXXX.o

注:
Kconfig: 内核源码中每一级目录下都会有Kconfig,其中的menu对应make menucofig中的每一个选项, source表示该目录框架下所包含各个目录或文件的 Kconfig,由此构成了menuconfig
当目录是最底层目录时,Kconfig如下
tristate表示配置选项的可选参数有三种,即是否编译进内核”*” 编译成模块”M”不编译”[]”
default y表示默认是编译进内核的
menuconfig: 由scripts工具和Kconfig构成的图形配置界面, 通过它生成.config文件

3.配置内核
在Linux系统中执行 #make menuconfig 进行配置添加自己的驱动程序描述,这里在其前选择M。
TQ2440配置为:
Device Drives
Character devices
TQ2440 xxxx(名称)
完成后使用命令 #make SUBDIR=drives/char/ mmodules, 编译出驱动模块,一般在目录 drivers/char/ 目录下。将其命名为 xxxx.ko(xxxx同前面配置时名称一致)。将文件复制到嵌入的Linux系统中 ,加载、卸载驱动程序:
#insmod xxxx.ko
#rmmod xxxx.ko
将生成的xxxx.ko文件复制到/lib/ 目录下,重新制作文件镜像。

参考:https://blog.csdn.net/tiger15605353603/article/details/81323848

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值