arm處理器與linux的完美結合
嵌入式系統的定義應當是以應用為中心、以計算機技術為基礎、軟體硬體可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。
比如現在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。
為核心設定啟動引數呼叫核心。姜工q群:478743261
Arm處理器與Linux的完美結合
嵌入式系統的定義應當是以應用為中心 以計算機技術為基礎 軟體硬體可裁剪 適應應用系統對功能 可靠性 成本 體積 功耗嚴格要求的專用計算機系統。比如現在atm取款機就是乙個典型rtos,embedded os主要包括兩部分,一部分是處理器,比如arm,powerpc,mipc,一部分是os,比如lin...
Arm處理器與Linux的完美結合
嵌入式 系統的定義應當是以應用為中心 以 技術為基礎 軟體硬體可裁剪 適應應用系統對功能 可靠性 成本 體積 功耗嚴格要求的專用計算機系統。比如現在atm取款機就是乙個典型rtos,embedded os主要包括兩部分,一部分是處理器,比如arm,powerpc,mipc,一部分是os,比如linu...
arm處理器模式和arm處理器狀態的區別
arm處理器狀態 arm微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換 第一種為arm狀態,此時處理器執行32位的字對齊的arm指令 第二種為thumb狀態,此時處理器執行16位的 半字對齊的thumb指令。在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且,處理器工作狀態的轉變...