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

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

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. hihocode #1032 : 最长回文子串【manacher】模板题

    题目链接:https://vjudge.net/problem/HihoCoder-1032 manacher算法详解:https://blog.csdn.net/dyx404514/article/ ...

  2. 用js来实现那些数据结构01(数组篇01-数组的增删)

    在开始正式的内容之前,不得不说说js中的数据类型和数据结构,以及一些比较容易让人混淆的概念.那么为什么要从数组说起?数组在js中是最常见的内存数据结构,数组数据结构在js中拥有很多的方法,很多初学者记 ...

  3. js算法初窥05(算法模式02-动态规划与贪心算法)

    在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...

  4. php页面静态化,ob缓存方法

    <?php ob_start();//开启缓存 //要生成静态网页的内容开始 ?> 中间的html代码 <?php //要生成静态网页的内容结束 //把生成的静态内容保存到文件,而不 ...

  5. Winform给TextBox设置默认值

    Winform给TextBox设置默认值(获取焦点后默认值消失) 主要是通过TextBox的获取焦点Enter和失去焦点Leave两个事件来实现的, 思路如下: 1.设置一个字符串常量,作为TextB ...

  6. dos2unix详解

    Linux命令之dos2unix - 将DOS格式文本文件转换成UNIX格式 dos2unix安装 首先说明dos2unix是将dos文本转换为unix文本,不是将gbk转换为utf8,跟文本的编码格 ...

  7. Asp.Net Mvc 自定义扩展

    目录: 自定义模型IModelBinder 自定义模型验证 自定义视图引擎 自定义Html辅助方法 自定义Razor辅助方法 自定义Ajax辅助方法 自定义控制器扩展 自定义过滤器 自定义Action ...

  8. android:NinePatch图片制作

    一.工具介绍 这是一张PNG图片,为了方便观看做的比较大.在Android中使用NinePatch图片的一般都是很小的图片,因为当内容多了的时候,背景会自动拉伸来适应内容,而如果图片做大了,内容少,则 ...

  9. FMDB使用简介

    转:http://my.oschina.net/youzaiyouzaie/blog/92325 源码地址:https://github.com/ccgus/fmdb 这次要分享的是在iOS中使用SQ ...

  10. dwz Esc关闭dialog 窗口

    document.onkeydown = function(e){ // alert(1) var keycode = ""; if(navigator.appName == &q ...