0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术嵌入式Linux应用程序自动载入驱动模块方法简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-14 11:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

英利公司推出的嵌入式Linux工控板EM9160针对一些扩展应用,实现了相应的驱动程序,包括有精简ISA总线的操作驱动、GPIO、I2C、SPI、LCD、KeyPad、CAN驱动等。这些设备的驱动程序可以在内核启动后,通过启动脚本来自动加载,但是这种方式往往不够灵活,因为在实际的应用中,客户往往会根据实际情况加以选择。

基于这种情况,我们把驱动程序模块分为两类,第一类驱动针对于嵌入式Linux工控板EM9160直接引出的接口,如ISA总线、GPIO、LCD、I2C、SPI等,则直接通过内核启动脚本来实现自动载入。第二类针对于利用ISA总线进行的扩展应用驱动,如:Keypad 、CAN应用等,对于这类驱动在内核启动时并没有自行载入,需要客户可根据实际情况进行选择。本文将着重介绍如何在应用程序中实现自动载入第二类驱动模块的方法。

英利所提供的嵌入式Linux工控板的所有驱动库文件均放置在文件系统/lib/modules/2.6.30目录下。

系统内核自动载入驱动功能模块:
/lib/modules/2.6.30/em9x60_sysinfo.ko
/lib/modules/2.6.30/em9x60_isa.ko
/lib/modules/2.6.30/em9x60_gpio.ko
/lib/modules/2.6.30/em9x60_irq.ko
/lib/modules/2.6.30/em9x60_pwm.ko
/lib/modules/2.6.30/em9x60_i2c.ko
/lib/modules/2.6.30/em9x60_lcd.ko

需要客户自行入载驱动功能模块:
/lib/modules/2.6.30/em9x60_keypad.ko
/lib/modules/2.6.30/em9x60_can.ko

在嵌入式Linux操作系统下,一般是利用insmod指令来实现向系统内核载入模块,如载入键盘驱动:
# insmod /lib/modules/2.6.30/em9x60_keypad

在嵌入式应用中,往往是需要自动运行模式,这就需要通过编程来实现。因此在应用编程代码中,利用C++中的构造函数以及析构函数可以很好地实现驱动功能模块的自动载入和自动卸载,下面是以键盘为例来加以说明。

定义一个class KEYManager键盘管理类,在该类中主要实现对键盘的响应功能。

其构造函数:
KEYManager::KEYManager( )
{
m_ExitThreadFlag = 0;
system( 'insmod /lib/modules/2.6.30/em9x60_keypad.ko' ); // 载入键盘驱动模块
}

对应的析构函数:
KEYManager::~KEYManager( )
{
system( 'rmmod em9x60_key' ); // 卸载键盘驱动模块
}

应用程序中,一旦定义了class KEYManager的实例就实现了键盘模块的自动载入。后续就可打开键盘设备文件,读取键码值,从而实现对键盘响应的功能。

在英利公司所提供的嵌入式Linux开发光盘上均有以上介绍的相关源码提供,以供客户参考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11810

    浏览量

    219513
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    37154
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何成为一名高薪嵌入式工程师?

    精通指针、内存管理、结构体、位操作等,理解底层硬件交互原理。 C++(可选):面向对象编程在嵌入式Linux或复杂系统中应用广泛,如驱动开发、中间件设计。 汇编语言:理解处理器架构(如ARM
    发表于 04-09 09:03

    嵌入式驱动开发,需要掌握哪些技能?

    嵌入式驱动开发中,方便设备管理、驱动移植等,所以,需要掌握一定的数据结构。 3、 操作系统知识如果基于Linux、RTOS等操作系统设计驱动
    发表于 01-20 16:46

    什么是嵌入式应用开发?

    、实现和部署,还包括硬件选择、软件设计、测试、集成和维护等流程‌。 定义和背景 嵌入式应用开发是指将软件部署到嵌入式系统中,这些系统广泛应用于消费电子和工业自动化中。嵌入式系统通常
    发表于 01-12 16:13

    迅为Hi3403开发板驱动教程全面上线,开启嵌入式Linux开发新篇章!

    迅为iTOP-Hi3403开发板linux驱动教程全面上线,开启嵌入式Linux开发新篇章!
    的头像 发表于 12-18 14:23 863次阅读
    迅为Hi3403开发板<b class='flag-5'>驱动</b>教程全面上线,开启<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>开发新篇章!

    从小白到大牛:Linux嵌入式系统开发的完整指南

    编写简单的 Shell 脚本(如自动备份文件、批量编译程序)巩固技能。​ 二、能力进阶:攻克核心技术模块​ 入门后需聚焦嵌入式
    发表于 12-16 10:42

    一个面向单片机、事件驱动嵌入式开发平台介绍

    EventOS,是一个面向单片机、事件驱动嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是开发一个企业级的
    发表于 12-05 06:26

    ARM嵌入式这样学

    )话题大热,Arm也推出神经网络机器学习软件 Arm NN,可在基于Arm的高能效平台上轻松构建和运行机器学习应用程序,未来嵌入式行业也将不断革新,嵌入式市场有所可期。 据知乎某15年从业人员看
    发表于 12-04 07:48

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通过学习嵌入式技术提升就业竞争力,需重点掌握C语言、嵌入式硬件架构、RTOS/Linux开发、通信协议四
    发表于 10-21 16:25

    嵌入式达到什么水平才能就业?

    :包括GPIO、定时器、中断、ADC 等外设的配置与调试,能实现如温湿度采集、电机控制等功能掌握嵌入式 Linux 驱动开发基础:能编写简单字符设备驱动,实现设备的初始化、读写操作,会
    发表于 09-15 10:20

    PCB嵌入式功率模块介绍

    电子发烧友网站提供《PCB嵌入式功率模块介绍.docx》资料免费下载
    发表于 09-09 16:19 4次下载

    嵌入式从入门到进阶,怎么学?

    嵌入式从入门到进阶,怎么学? 嵌入式学习的核心是 “软硬结合的技术壁垒”,科学分层才能高效突破。以下是从入门到高阶的精简路线,帮你避开弯路: 1、基础奠基层:构建技术底座 C 语言聚焦
    发表于 09-02 09:44

    入行嵌入式应该怎么准备?

    知识: 一、C/C++编程C/C++是嵌入式系统开发中最常用的编程语言。熟练掌握C/C++语言将使你能够理解和编写底层驱动程序、操作系统以及与硬件交互的代码。对于嵌入式系统来说,效率和资源利用率
    发表于 08-06 10:34

    Linux嵌入式和单片机嵌入式的区别?

    :使用Linux操作系统,可以运行各种复杂的应用程序驱动程序。 4. 资源需求 : 单片机嵌入式 :对硬件资源的需求较低,通常只需要一个单片机芯片,内存和存储空间较小。
    发表于 06-20 09:46

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    9.1 文件系统概念文件系统通常提供目录或文件夹用于记录文件,在很多系统中目录本身也是文件,在这些系统中,目录是管理文件系统结构的系统文件。从文件组织结构上来说,嵌入式Linux文件系统与普通PC
    发表于 06-19 17:22

    嵌入式开发入门指南:从零开始学习嵌入式

    基础 3. 学习路径推荐第一阶段:熟悉开发环境(如Keil、IAR、STM32)第二阶段:掌握裸机编程与驱动开发第三阶段:学习RTOS(实时操作系统)如FreeRTOS第四阶段:深入理解Linux嵌入式
    发表于 05-15 09:29