這久以來聽了我的一個老師關于后PC時代的到來,對嵌入式系統產生了極大興趣,投入了很大的精力在學,有很多的收獲寫出來與朋友分享。
??? 對于剛進入嵌入式系統的學習首先是象學J2EE那樣看不懂且不知所云的名字,所以先要搞定這些名詞:
嵌入式軟件系統的幾種模式:
?? 一?? 簡單嵌入式系統,包含簡單的硬件初始化以及應用代碼。
?? 二?? 簡單嵌入式系統,包含bootloader以及應用代碼,bootloader與應用緊密集成在一起,構成一個嵌
??????? ??? 入式系統。
?? 三?? 復雜嵌入式系統,包含bootloader、操作系統、應用軟件。
開發編繹環境:
????? ads1.2???????????????????????? arm的編譯器arm公司開發的
???? arm-elf-gcc????????????????? Liunx環境下的arm編繹器
????? cygwin+armtools????????? windows下模擬linux的程序和運行在cygwin下的arm的編譯器
????? ARM_SDT_2.51???????? arm比較早版本的編譯器
這么多開發編繹環境選擇適合的就行如果你用操作系統是Linux編輯工具是vi之類一般是arm-elf-gcc?如果操作系統是windows見意ads1.2?。
嵌入式操作系統:??????? VxWorks??????????? 實時性最好,要付費,一般用在高端實時領域,好像美國的飛船上就用它。
???????? uc/os-II????????????? 簡單適合入門,好多書都講這個操作系統,其代碼量也不大如果要看它的源碼的話。
???????? winCE??????????????? 微軟的東四,收費一般小應用就不用它的,高端手機比如多普達上用的就是它。
??????? uclinux???????????????? 是為適應沒有MMC硬件的CPU(arm7TDMI)開發的liunx的版本,開源、免費,相信
?????????????????????????????????? 是今天后的趨勢,學習有一定的難度,網上資料還是很多的。
??????? liunx??????????????????? 開源、免費,ARM9上就可以跑
其它名詞:???????SkyEye???????????? 是開源軟件?的一個項目,SkyEye的目標是在Linux和Windows操作系統里提供一個完全的
??????????????????????????????? 仿真環境。SkyEye仿真環境相當于一個嵌入式計算機系統,你可以在SkyEye里運行一些
????????????????????????????????嵌入式Linux操作系統,如ARMLinux,uClinux,uc/OSII(ucos-ii)等,并能分析和調試它們
??????????????????????????????? 的源代碼。
Boot Loader???????????? 就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化
??????????????????????????????? 件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便
??????????????????????????????? 為最終調用操作系統內核準備好正確的環境。相當于PC機中的BIOS。
Blob、Bootldr、Redboot、U-Boot、ABLE
??????????????
???? Boot Loader 是嚴重地依賴于硬件而實現的,除了依賴于CPU 的體系結構外,Boot Loader實際上也依賴于具體的嵌入式板級設備的配置。這也就是說,對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU 而構建的,要想讓運行在一塊板子上的Boot Loader 程序也能運行在另一塊板子上,通常也都需要修改BootLoader 的源程序。Blob、Bootldr、Redboot、U-Boot、ABLE都是人們對于CPU 的體系結構外開發的通用的BootLoader程序,你只需對這些程序進行移植就行了。
嵌入式處理器的啟動過程:
????
?? 通常系統上電(或者復位)以后,程序從地址空間的0x0開始?? 即PC(程序計數器)指針,指向0x0。從這個地址開始讀取指令并運行。通常這個地址對應的是Bank0。因為系統是從bank0上引導的,所以,在Bank0上連接保存有啟動代碼的FlashROM,這就是我們常說的Boot ROM即Bootloader程序。
????
Bootloader要實現:
?? 硬件系統自檢。
?? 配置其他Bank或者端口、外設等工作模式。
?? 處理中系統的中斷– 在不支持remap的處理器中,中斷必然要經過Boot ROM的空間,這時,Boot ROM
??????需要處理的任務就是把固定的中斷向量映射到一個可編程的中斷處理子程序的地址。
???? 引導操作系統
– 系統配置完成以后, Bootloader需要把操作系統(或者其他程序)裝載到SDRAM(就是系統的RAM區),然后,把PC指針指向程序的RAM空間,使操作系統啟動,這就是引導。
???? Flash(Boot ROM)編程
– 對引導Flash(或者其他的非易失性存儲器)編程,通過串口或者以太網口下載編譯成功的操作系統或者應用程序,甚至Boot ROM本身。– 要想實現Boot ROM的自編程,必須讓Boot程序是在RAM中運行