把设备驱动程序编译进嵌入式Linux内核

2016-01-29 17:39 41 1 收藏

把设备驱动程序编译进嵌入式Linux内核,把设备驱动程序编译进嵌入式Linux内核

【 tulaoshi.com - Linux 】

  驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式Linux不能够象桌面Linux那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。

  下面以uClinux为例,介绍在一个以模块方式出现的驱动程序test.c基础之上,将其编译进内核的一系列步骤:

  (1) 改动test.c源带代码

  第一步,将原来的:

 #include
  #include
  char kernel_version[]=UTS_RELEASE;

  改动为:

 #ifdef MODULE
  #include
  #include
  char kernel_version[]=UTS_RELEASE;
  #else
  #define MOD_INC_USE_COUNT
  #define MOD_DEC_USE_COUNT
  #endif

  第二步,新建函数int init_test(void)

  将设备注册写在此处:

 result=register_chrdev(254,"test",&test_fops);

  (2) 将test.c复制到/uclinux/linux/drivers/char目录下,并且在/uclinux/linux/drivers/char目录下mem.c中,int chr_dev_init( )函数中增加如下代码:

  #ifdef CONFIG_TESTDRIVE
  init_test();
  #endif

  (3) 在/uclinux/cinux/drivers/char目录下Makefile中增加如下代码:

 ifeq($(CONFIG_TESTDRIVE),y)
  L_OBJS+=test.o
  Endif

  (4) 在/uclinux/linux/arch/m68knommu目录下config.in中字符设备段里增加如下代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/linux/)

 bool 'support for testdrive' CONFIG_TESTDRIVE y

  (5) 运行make menuconfig(在menuconfig的字符设备选项里你可以看见我们刚刚添加的'support for testdrive'选项,并且已经被选中);make dep;make linux;make linux.text;make linux.data;cat linux.text linux.data linux.bin.

  (6) 在 /uClinux/romdisk/romdisk/dev/目录下创建设备:

  mknod test c 254 0

  并且在/uclinux/appsrc/下运行make,生成新的Romdisk.s19文件。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/linux/)

  到这里,在uClinux中增加设备驱动程序的工作可以说是完成了,只要将新的linux.bin与Romdisk.s19烧入目标板中,你就可以使用自己的新设备test了。

来源:http://www.tulaoshi.com/n/20160129/1502366.html

延伸阅读
标签: 电脑入门
第一个内核模块(Hello World模块) 代码如下: View Code #includelinux/init.h #includelinux/module.h MODULE_LICENSE("Dual BSD/GPL"); static __init int hello_init(void) { //printk函数在内核中定义对模块可用,内核需要自已的打印涵数 //因为它靠自已运行,而没有相应的库函数。 //模块能够调用printk是因为insmod加...
 linux内核编译详解 [本文最初由solaris发布] 一、内核简介 内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取...
一.Linux系统设备驱动程序概述 1.1 Linux设备驱动程序分类 Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx...
  1. 要怎麽进行核心的配置? 1.1. 取得原始程序码 你可以经由 ftp 从 ftp.funet.fi 或是 mirror in /pub/OS/Linux/PEOPLE/Linus 取 得原始程序码。也可以到这个节点的 mirror 或其他节点去拿。档案名称一般是以标记 成 linux-x.x.x.tar.gz 为代表,其中的&nb...
标签: PHP
初始化部分。这部分包括硬件层和软件层上的初始化。在本例中,需要先对矩阵电路和SN74hc164芯片所使用到的GPIO端口作配置,以使CPU可以对它们进行控制和访问。为了要将某个GPIO端口配置成输入输出或者是中断源,需要在对应的GPIO控制寄存器中设置正确的值,具体的值可以通过查阅S3C2410开发板手册来获得。比如,...

经验教程

423

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部