【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核
【平台设备驱动机制的编程流程】

【如何将驱动静态的编译进内核镜像】
1.添加资源(dev-led.c)
1.1:一般来说,系统习惯上将资源放在arch/arm/plat-samsung/目录中
cp dev-led.c linux-2.6.35.5/arch/arm/plat-samsung
cp led.h linux-2.6.35.5/arch/arm/plat-samsung/include/plat
1.2:修改dev-led.c文件
.flags ,
.num_resources =ARRAY_SIZE(fsled_resource),
.resource =fsled_resource,
};
1.3:进入linux-2.6.35.5/arch/arm/plat-samsung/目录,修改其中的Makefile
vi Makefile
在其中添加如下代码
1.4:修改linux-2.6.35.5/arch/arm/plat-samsung/目录下的Kconfig
vi Kconfig
在其中添加如下代码
bool
help
Compile in platform device definitions for LED code
1.5:修改linux-2.6.35.5/arch/arm/mach-s5pc100/目录下的Kconfig
vi arch/arm/mach-s5pc100/Kconfig
bool "SMDKC100"
select CPU_S5PC100
select S3C_DEV_FB
select S3C_DEV_I2C1
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_HSMMC2
select S5PC100_SETUP_FB_24BPP
select S5PC100_SETUP_I2C1
select S5PC100_SETUP_SDHCI
select S3C_DEV_LED //新添加的代码
1.6 修改linux-2.6.35.5/arch/arm/mach-s5pc100/mach-smdkc100.c文件
vi arch/arm/mach-s5pc100/mach-smdkc100.c
修改下面的数组:
&s3c_device_i2c0,
&s3c_device_i2c1,
&s3c_device_fb,
&s3c_device_hsmmc0,
&s3c_device_hsmmc1,
&s3c_device_hsmmc2,
&smdkc100_lcd_powerdev,
&s5pc100_device_iis0,
&s5pc100_device_ac97,
#ifdef CONFIG_DM9000
&s5pc100_device_dm9000,
#endif
&fsled_device, //添加的选项,让系统完成初始化
};
1.7 修改linux-2.6.35.5/arch/arm/plat-samsung/include/plat/devs.h
vi arch/arm/plat-samsung/include/plat/devs.h
在其中添加如下代码:
2.添加驱动(led_drv.c)
2.1 cp led_drv.c linux-2.6.35.5/drivers/leds/目录
2.2 修改linux-2.6.35.5/drivers/leds/的Makefile
vi linux-2.6.35.5/drivers/leds/Makefile
在其中添加如下代码:
2.3 修改linux-2.6.35.5/drivers/leds/的Kconfig
vi linux-2.6.35.5/drivers/leds/Kconfig
在其中添加如下代码:
tristate "LED Support for farsight"
depends on ARCH_S5PC100
help
this is a led drv by farsight
2.4 配置选项
make menuconfig
Device Drivers --->
[*] LED Support --->
<*> LED Support for farsight
3.编译内核
make zImage
@成鹏致远
(email:wwwlllll@126.com)
(qq:552158509)
【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核的更多相关文章
- Linux Platform devices 平台设备驱动
设备总线驱动模型:http://blog.csdn.net/lizuobin2/article/details/51570196 本文主要参考:http://www.wowotech.net/devi ...
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
转载自:http://www.kancloud.cn/yueqian_scut/emlinux/106829 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sy ...
- [kernel]字符设备驱动、平台设备驱动、设备驱动模型、sysfs几者之间的比较和关联
转自:http://www.2cto.com/kf/201510/444943.html Linux驱动开发经验总结,绝对干货! 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动 ...
- 【Linux高级驱动】linux设备驱动模型之平台设备驱动机制
[1:引言: linux字符设备驱动的基本编程流程] 1.实现模块加载函数 a.申请主设备号 register_chrdev(major,name,file_operations); b.创 ...
- Linux中总线设备驱动模型及平台设备驱动实例
本文将简要地介绍Linux总线设备驱动模型及其实现方式,并不会过多地涉及其在内核中的具体实现,最后,本文将会以平台总线为例介绍设备和驱动程序的实现过程. 目录: 一.总线设备驱动模型总体介绍及其实现方 ...
- 嵌入式Linux驱动学习之路(十七)驱动程序分层分离概念-平台设备驱动
平台设备驱动: 包含BUS(总线).DEVICE.DRIVER. DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表. ①把device放入bu ...
- Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)
Linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述.换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要 ...
- Linux与Windows的设备驱动模型对比
Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...
- Linux学习 : 总线-设备-驱动模型
platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.Linux 2.6的设备驱动模型中,把I2C.RTC.LCD等都归纳为pl ...
随机推荐
- 洛谷 P1433 吃奶酪【DFS】+剪枝
题目链接:https://www.luogu.org/problemnew/show/P1433 题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处 ...
- java注解的概念理解
1. 注解(标注)概念:从字面意思理解是对被标注的对象(类,接口,枚举,注解类,方法,参数)的一个标记,有这个标记有什么用呢?就像学习中“划重点”的方式一样,被标记的对象肯定是特殊需要特别关照的对象, ...
- 关于文档模式、DCOTYPE声明及严格模式
1.文档模式 文档模式的概念是由IE5.5引入,通过使用文档类型(DOCTYPE)切换实现的.不同的文档模式主要影响CSS内容的呈现,尤其是浏览器对盒模型的解析,但在某些情况下也会影响到JavaScr ...
- Bootstrap 图片
摘要: Bootstrap框架对图片样式的支持. <img>类 Bootstrap 提供了对图片应用简单样式的 class. .img-rounded:添加 border-radius:6 ...
- 每日踩坑 2019-04-08 VS2015未能找到路径“…\bin\roslyn\csc.exe”的解决方案
使用 Nuget 安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 包即可. VS2017都是用 roslyn 编译, VS2015原本的编译 ...
- 51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)
题目链接 \(Description\) \(n\leq 10^{10}\),求 \[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\ mod\ (1e9+7)\] \(Soluti ...
- crm 中使用的Django方法
. 通过ChangeList封装好多数据 . 销售中公共资源:Q查询,3天 15天 . 使用yield实现 - 生成器函数,对数据进行加工处理 - __iter__和yield配合 . 获取Model ...
- 使用pickle模块存储对象
import time import hashlib import pickle import os class Info(): def __init__(self): self.create_tim ...
- rabbitmq使用方法(二)
Work Queues In the first tutorial we wrote programs to send and receive messages from a named queue. ...
- React系列文章:无状态组件生成真实DOM结点
在上一篇文章中,我们总结并模拟了JSX生成真实DOM结点的过程,今天接着来介绍一下无状态组件的生成过程. 先以下面一段简单的代码举例: const Greeting = function ({name ...