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

基于LPC2104的VxWorksBSP设计



  异常
  
  0x00000000复位0x00000004未定义指令0x00000008软件中断0x0000000C预取指中止(从存储器取指出错)0x00000010数据中止(数据访问存储器出错)0x00000014保留0x00000018IRQ0x0000001CFIQ
  *在ARM文档中标识为保留,该位置被Boot装载程序用作者有效的用户程序关键字。
  
  基于ARM体系结构的VxWorks的其中四个异常入口函数为:excEnterUndef、ecxEnterSwi、excEnterPrefetchAbort、excEnterDataAbort。直接在对应的位置用B指令跳到对应的函数中即可。代码如下:_ARM_FUNCTION(romInit)
  
  _romInit:
  
  ARM的异常向量表如表1。LPC2104的异常向量表也一样,只不过它可以重新映射到RAM的头部,即从0x40000000开始的32个字节。
  
  基于ARM体系结构的VxWorks的其中四个异常入口函数为:excEnterUndef、excEnterSwi、excEnterPrefetchAbort、excEnterDataAbort。直接在对应的位置用B指令跳到对应的函数中即可。代码如下:
  
  _ARM_FUNCTION(romInit)
  
  _romInit:
  
  cold:
  
  Bstart/*复位异常*/
  
  BexcEnterUndef/*未定义异常*/
  
  BexcEnterSwi/*软中断*/
  
  BexcEnterPreftchAbort/*予取指异常*/
  
  BexcEnterDataAbort/*数据异常*/
  
  .ascii"20B9"/*保留空间,由格式转换程序超填入0xB9205F80*/
  
  LDRpc,[pc,#-0xFF0]/*IRQ中断入口函数*/
  
  BFIQ_Hander/*FIQ中断入口函数*/
  
  IRQ中断函数的入口函数是C语言写的sysClkInt()和sysAuxClkInt(),需要自己保存现场和恢复现场,代码为:
  
  _ARM_FUNCTION(TIME0_IRQ_Hander)
  
  _TIME0_IRQ_Hander:
  
  SUBLR,LR,#4/*计算返回地址*/
  
  STMFDSP!,{R0-R11,R12,LR}/*保存任务环境*/
  
  MRSR3,SPSR/*保存状态*/
  
  STMFDSP!,{R3}
  
  BLsysClkInt/*调用C语言的中断处理程序*/
  
  LDMFDSP!,{R3}
  
  MSRSPSR_cxsf,R3
  
  LDMFDSP!,{R0-R11,R12,PC}
  
  _ARM_FUNCTION(TIME1_IRQ_Hander)
  
  _TIME1_IRQ_Hander:
  
  SUBLR,LR,#4/*计算返回地址*/
  
  STMFDSP!,{R0-R11,R12,LR}/*保存任务环境*/
  
  MRSR3,SPSR/*保存状态*/
  
  STMFDSP!,{R3}
  
  BLsysAuxClkInt/*调用C语言的中断处理程序*/
  
  LDMFDSP!,{R3}
  
  MSRSPSR_cxsf,R3
  
  LDMFDSP!,{R0-R11,R12,PC}
  
  快速中断函数VxWorks不用由用户自己定义。其框架如下:其中FIQ_Exception()函数由C语言定义,在文件开始用globlFUNC(FIQ_Exception)声明。
  
  FIQ_Hander:
  
  STMFDSP!,{R0-R12,LR}
  
  BLFIQ_Exception
  
  LDMFDSP!,{R0-R12,LR}
  
  SUBSPC,LR,#4
  
  当系统上电时,如果地址0x00000014内的数据是0xB9205F80

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

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