張成法 李 楠
基于ARM9的嵌入式Linux系統(tǒng)的設計與實現
張成法 李 楠
隨著計算機技術和微電子技術的迅猛發(fā)展,嵌入式系統(tǒng)逐漸發(fā)展為計算機應用的一個重要領域,在生活中得到了普遍的應用。本文通過搭建嵌入式系統(tǒng)開發(fā)平臺、對嵌入式Linux系統(tǒng)進行構建、移植設備驅動程序和介紹嵌入式GUI應用程序開發(fā),討論了基于ARM9微處理器的嵌入式Linux系統(tǒng)的設計與實現。該系統(tǒng)為嵌入式控制系統(tǒng)設計提供了一種可行的方案。
嵌入式系統(tǒng);Linux;驅動程序;ARM9
嵌入式系統(tǒng)作為一種專用的計算機系統(tǒng)。它以計算機技術作為基礎,以應用作為中心,并且其硬件和軟件都可以裁剪。它能夠滿足應用系統(tǒng)對功耗和可靠性的嚴格要求。嵌入式系統(tǒng)具有實時性高、系統(tǒng)內核小的特點。嵌入式Linux 是一種操作系統(tǒng),它能夠運行在嵌入式計算機系統(tǒng)上。代碼開放,版權免費[2]是它與其它操作系統(tǒng)相比的優(yōu)勢,嵌入式Linux有非常廣泛的應用領域,主要應用于工業(yè)控制、大屏幕功能手機、信息家電、醫(yī)療電子等領域。本文從應用出發(fā),著重對一個嵌入式Linux系統(tǒng)進行研究、設計及實現。
硬件結構和軟件系統(tǒng)這兩部分組成了一個完整的嵌入式系統(tǒng),其中嵌入式處理器和外圍的接口電路是硬件結構的主要組成部件,而嵌入式操作系統(tǒng)和應用程序則是軟件系統(tǒng)的主要組成部分。
嵌入式系統(tǒng)開發(fā)平臺的搭建主要包括硬件開發(fā)平臺、軟件開發(fā)平臺和交叉開發(fā)環(huán)境的搭建[1]。
(一) 硬件開發(fā)平臺的搭建
嵌入式系統(tǒng)硬件平臺的搭建主要是圍繞目標板和主機這兩方面進行的,目標板選用的是采用嵌入式處理器的開發(fā)板作為硬件開發(fā)平臺,主機選用的是PC機。
通過對當前主流的嵌入式處理器綜合性能的比較,又依據嵌入式軟件開發(fā)要求嵌入式處理器要具有性能高、功耗低等特點,因此選取ARM處理器作為本文的嵌入式處理器。由于本文重點從應用開發(fā)方面來設計嵌入式系統(tǒng),選用ARM9系列的S3C2440A處理器比較合適,因此目標板采用的是基于芯片S3C2440A的開發(fā)板作為硬件開發(fā)平臺。
(二) 軟件開發(fā)平臺的搭建
軟件開發(fā)平臺的搭建主要圍繞選擇何種類型的嵌入式操作系統(tǒng)而進行。嵌入式Linux、μC/OS‐Ⅱ和VxWorks等是當前在嵌入式領域涌現出來的幾種著名的操作系統(tǒng)。通過對這幾種操作系統(tǒng)的比較,發(fā)現嵌入式Linux具有較多的優(yōu)勢:第一,它提供開發(fā)套件;第二,嵌入式Linux操作系統(tǒng)的內核更新速度較快,具有較高的安全可靠性,內核不僅小,而且可以裁減;第三,它的開發(fā)者可以從眾多的愛好者中獲得強大的技術支持,由于源代碼開放,不收費,所以在價格上具有很大的競爭力。因此,本文的嵌入式操作系統(tǒng)最終選用了嵌入式Linux。
(三) 交叉開發(fā)環(huán)境的搭建
本系統(tǒng)設計采用宿主機-目標機(HOST-TARGET)的開發(fā)模式, 宿主機采用的是PC機,將Linux操作系統(tǒng)安裝于宿主機上,目標機采用S3C2440A開發(fā)板。將相應的ARM交叉編譯工具鏈arm-linux-gcc安裝到ubuntu系統(tǒng)中,然后利用這個交叉編譯工具對源代碼進行編譯,最后得到能夠在目標機上運行的程序。
嵌入式Linux系統(tǒng)的構建主要包括下面三個部分。
(一) Bootloader的移植
考慮到U-Boot的功能比較強大,并且能夠很好的支持S3C2440A芯片,同時調試程序更方便,因此本系統(tǒng)的Bootloader選用了U-Boot。U-Boot的移植包括處理器相關文件的修改、存儲器的配置和Makefile文件的修改,當這些都完成后,最后再對U-Boot進行編譯。
(二) Linux2.6內核的移植
首先要得到Linux源代碼,這可以從它的官方網站獲得,然后修改Makefile文件,修改內核的機器碼和平臺的時鐘頻率,同時設置分區(qū)結構;當完成上述工作后,接下來要對內核進行縮剪,并對內核進行配置, 當內核被配置完成后,再執(zhí)行命令對內核進行編譯,內核被成功編譯后,就會生成其鏡像文件,然后將其下載到開發(fā)板。
(三) Linux文件系統(tǒng)的創(chuàng)建和實現
根文件系統(tǒng)的制作可以由busybox來完成。利用菜單配置命令就可以對BusyBox進行配置。
本系統(tǒng)以LCD模塊為例講述Linux系統(tǒng)的設備驅動移植過程。首先要修改Linux內核源碼中的文件s3c2410fb.c中的程序,可以實現設置LCD時鐘頻率,然后在文件mach-smdk2440.c中, 添加一些參數,這些參數在對LCD控制器進行初始化的時候會被用到,然后對內核配置單進行修改,這樣就完成了LCD設備驅動程序的移植。
本平臺的嵌入式GUI系統(tǒng)采用的是Qt/Embedded,采用宿主機-目標機交叉的開發(fā)模式對基于Qt/Embedded的嵌入式GUI應用程序進行開發(fā)。
首先,Qt應用程序的編寫是在Qt/X11環(huán)境下,當程序編寫完成后,要在宿主機上進行調試直到滿足項目要求,然后對Qt應用程序再次進行編譯,將得到的可執(zhí)行文件運行在QVFB上,它可以模擬應用程序在實際ARM9平臺上的運行效果, 最后,使用工具對應用程序再次進行編譯就可以得到可執(zhí)行程序,當然,所得到的可執(zhí)行程序是能夠運行于S3C2440A芯片上的,然后再將可執(zhí)行程序下載到開發(fā)板上就可以了。基于Qt/Embedded的嵌入式應用程序開發(fā)過程如下圖所示。
嵌入式應用程序開發(fā)流程圖
文中從實際應用出發(fā),提出了嵌入式Linux系統(tǒng)設計及實現方案,給出了嵌入式系統(tǒng)開發(fā)平臺的搭建、嵌入式Linux系統(tǒng)的構建、硬件設備驅動程序移植和嵌入式GUI應用程序開發(fā)的實現方法。為用戶設計嵌入式Linux系統(tǒng)提供了解決方案和便利。(作者單位:濰坊工程職業(yè)學院)
[1] 趙揚. 基于嵌入式Linux的考勤系統(tǒng)研究與設計[D].吉林: 吉林大學,2015.
[2] 劉哲峰.嵌入式Linux音頻設備的驅動設計與研究[D].太原: 太原理工大學, 2010.
張成法(1984-),男,山東青州人,碩士研究生,研究方向:單片機與嵌入式系統(tǒng)。