信息與通信BootLoader與設(shè)備驅(qū)動(dòng)_第1頁(yè)
信息與通信BootLoader與設(shè)備驅(qū)動(dòng)_第2頁(yè)
信息與通信BootLoader與設(shè)備驅(qū)動(dòng)_第3頁(yè)
信息與通信BootLoader與設(shè)備驅(qū)動(dòng)_第4頁(yè)
信息與通信BootLoader與設(shè)備驅(qū)動(dòng)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

[信息與通信]BootLoader與設(shè)備驅(qū)動(dòng)第一頁(yè),共64頁(yè)。4.1嵌入式系統(tǒng)的產(chǎn)生和發(fā)展

嵌入式軟件的體系結(jié)構(gòu)包括驅(qū)動(dòng)層、操作系統(tǒng)層、中間件層和應(yīng)用層,如下圖所示。第二頁(yè),共64頁(yè)。驅(qū)動(dòng)層軟件分為三種類型:板級(jí)初始化程序:在系統(tǒng)上電后,初始化系統(tǒng)的硬件環(huán)境。與系統(tǒng)軟件相關(guān)的驅(qū)動(dòng)程序:用于支持操作系統(tǒng)和中間件等系統(tǒng)軟件所需的驅(qū)動(dòng)程序。與應(yīng)用軟件相關(guān)的驅(qū)動(dòng)程序:這類驅(qū)動(dòng)不一定需要與操作系統(tǒng)連接。第三頁(yè),共64頁(yè)。4.2BootLoader4.2.1BootLoader概述4.2.2BootLoader的典型結(jié)構(gòu)4.2.3實(shí)例分析第四頁(yè),共64頁(yè)。4.2.1BootLoader概述4.2BootLoader

BootLoader是系統(tǒng)加電后首先運(yùn)行的一段程序代碼,其目的是將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),為調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。第五頁(yè),共64頁(yè)。BootLoader是依賴于目標(biāo)硬件實(shí)現(xiàn)的,可以從兩個(gè)方面來理解:每種嵌入式微處理器體系結(jié)構(gòu)都有不同BootLoader.BootLoader還依賴于具體的嵌入式板級(jí)硬件設(shè)備配置。第六頁(yè),共64頁(yè)。1BootLoader的安裝4.2.1BootLoader概述

BootLoader需要放在系統(tǒng)加電后最先取指令的地址上,很多情況下,BootLoader與操作系統(tǒng)內(nèi)核、根文件系統(tǒng)甚至應(yīng)用程序等都可以燒寫在同一個(gè)固態(tài)存儲(chǔ)芯片上的。第七頁(yè),共64頁(yè)。2BootLoader的操作模式4.2.1BootLoader概述

大多數(shù)BootLoader都包含兩種操作模式:?jiǎn)?dòng)加載模式和下載模式。啟動(dòng)加載模式:也稱為自主(Autonomous)模式。在這種模式下,BootLoader從目標(biāo)機(jī)的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程中沒有用戶的介入。第八頁(yè),共64頁(yè)。下載模式:下載模式是指,目標(biāo)機(jī)上的BootLoader將通過串口或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)上下載文件,如操作系統(tǒng)的內(nèi)核映像和根文件系統(tǒng)的映像等。第九頁(yè),共64頁(yè)。3BootLoader的控制設(shè)備和機(jī)制4.2.1BootLoader概述串口通信:串口通信最容易實(shí)現(xiàn)。BootLoader程序在執(zhí)行時(shí)也就可以利用這個(gè)簡(jiǎn)單實(shí)現(xiàn)的串口通信進(jìn)行I/O操作,與外界交換數(shù)據(jù)和信息。TFTP(網(wǎng)絡(luò)):在BootLoader中實(shí)現(xiàn)TFTP協(xié)議,在宿主機(jī)上利用TFTP的軟件工具,通過以太網(wǎng)連接來下載文件。第十頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)4.2BootLoader

BootLoader的主要任務(wù)就是要建立起調(diào)用操作系統(tǒng)系統(tǒng)內(nèi)核、運(yùn)行用戶應(yīng)用程序所需要的一個(gè)良好的軟硬件環(huán)境。這個(gè)任務(wù)具體包括兩部分的內(nèi)容:

硬件設(shè)備初始化建立內(nèi)存空間的映射圖

第十一頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)BootLoader的啟動(dòng)過程

(1)初始化CPU在各種模式下的堆??臻g設(shè)定CPU的內(nèi)存映射初始化各種控制寄存器初始化CPU的外部存儲(chǔ)器設(shè)定各外圍設(shè)備的基地址第十二頁(yè),共64頁(yè)。創(chuàng)建正確的中斷向量表為C代碼執(zhí)行創(chuàng)建ZI(零創(chuàng)建)區(qū)進(jìn)入到C代碼。在C代碼中繼續(xù)對(duì)時(shí)鐘、RS232端口進(jìn)行初始化,然后打開系統(tǒng)中斷允許位。進(jìn)入到應(yīng)用代碼中執(zhí)行,執(zhí)行期間響應(yīng)各種不同的中斷信號(hào)并調(diào)用預(yù)先設(shè)置好的中斷服務(wù)程序處理這些中斷。第十三頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)BootLoader的啟動(dòng)過程

(2)整個(gè)過程的流程圖第十四頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)1堆棧初始化堆棧初始化要處理的事情是為處理器的7種處理器模式(p37)分配堆??臻g。下面以FIQ模式下的堆棧設(shè)置為例進(jìn)行說明:第十五頁(yè),共64頁(yè)。ORRR1,R0,#LOCKOUT|FIQ_MODE;把處理器模式放在R1中;LOCKOUT用來屏蔽中斷位MSRCPSR,R1;改變CPU的CPSR寄存器;進(jìn)入到指定的FIQ模式MSRSPSR,R2 ;保存前一模式LDRSP,=FIQ_STACK;把FIQ模式下的堆棧起始;值賦給當(dāng)前的SP ;FIQ_STACK是分配給FIQ;模式堆棧空間(比如說1K;字節(jié))的起始地址第十六頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)2DRAM初始化

DRAM的初始化是根據(jù)系統(tǒng)配置信息決定的。主要的處理內(nèi)容是ROM和RAM基地址的設(shè)定、數(shù)據(jù)總線寬度的設(shè)定、SDRAM刷新時(shí)間的設(shè)定等,這些設(shè)置可以參照S3C4510B芯片的用戶手冊(cè)。第十七頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)3設(shè)置特殊寄存器

特殊寄存器的設(shè)置主要是針對(duì)I/O口的。寄存器的設(shè)定主要根據(jù)硬件的配置情況而定。由于啟動(dòng)代碼是燒錄到ROM中的,而中斷向量必須位于零地址,所以在存儲(chǔ)單元沒有重新映射之前ROM基址的設(shè)定應(yīng)該為零地址。第十八頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)4拷貝鏡像文件

拷貝鏡像文件的目的主要是為了提高運(yùn)行速度。將編譯生成的映像文件代碼從ROM拷貝到RAM中,程序的執(zhí)行也就在RAM中了。第十九頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)4內(nèi)存初始化

內(nèi)存初始化的目的是為C代碼的運(yùn)行開辟內(nèi)存區(qū)。分為:只讀區(qū),可讀/可寫區(qū),零初始化區(qū)。

內(nèi)存初始化處理的內(nèi)容是:(1)當(dāng)只讀區(qū)截止地址等于可讀/可寫區(qū)基址時(shí),把零初始化區(qū)各字節(jié)清零;只讀區(qū)可讀/可寫區(qū)地址零初始化區(qū)第二十頁(yè),共64頁(yè)。(2)當(dāng)只讀區(qū)截止地址不等于可讀/可寫區(qū)基址時(shí),①如果可讀/可寫區(qū)基址小于零初始化基址,就從只讀區(qū)截止地址處開始把數(shù)據(jù)拷貝到可讀可寫區(qū)基址處,直到到達(dá)零初始化基址,然后把零初始化區(qū)各字節(jié)清零。只讀區(qū)可讀/可寫區(qū)地址范圍中的數(shù)據(jù)零初始化區(qū)地址范圍中的數(shù)據(jù)清零第二十一頁(yè),共64頁(yè)。②否則(如果可讀/可寫區(qū)基址大于或等于零初始化基址)也只用把零初始化區(qū)各字節(jié)清零。只讀區(qū)可讀/可寫區(qū)零初始化區(qū)清零第二十二頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)5建立中斷向量表

中斷向量表用于處理異常情況,當(dāng)發(fā)生異常時(shí),首先要保存當(dāng)前程序的返回地址和CPSR寄存器的值,然后進(jìn)入到相應(yīng)的異常向量地址。

第二十三頁(yè),共64頁(yè)。ENTRYB Reset_Handler ;系統(tǒng)復(fù)位,通過這個(gè)跳轉(zhuǎn)指令進(jìn)入堆棧初始化操作B Undefined_Handler ;未定義異常向量B SWI_Handler;軟中斷異常向量B Prefetch_Handler ;預(yù)取指異常向量B Abort_Handler ;中止異常向量NOP ;保留B IRQ_Handler ;IRQ中斷向量B FIQ_Handler ;FIQ中斷向量(快速響應(yīng)用戶中;斷,支持高速數(shù)據(jù)傳輸)跳轉(zhuǎn)指令地址依次+4第二十四頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)6系統(tǒng)重新映射系統(tǒng)重新映射與前面鏡像文件的拷貝有關(guān)。當(dāng)為了提高運(yùn)行速度把ROM的鏡像文件拷貝到RAM后,中斷向量表就不在零地址處了,因此要重新映射存儲(chǔ)單元,把RAM的地址重新設(shè)定為零地址。為什么要系統(tǒng)重新映射?第二十五頁(yè),共64頁(yè)。整個(gè)過程是把啟動(dòng)代碼從ROM(EEPROM或者Flash)拷貝到SDRAM運(yùn)行,同時(shí)在拷貝完畢后進(jìn)行內(nèi)存的重新映射,把SDRAM映射到原來的ROM地址(0x00000000)中,這樣就可以用SDRAM中的代碼寫Flash,使得程序代碼得以更新。第二十六頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)7

切換到用戶模式,進(jìn)入C代碼區(qū)CPU切換到用戶模式下,并把堆棧指針SP指定到用戶堆棧區(qū),就可以進(jìn)入到C代碼區(qū)運(yùn)行。在C代碼中繼續(xù)對(duì)時(shí)鐘、RS232端口進(jìn)行初始化,然后打開系統(tǒng)中斷允許位,進(jìn)入到應(yīng)用代碼中執(zhí)行。第二十七頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)BootLoader結(jié)構(gòu)

從程序結(jié)構(gòu)上來講,BootLoader一般都分:

Stage1:存放依賴于CPU體系結(jié)構(gòu)的代碼,如設(shè)備初始化代碼等,通常使用匯編語(yǔ)言來實(shí)現(xiàn),達(dá)到短小精悍的目的。

Stage2:用來實(shí)現(xiàn)復(fù)雜功能,通常使用C語(yǔ)言來實(shí)現(xiàn),使代碼具有更好的可移植性。第二十八頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)1Stage1Stage1部分的代碼按照?qǐng)?zhí)行的先后順序,通常包括以下步驟:硬件設(shè)備初始化為加載Stage2程序準(zhǔn)備RAM空間拷貝Stage2程序到RAM空間設(shè)置好堆棧跳轉(zhuǎn)到Stage2的C程序入口點(diǎn)第二十九頁(yè),共64頁(yè)。4.2.2BootLoader的典型結(jié)構(gòu)2Stage2Stage2部分的代碼通常包括以下步驟:初始化本階段用到的硬件設(shè)備,如RS232檢測(cè)系統(tǒng)內(nèi)存映射將操作系統(tǒng)內(nèi)核映像和根文件系統(tǒng)映像從Flash讀到RAM空間中為操作系統(tǒng)內(nèi)核設(shè)置啟動(dòng)參數(shù)調(diào)用操作系統(tǒng)內(nèi)核第三十頁(yè),共64頁(yè)。4.2.3實(shí)例分析4.2BootLoader

本小節(jié)使用基于ARM7TDMI內(nèi)核的S3C44B0X為例詳細(xì)介紹BootLoader的設(shè)計(jì)與實(shí)現(xiàn)。

與S3C4510B有區(qū)別的是:S3C44B0X沒有存儲(chǔ)器重映射的功能,所有存儲(chǔ)區(qū)地址固定;另外,S3C44B0X提供了矢量中斷的功能,擴(kuò)展了向量表第三十一頁(yè),共64頁(yè)。4.2.3實(shí)例分析硬件初始化程序(1)說明:硬件初始化程序編譯環(huán)境:ADS1.2***************************************存儲(chǔ)器空間;GCS6 64M16bit(8MB)DRAM/SDRAM(0xC000000-0xC7FFFFF);APP RAM=0xC000000~0xC7EFFFF;44BMON RAM=0xC7F0000-0xC7FFFFF

(對(duì)于不同的RAM,可以修改此地址);STACK RAM=0xC7FFA00第三十二頁(yè),共64頁(yè)。4.2.3實(shí)例分析中斷控制預(yù)定義

INTPND EQU 0x01E00004INTMOD EQU 0x01E00008INTMSK EQU 0x01E0000CI_ISPREQU0x01E00020I_CMST EQU 0x01E0001CI_ISPCEQU0x01E00024********************************************看門狗定時(shí)器預(yù)定義WTCON EQU 0x01D30000********************************************第三十三頁(yè),共64頁(yè)。4.2.3實(shí)例分析初始化程序開始EXPORT InitSystem禁止看門狗

LDR R0,=WTCONLDR R1,=0STRR1,[R0]第三十四頁(yè),共64頁(yè)。4.2.3實(shí)例分析

初始化堆棧

MRS R0,CPSR BIC R0,R0,#MODEMASK

ORR R1,R0,#UNDEFMODE|NOINT MSR CPSR_CXSF,R1 ;UndefMode LSR SP,=UndefStack

ORR R1,R0,#ABORTMODE|NOINT MSR CPSR_CXSF,R1 ;AbortMode LSR SP,=AbortStack第三十五頁(yè),共64頁(yè)。4.2.3實(shí)例分析

ORR R1,R0,#IRQMODE|NOINT MSR CPSR_CXSF,R1 ;IRQMode LSR SP,=IRQStack ORR R1,R0,#FIQMODE|NOINT MSR CPSR_CXSF,R1 ;FIQMode LSR SP,=FIQStack第三十六頁(yè),共64頁(yè)。4.2.3實(shí)例分析

ORR R1,R0,#SVCMODE|NOINT MSR CPSR_CXSF,R1 ;SVCMode LSR SP,=SVCStack

;USERmodeisnotinitialized.第三十七頁(yè),共64頁(yè)。4.3.1設(shè)備驅(qū)動(dòng)概述4.3設(shè)備驅(qū)動(dòng)

使用任何外部設(shè)備都需要有相應(yīng)驅(qū)動(dòng)程序的支持。驅(qū)動(dòng)程序?yàn)樯蠈榆浖峁┰O(shè)備的操作接口。

驅(qū)動(dòng)層軟件有兩個(gè)重要的概念:硬件抽象層(HAL,HardwareAbstractionLayer)和板級(jí)支持包(BSP,BoardSupportPackage)。

第三十八頁(yè),共64頁(yè)。硬件抽象層4.3.1設(shè)備驅(qū)動(dòng)概述

硬件抽象層的目的是為了將硬件抽象化,即通過程序來控制諸如CPU、I/O、存儲(chǔ)器等硬件的操作,從而使得系統(tǒng)的設(shè)備驅(qū)動(dòng)程序與硬件無(wú)關(guān)。

第三十九頁(yè),共64頁(yè)。板級(jí)支持包(1)4.3.1設(shè)備驅(qū)動(dòng)概述設(shè)計(jì)板級(jí)支持包的目的主要是為驅(qū)動(dòng)程序提供訪問硬件設(shè)備寄存器的函數(shù)包,從而實(shí)現(xiàn)對(duì)操作系統(tǒng)的支持。在功能上,板級(jí)支持包大體需要實(shí)現(xiàn)以下兩方面的內(nèi)容:

在系統(tǒng)啟動(dòng)時(shí),完成對(duì)硬件的初始化。

為驅(qū)動(dòng)程序提供訪問硬件的手段。

第四十頁(yè),共64頁(yè)。

通用異步收發(fā)器(UniversalAsynchronousReceiverandTransmitter,UART)是用于控制計(jì)算機(jī)與串行設(shè)備的接口。UART的介紹第四十一頁(yè),共64頁(yè)。應(yīng)用示例LPC2000的I/O電壓為3.3V(可承受5V),連接時(shí)須注意電平的匹配。LPC2000其它通信設(shè)備TxD0RxD0TxD0RxD0與PC機(jī)相連時(shí),由于PC機(jī)串口是RS232電平,所以連接時(shí)需要使用RS232轉(zhuǎn)換器。LPC2000PC機(jī)串口232電平轉(zhuǎn)換TxD0RxD0TxD0RxD0第四十二頁(yè),共64頁(yè)。移位寄存器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總線第四十三頁(yè),共64頁(yè)。VPB總線AHB-VPB橋ARM7UARTn發(fā)送單元TxDn移位寄存器UnTSR發(fā)送緩沖寄存器UnTHRAHB總線ARM7AHB總線UARTn發(fā)送單元TxDn移位寄存器UnTSR發(fā)送緩沖寄存器UnTHRVPB總線AHB-VPB橋CPUUnTSRTXDUnTHRUnTHR描述復(fù)位值7:0發(fā)送器保持寄存器。寫入該寄存器的值保存到發(fā)送FIFO中,當(dāng)該字節(jié)到達(dá)FIFO底部時(shí),它將被送入發(fā)送移位寄存器(UnTSR)進(jìn)行發(fā)送。未定義UART發(fā)送單元第四十四頁(yè),共64頁(yè)。UART0、UART1各含有1個(gè)16字節(jié)的發(fā)送FIFO緩沖區(qū)。UnTHR是UARTn發(fā)送FIFO的最高字節(jié)。UART的發(fā)送FIFO是一直使能的。發(fā)送FIFOUnTHRUnTSRUART發(fā)送FIFO緩沖區(qū)第四十五頁(yè),共64頁(yè)。VPB總線AHB-VPB橋ARM7AHB總線移位寄存器UnRSR接收緩沖寄存器UnRBRUARTn接收單元RxDnVPB總線AHB-VPB橋移位寄存器UnRSR接收緩沖寄存器UnRBRUARTn接收單元RxDnARM7AHB總線RXDUnRBRCPUUnRSRUnRBR描述復(fù)位值7:0接收緩存寄存器,它包含了接收FIFO中最早接收到的字節(jié)未定義UART接收模塊第四十六頁(yè),共64頁(yè)。UART0、UART1各含有1個(gè)16字節(jié)的接收FIFO緩沖區(qū)。軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。位76[5:3]210功能Rx觸發(fā)點(diǎn)設(shè)置—復(fù)位TxFIFO復(fù)位RxFIFO使能FIFOEnFIFO:FIFO使能。該位的任何變化都將清空UART的FIFO。1:使能接收FIFO,并且允許訪問UnFCR[7:1]。0:禁止接收FIFO,此時(shí)接收緩存只有1個(gè)字節(jié)。接收FIFOUnRSRUnRBRUnFCRUART接收FIFO緩沖區(qū)第四十七頁(yè),共64頁(yè)。UART0、UART1各含有1個(gè)16字節(jié)的接收FIFO緩沖區(qū)。軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。位76[5:3]210功能Rx觸發(fā)點(diǎn)設(shè)置—復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCR復(fù)位RxFIFO:接收FIFO復(fù)位。當(dāng)該位置位時(shí),UART0接收FIFO中的所有字節(jié)被清零并復(fù)位指針邏輯注意:該位會(huì)自動(dòng)清零。UART接收FIFO緩沖區(qū)第四十八頁(yè),共64頁(yè)。UART0、UART1各含有1個(gè)16字節(jié)的接收FIFO緩沖區(qū)。軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。位76[5:3]210功能Rx觸發(fā)點(diǎn)設(shè)置—復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCR復(fù)位TxFIFO:發(fā)送FIFO復(fù)位。當(dāng)該位置位時(shí),UART發(fā)送FIFO中的所有字節(jié)被清零并復(fù)位指針邏輯。注意:該位會(huì)自動(dòng)清零。UART接收FIFO緩沖區(qū)第四十九頁(yè),共64頁(yè)。UART0、UART1各含有1個(gè)16字節(jié)的接收FIFO緩沖區(qū)。軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。位76[5:3]210功能Rx觸發(fā)點(diǎn)設(shè)置—復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCR—:這些位保留,用戶程序不要向這些位寫入1。UART接收FIFO緩沖區(qū)第五十頁(yè),共64頁(yè)。UART0、UART1各含有1個(gè)16字節(jié)的接收FIFO緩沖區(qū)。軟件設(shè)置接收FIFO緩沖區(qū)的觸發(fā)字節(jié)。位76[5:3]210功能Rx觸發(fā)點(diǎn)設(shè)置—復(fù)位TxFIFO復(fù)位RxFIFO使能FIFO接收FIFOUnRSRUnRBRUnFCRRx觸發(fā)點(diǎn)設(shè)置:通過設(shè)置這兩位可以調(diào)整接收FIFO中觸發(fā)中斷的有效字節(jié)數(shù)量。 00:觸發(fā)點(diǎn)0(1字節(jié)); 01:觸發(fā)點(diǎn)1(4字節(jié)); 10:觸發(fā)點(diǎn)2(8字節(jié)); 11:觸發(fā)點(diǎn)3(14字節(jié));UART接收FIFO緩沖區(qū)第五十一頁(yè),共64頁(yè)。4.11UART(0、1)UART設(shè)置使用UART前需要設(shè)置的寄存器寄存器名稱功能UnLCR設(shè)置UARTn的通信格式。UnFCR設(shè)置UARTn的接收FIFO緩沖區(qū)。UnDLL、UnDLM設(shè)置UARTn的通信波特率。UnIER設(shè)置UARTn的中斷。U1MCRModem接口設(shè)置(只有UART1具有)。第五十二頁(yè),共64頁(yè)。4.11UART(0、1)UART設(shè)置使用UART前需要設(shè)置的寄存器——UnLCR位76[5:4]62[1:0]功能除數(shù)鎖存間隔奇偶選擇奇偶設(shè)置停止位字長(zhǎng)字長(zhǎng)度選擇: 00:5位字符長(zhǎng)度 01:6位字符長(zhǎng)度 10:7位字符長(zhǎng)度 11:8位字符長(zhǎng)度第五十三頁(yè),共64頁(yè)。4.11UART(0、1)UART設(shè)置使用UART前需要設(shè)置的寄存器——UnLCR位76[5:4]62[1:0]功能除數(shù)鎖存間隔奇偶選擇奇偶設(shè)置停止位字長(zhǎng)停止位選擇: 0:1個(gè)停止位 1:2個(gè)停止位第五十四頁(yè),共64頁(yè)。4.11UART(0、1)UART設(shè)置使用UART前需要設(shè)置的寄存器——UnLCR位76[5:4]62[1:0]功能除數(shù)鎖存間隔奇偶選擇奇偶使能停止位字長(zhǎng)奇偶使能:控制是否進(jìn)行奇偶校驗(yàn)。如果使能,發(fā)送時(shí)將添加一位校驗(yàn)位。 0:禁止奇偶產(chǎn)生和校驗(yàn); 1:使能奇偶產(chǎn)生和校驗(yàn);奇偶選擇:設(shè)置奇偶校驗(yàn)類型。 00:奇數(shù)(數(shù)據(jù)位+校驗(yàn)位=奇數(shù)); 01:偶數(shù)(數(shù)據(jù)位+校驗(yàn)位=偶數(shù)); 10:校驗(yàn)位強(qiáng)制為1; 11:校驗(yàn)位強(qiáng)制為0;第五十五頁(yè),共64頁(yè)。4.11UART(0、1)UART設(shè)置使用UART前需要設(shè)置的寄存器——UnLCR位76[5:4]62[1:0]功能除數(shù)鎖存間隔奇偶選擇奇偶使能停止位字長(zhǎng)間隔:當(dāng)該位為1時(shí),輸出引腳(TxDn)強(qiáng)制為邏輯0,可以引起通信對(duì)方(LPC2000)產(chǎn)生間隔中斷。在某些通信方式中,使用間隔中斷作為通信的起始信號(hào)(如:LINBus)。 0:禁止間隔發(fā)送; 1:使能間隔發(fā)送;第五十六頁(yè),共64頁(yè)。4.11UART(0、1)UART設(shè)置使用UART前需要設(shè)置的寄存器——UnLCR位76[5:4]62[1:0]功能除數(shù)鎖存間隔奇偶選擇奇偶使能停止位字長(zhǎng)除數(shù)鎖存:因?yàn)閁nDLL和UnRBR/UnTHR的地址重疊,通過設(shè)置該位可以指定其中某個(gè)寄存器操作。0:禁止訪問除數(shù)鎖存寄存器; 1:使能訪問除數(shù)鎖存寄存器;第五十七頁(yè),共64頁(yè)。UART寄存器地址訪問方式UART0U0RBR0xE000C000DLAB=0,對(duì)地址:0xE000C000進(jìn)行讀訪問U0THRDLAB=0,對(duì)地址:0xE000C000進(jìn)行寫訪問U0DLLDLAB=1,對(duì)地址:0xE000C000進(jìn)行訪問U0IER0xE000C004DLAB=0,對(duì)地址:0xE000C004進(jìn)行訪問U0DLMDLAB=1,對(duì)地址:0xE000C004進(jìn)行訪問UART——特殊寄存

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論