英利公司推出的嵌入式Linux工控板EM9160針對(duì)一些擴(kuò)展應(yīng)用,實(shí)現(xiàn)了相應(yīng)的驅(qū)動(dòng)程序,包括有精簡ISA總線的操作驅(qū)動(dòng)、GPIO、I2C、SPI、LCD、KeyPad、CAN驅(qū)動(dòng)等。這些設(shè)備的驅(qū)動(dòng)程序可以在內(nèi)核啟動(dòng)后,通過啟動(dòng)腳本來自動(dòng)加載,但是這種方式往往不夠靈活,因?yàn)樵趯?shí)際的應(yīng)用中,客戶往往會(huì)根據(jù)實(shí)際情況加以選擇。
基于這種情況,我們把驅(qū)動(dòng)程序模塊分為兩類,第一類驅(qū)動(dòng)針對(duì)于嵌入式Linux工控板EM9160直接引出的接口,如ISA總線、GPIO、LCD、I2C、SPI等,則直接通過內(nèi)核啟動(dòng)腳本來實(shí)現(xiàn)自動(dòng)載入。第二類針對(duì)于利用ISA總線進(jìn)行的擴(kuò)展應(yīng)用驅(qū)動(dòng),如:Keypad 、CAN應(yīng)用等,對(duì)于這類驅(qū)動(dòng)在內(nèi)核啟動(dòng)時(shí)并沒有自行載入,需要客戶可根據(jù)實(shí)際情況進(jìn)行選擇。本文將著重介紹如何在應(yīng)用程序中實(shí)現(xiàn)自動(dòng)載入第二類驅(qū)動(dòng)模塊的方法。
英利所提供的嵌入式Linux工控板的所有驅(qū)動(dòng)庫文件均放置在文件系統(tǒng)/lib/modules/2.6.30目錄下。
系統(tǒng)內(nèi)核自動(dòng)載入驅(qū)動(dòng)功能模塊:
/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
需要客戶自行入載驅(qū)動(dòng)功能模塊:
/lib/modules/2.6.30/em9x60_keypad.ko
/lib/modules/2.6.30/em9x60_can.ko
在嵌入式Linux操作系統(tǒng)下,一般是利用insmod指令來實(shí)現(xiàn)向系統(tǒng)內(nèi)核載入模塊,如載入鍵盤驅(qū)動(dòng):
# insmod /lib/modules/2.6.30/em9x60_keypad
在嵌入式應(yīng)用中,往往是需要自動(dòng)運(yùn)行模式,這就需要通過編程來實(shí)現(xiàn)。因此在應(yīng)用編程代碼中,利用C++中的構(gòu)造函數(shù)以及析構(gòu)函數(shù)可以很好地實(shí)現(xiàn)驅(qū)動(dòng)功能模塊的自動(dòng)載入和自動(dòng)卸載,下面是以鍵盤為例來加以說明。
定義一個(gè)class KEYManager鍵盤管理類,在該類中主要實(shí)現(xiàn)對(duì)鍵盤的響應(yīng)功能。
其構(gòu)造函數(shù):
KEYManager::KEYManager( )
{
m_ExitThreadFlag = 0;
system( 'insmod /lib/modules/2.6.30/em9x60_keypad.ko' ); // 載入鍵盤驅(qū)動(dòng)模塊
}
對(duì)應(yīng)的析構(gòu)函數(shù):
KEYManager::~KEYManager( )
{
system( 'rmmod em9x60_key' ); // 卸載鍵盤驅(qū)動(dòng)模塊
}
應(yīng)用程序中,一旦定義了class KEYManager的實(shí)例就實(shí)現(xiàn)了鍵盤模塊的自動(dòng)載入。后續(xù)就可打開鍵盤設(shè)備文件,讀取鍵碼值,從而實(shí)現(xiàn)對(duì)鍵盤響應(yīng)的功能。
在英利公司所提供的嵌入式Linux開發(fā)光盤上均有以上介紹的相關(guān)源碼提供,以供客戶參考。
-
Linux
+關(guān)注
關(guān)注
87文章
11351瀏覽量
210504 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6086瀏覽量
35643
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式工程師都在找的【Linux內(nèi)核調(diào)試技術(shù)】建議收藏!
北京迅為RK3568開發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+
![北京迅為RK3568開發(fā)板<b class='flag-5'>嵌入式</b>學(xué)習(xí)之<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b>全新更新-CAN+](https://file1.elecfans.com/web2/M00/06/25/wKgaombYDFKAD0JxAADlDQo6OXo738.png)
嵌入式linux開發(fā)的基本步驟有哪些?
嵌入式linux開發(fā)板怎么操作
嵌入式linux開發(fā)板芯片的工作原理
C28x嵌入式應(yīng)用程序二進(jìn)制接口
![C28x<b class='flag-5'>嵌入式</b><b class='flag-5'>應(yīng)用程序</b>二進(jìn)制接口](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
linux驅(qū)動(dòng)程序的編譯方法是什么
MSP430嵌入式應(yīng)用程序二進(jìn)制接口
![MSP430<b class='flag-5'>嵌入式</b><b class='flag-5'>應(yīng)用程序</b>二進(jìn)制接口](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C6000嵌入式應(yīng)用程序二進(jìn)制接口
![C6000<b class='flag-5'>嵌入式</b><b class='flag-5'>應(yīng)用程序</b>二進(jìn)制接口](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
飛凌嵌入式技術(shù)創(chuàng)新日(深圳站)精彩回顧
嵌入式設(shè)備中的4G/5G模塊管理
Linux是做什么用的?
提升嵌入式系統(tǒng)可靠性的有效策略
![提升<b class='flag-5'>嵌入式</b>系統(tǒng)可靠性的有效策略](https://file1.elecfans.com/web2/M00/DC/1B/wKgaomYrT1GAXDMiAAAUyAY9Sp8598.jpg)
評(píng)論