嵌入式系統-軟硬件接口課件_第1頁
嵌入式系統-軟硬件接口課件_第2頁
嵌入式系統-軟硬件接口課件_第3頁
嵌入式系統-軟硬件接口課件_第4頁
嵌入式系統-軟硬件接口課件_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

劉健培嵌入式系統與網絡通信研究中心嵌入式系統

軟硬件接口Bootloader、驅動、BSP

嵌入式系統-軟硬件接口本節內容硬件平臺(S3C2440)BSP操作系統(UCOS)應用程序(協議)BootloaderDeviceDriverDeviceDriverDeviceDriverDeviceDriver二進制運行接口,ABIWHY?功能分化:啟動控制硬件支持軟件模型嵌入式系統-軟硬件接口從軟件開發角度看板級硬件硬件系統結構與組成的抽象從硬件系統抽象出軟硬件接口信息,便于軟件開發人員開發軟件在嵌入式硬件系統中,軟件表現為程序存儲器中的二進進制代碼(即程序),不管外設的功能和硬件形式如何,對軟件來說,可操作的只有:寄存器、存儲器、IO接口。一般RISC處理器都是統一編址的,所以最終操作的只有地址。硬件開發板實物提煉地址軟件C語言頭文件嵌入式系統-軟硬件接口TQ2440硬件開發板嵌入式系統-軟硬件接口2440addr.h嵌入式系統-軟硬件接口從軟件開發角度看存儲器存儲器地址空間分布圖存儲芯片信息類型、基址、大小、片選、配置參數存儲器控制寄存器MMU嵌入式系統-軟硬件接口從軟件開發角度看外設指令能訪問到什么IO管腳配置寄存器設備寄存器組數據、控制、狀態寄存器地址獨立編址(I/O端口方式)與統一編址(I/O內存方式)一個地址可能對應多個寄存器有些地址可以動態配置(如PCI)指令如何訪問外設外設操作方式與流程規范與協議CPU與外設交互方式輪詢、中斷、DMA數字電路外部設備電電光機械轉換部分控制部分控制電路控制寄存器數據寄存器狀態寄存器外設接口CPU讀/寫嵌入式系統-軟硬件接口從軟件開發角度看處理器ARMISA異常與中斷處理方式ARMABI(API?)嵌入式系統-軟硬件接口ARMABIAPI與ABIAPI:ApplicationProgrammingInterface,應用程序編程接口ABI:ApplicationBinaryInterface,應用程序二進制接口EABI:EmbeddedApplicationBinaryInterface,嵌入式應用程序二進制接口CPUtoolchainAPPLIBsOSAPICompilerLinkerLoaderDebuggerABISourcecodeBinarycodecompilerunAPI定義了源代碼和庫之間的接口,因此同樣的代碼可以在支持這個API的任何系統中編譯,ABI允許編譯好的目標代碼在使用兼容ABI的系統中無需改動就能運行(直到現在還沒有很成功的例子)。EABI指定了文件格式、數據類型、寄存器使用、棧幀組織方式和函數參數傳遞等的標準約定。支持EABI的編譯器創建的目標文件可以和使用類似編譯器產生的代碼兼容,這樣允許開發者鏈接一個由不同編譯器產生的庫。EABI與關于通用計算機的ABI的主要區別是應用程序代碼中允許使用特權指令,不需要動態鏈接(有時是禁止的),和更緊湊的堆棧幀組織用來節省內存。廣泛使用EABI的有PowerPC和ARM.嵌入式系統-軟硬件接口ARMEABIARM程序調用標準——AAPCS(ProcedureCallStandardfortheARMArchitecture)ARM的C++ABI——CPPABI(C++ABIfortheARMArchitecture)ARM異常處理的ABI——EHABI(TheExceptionHandlingABIfortheARMArchitecture)ARM的ELF二進制文件格式——AAELF(ELFfortheARMArchitecture)ARM的DWARF二進制文件格式——AADWARF(DWARFfortheARMArchitecture)ARM的運行態ABI——RTABI(TheRun-timeABIfortheARMArchitecture)ARM的C庫ABI——CLIBABI(TheCLibraryABIfortheARMArchitecture)ARMABI嵌入式系統-軟硬件接口系統初始化過程指令執行前硬件初始化系統上電,執行內部初始固碼微程序(如果有),設置處理器上電默認工作狀態,最后從復位向量處開始執行硬件初始化片級初始化(設置微處理器執行狀態)板級初始化(配置與初始化相關外設)軟件初始化操作系統執行前初始化初始化OS所需內存等資源、加載OS、傳遞參數、跳轉操作系統組件初始化中斷、定時器、任務、內存管理等等應用程序執行前初始化加載應用程序,建立應用程序執行環境跳轉到應用程序入口

CPU初始化

目標板初始化系統初始化啟動任務初始化嵌入式系統-軟硬件接口Bootloader=Boot+LoaderBoot處理器復位后運行的第一個軟件,嚴重硬件相關早期硬件初始化(CPU及板級資源)為操作系統運行準備軟硬件環境Loader定位OS(OS在哪兒?)載入OS(可能要校驗和解壓縮。載入到哪兒?)提供操作系統啟動參數移交控制權給OS內核其余功能由程序員根據需求自行控制,一般夠用即可如自檢、命令行、調試支持、燒寫flash、遠程更新等嵌入式系統-軟硬件接口Bootloader的前世今生來自哪兒?主機端的源代碼芯片廠商或者開發板廠商提供一部分,操作系統可能提供一部分對應CPU的開發環境(編譯工具鏈)匯編與鏈接腳本放在哪兒?ROM、EEPROM、NorFLASH、NandFLashSD/MMC/CF卡RAM、SDRAM怎么放?JTAG仿真器/BDM等外部燒寫器固化的loader,與主機通過串口/USB/網口等通信獲取bootloader怎么被執行?固定的復位向量地址調試時仿真器指定地址執行完后怎么辦?不走回頭路發生異常跳回bootloader嵌入式系統-軟硬件接口Bootloader常設計成支持2種模式啟動加載(Bootloading)模式自主模式,自動從目標機上的某個固態存儲設備上將OS加載到RAM中運行,無用戶介入適用于產品發布階段下載(Downloading)模式從主機下載內核映像和根文件系統映像暫存目標機RAM中,最終存在目標機的某個固態存儲設備中可燒錄bootloader本身適用于開發階段嵌入式系統-軟硬件接口SingleStage還是Multi-Stage?為更好的可移植性,啟動過程通常分為stage1和stage2兩部分Stage1+stage2劃分原則ROM+RAM匯編+C體系結構相關+體系結構無關位置無關+位置相關嵌入式系統-軟硬件接口Bootloader設計注意軟件運行需要硬件和軟件資源,Bootloader需要的每種資源在使用前都必須進行初始化并完成資源分配DRAM控制器DRAM是內存資源,DRAM芯片需要專門的硬件控制權支持讀寫周期Flash與RAMBootloader要保存在非易失性存儲器中(如Flash、磁盤等),但是常又要將自身載入到RAM中運行映像復雜需要按照與處理器啟動順序兼容的格式組織啟動代碼,這需要開發人員通過鏈接器描述文件(ld腳本)指定二進制映像缺少執行上下文高級語言程序需要預先建立執行環境(如:C程序調用需要用到堆棧,需要RAM存儲臨時變量;C庫需要進行動態內存分配等)啟動時代碼是放在非易失性存儲器中的,也沒有DRAM可用嵌入式系統-軟硬件接口2440init.s復位入口:bResetHandlerC程序入口:BLMain軟件流程關看門狗與中斷硬件寄存器初始化(LEDGPIO、PLL時鐘、內存控制器)初始化各個mode堆棧指針設置IRQ中斷處理ISR入口指針數據區初始化(copydata段,清零bss段)調用C入口函數:BLMain嵌入式系統-軟硬件接口設備驅動程序設備驅動概念驅使硬件設備行動(也有沒有硬件的虛擬驅動)設備驅動與底層硬件直接打交道,按照硬件設備的具體工作方式讀寫設備寄存器,完成設備的輪詢、中斷處理、DMA

通信,進行物理內存向虛擬內存的映射,最終使設備按照上層軟件的要求工作,并實現上層需要的模型(如文件、流、socket、設備等)。設備驅動連接軟件和硬件,會隨著軟件和硬件平臺的變化而變化,不同系統有不同的形態。嵌入式系統-軟硬件接口不基于OS的設備驅動(非標準)基于OS的設備驅動(標準)OS內核2種類型驅動硬件設備設備驅動應用程序硬件設備設備驅動應用程序OSAPI設備驅動設備驅動符合寄存器操作規范驅動API符合寄存器操作規范嵌入式系統-軟硬件接口Linux設備驅動舉例在搜索led.c看看Linux將存儲器和外設分為3大類:字符設備;塊設備網絡設備應用程序也可以直接通過文件系統的系統調用接口open()、write()、read()、close()等函數訪問字符設備和塊設備,通過socket接口訪問網絡設備應用程序可以通過C庫函數fopen()、fwrite()、fread()、fclose()等訪問設備功能復雜設備(特別是總線,如PCI、USB)還有獨特的驅動分層體系結構嵌入式系統-軟硬件接口設備驅動設計區分機制(提供什么能力)和策略(如何使用這些能力)編寫驅動代碼使硬件可用,但不能強加特別的策略給用戶,將所有關于如何使用硬件的事情留給應用程序阻塞與非阻塞,同步與異步安全與可靠性與內核工作在同一地址空間并發與競爭中斷調試嵌入式系統-軟硬件接口并發與競爭發生時機只要并發的多個執行單元訪問共享資源,就可能發生競爭。對稱多處理器(SMP)的多個CPU,使用共同的系統總線,共享外設和儲存器。單CPU內進程/線程/任務與搶占它的進程/線程/任務中斷與進程/線程/任務之間解決辦法保證對共享資源的互斥訪問臨界區中斷屏蔽原子操作加鎖自旋鎖讀寫自旋鎖順序鎖RCU鎖(Read-CopyUpdate,讀-拷貝-更新)信號量嵌入式系統-軟硬件接口BSP的概念BSP(BoardSupportPackages,板級支持包)是指針對具體的硬件平臺用戶編寫的的啟動代碼和部分設備驅動程序的集合。它所實現的功能包括初始化、提供部分設備驅動。最基本的BSP僅需要支持處理機復位、初始化、串口驅動和必要時的時鐘中斷處理。這詞的來源最常被歸于風河公司(WindRiverSystems)給它的VxWorks嵌入式操作系統(大約從1988開始),不過現在已經廣泛的在業界使用。BSP的一般組成文件bootloader設備驅動配置文件嵌入式系統-軟硬件接口BSP的設計標準BSP和非標準BSPBSP非Polling原則,盡量使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論