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

          其它名詞:

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

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

          嵌入式處理器的啟動過程:
          ????
          ?? 通常系統(tǒng)上電(或者復(fù)位)以后,程序從地址空間的0x0開始?? 即PC(程序計數(shù)器)指針,指向0x0。從這個地址開始讀取指令并運行。通常這個地址對應(yīng)的是Bank0。因為系統(tǒng)是從bank0上引導(dǎo)的,所以,在Bank0上連接保存有啟動代碼的FlashROM,這就是我們常說的Boot ROM即Bootloader程序。
          ????
          Bootloader要實現(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本身。– 要想實現(xiàn)Boot ROM的自編程,必須讓Boot程序是在RAM中運行

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


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


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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆分類(12)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(2)

          相冊

          收藏夾(3)

          my like

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 诸暨市| 无极县| 杭锦后旗| 赣榆县| 大丰市| 达日县| 长乐市| 闸北区| 保山市| 满洲里市| 哈巴河县| 青田县| 焦作市| 汝阳县| 上虞市| 罗源县| 万载县| 安顺市| 华亭县| 云林县| 买车| 罗源县| 葫芦岛市| 西青区| 伽师县| 铜川市| 都昌县| 南和县| 望谟县| 望奎县| 墨脱县| 招远市| 辽源市| 天柱县| 邮箱| 磐石市| 临沂市| 南木林县| 江山市| 黄梅县| 得荣县|