ARM的嵌入式Linux應用程式開發研究

來源:互聯網
上載者:User

0 引 言

當今社會,嵌入式系統已經滲透到人們工作、生活中的各個領域,嵌入式處理器已佔分散處理器市場份額的94%。而嵌入式Linux系統也蓬勃發展,不僅繼承了Linux源碼開放、核心穩定高效、軟體豐富等優勢,還具備支援廣泛處理器結構和硬體平台、佔有空間小、成本低廉、結構緊湊等特點。

1 arm處理器及開發板

在嵌入式領域,ARM已取得了極大的成功,造就了IP核商業化、市場化的神話。據統計,全球有103家巨型IT公司在採用ARM技術,20家最大的半導體,一商中有19家是ARM的使用者。ARM系列晶片已經被廣泛的應用於移動電活、手持式電腦以及各種各樣的嵌入式應用領域,成為世界上銷量最大的32位微處理器。arm已成為業界實際的RISC晶片標準。

ARM系列處理器根據各自特點應用於不同領域。從應用的角度上arm晶片選擇的一般原則:MMU;處理器速度;內建儲存空間容量;USB介面;GPIO數量;中斷控制器;IIS(integrate interface ofsound)音頻介面;nWAIT訊號;RTC(real timeclock);LCD控制器;PWM輸出等各項指標。

本文使用的是ARM9,其效能遠遠高過ARM7。開發板使用的是廣州斯道資訊技術有限公司的開發板,中央處理器是三星公司的S3C2410。arm9具有以下特點:5級流水線;採用哈佛結構;快取和寫緩衝的引入;支援MMU。

2嵌入式Linux系統

嵌入式作業系統是嵌入式應用軟體的基礎和開發平台,它的出現解決了嵌入式軟體開發標準化的難題。嵌入式系統具有作業系統的最基本的功能。目前主流的嵌入式系統有以下兒種:Linux、VxWorks、QNX、Windows CE、Palm OS。

嵌入式Linux作業系統具有一些獨特的優勢:階層及核心完全開放;強大的網路支援功能;具備一整套工具鏈;廣泛的硬體支援特性。

嵌入式Linux系統有很多種。本文使用的是Red Hat9作業系統。

在安裝有Windows和Linux雙系統的PC上,系統會以Linux的GRUB作為引導裝入器來選擇啟動二者。此時若直接刪除Linux分區,會導致系統無法啟動Windows或者是需要用行命令才能啟動Windows。可以先使用虛擬機器安裝Linux系統,練習使用,熟悉後再在PC上安裝。

3應用程式開發

一般嵌入式開發流程1所示。

這裡省略前面三步,從開發應用程式開始。

3.1交叉開發環境建立

對嵌入式系統而言,只裝備必要的資源是前提條件,這也決定了嵌入式應用程式的開發環境不可能是資源有限的嵌入式系統,只能利用資源豐富的PC開發,然後建立交叉開發平台。

交叉編譯器(cross-compiler)是進行交叉平台開發的主要軟體工具。它是運行在一種處理器體繫結構上,但是可以產生在另一種不同的處理器體繫結構上啟動並執行目標代碼的編譯器。

要建立交叉開發環境,主要需要幾個工具包:gcc,glib,binutils,gdb等。一般開發板都提供這些工具,如果不是使用的開發板,在網上也是可以下載到全部軟體包的。依次將它們安裝在PC上即可。

Linux的軟體安裝方法與Windows不同。Linux中根據不同的壓縮打包方式使用不同的命令安裝。在安裝過程中,由於軟體包之間的依賴關係,系統可能會警告還有哪些沒有安裝,可以忽略這些警告。

3.2 U-Boot

在U-Boot(UniversalBootloader)之前,先介紹一下Bootloader。簡單的說,Bootloader就是在作業系統核心運行之前的一段引導程式,類似於PC中的BIOS。通過它,可以完成對應硬體裝置的初始化,並建立記憶體空間的映射圖的功能,為最終調用系統核心做好準備。

U-Boot是遵循GPL條款的開放源碼項目,它不僅僅支援嵌人式Linux系統的引導,U-Boot中Universal的一層含義就是在於U-Boot支援多種嵌入式作業系統,就目前來看,U-Boot對Linux的支援最完善。另外一層含義則是U-Boot支援多種常用系列的處理器。

U-Boot支援的主要功能:系統引導;基本協助工具功能(作業系統介面功能;可靈活設定、傳遞多個關鍵參數給作業系統;支援目標板多種儲存方式;CRC32校正);裝置驅動;上電自檢功能;特殊功能(XIP核心引導)。

U-Boot移植主要分為兩步:配置主板和設定Flash和SDRAM時序。

3.3嵌入式Linux系統核心編譯和移植

嵌入式Linux核心的編譯都是通過make的不同命令實現的,一般分為3步:(1)核心配置。主要是使用者用於為目標板選擇處理器架構的選項。核心支援4種方法的配置,雖然介面不同,但功能是一樣的,其中make menuconfig使用最廣泛;(2)建立依賴關係。在第一次編譯時間發生,產生".de-pend"檔案,運行"make dep"即可;(3)建立核心。這裡建立的是壓縮的核心映像,使用"make zIm-age"或"make bzImage"。這樣就完成了編譯,下載在開發板即可。

一般來說與開發板通訊有3種方式:網路下載(tftp,ftp等),串口下載和USB下載。用tftp下載,需要配置Linux下的tftp服務,然後將PC和開發板直連線(非網線)即可;用串口下載,需要配置Linux下的串日通訊工具Minicom。配置的主要是一些重要參數,如傳輸速率。

但是只有系統核心是不夠的,要使系統正常啟動,還需要負載檔案系統,所以需要製作檔案系統。可以手工製作,但是工作量太大,一般是把現有檔案系統載入到目標板,包括製作檔案系統鏡像和用NFS負載檔案系統方法。

開發板上一般已經燒寫好了嵌入式系統核心鏡像,檔案系統和前面講的U-Boot,在掌握了燒寫方法後,可以自己下載。

3.4來源程式的獲得、編譯和調試

由於Linux是開源軟體,所以運行在其下的應用軟體也是開源軟體,不管是哪一類的都免費獲得原始碼。可以直接在已有的原始碼上進行修改得到符合要求的代碼。論文中使用的就是已有的原始碼,2所示。

Linux作業系統支援彙編,C,C++,Basic,Fortran,Pascal,JAVA,PHP等多種程式設計語言。其下的文字編輯器是Vi和Emacs,二者均有強大的編輯功能。圖形介面的編程用的是Qt或是MiniGUI。利用以上軟體,跟在Windows和其他動作系統下的軟體編寫方法完全相同。

編寫軟體的過程與在其他系統下沒有什麼不同,不同的地方在與編譯和調試。嵌入式中稱之為交叉編譯和交叉調試。

交叉編譯就是將在PC上編寫好的原始碼經過編譯、連結產生可以在嵌入式系統上啟動並執行代碼,2所示。

在交叉調試中,調試器和被偵錯工具分別在PC系統和嵌入式系統中,這是與一般調試不同的地方。交叉調試一般分為軟體調試和硬體調試。

軟體調試插入調試樁的方式進行。典型的是GDB調試器,它分為GdbServer和GdbClient,前者作為調試樁安裝在arm的嵌入式系統中,後者駐於本地PC中,二者可通過串口、網口、並口通訊。

硬體調試一般都使用的是模擬器,常用的如ROMMonitor、ROMEmulator、In-CircuitEmulator和In-CircuitDebugger。硬體調試功能更強大,效能更優秀,但是有的價格昂貴,額外的裝置增加了成本。而arm的JTAG連接埠實現在CPU內部調試,通過連接埠發送命令和接收資訊。

JTAG採用的主要技術為邊界掃描技術,它的基本思想就是在靠近晶片的輸入輸出管腳上增加一個移位寄存器單元。當晶片處於調試狀態時候,這些邊界掃描寄存器可以將晶片和外圍的輸入輸出隔離開來。通過這些邊界掃描寄存器單元,可以實現對晶片輸入輸出訊號的觀察和控制,它提供了一個便捷的方式用於觀測和控制所需要調試的晶片。通過JTAG介面可以方便地對目標系統進行測試,同時,還可以實現Flash的編程,是非常受人歡迎的調試方式。

4結 論

主機從網路下載mp3格式歌曲,通過串口(或tftp)傳送到開發板上,用經過調試的播放器,結合教研室開發的功率放大器,很好的實現了播放音訊功能。

在此基礎上,還可以進一步開發視頻播放功能。除了播放器應用軟體,還可以根據儲存空間的大小增加其他應用程式。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.