嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動_第1頁
嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動_第2頁
嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動_第3頁
嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動_第4頁
嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)原理和具體應(yīng)用第四章 BootLoader與設(shè)備驅(qū)動嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.1 嵌入式系統(tǒng)的產(chǎn)生和發(fā)展 嵌入式軟件的體系結(jié)構(gòu)包括驅(qū)動層、操作系統(tǒng)層、中間件層和應(yīng)用層,如下圖所示 。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動 驅(qū)動層軟件分為三種類型:板級初始化程序:在系統(tǒng)上電后,初始化系統(tǒng)的硬件環(huán)境。與系統(tǒng)軟件相關(guān)的驅(qū)動程序:用于支持操作系統(tǒng)和中間件等系統(tǒng)軟件所需的驅(qū)動程序。與應(yīng)用軟件相關(guān)的驅(qū)動程序:這類驅(qū)動不一定需要與操作系統(tǒng)連接。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2 BootLoader4.2.

2、1 BootLoader概述4.2.2 BootLoader的典型結(jié)構(gòu)4.2.3 實例分析嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.1 BootLoader概述4.2 BootLoader BootLoader是系統(tǒng)加電后首先運行的一段程序代碼,其目的是將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),為調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動BootLoader是依賴于目標(biāo)硬件實現(xiàn)的,可以從兩個方面來理解: 每種嵌入式微處理器體系結(jié)構(gòu)都有不同BootLoader. BootLoader還依賴于具體的嵌入式板級硬件設(shè)備配置。

3、嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動1 BootLoader的安裝4.2.1 BootLoader概述 BootLoader需要放在系統(tǒng)加電后最先取指令的地址上,很多情況下,BootLoader與操作系統(tǒng)內(nèi)核、根文件系統(tǒng)甚至應(yīng)用程序等都可以燒寫在同一個固態(tài)存儲芯片上的。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動2 BootLoader的操作模式4.2.1 BootLoader概述 大多數(shù)BootLoader都包含兩種操作模式:啟動加載模式和下載模式。 啟動加載模式:也稱為自主(Autonomous)模式。在這種模式下,BootLoader從目標(biāo)機的某個

4、固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運行,整個過程中沒有用戶的介入。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動下載模式:下載模式是指,目標(biāo)機上的BootLoader將通過串口或網(wǎng)絡(luò)連接等通信手段從宿主機上下載文件,如操作系統(tǒng)的內(nèi)核映像和根文件系統(tǒng)的映像等 。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動3 BootLoader的控制設(shè)備和機制4.2.1 BootLoader概述串口通信:串口通信最容易實現(xiàn)。BootLoader程序在執(zhí)行時也就可以利用這個簡單實現(xiàn)的串口通信進行I/O操作,與外界交換數(shù)據(jù)和信息 。TFTP(網(wǎng)絡(luò)):在BootLoader中實現(xiàn)TF

5、TP協(xié)議,在宿主機上利用TFTP的軟件工具,通過以太網(wǎng)連接來下載文件。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)4.2 BootLoader BootLoader的主要任務(wù)就是要建立起調(diào)用操作系統(tǒng)系統(tǒng)內(nèi)核、運行用戶應(yīng)用程序所需要的一個良好的軟硬件環(huán)境。這個任務(wù)具體包括兩部分的內(nèi)容: 硬件設(shè)備初始化建立內(nèi)存空間的映射圖 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu) BootLoader的啟動過程 (1)初始化CPU在各種模式下的堆??臻g 設(shè)定CPU的內(nèi)存映射 初始化各種控制寄存

6、器 初始化 CPU的外部存儲器 設(shè)定各外圍設(shè)備的基地址 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動創(chuàng)建正確的中斷向量表 為C代碼執(zhí)行創(chuàng)建ZI(零創(chuàng)建)區(qū) 進入到C代碼。在C代碼中繼續(xù)對時鐘、RS232端口進行初始化,然后打開系統(tǒng)中斷允許位 。進入到應(yīng)用代碼中執(zhí)行,執(zhí)行期間響應(yīng)各種不同的中斷信號并調(diào)用預(yù)先設(shè)置好的中斷服務(wù)程序處理這些中斷。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu) BootLoader的啟動過程 (2)整個過程的流程圖嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoa

7、der的典型結(jié)構(gòu)1 堆棧初始化 堆棧初始化要處理的事情是為處理器的7種處理器模式(p37)分配堆棧空間。下面以FIQ模式下的堆棧設(shè)置為例進行說明:嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動ORR R1,R0,#LOCKOUT|FIQ_MODE ;把處理器模式放在R1中 ;LOCKOUT用來屏蔽中斷位MSR CPSR,R1 ;改變CPU的CPSR寄存器 ;進入到指定的FIQ模式MSR SPSR,R2 ;保存前一模式LDR SP,=FIQ_STACK ;把FIQ模式下的堆棧起始 ;值賦給當(dāng)前的SP ;FIQ_STACK是分配給FIQ ;模式堆棧空間(比如說1K ;字節(jié))的起始地址

8、嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)2 DRAM初始化 DRAM的初始化是根據(jù)系統(tǒng)配置信息決定的。主要的處理內(nèi)容是ROM和RAM基地址的設(shè)定、數(shù)據(jù)總線寬度的設(shè)定、SDRAM刷新時間的設(shè)定等,這些設(shè)置可以參照S3C4510B芯片的用戶手冊。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)3 設(shè)置特殊寄存器 特殊寄存器的設(shè)置主要是針對I/O口的。寄存器的設(shè)定主要根據(jù)硬件的配置情況而定。 由于啟動代碼是燒錄到ROM中的,而中斷向量必須位于零地址,所以在存儲單元沒有重新映射之前ROM

9、基址的設(shè)定應(yīng)該為零地址。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)4 拷貝鏡像文件 拷貝鏡像文件的目的主要是為了提高運行速度。將編譯生成的映像文件代碼從ROM拷貝到RAM中,程序的執(zhí)行也就在RAM中了。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)4 內(nèi)存初始化 內(nèi)存初始化的目的是為C代碼的運行開辟內(nèi)存區(qū) 。分為:只讀區(qū),可讀/可寫區(qū),零初始化區(qū)。 內(nèi)存初始化處理的內(nèi)容是: (1)當(dāng)只讀區(qū)截止地址等于可讀/可寫區(qū)基址時,把零初始化區(qū)各字節(jié)清零;只讀區(qū)可讀/可寫區(qū)地址零初始化區(qū)嵌

10、入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動 (2)當(dāng)只讀區(qū)截止地址不等于可讀/可寫區(qū)基址時,如果可讀/可寫區(qū)基址小于零初始化基址,就從只讀區(qū)截止地址處開始把數(shù)據(jù)拷貝到可讀可寫區(qū)基址處,直到到達零初始化基址,然后把零初始化區(qū)各字節(jié)清零。只讀區(qū)可讀/可寫區(qū)地址范圍中的數(shù)據(jù)零初始化區(qū)地址范圍中的數(shù)據(jù)清零嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動 否則(如果可讀/可寫區(qū)基址大于或等于零初始化基址)也只用把零初始化區(qū)各字節(jié)清零。只讀區(qū)可讀/可寫區(qū)零初始化區(qū)清零嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)5 建立中

11、斷向量表 中斷向量表用于處理異常情況,當(dāng)發(fā)生異常時,首先要保存當(dāng)前程序的返回地址和CPSR寄存器的值,然后進入到相應(yīng)的異常向量地址。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動ENTRYBReset_Handler;系統(tǒng)復(fù)位,通過這個跳轉(zhuǎn)指令進入堆棧初始化操作BUndefined_Handler;未定義異常向量BSWI_Handler ;軟中斷異常向量BPrefetch_Handler;預(yù)取指異常向量BAbort_Handler;中止異常向量NOP;保留BIRQ_Handler;IRQ中斷向量BFIQ_Handler;FIQ中斷向量(快速響應(yīng)用戶中 ;斷,支持高速數(shù)據(jù)傳輸)跳

12、轉(zhuǎn)指令地址依次+4嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)6 系統(tǒng)重新映射 系統(tǒng)重新映射與前面鏡像文件的拷貝有關(guān)。當(dāng)為了提高運行速度把ROM的鏡像文件拷貝到RAM后,中斷向量表就不在零地址處了,因此要重新映射存儲單元,把RAM的地址重新設(shè)定為零地址。 為什么要系統(tǒng)重新映射?嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動 整個過程是把啟動代碼從ROM(EEPROM或者Flash)拷貝到SDRAM運行,同時在拷貝完畢后進行內(nèi)存的重新映射,把SDRAM映射到原來的ROM地址(0 x00000000)中,這樣就可以用SDRAM

13、中的代碼寫Flash,使得程序代碼得以更新 。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)7 切換到用戶模式,進入C代碼區(qū) CPU切換到用戶模式下,并把堆棧指針SP指定到用戶堆棧區(qū),就可以進入到C代碼區(qū)運行。 在C代碼中繼續(xù)對時鐘、RS232端口進行初始化,然后打開系統(tǒng)中斷允許位,進入到應(yīng)用代碼中執(zhí)行。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)BootLoader結(jié)構(gòu) 從程序結(jié)構(gòu)上來講,BootLoader一般都分: Stage1:存放依賴于CPU體系結(jié)構(gòu)的代碼,如設(shè)備初始化代

14、碼等,通常使用匯編語言來實現(xiàn),達到短小精悍的目的。 Stage2:用來實現(xiàn)復(fù)雜功能,通常使用C語言來實現(xiàn),使代碼具有更好的可移植性。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)1 Stage1 Stage1部分的代碼按照執(zhí)行的先后順序,通常包括以下步驟:硬件設(shè)備初始化為加載Stage2程序準(zhǔn)備RAM空間拷貝Stage2程序到RAM空間設(shè)置好堆棧跳轉(zhuǎn)到Stage2的C程序入口點嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.2 BootLoader的典型結(jié)構(gòu)2 Stage2Stage2部分的代碼通常包括以下步驟:初始

15、化本階段用到的硬件設(shè)備,如RS232檢測系統(tǒng)內(nèi)存映射將操作系統(tǒng)內(nèi)核映像和根文件系統(tǒng)映像從Flash 讀到RAM空間中為操作系統(tǒng)內(nèi)核設(shè)置啟動參數(shù)調(diào)用操作系統(tǒng)內(nèi)核嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析4.2 BootLoader 本小節(jié)使用基于ARM7TDMI內(nèi)核的S3C44B0X為例詳細介紹BootLoader的設(shè)計與實現(xiàn)。 與S3C4510B有區(qū)別的是:S3C44B0X沒有存儲器重映射的功能,所有存儲區(qū)地址固定;另外,S3C44B0X提供了矢量中斷的功能,擴展了向量表嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析硬件初

16、始化程序(1)說明:硬件初始化程序編譯環(huán)境:*存儲器空間;GCS664M 16bit(8MB) DRAM/SDRAM(0 xC000000-0 xC7FFFFF);APPRAM=0 xC0000000 xC7EFFFF ;44BMONRAM=0 xC7F0000-0 xC7FFFFF (對于不同的RAM,可以修改此地址);STACKRAM=0 xC7FFA00 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析中斷控制預(yù)定義 INTPNDEQU0 x01E00004 INTMODEQU0 x01E00008 INTMSKEQU0 x01E0000C I_ISPR

17、EQU 0 x01E00020 I_CMST EQU 0 x01E0001C I_ISPC EQU 0 x01E00024*看門狗定時器預(yù)定義WTCONEQU0 x01D30000*嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析初始化程序開始EXPORTInitSystem禁止看門狗 LDR R0, =WTCON LDR R1, =0 STR R1, R0嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析 初 始 化 堆 棧MRSR0, CPSRBICR0, R0, #MODEMASKORRR1, R0, #UNDEFMODE|N

18、OINTMSRCPSR_CXSF, R1;UndefModeLSRSP, =UndefStackORRR1, R0, #ABORTMODE|NOINTMSRCPSR_CXSF, R1;AbortModeLSRSP, =AbortStack嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析 ORR R1, R0, #IRQMODE|NOINTMSRCPSR_CXSF, R1;IRQModeLSRSP, =IRQStackORRR1, R0, #FIQMODE|NOINTMSRCPSR_CXSF, R1;FIQModeLSRSP, =FIQStack嵌入式系統(tǒng)原理和具

19、體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.2.3 實例分析ORRR1, R0, #SVCMODE|NOINTMSRCPSR_CXSF, R1;SVCModeLSRSP, =SVCStack;USER mode is not initialized.嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.3.1 設(shè)備驅(qū)動概述4.3 設(shè)備驅(qū)動 使用任何外部設(shè)備都需要有相應(yīng)驅(qū)動程序的支持。驅(qū)動程序為上層軟件提供設(shè)備的操作接口。 驅(qū)動層軟件有兩個重要的概念:硬件抽象層(HAL,Hardware Abstraction Layer)和板級支持包(BSP,Board Support Packa

20、ge)。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動硬件抽象層4.3.1 設(shè)備驅(qū)動概述 硬件抽象層的目的是為了將硬件抽象化,即通過程序來控制諸如CPU、I/O、存儲器等硬件的操作,從而使得系統(tǒng)的設(shè)備驅(qū)動程序與硬件無關(guān)。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動板級支持包(1)4.3.1 設(shè)備驅(qū)動概述 設(shè)計板級支持包的目的主要是為驅(qū)動程序提供訪問硬件設(shè)備寄存器的函數(shù)包,從而實現(xiàn)對操作系統(tǒng)的支持。在功能上,板級支持包大體需要實現(xiàn)以下兩方面的內(nèi)容: 在系統(tǒng)啟動時,完成對硬件的初始化。 為驅(qū)動程序提供訪問硬件的手段。 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoad

21、er與設(shè)備驅(qū)動 通用異步收發(fā)器(Universal Asynchronous Receiver and Transmitter,UART)是用于控制計算機與串行設(shè)備的接口。 UART的介紹嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動應(yīng)用示例LPC2000的I/O電壓為3.3V(可承受5V),連接時須注意電平的匹配。LPC2000其它通信設(shè)備TxD0RxD0TxD0RxD0與PC機相連時,由于PC機串口是RS232電平,所以連接時需要使用RS232轉(zhuǎn)換器。LPC2000PC機串口232電平轉(zhuǎn)換TxD0RxD0TxD0RxD0嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備

22、驅(qū)動移位寄存器UnRSR接收緩沖寄存器UnRBRUARTn接收單元RxDn除數(shù)鎖存寄存器UnDLL、UnDLMUARTn波特率發(fā)生器UARTn控制寄存器(UnLCR)FIFO控制寄存器(UnFCR)UARTn狀態(tài)寄存器(UnLSR)中斷中斷使能寄存器UnIER中斷標(biāo)志寄存器UnIIRUARTn高速緩存寄存器UnSCR發(fā)送緩沖寄存器UnTHRUARTn發(fā)送單元TxDn移位寄存器UnTSRMODEMModem控制寄存器U1MCRModem狀態(tài)寄存器U1MSRCTSDSRDCDDTRRIRTSVPB總線嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動VPB總線AHB-VPB橋ARM7UA

23、RTn發(fā)送單元TxDn移位寄存器UnTSR發(fā)送緩沖寄存器UnTHRAHB總線ARM7AHB總線UARTn發(fā)送單元TxDn移位寄存器UnTSR發(fā)送緩沖寄存器UnTHRVPB總線AHB-VPB橋CPUUnTSRTXDUnTHRUnTHR描述復(fù)位值7 : 0發(fā)送器保持寄存器。寫入該寄存器的值保存到發(fā)送FIFO中,當(dāng)該字節(jié)到達FIFO底部時,它將被送入發(fā)送移位寄存器(UnTSR)進行發(fā)送。未定義UART發(fā)送單元 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART0、UART1各含有1個16字節(jié)的發(fā)送FIFO緩沖區(qū)。 UnTHR是UARTn發(fā)送FIFO的最高字節(jié)。 UART的發(fā)送FIF

24、O是一直使能的。發(fā)送FIFOUnTHRUnTSRUART發(fā)送FIFO緩沖區(qū)嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動VPB總線AHB-VPB橋ARM7AHB總線移位寄存器UnRSR接收緩沖寄存器UnRBRUARTn接收單元RxDnVPB總線AHB-VPB橋移位寄存器UnRSR接收緩沖寄存器UnRBRUARTn接收單元RxDnARM7AHB總線RXDUnRBRCPUUnRSRUnRBR描述復(fù)位值7 : 0接收緩存寄存器,它包含了接收FIFO中最早接收到的字節(jié)未定義UART接收模塊 嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART0、UART1各含有1個16字

25、節(jié)的接收FIFO緩沖區(qū)。 軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。 位765 : 3210功能Rx觸發(fā)點設(shè)置復(fù)位TxFIFO復(fù)位RxFIFO使能FIFOEnFIFO:FIFO使能。該位的任何變化都將清空UART的FIFO。 1 : 使能接收FIFO,并且允許訪問UnFCR7:1。 0 : 禁止接收FIFO,此時接收緩存只有1個字節(jié)。接收FIFOUnRSRUnRBRUnFCRUART接收FIFO緩沖區(qū)嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART0、UART1各含有1個16字節(jié)的接收FIFO緩沖區(qū)。 軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。 位765 : 3210功能Rx觸發(fā)點

26、設(shè)置復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCR復(fù)位RxFIFO:接收FIFO復(fù)位。當(dāng)該位置位時,UART0接收FIFO中的所有字節(jié)被清零并復(fù)位指針邏輯注意:該位會自動清零。UART接收FIFO緩沖區(qū)嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART0、UART1各含有1個16字節(jié)的接收FIFO緩沖區(qū)。 軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。 位765 : 3210功能Rx觸發(fā)點設(shè)置復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCR復(fù)位TxFIFO:發(fā)送FIFO復(fù)位。當(dāng)該位置位時,UART發(fā)送FIF

27、O中的所有字節(jié)被清零并復(fù)位指針邏輯。注意:該位會自動清零。UART接收FIFO緩沖區(qū)嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART0、UART1各含有1個16字節(jié)的接收FIFO緩沖區(qū)。 軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。 位765 : 3210功能Rx觸發(fā)點設(shè)置復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCR:這些位保留,用戶程序不要向這些位寫入1。UART接收FIFO緩沖區(qū)嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART0、UART1各含有1個16字節(jié)的接收FIFO緩沖區(qū)。 軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字

28、節(jié)。 位765 : 3210功能Rx觸發(fā)點設(shè)置復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCRRx觸發(fā)點設(shè)置:通過設(shè)置這兩位可以調(diào)整接收FIFO中觸發(fā)中斷的有效字節(jié)數(shù)量。00:觸發(fā)點0(1字節(jié));01:觸發(fā)點1(4字節(jié));10:觸發(fā)點2(8字節(jié));11:觸發(fā)點3(14字節(jié));UART接收FIFO緩沖區(qū)嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.11 UART(0、1) UART設(shè)置使用UART前需要設(shè)置的寄存器寄存器名稱功能UnLCR設(shè)置UARTn的通信格式。UnFCR設(shè)置UARTn的接收FIFO緩沖區(qū)。UnDLL、 UnDLM設(shè)置UA

29、RTn的通信波特率。UnIER設(shè)置UARTn的中斷。U1MCRModem接口設(shè)置(只有UART1具有)。嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.11 UART(0、1) UART設(shè)置使用UART前需要設(shè)置的寄存器UnLCR位765 : 4621 :0功能除數(shù)鎖存間隔奇偶選擇奇偶設(shè)置停止位字長字長度選擇:00:5位字符長度01:6位字符長度10:7位字符長度11:8位字符長度嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.11 UART(0、1) UART設(shè)置使用UART前需要設(shè)置的寄存器UnLCR位765 : 4621 :0功能除數(shù)鎖存間隔奇偶選擇奇偶設(shè)

30、置停止位字長停止位選擇:0:1個停止位1:2個停止位嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.11 UART(0、1) UART設(shè)置使用UART前需要設(shè)置的寄存器UnLCR位765 : 4621 :0功能除數(shù)鎖存間隔奇偶選擇奇偶使能停止位字長奇偶使能:控制是否進行奇偶校驗。如果使能,發(fā)送時將添加一位校驗位。0:禁止奇偶產(chǎn)生和校驗;1:使能奇偶產(chǎn)生和校驗;奇偶選擇:設(shè)置奇偶校驗類型。00:奇數(shù)(數(shù)據(jù)位+校驗位奇數(shù));01:偶數(shù)(數(shù)據(jù)位+校驗位偶數(shù));10:校驗位強制為1;11:校驗位強制為0;嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.11 UART(0

31、、1) UART設(shè)置使用UART前需要設(shè)置的寄存器UnLCR位765 : 4621 :0功能除數(shù)鎖存間隔奇偶選擇奇偶使能停止位字長間隔:當(dāng)該位為1時,輸出引腳(TxDn)強制為邏輯0,可以引起通信對方(LPC2000)產(chǎn)生間隔中斷。在某些通信方式中,使用間隔中斷作為通信的起始信號(如:LIN Bus)。0:禁止間隔發(fā)送;1:使能間隔發(fā)送;嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動4.11 UART(0、1) UART設(shè)置使用UART前需要設(shè)置的寄存器UnLCR位765 : 4621 :0功能除數(shù)鎖存間隔奇偶選擇奇偶使能停止位字長除數(shù)鎖存:因為UnDLL和UnRBR/UnTHR

32、的地址重疊,通過設(shè)置該位可以指定其中某個寄存器操作。 0 : 禁止訪問除數(shù)鎖存寄存器; 1 : 使能訪問除數(shù)鎖存寄存器;嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)動UART寄存器地址訪問方式UART0U0RBR0 xE000 C000DLAB=0,對地址:0 xE000 C000進行讀訪問U0THRDLAB=0,對地址:0 xE000 C000進行寫訪問U0DLLDLAB=1,對地址:0 xE000 C000進行訪問U0IER0 xE000 C004DLAB=0,對地址:0 xE000 C004進行訪問U0DLMDLAB=1,對地址:0 xE000 C004進行訪問UART特殊寄存器位置相同的寄存器嵌入式系統(tǒng)原理和具體應(yīng)用第四章BootLoader與設(shè)備驅(qū)

溫馨提示

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

最新文檔

評論

0/150

提交評論