




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
劉健培嵌入式系統(tǒng)與網(wǎng)絡(luò)通信研究中心嵌入式系統(tǒng)
軟硬件接口Bootloader、驅(qū)動(dòng)、BSP
嵌入式系統(tǒng)-軟硬件接口本節(jié)內(nèi)容硬件平臺(tái)(S3C2440)BSP操作系統(tǒng)(UCOS)應(yīng)用程序(協(xié)議)BootloaderDeviceDriverDeviceDriverDeviceDriverDeviceDriver二進(jìn)制運(yùn)行接口,ABIWHY?功能分化:啟動(dòng)控制硬件支持軟件模型嵌入式系統(tǒng)-軟硬件接口從軟件開發(fā)角度看板級(jí)硬件硬件系統(tǒng)結(jié)構(gòu)與組成的抽象從硬件系統(tǒng)抽象出軟硬件接口信息,便于軟件開發(fā)人員開發(fā)軟件在嵌入式硬件系統(tǒng)中,軟件表現(xiàn)為程序存儲(chǔ)器中的二進(jìn)進(jìn)制代碼(即程序),不管外設(shè)的功能和硬件形式如何,對(duì)軟件來說,可操作的只有:寄存器、存儲(chǔ)器、IO接口。一般RISC處理器都是統(tǒng)一編址的,所以最終操作的只有地址。硬件開發(fā)板實(shí)物提煉地址軟件C語言頭文件嵌入式系統(tǒng)-軟硬件接口TQ2440硬件開發(fā)板嵌入式系統(tǒng)-軟硬件接口2440addr.h嵌入式系統(tǒng)-軟硬件接口從軟件開發(fā)角度看存儲(chǔ)器存儲(chǔ)器地址空間分布圖存儲(chǔ)芯片信息類型、基址、大小、片選、配置參數(shù)存儲(chǔ)器控制寄存器MMU嵌入式系統(tǒng)-軟硬件接口從軟件開發(fā)角度看外設(shè)指令能訪問到什么IO管腳配置寄存器設(shè)備寄存器組數(shù)據(jù)、控制、狀態(tài)寄存器地址獨(dú)立編址(I/O端口方式)與統(tǒng)一編址(I/O內(nèi)存方式)一個(gè)地址可能對(duì)應(yīng)多個(gè)寄存器有些地址可以動(dòng)態(tài)配置(如PCI)指令如何訪問外設(shè)外設(shè)操作方式與流程規(guī)范與協(xié)議CPU與外設(shè)交互方式輪詢、中斷、DMA數(shù)字電路外部設(shè)備電電光機(jī)械轉(zhuǎn)換部分控制部分控制電路控制寄存器數(shù)據(jù)寄存器狀態(tài)寄存器外設(shè)接口CPU讀/寫嵌入式系統(tǒng)-軟硬件接口從軟件開發(fā)角度看處理器ARMISA異常與中斷處理方式ARMABI(API?)嵌入式系統(tǒng)-軟硬件接口ARMABIAPI與ABIAPI:ApplicationProgrammingInterface,應(yīng)用程序編程接口ABI:ApplicationBinaryInterface,應(yīng)用程序二進(jìn)制接口EABI:EmbeddedApplicationBinaryInterface,嵌入式應(yīng)用程序二進(jìn)制接口CPUtoolchainAPPLIBsOSAPICompilerLinkerLoaderDebuggerABISourcecodeBinarycodecompilerunAPI定義了源代碼和庫之間的接口,因此同樣的代碼可以在支持這個(gè)API的任何系統(tǒng)中編譯,ABI允許編譯好的目標(biāo)代碼在使用兼容ABI的系統(tǒng)中無需改動(dòng)就能運(yùn)行(直到現(xiàn)在還沒有很成功的例子)。EABI指定了文件格式、數(shù)據(jù)類型、寄存器使用、棧幀組織方式和函數(shù)參數(shù)傳遞等的標(biāo)準(zhǔn)約定。支持EABI的編譯器創(chuàng)建的目標(biāo)文件可以和使用類似編譯器產(chǎn)生的代碼兼容,這樣允許開發(fā)者鏈接一個(gè)由不同編譯器產(chǎn)生的庫。EABI與關(guān)于通用計(jì)算機(jī)的ABI的主要區(qū)別是應(yīng)用程序代碼中允許使用特權(quán)指令,不需要?jiǎng)討B(tài)鏈接(有時(shí)是禁止的),和更緊湊的堆棧幀組織用來節(jié)省內(nèi)存。廣泛使用EABI的有PowerPC和ARM.嵌入式系統(tǒng)-軟硬件接口ARMEABIARM程序調(diào)用標(biāo)準(zhǔn)——AAPCS(ProcedureCallStandardfortheARMArchitecture)ARM的C++ABI——CPPABI(C++ABIfortheARMArchitecture)ARM異常處理的ABI——EHABI(TheExceptionHandlingABIfortheARMArchitecture)ARM的ELF二進(jìn)制文件格式——AAELF(ELFfortheARMArchitecture)ARM的DWARF二進(jìn)制文件格式——AADWARF(DWARFfortheARMArchitecture)ARM的運(yùn)行態(tài)ABI——RTABI(TheRun-timeABIfortheARMArchitecture)ARM的C庫ABI——CLIBABI(TheCLibraryABIfortheARMArchitecture)ARMABI嵌入式系統(tǒng)-軟硬件接口系統(tǒng)初始化過程指令執(zhí)行前硬件初始化系統(tǒng)上電,執(zhí)行內(nèi)部初始固碼微程序(如果有),設(shè)置處理器上電默認(rèn)工作狀態(tài),最后從復(fù)位向量處開始執(zhí)行硬件初始化片級(jí)初始化(設(shè)置微處理器執(zhí)行狀態(tài))板級(jí)初始化(配置與初始化相關(guān)外設(shè))軟件初始化操作系統(tǒng)執(zhí)行前初始化初始化OS所需內(nèi)存等資源、加載OS、傳遞參數(shù)、跳轉(zhuǎn)操作系統(tǒng)組件初始化中斷、定時(shí)器、任務(wù)、內(nèi)存管理等等應(yīng)用程序執(zhí)行前初始化加載應(yīng)用程序,建立應(yīng)用程序執(zhí)行環(huán)境跳轉(zhuǎn)到應(yīng)用程序入口
CPU初始化
目標(biāo)板初始化系統(tǒng)初始化啟動(dòng)任務(wù)初始化嵌入式系統(tǒng)-軟硬件接口Bootloader=Boot+LoaderBoot處理器復(fù)位后運(yùn)行的第一個(gè)軟件,嚴(yán)重硬件相關(guān)早期硬件初始化(CPU及板級(jí)資源)為操作系統(tǒng)運(yùn)行準(zhǔn)備軟硬件環(huán)境Loader定位OS(OS在哪兒?)載入OS(可能要校驗(yàn)和解壓縮。載入到哪兒?)提供操作系統(tǒng)啟動(dòng)參數(shù)移交控制權(quán)給OS內(nèi)核其余功能由程序員根據(jù)需求自行控制,一般夠用即可如自檢、命令行、調(diào)試支持、燒寫flash、遠(yuǎn)程更新等嵌入式系統(tǒng)-軟硬件接口Bootloader的前世今生來自哪兒?主機(jī)端的源代碼芯片廠商或者開發(fā)板廠商提供一部分,操作系統(tǒng)可能提供一部分對(duì)應(yīng)CPU的開發(fā)環(huán)境(編譯工具鏈)匯編與鏈接腳本放在哪兒?ROM、EEPROM、NorFLASH、NandFLashSD/MMC/CF卡RAM、SDRAM怎么放?JTAG仿真器/BDM等外部燒寫器固化的loader,與主機(jī)通過串口/USB/網(wǎng)口等通信獲取bootloader怎么被執(zhí)行?固定的復(fù)位向量地址調(diào)試時(shí)仿真器指定地址執(zhí)行完后怎么辦?不走回頭路發(fā)生異常跳回bootloader嵌入式系統(tǒng)-軟硬件接口Bootloader常設(shè)計(jì)成支持2種模式啟動(dòng)加載(Bootloading)模式自主模式,自動(dòng)從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將OS加載到RAM中運(yùn)行,無用戶介入適用于產(chǎn)品發(fā)布階段下載(Downloading)模式從主機(jī)下載內(nèi)核映像和根文件系統(tǒng)映像暫存目標(biāo)機(jī)RAM中,最終存在目標(biāo)機(jī)的某個(gè)固態(tài)存儲(chǔ)設(shè)備中可燒錄bootloader本身適用于開發(fā)階段嵌入式系統(tǒng)-軟硬件接口SingleStage還是Multi-Stage?為更好的可移植性,啟動(dòng)過程通常分為stage1和stage2兩部分Stage1+stage2劃分原則ROM+RAM匯編+C體系結(jié)構(gòu)相關(guān)+體系結(jié)構(gòu)無關(guān)位置無關(guān)+位置相關(guān)嵌入式系統(tǒng)-軟硬件接口Bootloader設(shè)計(jì)注意軟件運(yùn)行需要硬件和軟件資源,Bootloader需要的每種資源在使用前都必須進(jìn)行初始化并完成資源分配DRAM控制器DRAM是內(nèi)存資源,DRAM芯片需要專門的硬件控制權(quán)支持讀寫周期Flash與RAMBootloader要保存在非易失性存儲(chǔ)器中(如Flash、磁盤等),但是常又要將自身載入到RAM中運(yùn)行映像復(fù)雜需要按照與處理器啟動(dòng)順序兼容的格式組織啟動(dòng)代碼,這需要開發(fā)人員通過鏈接器描述文件(ld腳本)指定二進(jìn)制映像缺少執(zhí)行上下文高級(jí)語言程序需要預(yù)先建立執(zhí)行環(huán)境(如:C程序調(diào)用需要用到堆棧,需要RAM存儲(chǔ)臨時(shí)變量;C庫需要進(jìn)行動(dòng)態(tài)內(nèi)存分配等)啟動(dòng)時(shí)代碼是放在非易失性存儲(chǔ)器中的,也沒有DRAM可用嵌入式系統(tǒng)-軟硬件接口2440init.s復(fù)位入口:bResetHandlerC程序入口:BLMain軟件流程關(guān)看門狗與中斷硬件寄存器初始化(LEDGPIO、PLL時(shí)鐘、內(nèi)存控制器)初始化各個(gè)mode堆棧指針設(shè)置IRQ中斷處理ISR入口指針數(shù)據(jù)區(qū)初始化(copydata段,清零bss段)調(diào)用C入口函數(shù):BLMain嵌入式系統(tǒng)-軟硬件接口設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)概念驅(qū)使硬件設(shè)備行動(dòng)(也有沒有硬件的虛擬驅(qū)動(dòng))設(shè)備驅(qū)動(dòng)與底層硬件直接打交道,按照硬件設(shè)備的具體工作方式讀寫設(shè)備寄存器,完成設(shè)備的輪詢、中斷處理、DMA
通信,進(jìn)行物理內(nèi)存向虛擬內(nèi)存的映射,最終使設(shè)備按照上層軟件的要求工作,并實(shí)現(xiàn)上層需要的模型(如文件、流、socket、設(shè)備等)。設(shè)備驅(qū)動(dòng)連接軟件和硬件,會(huì)隨著軟件和硬件平臺(tái)的變化而變化,不同系統(tǒng)有不同的形態(tài)。嵌入式系統(tǒng)-軟硬件接口不基于OS的設(shè)備驅(qū)動(dòng)(非標(biāo)準(zhǔn))基于OS的設(shè)備驅(qū)動(dòng)(標(biāo)準(zhǔn))OS內(nèi)核2種類型驅(qū)動(dòng)硬件設(shè)備設(shè)備驅(qū)動(dòng)應(yīng)用程序硬件設(shè)備設(shè)備驅(qū)動(dòng)應(yīng)用程序OSAPI設(shè)備驅(qū)動(dòng)設(shè)備驅(qū)動(dòng)符合寄存器操作規(guī)范驅(qū)動(dòng)API符合寄存器操作規(guī)范嵌入式系統(tǒng)-軟硬件接口Linux設(shè)備驅(qū)動(dòng)舉例在搜索led.c看看Linux將存儲(chǔ)器和外設(shè)分為3大類:字符設(shè)備;塊設(shè)備網(wǎng)絡(luò)設(shè)備應(yīng)用程序也可以直接通過文件系統(tǒng)的系統(tǒng)調(diào)用接口open()、write()、read()、close()等函數(shù)訪問字符設(shè)備和塊設(shè)備,通過socket接口訪問網(wǎng)絡(luò)設(shè)備應(yīng)用程序可以通過C庫函數(shù)fopen()、fwrite()、fread()、fclose()等訪問設(shè)備功能復(fù)雜設(shè)備(特別是總線,如PCI、USB)還有獨(dú)特的驅(qū)動(dòng)分層體系結(jié)構(gòu)嵌入式系統(tǒng)-軟硬件接口設(shè)備驅(qū)動(dòng)設(shè)計(jì)區(qū)分機(jī)制(提供什么能力)和策略(如何使用這些能力)編寫驅(qū)動(dòng)代碼使硬件可用,但不能強(qiáng)加特別的策略給用戶,將所有關(guān)于如何使用硬件的事情留給應(yīng)用程序阻塞與非阻塞,同步與異步安全與可靠性與內(nèi)核工作在同一地址空間并發(fā)與競爭中斷調(diào)試嵌入式系統(tǒng)-軟硬件接口并發(fā)與競爭發(fā)生時(shí)機(jī)只要并發(fā)的多個(gè)執(zhí)行單元訪問共享資源,就可能發(fā)生競爭。對(duì)稱多處理器(SMP)的多個(gè)CPU,使用共同的系統(tǒng)總線,共享外設(shè)和儲(chǔ)存器。單CPU內(nèi)進(jìn)程/線程/任務(wù)與搶占它的進(jìn)程/線程/任務(wù)中斷與進(jìn)程/線程/任務(wù)之間解決辦法保證對(duì)共享資源的互斥訪問臨界區(qū)中斷屏蔽原子操作加鎖自旋鎖讀寫自旋鎖順序鎖RCU鎖(Read-CopyUpdate,讀-拷貝-更新)信號(hào)量嵌入式系統(tǒng)-軟硬件接口BSP的概念BSP(BoardSupportPackages,板級(jí)支持包)是指針對(duì)具體的硬件平臺(tái)用戶編寫的的啟動(dòng)代碼和部分設(shè)備驅(qū)動(dòng)程序的集合。它所實(shí)現(xiàn)的功能包括初始化、提供部分設(shè)備驅(qū)動(dòng)。最基本的BSP僅需要支持處理機(jī)復(fù)位、初始化、串口驅(qū)動(dòng)和必要時(shí)的時(shí)鐘中斷處理。這詞的來源最常被歸于風(fēng)河公司(WindRiverSystems)給它的VxWorks嵌入式操作系統(tǒng)(大約從1988開始),不過現(xiàn)在已經(jīng)廣泛的在業(yè)界使用。BSP的一般組成文件bootloader設(shè)備驅(qū)動(dòng)配置文件嵌入式系統(tǒng)-軟硬件接口BSP的設(shè)計(jì)標(biāo)準(zhǔn)BSP和非標(biāo)準(zhǔn)BSPBSP非Polling原則,盡量使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材的抗壓和抗撞擊性能考核試卷
- 綠化工程苗木采購管理考核試卷
- 2025年中考數(shù)學(xué)沖刺滿分計(jì)劃壓軸集訓(xùn)測試四含答案
- 紡織鞋材的耐磨擦性能改善考核試卷
- 美容儀器技術(shù)創(chuàng)新與產(chǎn)業(yè)發(fā)展考核試卷
- 影視廣告音樂制作保密及版權(quán)共享合同
- 礦產(chǎn)勘探樣品儲(chǔ)存與信息安全管理租賃協(xié)議
- 私募基金存管安全風(fēng)險(xiǎn)管理協(xié)議
- 基因編輯細(xì)胞治療項(xiàng)目合作合同
- 網(wǎng)絡(luò)直播帶貨供應(yīng)鏈金融服務(wù)協(xié)議
- 【2025二輪復(fù)習(xí)】讀后續(xù)寫專題
- 商品房門窗加工合同協(xié)議
- 四年級(jí)下冊(cè)數(shù)學(xué)口算練習(xí)題
- (四調(diào))武漢市2025屆高中畢業(yè)生四月調(diào)研考試 物理試卷(含答案)
- 數(shù)學(xué)建模與系統(tǒng)仿真智慧樹知到期末考試答案2024年
- 煙草原料學(xué)-煙草的品質(zhì)課件
- 非法行醫(yī)和非法采供血信息報(bào)告課件
- DG-TJ 08-2362-2021 綜合桿設(shè)施技術(shù)標(biāo)準(zhǔn)
- 計(jì)算機(jī)集成制造技術(shù)(CIMT)(PPT 53)第三講柔性制造系統(tǒng)(FMS)
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 天津科技大學(xué)工程碩士學(xué)位論文答辯評(píng)議書及表決票
評(píng)論
0/150
提交評(píng)論