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

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

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)

最新文章

  1. asp.net 生成 excel导出保存时, 解决迅雷下载aspx页面问题
  2. 修改Android系统字号(二)
  3. highcharts 柱状图动态设置数据应用实例
  4. cocos js响应过程
  5. Android - 服务器json数据交互.
  6. Notepad++插件之FingerText
  7. ajax动态加入的元素不被jquerymobile渲染问题
  8. [C#基础] 类
  9. Golang 探索对Goroutine的控制方法
  10. alpha-咸鱼冲刺day4
  11. Cleartext HTTP traffic to xxx not permitted解决办法
  12. ViewPager + TabLayout + Fragment + MediaPlayer的使用
  13. 【C#】wpf中的xmlns命名空间为什么是一个网址,代表了什么意思(转载)
  14. elk-准备(一)
  15. 给rm命令设置别名防止误操作
  16. 解决Sublime Text 3中文显示乱码问题(转)
  17. linux:帮助命令help、man、info
  18. python3模块: json &amp; pickle
  19. WPF 控件回车移动焦点
  20. 【云计算】jenkins,docker,mesos,marathon,k8s相关资料

热门文章

  1. 在python3下使用requests,xpath,urllib爬取不得姐网站相关视频爬虫源代码
  2. python套接字编程基础
  3. 附005.Docker Compose文件详解
  4. mysql5.7一键安装脚本
  5. js数据结构之hash散列的详细实现方法
  6. Android应用开发-数据存储和界面展现(二)
  7. FastDFS_v4.06安装简记
  8. 潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)
  9. 潭州课堂25班:Ph201805201 python 模块json,os 第六课 (课堂笔记)
  10. struts2中的session、request 、和action往页面中传值的方法