以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。

十五、将驱动添加到内核中

1、驱动的存在形式

(1)野生,优势是方便调试开发,所以在开发阶段都是这种;

(2)家养,优势可以在内核配置时make menuconfig决定内核怎么编译,方便集成。比如DM9000已经集成在内核中了,可以在menuconfig时配置。

2、驱动开发的一般步骤

(1)以模块的形式在外部编写、调试;

(2)将调试好的驱动代码集成到kernel中

3、实践

(1)关键点:Kconfig、Makefile、make menuconfig

(2)操作步骤

  • 第1步:将写好的驱动源文件放入内核源码中正确的目录下;比如led的驱动,应该放在/drivers/leds/目录下;
  • 第2步:/drivers/leds/目录下,在Makefile中添加相应的依赖;
  • 第3步:在Kconfig中添加相应的配置项;(因为make menuconfig的原理是读取Kconfig中的信息,这里要显示对应的配置项目,则需要添加相应内容)
  • 第4步:make menuconfig;(以y为示例,此时会被编译进去;若以M,则不会被编译进去,而是被编译成单独的模块;若以N,则不被编译。)

第2步:

第3步:

第4步:

选择y之后,保存,然后在.config文件中会有如下的宏

结果如下:

十六、目录和文件结构

mach-s5pv210/gpiolib.c s5pv210_gpiolib_init

mach-s5pv210/include/mach/gpio.h#define S5PV210_GPA0(_nr)(S5PV210_GPIO_A0_START + (_nr))

arch/arm/plat-samsung/gpiolib.c里面是210/6410这种4bit CON寄存器类型的操作方法

arch/arm/plat-samsung/gpio.c里面是24XX这种2bit CON寄存器类型的操作方法

drivers/gpio/gpiolib.c里面是内核开发者提供的gpiolib的驱动框架部分

驱动框架8——将驱动集成到内核中相关推荐

  1. Linux驱动框架之framebuffer驱动框架

    1.什么是framebuffer? (1)framebuffer帧缓冲(一屏幕数据)(简称fb)是linux内核中虚拟出的一个设备,framebuffer向应用层提供一个统一标准接口的显示设备.帧缓冲 ...

  2. 驱动框架5——基于驱动框架写led驱动

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 五.基于驱动框架写led驱动1 1.分析 (1)参考哪里?  drivers/leds/leds-s3c24xx. ...

  3. Linux SPI驱动框架(2)——控制器驱动层

    SPI控制器驱动层   上节中,讲了SPI核心层的东西,这一部分,以全志平台SPI控制器驱动为例,对SPI控制器驱动进行说明. SPI控制器驱动,即SPI硬件控制器对应的驱动,核心部分需要实现硬件SP ...

  4. Linux SPI驱动框架(3)——设备驱动层

    SPI设备驱动层   Linux SPI驱动框架(1)和(2)中分别介绍了SPI框架中核心层,和控制器驱动层.其实实际开发过程中,不是IC原厂工程师比较少会接触控制器驱动层,设备驱动层才是接触比较多的 ...

  5. linux用户空间flash驱动,全面掌握Linux驱动框架——字符设备驱动、I2C驱动、总线设备驱动、NAND FLASH驱动...

    原标题:全面掌握Linux驱动框架--字符设备驱动.I2C驱动.总线设备驱动.NAND FLASH驱动 字符设备驱动 哈~ 这几天都在发图,通过这种方式,我们希望能帮大家梳理学过的知识,全局的掌握Li ...

  6. linux内核网络驱动框架(linux驱动开发篇)

    网络驱动的核心: 1.就是初始化 net_device 结构体中的各个成员变量, 2.然后将初始化完成以后的 net_device 注册到 Linux 内核中 1.网络设备(用net_device结构 ...

  7. linux pcie驱动框架_Linux设备驱动框架设计

    引子 Linux操作系统的一大优势就是支持数以万计的芯片设备,大大小小的芯片厂商工程师都在积极地向Linux kernel提交设备驱动代码.能让这个目标得以实现,这背后隐藏着一个看不见的技术优势:Li ...

  8. linux iio 设备驱动,FS4412开发板使用Linux IIO驱动框架实现ADC驱动

    1.概述 FS4412开发板有一个4通道(0/1/2).10/12比特精度的 ADC ,其中: 1)ADCIN0: 在核心板中引出 2)ADCIN1: 在核心板中引出 3)ADCIN2: 在核心板中引 ...

  9. 基于简单字符设备驱动框架编写代码驱动io_2

    更具体步骤查看: https://blog.csdn.net/oNelson123/article/details/110726961 https://blog.csdn.net/qq_2825888 ...

最新文章

  1. Spring Cloud【Finchley】-11Feign项目整合Hystrix监控
  2. Popular Cows POJ - 2186(tarjan算法)+详解
  3. 已知函数func的C语言代码框架,第三章习题-ddg..doc
  4. Hadoop核心生态
  5. python语言中的缩进是什么意思_python编程中的缩进是什么意思
  6. PHP中的simplehtmldom学习
  7. PhpSpreadsheet 生成圆饼图
  8. java开发微信公众号支付全流程
  9. 使用xftp怎么向服务器传输文件,如何使用文件传输软件Xftp
  10. 【理解】运用数据透视表制作三栏账
  11. 比特大陆“众叛亲离”?
  12. 动物生存竞争对投资的启示!
  13. 暗黑破坏神3 夺魂之镰曝光“威斯特玛”城背景
  14. c++开平方sqrt
  15. python练习实例——字母图形
  16. 国惠光电短波红外相机资料下载
  17. 大数据学习之Linux服务器常用命令
  18. GB编码,汉字在编译器中数值
  19. .NET 中的 Encoding 编码
  20. STM8读取AD值偶尔跳变出错的问题

热门文章

  1. Django补充知识点——用户管理
  2. Algs4-1.4.18数组的局部最小元素
  3. vmware workstation17环境安装centos7
  4. JAR——pinyin4j-2.5.0
  5. 独家 | 一文读懂自然语言处理NLP(附学习资料)
  6. POJ1274 The Perfect Stall(二分图)
  7. jQuery EasyUI使用教程之基本的拖放
  8. 我的Android进阶之旅------Android利用温度传感器实现带动画效果的电子温度计
  9. 【学习笔记】在storyboard中给TabViewController添加tab页面
  10. wampServer2.1错误(Could not execute menu item (internal error)