2440/2416/6410/S5PV210之wince+android系统驱动开发者

等待新发生的事情

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

      作者:gooogleman 日期 2011.09.08

     刚才一个小伙子在论坛提问如下:

我在学习2440+WinCE5.0系统,正在看中断相关的。 
在文件2440init.s里找到如下代码 

    AREA    Init,CODE,READONLY 

    ENTRY  
    ;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 
    b   ResetHandler    ; 0x00 Reset 
    b   .               ; 0x04 Undefined 
    b   .               ; 0x08 Supervisor 
    b   .               ; 0x0c Prefetch Abort 
    b   .               ; 0x10 Data Abort 
    b   .               ; 0x14 Reserved 
    b   .               ; 0x18 IRQ 
    b   .               ; 0x1c FIQ 

地址0x04-0x1C均无有效跳转代码,是否意味着这些异常没有使用?但是在后面又看到如下些代码,很疑惑。上面那段代码存在flash里而下面这段是在RAM里?请知道的朋友讲解一下。 


        AREA RamData, DATA, READWRITE 

        ^   _ISR_STARTADDRESS 
HandleReset     #   4  
HandleUndef     #   4 
HandleSWI       #   4 
HandlePabort    #   4 
HandleDabort    #   4 
HandleReserved  #   4 
HandleIRQ       #   4 
HandleFIQ       #   4


--------------------我做了如下回答:

根据我的理解,上面的 
b   ResetHandler    ; 0x00 Reset  
    b   .               ; 0x04 Undefined  
    b   .               ; 0x08 Supervisor  
    b   .               ; 0x0c Prefetch Abort  
    b   .               ; 0x10 Data Abort  
    b   .               ; 0x14 Reserved  
    b   .               ; 0x18 IRQ  
    b   .               ; 0x1c FIQ  
还在内部SRAM 

并且这时候代码刚启动,如果发生复位以外的中断都是没有任何意义,甚至是不可取的,所以发生干脆让 ARM 死循环了,b. 

而下面的 

        AREA RamData, DATA, READWRITE  

        ^   _ISR_STARTADDRESS  
HandleReset     #   4   
HandleUndef     #   4  
HandleSWI       #   4  
HandlePabort    #   4  
HandleDabort    #   4  
HandleReserved  #   4  
HandleIRQ       #   4  
HandleFIQ       #   4 
已经是外部内存的 一些中断向量了吧,这时候代码已经在外部内存跑,会发生我们要的中断了,所以必须分配好。 
这两个环境已经不一样了。 
_ISR_STARTADDRESS 指向的地址肯定是外部物理内存的了。 

__________________________
庆祝淘宝店铺三周年,特发起团购活动店铺http://gooogleman.taobao.com/所有开发板OK2440/TE2440/TE6410/OK6410/tiny6410/real6410/real210全部团购价销售,欲知详情,请加团购QQ群:27100460
2011-09-08,08:35:54
posted on 2011-09-08 08:39  gooogleman  阅读(343)  评论(0编辑  收藏  举报