在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 4513|回复: 0

DataAbort是什么原因,通常怎么情况会引起DataAbort

[复制链接]
发表于 2006-12-7 22:48:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
AREA    Startup,CODE,READONLY
; /* 异常向量表 */
Vectors
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0
        LDR     PC, IRQ_Addr
        LDR     PC, FIQ_Addr
ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     IRQ_Exception
FIQ_Addr            DCD     FIQ_Handler

; /* 未定义指令 */
Undefined
        B       Undefined
        
; /* 软中断 */
SoftwareInterrupt                                 
        CMP     R0, #4
        LDRLO   PC, [PC, R0, LSL #2]
        MOVS    PC, LR
SwiFunction
        DCD     IRQDisable       ;0
        DCD     IRQEnable        ;1
        DCD  FIQDisable   ;2
        DCD  FIQEnable   ;3
IRQDisable
        ; 关IRQ中断
        MRS     R0, SPSR
        ORR     R0, R0, #I_BIT
        MSR     SPSR_c, R0
        MOVS    PC, LR
IRQEnable
        ; 开IRQ中断
        MRS     R0, SPSR
        BIC     R0, R0, #I_BIT
        MSR     SPSR_c, R0
        MOVS    PC, LR
        
FIQDisable
        ; 关FIQ中断
        MRS     R0, SPSR
        ORR     R0, R0, #F_BIT
        MSR     SPSR_c, R0
        MOVS    PC, LR
FIQEnable
        ; 开FIQ中断
        MRS     R0, SPSR
        BIC     R0, R0, #F_BIT
        MSR     SPSR_c, R0
        MOVS    PC, LR
        
; /* 取指中止 */
PrefetchAbort
        B       PrefetchAbort
; /* 取数据中止 */
////////////////////////////////////////////
DataAbort
        B       DataAbort

////////////////////////////////////////////
ResetInit
        BL      InitStack               ; 初始化堆栈                                             
        BL      TargetBusInit         ; 总线系统初始化 (函数中不允许堆栈操作)
   BL  TargetResetInit     ; 针对目标板的系统初始化 ///////////////////////         
    ;在执行TargetResetInit 的时候会DataAbort
   MRC  p15,0,R1,c1,c0,0  ; (MMU设置,异步总线模式) 读控制寄存器
  ORR  R1,R1,#0xC0000000     ; 当HDIVN=1时操作有效
  MRC  p15,0,R1,c1,c0,0
  
        B       __main     ; 跳转到c语言入口         
end
void  TargetResetInit(void)
{
int  i;
volatile uint32  *cp1, *cp2;

cp1 = cp2 = NULL;   // 防止编译报警

rWTCON = 0x0000;   // 关闭WDT     ////////////此时 DataAbort 是为什么??给点建议!!!
rINTMSK = 0xFFFFFFFF;  // 禁止所有中断 (中断控制器)
rINTSUBMSK = 0x07FF;
rSRCPND = 0xFFFFFFFF;  // 清除中断(源)标志
rINTPND = 0xFFFFFFFF;  // 清除IRQ中断标志
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-2 00:44 , Processed in 0.030716 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表