英利公司推出的嵌入式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开发光盘上均有以上介绍的相关源码提供,以供客户参考。
「智科特案例」移动机器人如何耕好田
亲们注意!牛轧糖Android7.0将于8月22日推送
android系统怎么支持多种屏幕
曾经的光环过后,人工智能芯片第一股寒武纪在资本市场再次迎来挑战
工业无线网络性能测试方法
英创信息技术嵌入式Linux应用程序自动载入驱动模块方法简介
ASCB1智慧空开 智能微型断路器
双极型晶体管的工作原理详解
新制程引导新需求,满足韩国在内的亚洲地区PCB厂的市场需求
建筑中BIM数字化建模过程
联想新款笔记本配置信息曝光,搭载AMD新款处理器
立体声解调器电路图分享
pcb高速信号知识科普
NVIDIA 边缘计算平台,助力朗士达旭阳打造新一代公路智慧 AI 巡查方案
小米将在印度推出一款特别版K20Pro 背部全部为金黄色涂装
杉杉拟向关联方内蒙古蒙集石墨化加工服务预计金额不超5亿元
关于几款电路设计的“败笔”
荣耀用实际行动证明自己,太给力了
三星晶圆代工落后台积电 10纳米制程订单并未增加
DK075G东科650V/160mΩ氮化镓HEMT准谐振反激控制AC-DC功率开关芯片