`
duyouhua1214
  • 浏览: 242799 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

嵌入式Linux应用程序自动载入驱动模块方法

 
阅读更多

英利公司推出的嵌入式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开发光盘上均有以上介绍的相关源码提供,以供客户参考。

来源:http://www.emlinix.com/jishu-blog/zhishi2010145.html

分享到:
评论

相关推荐

    超级终端开发嵌入式linux指南

    本指南旨在指导开发者如何通过超级终端进行嵌入式Linux的开发,包括载入镜像、配置Linux参数、配置嵌入式网络以及下载代码镜像等步骤,从而实现方便快捷的嵌入式开发和学习过程。由于给定的信息中涉及到特定的硬件和...

    boot-time-slides.pdf

    - 移除不必要的模块和驱动:确保只加载系统运行所需的内核模块和驱动程序,可以减少系统启动时加载和初始化的负担。 - 使用动态加载驱动:动态加载驱动程序可以推迟驱动程序的初始化时间,从而在系统启动的早期阶段...

    Linux编程白皮书

    - **ARM**:广泛应用于移动设备和其他嵌入式系统的处理器架构。 - **Alpha**:一种高性能的RISC架构处理器。 以上是《Linux编程白皮书》中的关键知识点概览,这些内容不仅涵盖了Linux内核的基础架构,还深入探讨了...

    linux在x86环境下启动流程,是PPT格式的存在

    第一阶段加载器会加载GRUB2的核心映像文件(core.img),该文件包含了必要的模块和文件系统驱动程序。随后,core.img会加载位于/boot/grub/目录下的第二阶段引导加载器。通过bootloader载入所有配置文件与相关的环境...

    宋振华_finalReport1

    Linux的构建基于UNIX、MINIX、GNU计划、POSIX标准和Internet网络,通过阅读早期内核源代码,可有效学习其工作原理,尤其对于嵌入式系统的研究和应用具有重要意义。 1. 实验目的: - 分析Linux 0.11源代码,了解...

    使用IPMI Tool实现Linux系统下对服务器的IPMI管理

    - 创建字符设备节点,以便ipmitool可以通过驱动程序访问IPMI系统接口。 3. **安装ipmitool,获取CPU温度信息**: - 安装ipmitool。 - 使用ipmitool命令获取CPU温度信息。 ##### 远程服务器管理 1. **系统结构...

Global site tag (gtag.js) - Google Analytics