打印
[ZLG-ARM]

【问】EASYARM2200将中断向量表放SRAM中程序跑飞

[复制链接]
1507|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Id001|  楼主 | 2009-9-16 19:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
版主,我使用的硬件是EASYARM2200。     

      我将代码段放置在FLASH中,将异常向量表映射到SRAM时,通过H-JTAG在线调试时候程序能运行正常。而复位之后程序却运行不起来,请问可能是什么原因?

相关代码是:
(1)StartUP.s 在启动代码中进行重映射到SRAM
   启动初始化启动代码StartUp.s文件中:
;/*--------------------------------------------------------------------------
;-- 代码区
;--------------------------------------------------------------------------*/
  CODE32
  
  AREA Start, CODE, READONLY
          ENTRY
Reset_Handler
          LDR  PC,=Instruct_2       ;重映射!!
Instruct_2
           LDR  R0,=MEMMAP        
           LDR  R1,=0x02        
           STR  R1,[R0]                 ;中断向量从内部RAM重映射

````
上电时通过以上代码将异常向量表映射到SRAM的0x4000,0000-0x4000,0032.

(2)vector.s
异常向量表文件vector.s:
  AREA  vect, CODE, READONLY
  ENTRY
  
  LDR   PC,Reset_AddR
  LDR   PC,Undefined_AddR
  LDR   PC,SWI_AddR
  LDR   PC,Prefetch_AddR   
  LDR   PC,Abort_AddR
  DCD   0xB9205F80
  LDR   PC,[PC, #-0xff0]
  LDR   PC,FIQ_AddR

Reset_AddR            DCD       Reset_Handler
Undefined_AddR      DCD       Undefined_Handler
SWI_AddR              DCD       SWI_Handler
Prefetch_AddR        DCD        Prefetch_Handler
Abort_AddR           DCD        Abort_Handler
Nouse                    DCD       0
IRQ_AddR              DCD       0
FIQ_AddR              DCD        FIQ_Handler

Undefined_Handler
                     B       .
SWI_Handler
                     B         .
  
Prefetch_Handler
                      B      .
  
Abort_Handler
                       B          .
FIQ_Handler
                        B           .
(3) ExFlashRam.scf
分散加载文件:
ERAM_LOAD  0x80000000
{
    ERAM_EXE 0x80000000
   {
           StartUP.o(Start,+First)
           *(+RO)
    }
    REMAP_ISR 0x40000000
    {
           vector.o(vect,+First)
          * (+RW,+ZI)
   }

   
   `````  
}

请看看我的Startup.S、Vector.s、和分散加载文件的描述有问题吗???

相关帖子

沙发
bigarmer| | 2009-9-17 17:30 | 只看该作者
光执行重映射没用,要先把中断向量表拷贝到SRAM。

使用特权

评论回复
板凳
Id001|  楼主 | 2009-9-17 20:02 | 只看该作者
应该是COPY了的。因为我使用:
B      __main
C库应该完成COPY了。

还有,程序使用H-JTAG下载初次是可以运行的,但是复位后就不正常了。

使用特权

评论回复
地板
bigarmer| | 2009-9-18 08:44 | 只看该作者
使用:B      __main C库应该完成COPY了?
====================================
哪里有这样的说法?要自己在代码里面实现异常向量表的拷贝。

使用特权

评论回复
5
Id001|  楼主 | 2009-9-18 20:09 | 只看该作者
????:curse:

   REMAP_ISR 0x40000000
    {
           vector.o(vect,+First)
          * (+RW,+ZI)
   }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

107

帖子

0

粉丝