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

发布者:uioo9158最新更新时间:2012-05-21 来源: 微计算机信息 关键字:SEP3203  BSP  ARM7 手机看文章 扫描二维码
随时随地手机看文章

1、引言

BSP是Board Support Package的缩写。该术语通常用于嵌入式领域,主要指在开发嵌人式应用时系统开发商提供的各种支持库。由于每个嵌人式系统提供商都根据自己的操作系统而提出对BSP的不同理解,因此,在涉及到BSP的具体涵义时,必须基于具体的嵌入式系统。本文将以基于SEP3203的无线通讯产品为例,说明其BSP 的内容及实现。该无线通讯产品硬件结构如(图一 无线通讯产品硬件结构图),SEP3203外接了Nor flash和SDRAM,并通过串口与无线模块和仪表通讯。软件执行流程图如(图二无线通讯产品软件流程图)。该无线通讯产品的BSP将提供给应用程序开发者一个与硬件无关的开发平台。

 

2、概要设计

2.1、无线通信平台BSP的内容

根据无线数据终端的硬件平台,BSP的内容应包括EMI (存储器接口)的配置、PMU(电源管理模块)的配置、代码的搬运和串口的驱动程序。

2.2、整体框架

为了完成BSP的内容,上电后,首先应配置EMI,PMU,这是因为EMI 决定了内存的地址分配,而PMU 是配置其它硬件的前提。然后,考虑到代码执行效率,将代码搬运到内存中执行,并进行指针的重新定位。最后,在主程序中完成对串口的配置如(图三 BSP流程)。从上电开始到Remap操作结束运行的这段代码即为无线通信平台的启动代码。

3、启动代码的设计

3.1、启动代码的编写

上电后,pc指针指向地址0x00000000,而此时地址0x00000000与NOR FLASH 首地址重合, 这时NOR FLASH 同时拥有两个地址:0x00000000和0x20000000。因此,pc指针实际指向了NOR FALSH 的首地址,即为启动代码的起始地址。启动代码编写如下:

//配置PMU与EMI

    ldr     r1, =0x1000100c       //配置内部模块时钟源供给的控制寄存器

    ldr     r2, =0x0ffff;      

    str     r2,[r1]

    ldr     r1, =0x10001014       //配置芯片工作模式寄存器

    ldr     r2, =0x1

    str     r2,[r1]

    ……   

    ldr     r1, =0x11000000    //配置存储器参数配置寄存器

    ldr     r2, =0xB91331FF    

    str     r2, [ r1 ]                                                         

    ldr     r1, =0x11000014       //配置SDRAM 时序配置寄存器

ldr     r2, =0x01004077   

    str     r2, [ r1 ]         [page]

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

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

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);                 //使能串口中断

}

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

本文作者创新点:

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

 

参考文献

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

关键字:SEP3203  BSP  ARM7 引用地址:基于SEP3203处理器的BSP的实现探讨

上一篇:基于ARM的RFID阅读器设计
下一篇:基于U-BOOT的S3C44B0引导装载程序的设计与实现

推荐阅读最新更新时间:2024-03-16 12:59

arm7 力天电子lpc2148 GPIO之一蜂鸣器试验程序
实验利用P0.22的输出功能,控制蜂鸣器蜂鸣。程序设置PINSEL0使P0.22连接GPIO,并通过IO0DIR将其设置为输出状态;然后通过IO0DET和IO0CLR置位和清零P0.22口,控制蜂鸣器。 #include NXP/iolpc2148.h void Delay(unsigned long n); main() { PINSEL0=0x00000000; //设置引脚连接GPIO IO0DIR=1 22; //P0.7控制蜂鸣器, 设置为输出 while(1) { IO0SET=1 22; //蜂鸣器蜂鸣 Delay(100000); //延时 IO0CLR=1 22; //蜂鸣器停
[单片机]
<font color='red'>arm7</font> 力天电子lpc2148 GPIO之一蜂鸣器试验程序
基于GSM短消息的油罐区监控系统
1 引言 油品灌区监控系统是油库储备公司的基本组成部分。目前大多数油品罐区普遍存在技术落后、自动化水平低、手工作业等问题。因此,为了适应市场竞争要求,提高灌区安全运行,开发一种新型基于ARM7和GSM短消息的油罐监控系统。该系统设计利用ARM7丰富的外围模块、强大的管理功能和控制能力,以及GSM的网络覆盖面广、用户投资小、运营费用少等优点,将采集数据以短消息方式有效传给监控中心,再由控制中心处理数据并建立数据文件,从而解决油品灌区现场数据的传输和决策指令的发送问题。 2 系统总体结构设计 图1为基于GSM的油罐区远程监控系统总体结构,它由测控单元、GSM无线网络和监控中心构成。测控单元以微处理器LPC2119为核心,同
[单片机]
基于GSM短消息的油罐区监控系统
一款基于ARM7的嵌入式实验平台设计
1 前 言 嵌入式系统是先进的计算机技术、半导体技术、电子技术与各个行业的具体应用相结合后的产物, 它是硬件与软件是紧密捆绑在一起的系统, 这一特点就决定了它必然是一个技术密集、高度分散、不断创新的知识集成系统。目前的嵌入式系统人才多数是在工作岗位上培养起来的, 国内高校还很少设立嵌入式系统这个本科专业, 只是为了适应社会的需要, 对某些专业的学生开设了相关课程, 学习。嵌入式系统设计是一门实践性非常强的课程, 其理论还在不断的发展当中, 如果没有很好的实践平台, 嵌入式系统技术很难掌握, 学生的技能就得不到提高, 培养的学生就不能适应市场的需要。 现有的一些嵌入式系统实验平台已经非常成熟,产品也覆盖了ARM7至A
[单片机]
一款基于<font color='red'>ARM7</font>的嵌入式实验平台设计
基于PPC8270的BSP开发与实现
0 引言     PPC8270是一款通用的通信协议处理器芯片,片上集成了高性能的PPC精简指令系统微处理器、非常灵活的系统集成单元以及多种通信协议控制器以支持不同的应用,特别是在通信及网络系统的应用环境中有着十分广泛的应用。基于PPC8270的BSP开发为上层系统软件操作底层硬件环境提供了丰富而有效的软件接口,进而为应用软件的开发提供有力的支持。 1 PPC8270处理器介绍 1.1 PPC8270内部寄存器基本结构     PPC8270采用G2_LE内核,该内核设计继承了G2内核与PPC603e内核的设计,其寄存器可根据访问权限分为用户模式(USER MODEL)与超级模式(SUPERVISOR MODEL)。 1.2 PPC
[嵌入式]
arm的一些概念(ARM7、Cortex-M的区别)
ARM内核和架构都是什么意思,它们到底是什么关系? 1.ARM内核:从ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,总之不同版本 ARM 有不同的想法。比如为高速度设计的Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是内核,后者是指令集的架构。 2.ARM的架构都是基于RISC指令集而架构的,而其内核只是实现这一指令集的硬件架构的基础,Thumb-2指令集架构(ISA)的子集,包含所有基本的16位 和32位Thumb-2指令、 、哈佛处理器架构,在加载/存储数据的同时能够执行指令取指,带分支预测的三级流水线等。 3.好比你盖房
[单片机]
基于ARM7的智能拆焊、回流焊台控制系统电路模块设计
  本文采用ARM7作为主控芯片,设计了一种智能拆焊、回流焊台控制系统,可以通过键盘操作控制,通过液晶显示屏显示其所处的状态及实时温度曲线,能对多种集成芯片进行拆和焊,适用于集成电路板的维修和加工。   硬件电路   主要由变压器、整流二极管、滤波电容、集成稳压器等构成,为电路提供5V、3.3V和1.8V的稳定电压。   信号检测电路模块   主要由热电偶、运算放大器27L2、DS18B20及ARM7内部AD等组成。将温度转换成处理器可识别的数字信号。      图2 温度采集电路   本设计的温度采集电路如图2所示,在P6口的1、3引脚接热电偶传感器的正端,2、4引脚接热电偶传感器的负端。热电偶采集到信号后经C00、
[单片机]
基于<font color='red'>ARM7</font>的智能拆焊、回流焊台控制系统电路模块设计
基于ARM7系列芯片嵌入式平台上实现的设计方案解析
系统防掉电设计的目的是:采用一种机制,使得系统在意外失去供电的情况下,可以保证系统运行状态的确定性以及记录数据的完整性;当系统供电恢复后,现场数据可以及时恢复,避免应用系统产生混乱。我们知道,在嵌入式系统设计与开发中越来越多地应用嵌入式操作系统。由于操作系统的引入,数据的读写往往是通过文件的方式完成,而不是直接对存储单元地址操作。用文件读写方式操作数据,在程序的运行过程中往往将数据暂存在易失性的存储空间,如SDRAM,一旦系统意外失电,这些数据往往被丢失。因此,当系统意外失电时必须采取一定的措施进行系统的掉电保护,以避免系统产生混乱。总的说来,防掉电程序的主要思路就是:产生掉电信号,捕捉掉电信号,处理掉电信号和数据以及现场状态
[单片机]
基于<font color='red'>ARM7</font>系列芯片嵌入式平台上实现的设计方案解析
基于ARM7的远程智能住宅控制装置的研制
  1 总体方案设计   如图l所示。智能家电控制系统由家庭智能控制模块、家庭内部网络系统、以及GPRS模块等几部分构成。   (1)家庭智能控制器:该部分是系统的核心。采用嵌入式系统设计,能够自动运行、处理数据,通过RS485总线管理和控制家庭系统。并且控制器通过GPRS模块,实现家庭系统与外部网络的通讯,使用户可以通过短信和互联网等方式实现家庭系统的远程控制,同时,控制器还通过键盘和显示屏为用户提供人机界面,方便用户实现本地控制。   (2)家庭系统:家庭系统通过单片机组成若干小的控制系统控制各家用设备,并通过统一的控制总线将这些小的控制系统组成网络,连接到家庭智能控制器,受家庭智能控制器控制。   家庭智能控制器系统
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved