【平台设备驱动机制的编程流程】

【如何将驱动静态的编译进内核镜像】

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
    在其中添加如下代码

obj-$(CONFIG_S3C_DEV_LED)       += dev-led.o //新添加的

1.4:修改linux-2.6.35.5/arch/arm/plat-samsung/目录下的Kconfig
    vi Kconfig
    在其中添加如下代码

config S3C_DEV_LED     //此处一点要跟上面的S3C_DEV_LED一样
         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

config MACH_SMDKC100
          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
    修改下面的数组:

static struct platform_device *smdkc100_devices[] __initdata = {
         &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
    在其中添加如下代码:

extern struct platform_device fsled_device;

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
    在其中添加如下代码:

obj-$(CONFIG_LEDS_S5PC100)              += led_drv.o

2.3 修改linux-2.6.35.5/drivers/leds/的Kconfig
    vi linux-2.6.35.5/drivers/leds/Kconfig
    在其中添加如下代码:

config LEDS_S5PC100
          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高级驱动】平台设备驱动机制的编程流程与编译进内核的更多相关文章

  1. Linux Platform devices 平台设备驱动

    设备总线驱动模型:http://blog.csdn.net/lizuobin2/article/details/51570196 本文主要参考:http://www.wowotech.net/devi ...

  2. 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

    转载自:http://www.kancloud.cn/yueqian_scut/emlinux/106829 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sy ...

  3. [kernel]字符设备驱动、平台设备驱动、设备驱动模型、sysfs几者之间的比较和关联

    转自:http://www.2cto.com/kf/201510/444943.html Linux驱动开发经验总结,绝对干货! 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动 ...

  4. 【Linux高级驱动】linux设备驱动模型之平台设备驱动机制

    [1:引言: linux字符设备驱动的基本编程流程] 1.实现模块加载函数  a.申请主设备号    register_chrdev(major,name,file_operations);  b.创 ...

  5. Linux中总线设备驱动模型及平台设备驱动实例

    本文将简要地介绍Linux总线设备驱动模型及其实现方式,并不会过多地涉及其在内核中的具体实现,最后,本文将会以平台总线为例介绍设备和驱动程序的实现过程. 目录: 一.总线设备驱动模型总体介绍及其实现方 ...

  6. 嵌入式Linux驱动学习之路(十七)驱动程序分层分离概念-平台设备驱动

    平台设备驱动: 包含BUS(总线).DEVICE.DRIVER. DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表. ①把device放入bu ...

  7. Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)

    Linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述.换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要 ...

  8. Linux与Windows的设备驱动模型对比

    Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...

  9. Linux学习 : 总线-设备-驱动模型

    platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.Linux 2.6的设备驱动模型中,把I2C.RTC.LCD等都归纳为pl ...

随机推荐

  1. PHP函数之array_chunk

    有时候需要对数组进行按分页处理,之前的做法是计算出数组大小,按分页计算出偏移量,再从起始偏移量处开始遍历页大小个数据.现在不用这么麻烦了,原来PHP函数里有个现成的函数array_chunk可以配合我 ...

  2. html5 选择多张图片在页面内预览并上传到后台

    版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/huangxin112/article/details/74956462 需求:点击选择图片(可选多张) ...

  3. 在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法

    1.先关闭Dreamweaver,打开Finder进入应用程序,找到“Adobe Dreamweaver CC 2018”目录展开,移除“zh_CN”目录或者更名: 2.下载附件的汉化语言包解压,把解 ...

  4. DB安装

    start from the execute file : DB2_ESE_10_Win_x86-64\setup.exe Navigator to "Install a Product&q ...

  5. Windows 修改host文件

    在实际的开发中,有时我们会修改windows的hosts文件,达到指定域名映射到指定ip上的功能.修改方式如下: 1. windows 中hosts文件位置(win10): C:\Windows\Sy ...

  6. python魔法方法-比较相关

    在python2.x的版本中,支持不同类型的比较,其比较原则如下: 内置类型: 1.同一类型:   1.1)数字类型:包含int.float.long.complex.bool(bool类型是int的 ...

  7. luogu P4688 [Ynoi2016]掉进兔子洞 bitset 莫队

    题目链接 luogu P4688 [Ynoi2016]掉进兔子洞 题解 莫队维护bitset区间交个数 代码 // luogu-judger-enable-o2 #include<cmath&g ...

  8. 转载一篇关于toString和valueOf

    可以这样说,所有JS数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题.在程序应用非常广泛.下面我们逐一来给大家介绍下. Java ...

  9. Winform自动更新组件分享

    作者:圣殿骑士 出处:http://www.cnblogs.com/KnightsWarrior/ 关于作者:专注于微软平台项目架构.管理和企业解决方案.自认在面向对象及面向服务领域有一定的造诣,熟悉 ...

  10. Java和.Net在做BS结构项目的比较

    渊源: Java的J2EE在1999年形成了其成熟的架构,并且到今天已经有相当成熟的经过检验的企业应用系统.而.Net究其渊源是源自微软以前开发企业应用程序的平台DNA(DistributedNetw ...