嵌入式系統在曙光4000A大規模機群監控系統中的應用
對于采集卡主芯片的選擇,由于需要支持TCP/IP網絡,需要支持IIC接口,同時還可以支持內存控制以及Flash控制器,因此選擇了三星公司的ARM芯片S3C4510B,該芯片采用ARM7TDI內核,32位RISC架構。對于嵌入式操作系統的選擇,uClinux具有免費、開源、可裁減性好、對TCP/IP網絡協議支持的較好并且穩定性高等優點,因此選擇uClinux作為嵌入式操作系統。同時由于IIC總線技術有連接簡單、數據傳輸速率高、高可靠性等優點,所以采集卡的主芯片和采集單片機使用IIC總線相連。
2.2 采集卡(多路器)的功能
采集卡的主要作用,一方面是從與每組節點機相連的采集單片機中通過IIC總線讀取節點機的信息,另一方面監聽自身的事先約定的端口,當有連接請求并收到發送數據的命令后送出從采集卡中讀取的數據。硬件上已經有了IIC和網絡接口,軟件方面,可以從網上資源中獲取S3C4510B芯片的IIC控制器和網絡驅動程序,然后集成到uClinux嵌入式操作系統中。此外還需要一段采集程序實現系統的主要功能。
采集程序根據系統需要的功能,分為兩個部分,一部分定時從IIC總線讀取數據,另一部分監聽某個約定端口、收取命令并發送數據。這兩個部分分別由兩個線程來執行。兩個線程共享同一塊數據緩沖區。線程一通過IIC總線讀取采集卡中的數據,寫入緩沖區中,線程二一方面讀取緩沖區中的數據發送,另一方面在發送完畢后,把已經發送了的緩沖區填寫為無效數據。由于數據緩沖區屬于臨界區域,這兩個線程在使用緩沖區的時候要嚴格互斥。
程序的主體結構如下:
read_iic(){ //線程一運行的函數
打開iic設備;
while(1) {
讀取iic設備的數據;
寫入全局緩沖區中;
休眠一定的時間;
?。?p> ?。?p> send_data() { //線程二運行的函數
綁定本地端口;
監聽本地端口;
while(1) {
收到命令;
發送全局緩沖區中的數據;
填寫無效數據;
}
?。?p> main() {
初始化全局緩沖區;
創建線程一;
創建線程二;
?。?p> 2.3 運行情況以及發展方向
在實際運行1周后,曙光4000A大規模集群監控系統運行狀況良好,其中采集卡功能良好,在規定的延遲內數據傳輸流暢,沒有出現數據漏傳、丟失等現象,說明監控系統中的嵌入式系統運行很穩定,發揮了預期的作用。
在將來的監控系統升級工作中,可以考慮在這個采集卡中加入嵌入式數據庫技術,把收到的數據存儲起來,并且和uClinux提供的Web服務結合,在Web服務中顯示監控系統的數據,這樣就可以在任何一臺機器上以瀏覽網頁的形式監控整個集群,從而節省了監控節點的開銷,提高了采集卡的利用率。
三:結束語
嵌入式系統體積小、靈活性高,已經被應用到各行各業,例如汽車、家電、航空、精密儀器等等。本文介紹的嵌入式系統在曙光4000A大規模機群監控系統中的應用,結合了ARM技術、IIC總線技術,采用了uClinux嵌入式操作系統,體積小、可擴展性好、成本低,數據流向清晰明確,現在已經作為配套產品提供給用戶。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論