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

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

改动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);

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

#ifdef CONFIG_TESTDRIVE

init_test();

#endif

在/uclinux/linux/drivers/char目录下Makefile中增加如下代码:

ifeq($(CONFIG_TESTDRIVE),y)

L_OBJS+=test。o

Endif

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

bool "support for testdrive" CONFIG_TESTDRIVE y

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

在 /uclinux/romdisk/romdisk/dev/目录下创建设备:mknod test c 254 0

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

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

欢迎来一步电子网 查看更多精彩信息 请登录 www。kuyibu。com/botan

linux u 驱动程序,在uClinux中增加自己的设备驱动程序相关推荐

  1. 《Linux Device Drivers》第十六章 块设备驱动程序——note

    基本介绍 块设备驱动程序通过主传动固定大小数据的随机访问设备 Linux核心Visual块设备作为基本设备和不同的字符设备类型 Linux块设备驱动程序接口,使块设备最大限度地发挥其效用.一个问题 一 ...

  2. 驱动程序实例(一):LED设备驱动程序( platform + cdev)

    结合之前对Linux内核的platform总线 ,以及对字符设备的cdev接口的分析,本文将编写基于platform总线与cdev接口的LED设备的实例代码并对其进行分析. platform总线分析, ...

  3. 设备驱动程序是什么?为什么要有设备驱动程序?用户进程怎样使用驱动程序?

    设备驱动进程与设备控制器之间的通信程序称为设备驱动程序. 设备驱动程序是控制设备动作的核心模块,如设备的打开.关闭.读.写等,用来控制设备上数据的传输.它与硬件密切相关,处理用户进程发出的I/O请求. ...

  4. 怎么把本地rpm包导入linux,Linux在本地yum源中增加rpm包(示例代码)

    在内网中搭建自己的yum源,可以方便在内网中使用,下面简单介绍搭建局域网yum源的方法和后期更新yum源rpm包的方法. 一.搭建局域网yum源 1.需要在局域网访问,首先需要一个web服务器,比如a ...

  5. 组策略中分类别禁用设备驱动程序安装,可以用来禁用USB设备

    允许安装与下列设备ID相匹配的设备(设备ID可以在设备管器的硬件ID中找到) 允许使用与下列设备安装程序类相匹配的驱动程序安装设备(该设备安装程序类可以在设备管器的设备类GUID中找到) 参考链接: ...

  6. linux系统reales,基于uCLinux系统的IEEE1394设备驱动程序的编程研究与实现

    本文分析了IEEE1394协议驱动层框架,介绍了uCLinux下IEEE1394设备驱动程序架构和编写IEEE1394视频设备驱动程序的步骤和方法.(1)IEEE1394网络架构IEEE1394的网络 ...

  7. linux驱动头文件查找目录,在Fedora 20中查找简单设备驱动程序的头文件

    因此,我尝试按照简单的示例加载O'Rielly Linux设备驱动程序手册中的" Hello World"设备驱动程序.问题是,由于某种原因,除非我在include语句中显式定义头 ...

  8. linux下的iic驱动程序,实战经验吐血推荐:怎样在Linux环境下轻松实现基于I2C总线的EEPROM驱动程序...

    4开发实例本文引用地址:http://www.eepw.com.cn/article/279351.htm Linux内核已经提供了I2C驱动中所需要的基本模块.i2c-core.i2c-dev和i2 ...

  9. Linux 设备驱动程序(三)

    系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序( ...

最新文章

  1. SharePoint2010-CustomAction中的ContentTypeId属性已经消失了
  2. 网游服务端php5.1时间戳格式化,php格式化时间戳显示友好时间的简单示例
  3. 19、任务十八——事件委托、数组处理
  4. 2019蓝桥杯Java决赛题答案_2019第十届蓝桥杯JavaB组省赛真题详解
  5. linux perl 安装目录,linux-将Perl模块安装到特定位置
  6. PHP生成随机数;订单号唯一
  7. 程序员除了转行做管理,还可以做什么?
  8. 清空表与删除表mysql
  9. 资源分享 | ArcGis engine 10.4
  10. oracle连接多个扫描
  11. 几种深度学习框架的使用和对比
  12. SVN安装和使用详细教程
  13. 加速科技赋能,城商行为何都瞄准全闪存?
  14. win10如何安装Java虚拟机_vmware 安装win10虚拟机
  15. Java小游戏:飞翔的小鸟 【附源码和素材】
  16. Docker 快速入门学习
  17. Tomcat 学习笔记
  18. ChatGPT 可以联网了!浏览器插件下载
  19. web入侵二之弱口令攻击及其他
  20. 企业如何实现IoT物联网远程控制

热门文章

  1. MySQL查询指定字段
  2. 什么叫返回路径平面上的间隙_信号完整性:关于走线的参考平面问题探讨
  3. hadoop+spark生态系统操作与指南非影印版_Spark背景知识学习
  4. BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary
  5. java商城管理系统ssm_基于SSM+MYSQL的一个小型商城网站后台管理系统
  6. python画画零基础_[零基础学python]画圈还不简单吗?
  7. (Java)关于泛型
  8. LeetCode 23合并K个升序链表24两两交换链表中的节点
  9. linux 日志监控工具,详解 Linux系统常用监控工具
  10. 霍夫曼树(最优二叉树)的实现