szhyathome

    1. 谢谢楼主了
    2. 2440 eboot 中断向量表 问题,请高手帮忙解答 92/14151 嵌入式系统 2009-06-09
      ADS中 // Exception vector #define pISR_RESET                (*(unsigned *)(_ISR_STARTADDRESS+0x0)) #define pISR_UNDEF                (*(unsigned *)(_ISR_STARTADDRESS+0x4)) #define pISR_SWI                (*(unsigned *)(_ISR_STARTADDRESS+0x8)) #define pISR_PABORT                (*(unsigned *)(_ISR_STARTADDRESS+0xc)) #define pISR_DABORT                (*(unsigned *)(_ISR_STARTADDRESS+0x10)) #define pISR_RESERVED        (*(unsigned *)(_ISR_STARTADDRESS+0x14)) #define pISR_IRQ                (*(unsigned *)(_ISR_STARTADDRESS+0x18)) #define pISR_FIQ                (*(unsigned *)(_ISR_STARTADDRESS+0x1c)) ^   _ISR_STARTADDRESS                ; _ISR_STARTADDRESS=0x33FF_FF00 HandleReset         #   4 HandleUndef         #   4 HandleSWI                #   4 HandlePabort    #   4 HandleDabort    #   4 HandleReserved  #   4 HandleIRQ                #   4 HandleFIQ                #   4 ----------------------在入口处放置中断跳转向量表 __ENTRY ResetEntry         ;1)The code, which converts to Big-endian, should be in little endian code.         ;2)The following little endian code will be compiled in Big-Endian mode.         ;  The code byte order should be changed as the memory bus width.         ;3)The pseudo instruction,DCD can''t be used here because the linker generates error.         ASSERT        :DEF:ENDIAN_CHANGE         [ ENDIAN_CHANGE             ASSERT  :DEF:ENTRY_BUS_WIDTH             [ ENTRY_BUS_WIDTH=32                 b        ChangeBigEndian            ;DCD 0xea000007             ]             [ ENTRY_BUS_WIDTH=16                 andeq        r14,r7,r0,lsl #20   ;DCD 0x0007ea00             ]             [ ENTRY_BUS_WIDTH=8                 streq        r0,[r0,-r10,ror #1] ;DCD 0x070000ea             ]         |             b        ResetHandler     ]         b        HandlerUndef        ;handler for Undefined mode         b        HandlerSWI        ;handler for SWI interrupt         b        HandlerPabort        ;handler for PAbort         b        HandlerDabort        ;handler for DAbort         b        .                ;reserved         b        HandlerIRQ        ;handler for IRQ interrupt         b        HandlerFIQ        ;handler for FIQ interrupt 在MMU映射时候有 MMU_SetMTT(0x00000000,0x03f00000,(int)__ENTRY,RW_CB);   //bank0, 从这里楼主可以看出一些端倪了。ENTRY,但是在RObase等设置里面ENTRY是等于0x30000000的 把物理地址0映射到0x30000000的。这就是中断向量表说放置的位置了。 其实后来访问的都是虚拟地址了。我们要转换观念,不要老想着物理地址那里。 至于eboot 我想也会类似。只是我还没有看完,明天我会再看一下。 今天有事出去,晚了。现在该sleep了。

最近访客

< 1/1 >

统计信息

已有62人来访过

  • 芯积分:5
  • 好友:--
  • 主题:--
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言