linansengling

           

          嵌入式系統(tǒng)入門

          這久以來聽了我的一個老師關(guān)于后PC時代的到來,對嵌入式系統(tǒng)產(chǎn)生了極大興趣,投入了很大的精力在學(xué),有很多的收獲寫出來與朋友分享。

          ??? 對于剛進(jìn)入嵌入式系統(tǒng)的學(xué)習(xí)首先是象學(xué)J2EE那樣看不懂且不知所云的名字,所以先要搞定這些名詞:

          嵌入式軟件系統(tǒng)的幾種模式

          ?? 一?? 簡單嵌入式系統(tǒng),包含簡單的硬件初始化以及應(yīng)用代碼。
          ?? 二?? 簡單嵌入式系統(tǒng),包含bootloader以及應(yīng)用代碼,bootloader與應(yīng)用緊密集成在一起,構(gòu)成一個嵌
          ??????? ??? 入式系統(tǒng)。
          ?? 三?? 復(fù)雜嵌入式系統(tǒng),包含bootloader、操作系統(tǒng)、應(yīng)用軟件。

          開發(fā)編繹環(huán)境

          ????? ads1.2???????????????????????? arm的編譯器arm公司開發(fā)的
          ???? arm-elf-gcc????????????????? Liunx環(huán)境下的arm編繹器
          ????? cygwin+armtools????????? windows下模擬linux的程序和運(yùn)行在cygwin下的arm的編譯器
          ????? ARM_SDT_2.51???????? arm比較早版本的編譯器
          這么多開發(fā)編繹環(huán)境選擇適合的就行如果你用操作系統(tǒng)是Linux編輯工具是vi之類一般是arm-elf-gcc?如果操作系統(tǒng)是windows見意ads1.2?。

          嵌入式操作系統(tǒng):

          ??????? VxWorks??????????? 實(shí)時性最好,要付費(fèi),一般用在高端實(shí)時領(lǐng)域,好像美國的飛船上就用它。
          ???????? uc/os-II????????????? 簡單適合入門,好多書都講這個操作系統(tǒng),其代碼量也不大如果要看它的源碼的話。
          ???????? winCE??????????????? 微軟的東四,收費(fèi)一般小應(yīng)用就不用它的,高端手機(jī)比如多普達(dá)上用的就是它。
          ??????? uclinux???????????????? 是為適應(yīng)沒有MMC硬件的CPU(arm7TDMI)開發(fā)的liunx的版本,開源、免費(fèi),相信
          ?????????????????????????????????? 是今天后的趨勢,學(xué)習(xí)有一定的難度,網(wǎng)上資料還是很多的。
          ??????? liunx??????????????????? 開源、免費(fèi),ARM9上就可以跑

          其它名詞:

          ???????SkyEye???????????? 是開源軟件?的一個項(xiàng)目,SkyEye的目標(biāo)是在Linux和Windows操作系統(tǒng)里提供一個完全的
          ??????????????????????????????? 仿真環(huán)境。SkyEye仿真環(huán)境相當(dāng)于一個嵌入式計(jì)算機(jī)系統(tǒng),你可以在SkyEye里運(yùn)行一些
          ????????????????????????????????嵌入式Linux操作系統(tǒng),如ARMLinux,uClinux,uc/OSII(ucos-ii)等,并能分析和調(diào)試它們
          ??????????????????????????????? 的源代碼。
          Boot Loader???????????? 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化
          ??????????????????????????????? 件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便
          ??????????????????????????????? 為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。相當(dāng)于PC機(jī)中的BIOS。

          Blob、Bootldr、Redboot、U-Boot、ABLE
          ??????????????
          ???? Boot Loader 是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,除了依賴于CPU 的體系結(jié)構(gòu)外,Boot Loader實(shí)際上也依賴于具體的嵌入式板級設(shè)備的配置。這也就是說,對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU 而構(gòu)建的,要想讓運(yùn)行在一塊板子上的Boot Loader 程序也能運(yùn)行在另一塊板子上,通常也都需要修改BootLoader 的源程序。Blob、Bootldr、Redboot、U-Boot、ABLE都是人們對于CPU 的體系結(jié)構(gòu)外開發(fā)的通用的BootLoader程序,你只需對這些程序進(jìn)行移植就行了。

          嵌入式處理器的啟動過程:
          ????
          ?? 通常系統(tǒng)上電(或者復(fù)位)以后,程序從地址空間的0x0開始?? 即PC(程序計(jì)數(shù)器)指針,指向0x0。從這個地址開始讀取指令并運(yùn)行。通常這個地址對應(yīng)的是Bank0。因?yàn)橄到y(tǒng)是從bank0上引導(dǎo)的,所以,在Bank0上連接保存有啟動代碼的FlashROM,這就是我們常說的Boot ROM即Bootloader程序。
          ????
          Bootloader要實(shí)現(xiàn):

          ?? 硬件系統(tǒng)自檢。

          ?? 配置其他Bank或者端口、外設(shè)等工作模式。

          ?? 處理中系統(tǒng)的中斷– 在不支持remap的處理器中,中斷必然要經(jīng)過Boot ROM的空間,這時,Boot ROM
          ??????需要處理的任務(wù)就是把固定的中斷向量映射到一個可編程的中斷處理子程序的地址。

          ???? 引導(dǎo)操作系統(tǒng)
          – 系統(tǒng)配置完成以后, Bootloader需要把操作系統(tǒng)(或者其他程序)裝載到SDRAM(就是系統(tǒng)的RAM區(qū)),然后,把PC指針指向程序的RAM空間,使操作系統(tǒng)啟動,這就是引導(dǎo)。

          ???? Flash(Boot ROM)編程
          – 對引導(dǎo)Flash(或者其他的非易失性存儲器)編程,通過串口或者以太網(wǎng)口下載編譯成功的操作系統(tǒng)或者應(yīng)用程序,甚至Boot ROM本身。– 要想實(shí)現(xiàn)Boot ROM的自編程,必須讓Boot程序是在RAM中運(yùn)行

          posted on 2006-11-06 14:09 fds 閱讀(1207) 評論(0)  編輯  收藏 所屬分類: ARM and Liunx


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(12)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(2)

          相冊

          收藏夾(3)

          my like

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 昭平县| 鄢陵县| 房产| 尚义县| 汝城县| 银川市| 乌恰县| 阿图什市| 育儿| 岳普湖县| 西城区| 千阳县| 镇雄县| 西畴县| 阜新| 四会市| 都昌县| 敖汉旗| 鄢陵县| 榆林市| 蓬莱市| 米脂县| 页游| 通许县| 津南区| 偏关县| 莱芜市| 德昌县| 西城区| 邢台县| 罗城| 华坪县| 彭山县| 扎囊县| 玛纳斯县| 平利县| 惠东县| 望奎县| 靖安县| 四子王旗| 定襄县|