




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第5講 嵌入式開發(fā)環(huán)境建立與開發(fā)嵌入式系統(tǒng)設計方法嵌入式系統(tǒng)的開發(fā)步驟嵌入式系統(tǒng)設計步驟系統(tǒng)需求分析:確定設計任務和設計目標,并提煉出設計規(guī)格說明書,作為正式設計指導和驗收的標準。系統(tǒng)的需求一般分功能性需求和非功能性需求兩方面。功能性需求是系統(tǒng)的基本功能,如輸入輸出信號、操作方式等;非功能需求包括系統(tǒng)性能、成本、功耗、體積、重量等因素。硬件需求分析處理性能技術指標和成本功耗操作系統(tǒng)和軟件支持工具的選擇軟件需求分析實時性系統(tǒng)的功能開發(fā)的難度成本嵌入式系統(tǒng)設計步驟體系結構設計:描述系統(tǒng)如何實現(xiàn)所述的功能和非功能需求,包括對硬件、軟件和執(zhí)行裝置的功能劃分以及系統(tǒng)的軟件、硬件選型等。一個好的體系結構是
2、設計成功與否的關鍵。硬件/軟件協(xié)同設計:基于體系結構,對系統(tǒng)的軟件、硬件進行詳細設計。為了縮短產(chǎn)品開發(fā)周期,設計往往是并行的。應該說,嵌入式系統(tǒng)設計的工作大部分都集中在軟件設計上,采用面向?qū)ο蠹夹g、軟件組件技術、模塊化設計是現(xiàn)代軟件工程經(jīng)常采用的方法。系統(tǒng)集成:把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進行調(diào)試,發(fā)現(xiàn)并改進單元設計過程中的錯誤。系統(tǒng)測試:對設計好的系統(tǒng)進行測試,看其是否滿足規(guī)格說明書中給定的功能要求。嵌入式系統(tǒng)的開發(fā)流程需求分析及規(guī)格說明選擇主要芯片確定編程語言選擇開發(fā)環(huán)境RTOS的使用選擇開發(fā)方案設計與調(diào)試測試與集成測試工具與其他輔助設備產(chǎn)品嵌入式系統(tǒng)的開發(fā)設計與調(diào)試設計生產(chǎn)編
3、譯器鏈接器調(diào)試器IDE操作系統(tǒng)軟件開發(fā)與測試評估板仿真器邏輯分析儀邊界掃描測試儀示波器開發(fā)環(huán)境什么是嵌入式開發(fā)環(huán)境:源程序編譯器目標文件鏈接器可重定位程序定位器可執(zhí)行文件編譯器/匯編器/鏈接定位器調(diào)試器/仿真器主機(Host)及其工作平臺實時操作系統(tǒng)(可選)目標評估系統(tǒng)(可選)測試工具(軟件/硬件/協(xié)議等,可選)其他輔助設備(可選) 典型的開發(fā)環(huán)境嵌入式系統(tǒng)的調(diào)試(1)嵌入式系統(tǒng)的調(diào)試有四種基本方法模擬調(diào)試(Simulator)軟件調(diào)試(Debugger)BDM/JTAG調(diào)試(BDM/JTAG Debugger)全仿真調(diào)試(Emulator)嵌入式系統(tǒng)的調(diào)試(2)模擬調(diào)試(Simulator)
4、 調(diào)試工具和待調(diào)試的嵌入式軟件都在主機上運行,由主機提供一個模擬的目標運行環(huán)境,可以進行語法和邏輯上的調(diào)試。優(yōu)點:簡單方便,不需要目標板,成本低缺點:功能非常有限,無法實時調(diào)試大多數(shù)調(diào)試工具都提供Simulator功能嵌入式系統(tǒng)的調(diào)試(3)軟件調(diào)試(Debugger) 主機和目標板通過某種接口(通常是串口)連接,主機上提供調(diào)試界面,待調(diào)試軟件下載到目標板上運行。 這種方式的先決條件是要在Host和Target之間建立起通信聯(lián)系(目標板上稱為監(jiān)控程序Monitor)優(yōu)點:純軟件,價格較低,簡單,軟件調(diào)試能力較強缺點:需要事先燒制Monitor(往往需多次試驗才能成功)且目標板工作正常,功能有限,
5、特別是硬件調(diào)試能力較差。PCTargetMonitor串口嵌入式系統(tǒng)的調(diào)試(4)BDM/JTAG調(diào)試 這種方式有一個硬件調(diào)試體。該硬件調(diào)試體與目標板通過BDM、JTAG等調(diào)試接口相連,與主機通過串口、并口、網(wǎng)口或USB口相連。待調(diào)試軟件通過BDM/JTAG調(diào)試器下載到目標板上運行。優(yōu)點:方便、簡單,無須制作Monitor,軟硬件均可調(diào)試缺點:需要目標板,且目標板工作基本正常(至少MCU工作正常),僅適用于有調(diào)試接口的芯片TargetPC接口BDM/JTAG Debugger嵌入式系統(tǒng)的調(diào)試(5)全仿真調(diào)試(Emulator) 這種方式用仿真器完全取代目標板上的MCU,因而目標系統(tǒng)對開發(fā)者來說完
6、全是透明的、可控的。仿真器與目標板通過仿真頭連接,與主機有串口、并口、網(wǎng)口或USB口等連接方式。由于仿真器自成體系,調(diào)試時既可以連接目標板,也可以不連接目標板(Stand alone)。優(yōu)點:功能非常強大,軟硬件均可做到完全實時在線調(diào)試缺點:價格昂貴。ARM的調(diào)試軟件模擬調(diào)試SDT2.52: ARMulatorADS1.2:ARMulatorTrace32:SimulatorEW-ARM:C-spy軟件調(diào)試ADS1.2:Angel(串口)SDT2.52 Angel(串口)JTAG調(diào)試ARM:Multi-ICE,簡易型仿真器Trace32-ICD for ARMHitex:Tanto for A
7、RM全仿真調(diào)試Trace32-FIRE/ICEADS1.2ARM公司出品,IDE環(huán)境,包括ARM/Thumb匯編器:armasmANSI C 編譯器 - armcc 和 tccISO / Embedded C+ 編譯器 - armcpp and tcpp鏈接器 armlinkWindows 集成開發(fā)環(huán)境 CodeWarrior格式轉換器 fromelf庫管理器 - armar調(diào)試器模擬調(diào)試器:ARMulatorJTAG調(diào)試:AXD(與Multi-ICE配合)支持所有ARM內(nèi)核,最新版本:RealView2.0ARM的調(diào)試軟件EW-ARM瑞典IRA公司出品著名的嵌入式工具提供商,以提供編譯器/協(xié)
8、議棧/統(tǒng)一建模工具著稱主要產(chǎn)品:Embeded Workbench(EW)、Make APP、Visual State等EW-ARM:針對ARM的集成開發(fā)環(huán)境:C/C+編譯器C-SPY 模擬調(diào)試器ROM-Monitor多種級別代碼優(yōu)化方法,滿足用戶在速度、文件大小方面的要求內(nèi)建ARM特性優(yōu)化器支持多種斷點模式支持Nucleus, VxWorks等RTOSGreenhillsGNUARM的調(diào)試軟件ARM調(diào)試工具Multi-ICEARM公司出品與ADS配套使用支持不同的ARM內(nèi)核另有Multi-trace模塊可選ARM嵌入式開發(fā)模式目標機/宿主機開發(fā)模式宿主機需要運行一些軟件進行程序編輯、編譯和調(diào)
9、試等功能,這些軟件通常稱為集成開發(fā)環(huán)境(IDE)。便攜電腦宿主機:編輯程序、編譯程序、調(diào)試程序目標機:運行程序連接方式:串口、以太網(wǎng)、USB接口等宿主機(Host) :是用于開發(fā)嵌入式系統(tǒng)的計算機。一般為PC機(或者工作站),具備豐富的軟硬件資源,為嵌入式軟件的開發(fā)提供全過程支持。目標機(Target):即所開發(fā)的嵌入式系統(tǒng),是嵌入式軟件的運行環(huán)境,其硬件軟件是為特定應用定制的。駐留監(jiān)控模式駐留監(jiān)控程序是一個特殊應用的程序,開發(fā)者先將駐留監(jiān)控程序調(diào)試好并在目標機上運行,駐留監(jiān)控程序通過特定的通信方式(如以太網(wǎng)、USB等)和運行于宿主機的集成開發(fā)環(huán)境進行通信實現(xiàn)程序下載、調(diào)試等功能。這種模式下載
10、速度快,和集成開發(fā)環(huán)境連接緊密,但該程序運行需要占用一些目標板資源。調(diào)試駐留監(jiān)控程序通常采用在線仿真模式進行。駐留監(jiān)控程序有:VxWorks操作系統(tǒng)的bootrom、Linux操作系統(tǒng)的u-boot、Windows CE的Eboot等。嵌入式軟件開發(fā)流程嵌入式開發(fā)流程需求分析1 芯片選型2 軟件設計方案(操作系統(tǒng)選擇)硬件設計、調(diào)試系統(tǒng)移植1 啟動代碼2 bootloader移植3 操作系統(tǒng)移植應用程序設計、調(diào)試系統(tǒng)測試形成產(chǎn)品系統(tǒng)移植這個階段根據(jù)不同的軟件設計方案可能不同。無操作系統(tǒng)的軟件開發(fā)啟動代碼應用程序基于操作系統(tǒng)的軟件開發(fā)bootloader操作系統(tǒng)移植BSP板級支持包應用程序開發(fā)啟
11、動代碼功能硬件初始化引導C代碼特征通常用匯編語言編寫程序復位運行入口點代碼量非常小程序流程設置中斷、異常入口關中斷硬件寄存器初始化(GPIO配置、總線配置、PLL時鐘)初始化棧指針數(shù)據(jù)區(qū)初始化C入口函數(shù)調(diào)用 BL Main應用程序(無操作系統(tǒng))功能硬件驅(qū)動應用特征通常用C語言或者嵌入式匯編語言編寫程序較復雜,代碼量較大bootloader功能硬件初始化引導操作系統(tǒng)下載程序(串口、網(wǎng)口、USB)燒寫flash特征程序復位運行入口點通常用匯編語言+C語言編寫代碼量較小BSP板級支持包功能為應用程序提供統(tǒng)一的硬件操作接口特征高度硬件相關高度依賴于具體硬件平臺各種操作系統(tǒng)各異操作系統(tǒng)的選擇商用型Vxw
12、orks, Nucleux ,PlamOS, Symbian, WinCE, QNX, pSOS,VRTX,Lynx OS, Hopen, Delta OS免費型Linux, CLinux,C/OS-,eCos,uITRON對實時要求高的,可以采用Vxworks、WinCE,RTLinux無實時要求的,可以采用Embedded Linux對于復雜的嵌入式系統(tǒng)應考慮使用RTOS本實驗教學平臺支持以下操作系統(tǒng):uC/OS、Linux、Vxworks、Wince操作系統(tǒng)的移植必須根據(jù)硬件平臺和應用場合將某種操作系統(tǒng)進行定制和代碼修改使其能夠運行在該硬件平臺上,這個過程就是操作系統(tǒng)的移植。操作系統(tǒng)提供
13、商將針對某一個處理器的公板移植代碼進行發(fā)布,用戶進行移植時只需要選擇和你使用相同處理器的公板移植代碼,并根據(jù)你的硬件進行適當修改,這種移植稱為板級移植。如果你所使用的處理器在操作系統(tǒng)的發(fā)布中還沒有一個公板代碼,則針對處理器部分的代碼都需要由用戶重寫,這種移植成為片級移植。由于硬件資源的限制,嵌入式操作系統(tǒng)通常需要進行裁減以減少代碼大小和提高運行效率。需要的功能加上,不需要的功能去掉。嵌入式系統(tǒng)編程語言的選擇Data from Japan ITRON survey for new embedded systems應用程序設計調(diào)試1、圖形用戶界面:VxWorks下的WindMLLinux下的QT
14、Embedded、MicroWindows等Windows CE的用戶界面則保持傳統(tǒng)的Windows風格界面2、實時性:在應用程序設計中同樣也要考慮。3、功耗:在應用程序設計時須充分考慮系統(tǒng)功耗,在不影響系統(tǒng)功能的同時將功耗降到最低。4、程序大小應用程序開發(fā)(操作系統(tǒng))功能GUI圖形、人機交互控制算法特征硬件依賴程度小部分可仿真調(diào)試各種操作系統(tǒng)各異嵌入式軟件設計和調(diào)試流程編輯創(chuàng)建工程添加文件、編寫程序匯編語言加C語言編譯配置編譯、匯編和連接參數(shù)編寫連接腳本文件編譯調(diào)試連接調(diào)試器下載程序運行、調(diào)試固化通過仿真器燒寫flash專用或通用的編程器通過bootloader燒寫flash交叉編譯GNU交
15、叉編譯編譯.c arm-elf-gcc匯編.S arm-elf-gas連接.o arm-elf-ld操作文件匯編文件.SC文件.c鏈接腳本文件ldscript庫文件.o .lib .a生成調(diào)試格式文件.elfDWARF-1DWARF-2生成bin文件elf2binarm-elf-objcopyARM嵌入式系統(tǒng)控制界面要操作PC通常必須使用鍵盤和顯示器或者鼠標。ARM也是一臺計算機,在開發(fā)過程甚至是產(chǎn)品設計中也需要有一定的交互方式。由于硬件的局限,通常不會使用標準的鍵盤、顯示器作為輸入輸出設備,而是使用串口連接的方式和宿主機進行通信。宿主機運行一個名為超級終端的軟件,它能夠接收從ARM通過串口發(fā)
16、送過來的字符信息,并顯示出來(相當于ARM的輸出設備,如顯示器),該軟件也能獲取用戶輸入并通過串口發(fā)送到ARM,由ARM接收并處理(相當于ARM的輸入設備,如鍵盤)。超級終端軟件1、Windows超級終端2、DNW嵌入式開發(fā)流程需求分析1 芯片選型2 軟件設計方案(操作系統(tǒng)選擇)硬件設計、調(diào)試系統(tǒng)移植1 啟動代碼2 bootloader移植3 操作系統(tǒng)移植應用程序設計、調(diào)試系統(tǒng)測試形成產(chǎn)品ARM代碼結構ARM程序編譯后得到的二進制代碼通常包含:代碼段(text段或code段):編譯后的代碼,只讀讀寫數(shù)據(jù)段(data段):可讀寫的全局變量,讀寫只讀數(shù)據(jù)段(rodata段):只讀數(shù)據(jù),如const
17、類型的全局變量BSS段:需要清0的數(shù)據(jù)這些段在鏈接(link)過程中產(chǎn)生,并且在鏈接過程中都應該設置各段的起始地址。程序必須從代碼段指定的起始位置處運行。根據(jù)代碼段運行所在地址的硬件介質(zhì)不同可以將程序分為在RAM運行的程序和在ROM運行的程序。鏈接腳本段Text段rodata段data段bss段符號Image_RO_Limit Image_RW_BaseImage_ZI_BaseImage_ZI_LimitGCC庫專用調(diào)試信息鏈接腳本示例程序在SDRAM中運行程序在FLASH中運行在RAM運行程序結構圖在ROM運行程序結構圖啟動代碼由于ARM軟件編程一般采用高級語言,如C語言,因此在系統(tǒng)啟動后
18、必須有一段程序能夠?qū)PU帶入到能夠運行C語言的狀態(tài),這段程序就是啟動代碼。啟動代碼通常用匯編語言完成,并在系統(tǒng)復位入口點(ARM系統(tǒng)中為0地址)運行。 在嵌入式系統(tǒng)中系統(tǒng)復位入口點所在的硬件通常是Flash等芯片,存儲在這些芯片中的數(shù)據(jù)即使掉電也能夠保存,而且這個地方的硬件的訪問寬度是由硬件設計決定,軟件不能更改,這樣就能保證上電后該地址的數(shù)據(jù)有效。啟動代碼主要功能(1)1、建立異常向量表2、初始化硬件:初始化RAM、關閉中斷、關閉看門狗等3、初始化堆棧4、初始化讀寫數(shù)據(jù)段、BSS段:在ROM中運行的程序必須將數(shù)據(jù)段從ROM中拷貝到RAM中,并將BSS段清零;在RAM中運行的程序則需要將BS
19、S段清零,然后將整個代碼段、只讀數(shù)據(jù)段、讀寫數(shù)據(jù)段和BSS段從ROM拷貝到RAM。啟動代碼主要功能(2)5、重定向位置無關的代碼是指該代碼不用在編譯指定的地址 運行也能保證程序的執(zhí)行流程和執(zhí)行邏輯不會改變。位置相關代碼運行的地址必須和編譯時的地址一致,否則將導致程序運行流程改變。在初始化程序區(qū)、數(shù)據(jù)區(qū)之后需要一條跳轉指令將PC跳轉到編譯時指定的運行地址接著運行。LDR指令及之前的指令都在ROM中運行,而startram標號之后的代碼則跳轉到編譯時指定的地址(RAM或者ROM中)中運行了,因為startram標號表示的地址是由編譯時就確定的。這個過程就是重定向。LDRPC, = startram
20、startram : 重定向之前運行的代碼必須是位置無關的代碼。啟動代碼主要功能(3)6、跳轉到C代碼LDRPC,=Main 啟動代碼分析在基于ARM920T core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0 x00000000開始執(zhí)行,因此在這個地址處安排的通常就是系統(tǒng)的啟動代碼。它通常也是BootLoader程序的一部分,可以在啟動代碼基礎上編寫B(tài)ootLoader。用匯編語言編寫。啟動代碼是在復位后運行其它程序之前運行的一段小程序。通過它,初始化硬件設備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用C函數(shù)準備好正確的環(huán)境。啟動代碼的移植和修改啟動代碼
21、除了依賴于 CPU 的體系結構外,實際上也依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。對于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的啟動代碼也能運行在另一塊板子上,也還是需要作一些必要的修改。 啟動代碼流程圖啟動代碼的功能:RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調(diào)用C函數(shù)。注意:在本階段,特別是在堆棧設置之前,進行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不可預知的結果;設置異常跳轉表復位異
22、常直接跳轉到ResetHandler處,它是相對跳轉,位置無關。 關閉看門狗設置S3C2410 WTCON寄存器必須設置0 x01e000000 x01d30000設置中斷模式并禁止中斷設置S3C2410中斷寄存器設置所有一級中斷源與二級中斷源為不可用狀態(tài)配置存儲器控制寄存器寬度0 x01e00000配置值堆棧初始化C代碼初始化拷貝RW數(shù)據(jù)段ZI段清零跳轉到Main函數(shù)處執(zhí)行BootLoader的基本概念BootLoader是系統(tǒng)加電后運行的第一段軟件代碼。嵌入式系統(tǒng)中,整個系統(tǒng)的加載啟動任務完全由 BootLoader來完成。比如在一個基于ARM920T core的嵌入式系統(tǒng)中,系統(tǒng)在上電或
23、復位時都從地址0 x00000000開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核或用戶應用程序運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應用程序準備好正確的環(huán)境。BootLoader 的移植和修改BootLoader除了依賴于 CPU 的體系結構外,BootLoader 實際上也依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。對于兩塊不同的嵌入式板而言,即使
24、它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的BootLoader程序也能運行在另一塊板子上,也還是需要作一些必要的修改。 系統(tǒng)啟動和Bootloader通常,Boot Loader 是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的 Boot Loader 幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?Boot Loader 歸納出一些通用的概念來,以指導用戶特定的 Boot Loader 設計與實現(xiàn)。處理器啟動方式基本原理:硬件復位-處理器模式-設置程序指針PC和堆棧指針SP-轉向執(zhí)行PC處的代碼。典型處理器舉例:
25、X86:硬件復位后,進入實模式,執(zhí)行FFFF:0000處的代碼(實際為BIOS代碼)ARM(S3C2410、SA1110、STA2019):硬件復位后,一般進入管理模式,執(zhí)行地址為0處的代碼(多為Flash,與處理器配置有關)68K(68EZ328、68VZ328):硬件復位后,一般進入Supervisor模式,執(zhí)行地址為0處指示的Flash代碼嵌入式Linux系統(tǒng)基本組成 初始化啟動代碼:Bootloader嵌入式Linux操作系統(tǒng)內(nèi)核:kernel根文件系統(tǒng):rootfs用戶應用程序 系統(tǒng)加電或復位后,所有的 CPU 通常都從某個由 CPU 制造商預先安排的地址上取指令。 基于 CPU 構
26、建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備(比如:ROM、EEPROM 或 FLASH 等)被映射到這個預先安排的地址上。因此在系統(tǒng)加電后,CPU 將首先執(zhí)行 Boot Loader 程序。 下圖1就是一個同時裝有 Boot Loader、內(nèi)核的啟動參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的固態(tài)存儲設備的典型空間分配結構圖。系統(tǒng)啟動和BootloaderBootloader基本原理: 系統(tǒng)初始代碼,用于引導操作系統(tǒng)主要功能:初始化硬件建立內(nèi)存空間映射引導操作系統(tǒng)用戶操作功能:內(nèi)存檢查、操作系統(tǒng)文件下載、核心參數(shù)設置、Flash讀寫等。系統(tǒng)啟動和Bootloader Boot Loader 的啟動過程分
27、單階段(Single Stage)還是多階段(Multi-Stage) 兩種。 由于 Boot Loader 的實現(xiàn)依賴于 CPU 的體系結構,因此大多數(shù) Boot Loader 都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結構的代碼,比如設備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的。而 stage2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)給復雜的功能,而且代碼會具有更好的可讀性和可移植性。 從固態(tài)存儲設備上啟動的 Boot Loader 大多都是 2 階段的啟動過程,也即啟動過程可以分為 stage 1 和 stage
28、 2 兩部分。BootLoader的主要任務與典型結構框架從操作系統(tǒng)的角度看,BootLoader的總目標就是正確地調(diào)用內(nèi)核來執(zhí)行。 大多數(shù)BootLoader都分為stage1和stage2兩大部分。依賴于CPU體系結構的代碼,比如設備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的,也就是前面說的啟動代碼。而stage2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)復雜的功能,而且代碼會具有更好的可讀性和可移植性。 stage 1 和 stage 2 具體完成任務:Stage1:多用匯編語言完成 硬件設備初始化 為加載bootloader的Stage2準備RA
29、M空間 拷貝bootloader的Stage2到RAM中 設置好堆棧 跳轉到Stage2的入口點Stage2: 初始化本階段使用到的硬件設備 檢測系統(tǒng)內(nèi)存映射 將Kernel和根文件系統(tǒng)從Flash上讀到RAM空間 設置內(nèi)核啟動參數(shù) 引導內(nèi)核BootLoader的主要任務與典型結構框架Stage 1初始化流程圖stage 1的功能: RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調(diào)用Stage 2。注意:在本階段,特別是在堆棧設置之前,進行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不可預知的結果;Stage 2流程圖stage
30、 2的功能: 初始化串口,顯示菜單,通過控制臺獲取用戶輸入,并執(zhí)行相應的命令操作。 bootloader 的 stage2 可執(zhí)行映象剛被拷貝到 RAM 空間時的系統(tǒng)內(nèi)存布局 BootLoader 的安裝系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排的地址上取指令。比如,S3C2410在復位時都從地址 0 x00000000 取它的第一條指令。嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備(比如:ROM、EEPROM或FLASH等)被安排這個起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。也就是說對于基于S3C2410的這套系統(tǒng),我們的BootLoader是從0地
31、址開始存放的,而這塊起始地址需要采用可引導的固態(tài)存儲設備如FLASH。用來控制 BootLoader 的設備或機制串口通訊是最簡單也是最廉價的一種雙機通訊設備,所以往往在BootLoader中主機和目標機之間都通過串口建立連接,BootLoader 程序在執(zhí)行時通常會通過串口來進行 I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當然如果認為串口通訊速度不夠,也可以采用網(wǎng)絡或者USB通訊,那么相應的在BootLoader中就需要編寫各自的驅(qū)動。Boot Loader 的操作模式啟動加載模式:這種模式也稱為自主(Autonomous)模式。也即BootLoader從目標機上的某個固態(tài)
32、存儲設備上將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式。 下載模式:在這種模式下,目標機上的BootLoader將通過串口連接或網(wǎng)絡連接等通信手段從主機下載文件,比如:下載應用程序、數(shù)據(jù)文件、內(nèi)核映像等。從主機下載的文件通常首先被BootLoader保存到目標機的RAM中,然后再被 BootLoader寫到目標機上的固態(tài)存儲設備中。BootLoader 的這種模式通常在系統(tǒng)更新時使用。工作于這種模式下的 BootLoader 通常都會向它的終端用戶提供一個簡單的命令行接口。 在uboot中可以通過修改環(huán)境變量實現(xiàn)自主模式。BootLoad
33、er與主機間文件傳輸?shù)耐ㄐ旁O備及協(xié)議最常見的情況就是,目標機上的 BootLoader 通過串口與主機之間進行文件傳輸,傳輸可以簡單的采用直接數(shù)據(jù)收發(fā),當然在串口上也可以采用xmodemymodemzmodem 協(xié)議以及在以太網(wǎng)上采用TFTP協(xié)議。在BootLoader中主機和目標機之間都通過串口建立連接,BootLoader程序在執(zhí)行時通常會通過串口來進行I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。操作模式:啟動加載模式下載模式常用串口、以太網(wǎng)、USB等接口在主機和目標機之間傳遞數(shù)據(jù)(如下載程序)。Bootloader系統(tǒng)啟動和Bootloader典型的BootloaderX
34、86:BIOS代碼執(zhí)行基本的初始化,LILO或Grub則是典型的Bootloader程序。ARM:u-boot、armboot、redboot、blob、vivi等PPC:u-boot、ppcboot、redboot等。常見的BootloaderBootRomBootRom是用于VxWorks操作系統(tǒng)開發(fā)的bootloader。和Tornado等集成開發(fā)環(huán)境緊密結合。可通過某種可選擇的通信手段(如網(wǎng)口、串口),將VxWorks內(nèi)核加載到目標板。BootRom還提供如地址內(nèi)容查看、地址內(nèi)容修改和BootRom菜單顯示信息控制等功能。常見的BootloaderEBootEboot是用于Window
35、s CE操作系統(tǒng)開發(fā)的bootloader。它通過以太網(wǎng)和主機的集成開發(fā)環(huán)境Platform Builder進行通信,可以實現(xiàn)Windows CE內(nèi)核的下載、調(diào)試。此外Eboot提供Flash固化等功能。常見的Bootloaderu-boot支持PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等。除了支持Linux系統(tǒng)的引導外,還支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等多種嵌入式操作系統(tǒng)的引導。用戶接口類似于Linux的shell界面,通過串口連接,用戶可以交互式的輸入命令和看到結果。使用u-boo
36、t可通過串口、以太網(wǎng)等接口從宿主機下載程序并引導系統(tǒng),同時還可以將程序固化到Flash中,它提供靈活的環(huán)境變量操作接口,方便實現(xiàn)自主模式和引導模式之間的切換。JXARM9-2410使用通用的u-bootu-boot簡介u-boot是由德國DENX小組開發(fā)的交叉平臺BootLoader,其全稱為“universal Boot Loader”。u-boot的開發(fā)目標是支持盡可能多的嵌入式處理器和嵌入式操作系統(tǒng)。它提供數(shù)百種嵌入式開發(fā)板和各種CPU,包括PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等,同時它除了支持Linux系統(tǒng)的引導外,還
37、支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等多種嵌入式操作系統(tǒng)的引導。從下面地址下載uboot的源代碼。 sourceforge/projecys/ubootU-Boot特點 開放源碼; 支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS; 支持多個處理器系列,如PowerPC、ARM、x86、MIPS、XScale; 較高的可靠性和穩(wěn)定性; 高度靈活的功能設置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導要求和產(chǎn)品發(fā)布等; 豐富的設備驅(qū)動源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVR
38、AM、EEPROM、RTC、鍵盤等; 較為豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡技術支持。U-Boot功能 系統(tǒng)引導:支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng)。支持NFS掛載,并從FLASH中引導壓縮或非壓縮系統(tǒng)內(nèi)核。 基本輔助功能:強大的操作系統(tǒng)接口功能;可靈活設置、傳遞多個關鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對Linux支持最為強勁;支持目標板環(huán)境參數(shù)多種存儲方式,如FLASH、NVRAM、EEPROM;CRC32校驗,可校驗FLASH中內(nèi)核、RAMDISK映像文件是否完好。 設備驅(qū)動:串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、
39、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持。 上電自檢功能:SDRAM、FLASH大小自動檢測;SDRAM故障檢測;CPU型號。 特殊功能:XIP內(nèi)核引導。U-Boot源碼結構 (1) board:和一些已有開發(fā)板有關的文件,每一個開發(fā)板都以一個子目錄出現(xiàn)在當前目錄中,比如makefile和U-Boot.lds等都和具體開發(fā)板的硬件和地址分配有關。 common:與體系結構無關的代碼,用來實現(xiàn)各種命令的C程序。 cpu:包含CPU相關代碼,其中的子目錄都是以U-BOOT所支持的CPU為名,比如有子目錄arm926ejs、mips、mpc8260和nios等,每個特定的子
40、目錄中都包括cpu.c和interrupt.c,start.S等。其中cpu.c初始化CPU、設置指令Cache和數(shù)據(jù)Cache等;interrupt.c設置系統(tǒng)的各種中斷和異常,比如快速中斷、開關中斷、時鐘中斷、軟件中斷、預取中止和未定義指令等;匯編代碼文件start.S是U-BOOT啟動時執(zhí)行的第一個文件,它主要是設置系統(tǒng)堆棧和工作方式,為進入C程序奠定基礎。 disk:disk驅(qū)動的分區(qū)相關代碼。 doc:文檔。U-Boot源碼結構 (2) drivers:通用設備驅(qū)動程序,比如各種網(wǎng)卡、支持CFI的Flash、串口和USB總線等。 fs:支持文件系統(tǒng)的文件,U-BOOT現(xiàn)在支持cramfs、fat、fdos、jffs2和registerfs等。 include:頭文件,還有對各種硬件平臺支持的匯編文件,系統(tǒng)的配置文件和對文件系統(tǒng)支持的文件。 net:與網(wǎng)絡有關的代碼,BOOTP協(xié)議、TFTP協(xié)議、RARP協(xié)議和NFS文件系統(tǒng)的實現(xiàn)。 lib_arm:與ARM體系結構相關的代碼。 tools:創(chuàng)建S-Record格式文件和U-BOOT images的工具,如mkimage,crc等。U-Boot重要代碼 cpu/arm920t/start.Sin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 申萬培訓課件
- 用血培訓課件
- 醫(yī)院病房提升改造項目可行性研究報告(參考)
- 2024年足球裁判員考試的知識重點及試題與答案
- 2024年籃球裁判員的案例分析技巧試題及答案
- 2024游泳救生員資格考試的引導試題及答案
- 國際會議中心項目可行性研究報告(參考范文)
- 2024農(nóng)業(yè)植保員備考技巧分享試題及答案
- 芳烴項目可行性研究報告(參考范文)
- 2024體育經(jīng)紀人考試成功秘訣 試題及答案
- 2025屆江蘇省南通市、宿遷、連云港、泰州、揚州、徐州、淮安蘇北七市高三第二次調(diào)研英語試卷
- 2025年內(nèi)蒙古自治區(qū)中考一模語文試題(原卷版+解析版)
- 安全教育車間級
- 對照品管理規(guī)范
- 光伏電站安全管理制度
- 2025年江蘇省徐州中考練習卷(1)英語試題(含答案)
- 信息科技開學第一課課件 哪吒 人工智能 機器人 信息科技
- 智能電網(wǎng)負荷預測-深度研究
- 甲狀旁腺腫瘤護理查房
- DBJ50-T-232-2016 建設工程監(jiān)理工作規(guī)程
- 新人帶教流程
評論
0/150
提交評論