英利公司推出的嵌入式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
+關注
關注
87文章
11345瀏覽量
210407 -
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35619
發布評論請先 登錄
相關推薦
嵌入式工程師都在找的【Linux內核調試技術】建議收藏!
嵌入式linux開發的基本步驟有哪些?
嵌入式linux開發板怎么操作
嵌入式linux開發板芯片的工作原理
linux驅動程序的編譯方法是什么
飛凌嵌入式技術創新日(深圳站)精彩回顧
嵌入式設備中的4G/5G模塊管理
Linux是做什么用的?
提升嵌入式系統可靠性的有效策略
![提升<b class='flag-5'>嵌入式</b>系統可靠性的有效策略](https://file1.elecfans.com/web2/M00/DC/1B/wKgaomYrT1GAXDMiAAAUyAY9Sp8598.jpg)
評論