基于ARM微處理器及嵌入試Linux的串口網(wǎng)橋軟硬件設計
為了解決這個問題,可以在共享中斷源后面加一個用CPLD實現(xiàn)的邏輯電路。該邏輯電路由兩部分組成,第一部分是一個可尋址的寄存器INTEN,作為共享中斷的允許位。第二部分是一個狀態(tài)機邏輯電路,該電路共有三個狀態(tài):S 0是等待狀態(tài),該狀態(tài)下INTEN=I,只要任何一個串口產(chǎn)生中斷請求,CPU將馬上響應該中斷;Sl是中斷服務狀態(tài),中斷服務程序一開始執(zhí)行,馬上將INTEN設置為0,以屏蔽其他中斷請求,退出中斷服務程序時,再將INTEN設置為1,中斷服務程序執(zhí)行期間產(chǎn)生的串口中斷請求由INTREQ鎖存;S2為延時狀態(tài),延時50us,以確保中斷服務程序完全退出。
狀態(tài)機邏輯電路狀態(tài)圖如圖4所示:
4.系統(tǒng)軟件平臺
4.5 uC1inux操作系統(tǒng)簡介
Linux是一種很受歡迎的類UNIX操作系統(tǒng),它免費并開放源代碼,在個人計算機、服務器領域應用廣泛。更重要的是,Linux采取模塊化設計,實際應用中可以實現(xiàn)定制,因此Linux也適用于嵌入式領域。uClinux正是Linux的一個嵌入式版本,其內(nèi)核的二進制映像文件可以做到小于512K。
uClinux針對無MMU(Memory Management Unit,內(nèi)存管理單元)的處理器設計,支持多任務,具有完備的TCP/IP協(xié)議棧并支持多種網(wǎng)絡協(xié)議。uClinux還支持多種文件系統(tǒng),如ROMFS,NFS,F(xiàn)ATl6/32。實際上,uClinux已經(jīng)成功應用于路由器、網(wǎng)絡攝像機、機頂盒、PDA等諸多領域。
另外,uClinux可移植性很強,用戶通過重新配置、編譯內(nèi)核,可以很方便地將其移植到ARM,Dragon Ball、ColdFire、Power PC等多種處理器計算平臺。當前uClinux主要提供2.0和2.4兩個內(nèi)核版本。
4.2軟件開發(fā)調(diào)試方法
嵌入式Linux軟件開發(fā)可以采用一種特殊的模式:主機--目標機模式進行開發(fā),其中主機就是常用的PC或工作站,開發(fā)環(huán)境運行在主機上,主機的操作系統(tǒng)是通用的Windows或Linux系統(tǒng)。目標機就是嵌入式應用系統(tǒng),它與主機間通過串行口、以太網(wǎng)或其他方式通信,從主機下載編譯好的代碼并運行。
利用GNU提供的免費交叉調(diào)試工具,開發(fā)人員可以在主機上調(diào)試目標機上運行的程序。在目標機上運行一個代理,以接收主機發(fā)送過來的命令和代碼,并解釋執(zhí)行。通過調(diào)試器。開發(fā)者可以設定程序運行的起止位置和斷點,同時可以查看和改變變量、寄存器和內(nèi)存中的值,設置程序運行條件等,使開發(fā)人員感到如同在本機上調(diào)試程序一樣方便。
4.3程序框圖
串口網(wǎng)橋控制程序的主要功能就是實現(xiàn)對串口數(shù)據(jù)和網(wǎng)絡數(shù)據(jù)的重組與轉發(fā)。本地主機或遠端主機上的應用程序以原有的操作本機串口的方式與連接在串口網(wǎng)橋上的設備進行信息交互,主機上的設備驅動程序將應用程序要求發(fā)送的串口數(shù)據(jù)以及對應串口號等輔助信息轉換為網(wǎng)絡數(shù)據(jù)包,發(fā)送到以太網(wǎng)上;串口網(wǎng)橋的控制程序接收到經(jīng)以太網(wǎng)傳送過來的數(shù)據(jù)包后,將數(shù)據(jù)包解包并提取其中的串口命令數(shù)據(jù)以及目標串口號等信息,而后重組成串口數(shù)據(jù)并發(fā)送到相應串口。控制程序處理串口設備上傳給本地主機或遠端主機的數(shù)據(jù)的方式與上述過程相反。
串口網(wǎng)橋軟件結構如圖5所示:
5,結束語
本文討論了一個基于ARM微處理器S3C4510B及uClinux的串口網(wǎng)橋設備的軟硬件設計,對S3C4510B芯片功能進行了簡要描述,并探討了基于該芯片的嵌入式Linux軟件開發(fā)模式.事實證明,采用Linux作為嵌入式操作系統(tǒng)并充分利用GNU提供的免費開發(fā)工具包,降低了嵌入式系統(tǒng)開發(fā)的經(jīng)濟門檻,使更多的人能夠掌握相關技術,代表了嵌入式系統(tǒng)開發(fā)的一種新方向。
參考文獻:
[1].RS-232datasheethttp://www.dzsc.com/datasheet/RS-232_584855.html.
[2].ARM7TDMIdatasheethttp://www.dzsc.com/datasheet/ARMDMI_139812.html.
[3].S3C4510Bdatasheethttp://www.dzsc.com/datasheet/S3C45_589499.html.
[4].100Mdatasheethttp://www.dzsc.com/datasheet/100M_2509927.html.
[5].RTL8201datasheethttp://www.dzsc.com/datasheet/RTL8201_586322.html.
[6].HY57V641620HGhttp://www.dzsc.com/datasheet/HY57VHG_390467.html.
[7].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[8].DM9161datasheethttp://www.dzsc.com/datasheet/DM9161_264516.html.
[9].FBGAdatasheethttp://www.dzsc.com/datasheet/FBGA_1457924.html.
[10].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[11].16C554datasheethttp://www.dzsc.com/datasheet/16C554_24747.html.
[12].Maximdatasheethttp://www.dzsc.com/datasheet/Maxim_1062568.html.
[13].MAX202datasheethttp://www.dzsc.com/datasheet/MAX202_1089634.html.
[14].TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
[15].CPLDdatasheethttp://www.dzsc.com/datasheet/CPLD_1136600.html.
評論