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

ARM7TDMI-S在嵌入式系统中的Bootloader代码设计


的嵌入式系
  
  
  
  统软件中需要使用CPU芯片上的哪些资源。Bootloader代码的一般流程(即Bootloader代码应该进行的操作)如图1所示。
  
  2.3基于LPC2104和μC/OS-II是多任务的实时操作系统。针对该款芯片和多任务实时操作系统的Bootloader程序的流程如图2所示。
  
  2.3.2关键代码分析
  
  ;中断向量表,给出了CPU芯片出现异常时应该转去执行的程序地址
  
  Vectors
  
  LDRPC,ResetAddr
  
  LDRPC,UndefinedAddr
  
  LDRPC,SWI_Addr
  
  LDRPC,SWI_Addr
  
  LDRPC,PrefetchAddr
  
  LDRPC,DataAbortAddr
  
  DCD0xb9205f80
  
  LDRPC,[PC,#-0xff0]
  
  LDRPC,FIQ_Addr
  
  ResetAddrDCDReset
  
  UndefinedAddrDCDUndefined
  
  SWI_AddrDCDSoftwareInterrupt
  
  PrefetchAddrDCDPrefetchAbort
  
  DataAbortAddrDCDDataAbort
  
  NouseDCD0
  
  IRQ_AddrDCD0
  
  FIQ_AddrDCDFIQ_Handler
  
  ;InitStack函数,其功能是初始化CPU各种模式的堆栈
  
  InitSatck
  
  MOVR0,LR;因芯片模式切换,故将程序返回地址保存至R0,同时在初始化堆栈完成后使用R0返回
  
  MSRCPSR_c,#0xd3;设置管理模式堆栈
  
  LDRSP,StackSvc
  
  MSRCPSR_c,#0xd2;设置中断模式堆栈
  
  LDRSP,StackIrq
  
  MSRCPSR_c,#0xd1;设置快速中断模式堆栈
  
  LDRSP,StackFiq
  
  MSRPSR_c,#0xd7;设置中止模式堆栈
  
  LDRSP,StackAbt
  
  MSRCPSR_c,#0xdb;设置未定义模式堆栈
  
  LDRSP,StackUnd
  
  MSRCPSR_c,#0xdf;设置系统模式堆栈
  
  LDRSP,StackUsr
  
  MOVPC,R0
  
  StackUsrDCDUsrStackSpace+(USR_STACK_LEGTH-1)*4
  
  StackRvcDCDSvcStackSpace+(SVC_STACK_LEGTH-1)*4
  
  StackIrqDCDIrqStackSpace+(IRQ_STACK_LEGTH-1)*4
  
  StackFiqDCDFiqStackSpace+(FIQ_STACK_LEGTH-1)*4
  
  StackAbtDCDAbtStackSpace+(ABT_STACK_LEGTH-1)*4
  
  StackUndDCDUndtStackSpace+(UND_STACK_LEGTH-1)*4
  
  ;系统初始化代码
  
  Reset
  
  BLInitStack;调用InitStack函数初始化芯片各种模式的堆栈
  
  BLTargetResetInit;调用TargetResetInit函数对系统进行基本初始化
  
  
  
  >
  B_main;跳转到ADS提供的启动代码_main函数处,它初始化函数库并最终引导CPU进入操作系统的main()函数
  
  上面的程序代码只包含了流程图中的几个主机步骤。这些步骤都是必不可少的,其余的步骤都在TargetResetInit函数中加以实现。本例中的TargerResetInit函数如下:
  
  voidTargetResetInit(void)
  
  {/*设置系统各部分时钟*/
  
  PLLCON=1;
  
  #if((Fcclk/4)/Fpclk==1

《ARM7TDMI-S在嵌入式系统中的Bootloader代码设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/143340.html

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