<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于SEP3203處理器的BSP的實(shí)現探討

基于SEP3203處理器的BSP的實(shí)現探討

作者: 時(shí)間:2012-05-21 來(lái)源:網(wǎng)絡(luò ) 收藏

//搬運Nor flash中所有代碼(包括bootloader)到SDRAM

ldr r3, =0x00000000 //SDRAM起始地址

ldr r1, =0x30002000 //搬運代碼SDRAM目標地址

ldr r2, =0x20001000 //代碼在flash中的起始地址

LOOP //每個(gè)循環(huán)搬運32位代碼

ldr r4, [r2], #4 //將代碼從flash搬運到SDRAM中

str r4, [r1], #4

add r3, r3, #1

cmp r3, #0x2C000 //0x2C000為代碼量

bne LOOP

//REMAP操作

ldr pc, =0x20000080 //定位pc指針

mov r0, r0 //空語(yǔ)句

mov r0, r0

mov r0, r0

mov r0, r0

ldr r1, =0x11000010 //配置REMAP寄存器

ldr r2, =0x0000000b

str r2, [ r1 ]

//使pc指針指向主程序起始地址

ldr pc, =0x30002000 //定位pc指針

mov r0, r0

mov r0, r0

mov r0, r0

mov r0, r0

3.2、啟動(dòng)代碼的難點(diǎn)分析

執行指令為三級流水線(xiàn)結構,即第一條指令執行的時(shí),第二條指令正在譯碼,第三條指令正在取指如(圖四三級流水線(xiàn))。

Remap操作中,語(yǔ)句ldr pc, =0x20000080是將pc指針指向了下面的4條mov語(yǔ)句,這4條mov語(yǔ)句是沒(méi)有意義的,只是用來(lái)填充三級流水線(xiàn),以避免執行Remap操作時(shí),產(chǎn)生不必要的錯誤。

Remap操作后,NOR FLASH 將失去零地址,而只擁有實(shí)際地址0x20000000,而SDRAM 則擁有了兩個(gè)起始地址,即0x00000000和0x30000000,訪(fǎng)問(wèn)這兩個(gè)地址實(shí)際上都是在訪(fǎng)問(wèn)SDRAM。因此,當完成代碼搬運后,pc指針應先重新定位到Nor Flash實(shí)際地址(0x20000000開(kāi)始的地址)再繼續運行啟動(dòng)代碼的剩余部分,否則Remap之后pc會(huì )取錯地址導致錯誤。

語(yǔ)句ldr pc, =0x30002000將pc指針定位到主程序的入口,之后4條mov語(yǔ)句用于填充三級流水線(xiàn),否則pc指針在讀取重新定位pc指針指令后,將會(huì )繼續向下移動(dòng),取錯指令。

pc指針跳轉到主程序的入口后,整個(gè)啟動(dòng)代碼結束。

4、串口驅動(dòng)程序

串口驅動(dòng)程序包含串口配置和收發(fā)數據兩部分,接收數據使用do(取fifo數據)while(fifo非空)的結構讀取fifo中的數據;發(fā)送數據即直接向發(fā)送fifo填入數據,其代碼不再贅述。串口配置是在主函數運行后進(jìn)行的。代碼如下:

int init_uart(unsigned long sysclk, unsigned long baudrate, unsigned long databit, unsigned long trigerlevel)

{

unsigned long baud, bit, triger, baudh, baudl;

baud = sysclk/16/baudrate

baudh = baud >> 8 //波特率高8位和低8位分離

baudl = baud 0xff

write_reg(UART0_LCR, bit); //選擇訪(fǎng)問(wèn)波特率設置寄存器

write_reg(UART0_DLH, baudh) //分高低8位分別配置波特率

write_reg(UART0_DLL, baudl)

read_reg(UART0_LCR) = (~(0x1 7)) //關(guān)閉波特率配置寄存器訪(fǎng)問(wèn)

write_reg(UART0_FCR, triger) //配置fifo觸發(fā)級

write_reg(UART0_IER, 0x00) //使能串口相關(guān)中斷源

irq_enable(INT_UART0); //使能串口中斷

}

由于處理器的串口波特率配置寄存器地址是與其他寄存器地址復用的,所以在配置波特率時(shí)須進(jìn)行如下操作:語(yǔ)句:write_reg(UART0_LCR, bit)中bit參數的第7位決定了波特率配置寄存器的訪(fǎng)問(wèn),之后語(yǔ)句:read_reg(UART0_LCR) = (~(0x1 7))關(guān)閉了波特率配置寄存器的訪(fǎng)問(wèn)。

本文作者創(chuàng )新點(diǎn):

根據無(wú)線(xiàn)通信平臺的測試及在儀表監控系統中應用的實(shí)際情況,本完成了預定內容,且運行穩定。的成功編寫(xiě)為今后更為復雜的底層開(kāi)發(fā)提供了保證,也有助于相關(guān)嵌入式操作系統的移植與開(kāi)發(fā)。

參考文獻

1 杜春雷.ARM體系結構與編程[M].北京:清華大學(xué)出版社,2003.1-160

2 Andrew N.Sloss,Dominic Symes,Chris Wright. ARM嵌入式系統開(kāi)發(fā)——軟件設計與優(yōu)化[M].北京:北京航空航天大學(xué)出版社,2005.1-92

3 董策,楊志家. AES加密算法的高速低功耗ASIC設計[J]. 微計算機信息-2005年09X期,36-37


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: SEP3203 BSP ARM7

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>