嵌入式系統開發 Arm與Linux的完美結合

2021-08-25 10:43:33 字數 1448 閱讀 7423

嵌入式系統的定義應當是以應用為中心、以計算機技術為基礎、軟體硬體可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

比如現在atm取款機就是乙個典型rtos,embedded os主要包括兩部分,一部分是處理器,比如arm,powerpc,mipc,一部分是os,比如linux,wince,vxworks,us/os,etc.我現在主要學習的路線是arm+linux,選擇arm主要是因為arm技術已經比較成熟,選擇linux是因為linux是開源的,免費的,另外如果學好了linux就算將來不搞嵌入式系統開發這塊,也可以專供linux伺服器這一方面。

第一步:交叉編譯環境的建立

a: 基於linux作業系統的應用開發環境一般是由目標系統硬體(開發板)和宿主pc機所構成。目標硬體開發板用於執行作業系統和系統應用軟體。而目標板所用到的作業系統的核心編譯、應用程式的開發和除錯則需要通過宿主pc機來完成(所以稱為交叉編譯)。雙方之間一般通過串列埠,並口或乙太網介面建立連線關係。安裝linux os,比如redhao linux 9.0,可以採用預設安裝(但要包含ftp服務),將該linux伺服器接入區域網,其他的pc機可以用windows,需要的軟體工具包括。

(1)ftp客戶端程式

(2)telnet工具

(3)移植到某一特定arm平台的linux作業系統核心原始碼

b:(1) 建立編譯環境,在這個過程中,將設定一些環境變數,建立安裝目錄,安裝核心源**和標頭檔案等。

(2) 建立binutils.在這個過程結束後,會建立類似arm-linux-ld等工具。

(3) 建立乙個交叉編譯版本的gcc,注意:在這個過程中,只能編譯c程式,而不能編譯c++程式。

(4) 建立乙個交叉編譯版本的glibc,這裡最容易出問題。

(5) 建立乙個交叉編譯版本的gdb。這個過程結束後,會建立arm-linux_gdb

(6) 重新建立gcc。前面建立gcc的過程沒有編譯c++編譯器,現在glibc已經準備好了,所以這個步驟將完善gcc的交叉編譯。

(7) 重新建立glibc.

如果在交叉編譯過程中出現錯誤,那麼請檢查:

版本選擇是否正確,以及是否安裝了相應的補丁;

庫檔案路徑設定是否正確;

系統環境變數是否設定正確。

第二步:編寫bootloader並移植到開發板上

b:bootloader啟動大多數都分為兩個階段

(1):基本的硬體初始化(遮蔽所有的中斷,關閉處理器內部指令/資料cache等)。

為第二階段準備ram空間,如果是從某個固態儲存媒質中,則複製bootlodaer的第二階段**到ram。

設定堆疊。

跳轉到第二階段的c程式入口點。

(2):初始化本階段要使用的硬體裝置。

檢查系統記憶體對映。

將核心映像和根檔案系統映像從flash讀到ram。

為核心設定啟動引數呼叫核心。

嵌入式系統開發流程

如果在乙個嵌入式系統中使用 linux技術開發 根據應用需求的不同有不同的配置開發方法,但是,一般情況下都需要經過如下的過程 配置開發主機,配置minicom,一般的引數為波特率115200 baud s,資料位8位,停止位為1,9,無奇偶校驗,軟體硬體流控設為無。在windows下的超級終端的配置...

嵌入式系統開發概要

嵌入式系統 在嵌入式系統中包含乙個能夠實現處理系統輸入並且生成系統輸出功能的微控器,通過寄存在處理器記憶體中的軟體演算法使系統的輸入和輸出得以聯絡起來。嵌入式系統設計必須考慮的因素 輸入 輸出裝置的電子介面 系統資源的限制 使用者介面概念 系統的操作環境 成本分析 相關標準等一系列制約因素。嵌入式系...

嵌入式Linux系統開發

對於嵌入式系統,大家都很熟悉吧 現在隨著網路的發展,嵌入式已經成為it最有發展前途的乙個行業,所以很多人都想著學習嵌入式。舉個列子吧 對於乙個新手來說,如果讓他完成一項linux的系統開發,對他而言難於上青天 在凌陽教育是這樣安排的一些課程 linux系統提供了許許多多的功能,作為乙個軟體開發人員我...