新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于SEP3203处理器的BSP的实现探讨

基于SEP3203处理器的BSP的实现探讨

作者: 时间:2012-05-21 来源:网络 收藏

//搬运Nor flash中所有代码(包括bootloader)到SDRAM

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

ldr r1, =0x30002000 //搬运代码SDRAM目标地址

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

LOOP //每个循环搬运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 //空语句

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、启动代码的难点分析

执行指令为三级流水线结构,即第一条指令执行的时,第二条指令正在译码,第三条指令正在取指如(图四三级流水线)。

Remap操作中,语句ldr pc, =0x20000080是将pc指针指向了下面的4条mov语句,这4条mov语句是没有意义的,只是用来填充三级流水线,以避免执行Remap操作时,产生不必要的错误。

Remap操作后,NOR FLASH 将失去零地址,而只拥有实际地址0x20000000,而SDRAM 则拥有了两个起始地址,即0x00000000和0x30000000,访问这两个地址实际上都是在访问SDRAM。因此,当完成代码搬运后,pc指针应先重新定位到Nor Flash实际地址(0x20000000开始的地址)再继续运行启动代码的剩余部分,否则Remap之后pc会取错地址导致错误。

语句ldr pc, =0x30002000将pc指针定位到主程序的入口,之后4条mov语句用于填充三级流水线,否则pc指针在读取重新定位pc指针指令后,将会继续向下移动,取错指令。

pc指针跳转到主程序的入口后,整个启动代码结束。

4、串口驱动程序

串口驱动程序包含串口配置和收发数据两部分,接收数据使用do(取fifo数据)while(fifo非空)的结构读取fifo中的数据;发送数据即直接向发送fifo填入数据,其代码不再赘述。串口配置是在主函数运行后进行的。代码如下:

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); //选择访问波特率设置寄存器

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

write_reg(UART0_DLL, baudl)

read_reg(UART0_LCR) = (~(0x1 7)) //关闭波特率配置寄存器访问

write_reg(UART0_FCR, triger) //配置fifo触发级

write_reg(UART0_IER, 0x00) //使能串口相关中断源

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

}

由于处理器的串口波特率配置寄存器地址是与其他寄存器地址复用的,所以在配置波特率时须进行如下操作:语句:write_reg(UART0_LCR, bit)中bit参数的第7位决定了波特率配置寄存器的访问,之后语句:read_reg(UART0_LCR) = (~(0x1 7))关闭了波特率配置寄存器的访问。

本文作者创新点:

根据无线通信平台的测试及在仪表监控系统中应用的实际情况,本完成了预定内容,且运行稳定。的成功编写为今后更为复杂的底层开发提供了保证,也有助于相关嵌入式操作系统的移植与开发。

参考文献

1 杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.1-160

2 Andrew N.Sloss,Dominic Symes,Chris Wright. ARM嵌入式系统开发——软件设计与优化[M].北京:北京航空航天大学出版社,2005.1-92

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


上一页 1 2 下一页

关键词: SEP3203 BSP ARM7

评论


相关推荐

技术专区

关闭