Linux_网蜂ARM Cortex-A8学习笔记_Linux驱动篇

14 篇文章 2 订阅

第七部分:Linux驱动篇

7.1 初识Linux驱动

Linux 驱动类型主要包括字符设备驱动、块设备驱动、网络驱动。
仔细数来有: LED 驱动、按键驱动、 鼠标驱动、 ADC 驱动、 RTC 驱动、 PCI 驱动、触摸屏驱动、 LCD 驱动、 FLASH 驱动、 SD 卡驱动、网卡驱动、 I2C 驱动、音频驱动、 USB 设备驱动、 WIFI 驱动……等等
Linux操作系统从上到下,可以分为:用户应用程序、库、内核、驱动程序。
Linux驱动系统框架图如下:

7.2 搭建Linux驱动编写环境

开发驱动的过程中,最常用 的就是 NFS 文件系统,也就是网络文件系统,通过网络来实现文件在 PC 和开 发板端互访。

7.3 第一个Linux驱动

7.3.2如何加载Linux驱动到内核
1. 手工加载, 驱动作为模块使用 insmod 命令加载到内核。
2. 配置某个目录下的 Kconfig 和 Makefile,然后 make menuconfig 来配置。
一般来说,开发过程中经常使用的是方法 1,对于方法 2 是出厂的时候用的 比较多。

7.3.3  Linux驱动哪些部分是必须的
1、模块入口函数
举例:static int __init Webee210_hello_init(void)
__init 表示用__init 修饰过的函数仅仅在初始化期间内有效,在模块被加载之 后,即 insmod 之后,模块装器就会将初始化函数丢弃,之后任何函数也没有办 法调用初始化函数,因为该函数已经从内存中释放出来。 __exit 同理。
2、模块出口函数
举例:static void __exit Webee210_hello_exit(void)
3、模块许可证说明
4、模块参数,模块作者(可选)

在驱动的世界里,大部分函数都会冠以static关键字,它表示该函数只能在本文件内使用,其他文件的函数不能调用它。 如果其他文件需要调用,那就使用下面的两种方法来导出函数:
EXPORT_SYMBOL(name)
或者
EXPORT_SYMBOL_GPL(name)

7.3.4.2 通用的Makefile
ifneq ($(KERNELRELEASE),)
obj-m := webee210_hello.o
else
KDIR := /home/webee210v2/linux-3.8_webee210v2
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm
CROSS_COMPILE=arm-linuxclean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
/* 需要补充Makefile的语法知识 */
7.3.4.3 Hello驱动的编译
7.3.4.4 Hello驱动测试
7.3.5 内核配置驱动
驱动模块也能像配置菜单那样,将驱动配置到内核,通过修改Konfig和Makefile即可。
1)拷贝hello.c到Linux源码的drivers/char目录下
2)修改drivers/char目录下的Konfig。
config Webee210_HELLO
    tristate "Webee210 Hello Driver"
    depends on ARCH_S5PV210
    help
        This is Webee210 first driver for hello.
3) 修改drivers/char目录下的Makefile
obj-$(CONFIG_ATARI_DSP56K) += hello.o
4)回到Linux源码的根目录,使用make menuconfig命令进行配置。
保存配置后,如保存为<M>,即以模块方式加载进内核,如果保存 为<*>,表示编译进内核。

后面几个章节的内容,等我打好C语言,数据结构, Makefile语法等嵌入式软件基础知识后再来看。

7.4 Linux字符设备驱动之LED驱动
7.5 Linux字符设备驱动之按键驱动
7.6 Linux高级字符设备驱动
7.7 Linux输入子系统
7.8 Linux平台总线驱动设备模型
7.9 Linux LCD设备驱动
7.10 Linux USB主机控制器和设备驱动
7.11 Linux NAND FLASH驱动
7.12 Linux网络设备驱动
7.13 Linux电容式触摸屏驱动
7.14 Linux USB摄像头驱动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值