保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于LPC2104的VxWorksBSP设计


,则从Flash的零地址开始执行,也就是执行romInit()函数。此函数将启动方式BOOT_COLD放在R0中,作为romStart的参数,将系统设为SVC32模式,并禁止IRQ和FIR中断,设置好系统堆栈指针跳到romStart()执行。验证此部分程序执行情况的最简单的一种方法是用汇编写一段点灯程序,用以指令程序的执行情况。其中常量PINSEL0、PINSEL1、IODIR、SPI_IOCON可以头文件templatARM.h中用define定义。
  
  #definePINSEL00xE002C000
  
  #definePINSEL10xE002C004
  
  #defineIODIR0xE0028008
  
  #defineSPI_IOCON0x00003DD0
  
  我们设计的点灯程序如下。将其放在romInit.s适当的位置,可以定位程序的运行情况。
  
  LDRr0,=PINSEL0
  
  MOVr1,#0
  
  STRr1,[R0],#4
  
  STRr1,[R0]
  
  LDRr0,=PINSEL1
  
  MOVr1,#0
  
  STRr1,[R0],#4
  
  STRr1,[R0]
  
  LDRr0,=IODIR
  
  LDRr1,SPI_IOCON
  
  STRr1,[R0]
  
  在Tornado集成开发环境下,templatARM的BSP生成bootrom_res.bin文件后,可以借助ASD1.2的AXD反汇编调方式器进行单步仿真和调试。
  
  2.3sysLib.c文件
  
  在这个文件中,主要是在sysHwInit()函数内实现系统外设的配置,中断向量表的拷贝和重映射,系统定时器中断向量的安装,串口初始化等功能。在串口还没有调通之前,可以借助上面提到的简单点灯函数实现程序的定位。其用C语言重新定义如下(将它插入本文件的适当地址,可以指示各个函数的执行情况):
  
  #include“LPC2106.h”
  
  PINSEL0=0x00000000;
  
  PINSEL1=0x00000000;
  
  IODIR=0x00003DD0;
  
  系统的初始化和配置与硬件系统高度相关。对这部分的代码不作过多的解释,请参看代码注释。几个常量定义如下:
  
  #defineFosc11059200/*晶振频率,10MHz~25MHz应与实际一致*/
  
  #defineFcclk(Fosc*4)
  
  /*系统频率,必须为Fosc的整数倍(1~32),且<=60MHz*/
  
  #defineFcco(Fosc*4)
  
  /*CCO频率,必须为Fcclk的1、2、4、8倍,范围为156MHz~320MHz*/
  
  #defineFpclk(Fcclk/4)*2
  
  /*VPB时钟频率,只能为(Fcclk/4)的1、2、4倍*/
  
  2.4templateTimer.c文件
  
  本文件主要实现与系统时钟和系统辅助时钟相关的函数。关于系统时钟的各函数定义如下(系统辅助时钟的各函数与系统时钟一样,只须将T0换成T1即可):
  
  /*SysClkInt(),此函数每个时钟Tick被调用一次*/
  
  voidsysClkInt(void){
  
  /*通知系统中断结束*/
  
  T0IR=0x01;
  
  T0MR0+=(Fpclk/sysClkTicksPerSecond);
  
  VICVectAddr=0;
  
  /*调用系统中断函数*/
  
  if(sysClkRoutine!=NULL)
  
  (*sysClkRoutine)(sysClkArg);
  
  }
  
  /*sysClkDisable()禁止系统时钟*/
  
  voidsysClkDisable(void){
  
  if(sysClkRunning){
  
  /*禁止系统时钟中断*/

《基于LPC2104的VxWorksBSP设计(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/172484.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。