嵌入式爱好者

查看: 2216|回复: 0

FL2440中断裸机程序运行时出现Dabort exception!!!错误

[复制链接]

2

主题

4

帖子

21

积分

扫一扫,手机访问本帖
发表于 2013-11-13 17:03:57 | 显示全部楼层 |阅读模式
  1. .extern INT_Main

  2. .section .init

  3. .global _start

  4. _start:
  5.        
  6.         b Reset

  7. HandleUndef:
  8.        
  9.         b HandleUndef

  10. HandleSWI:
  11.        
  12.         b HandleSWI

  13. HandlePrefetchAbort:
  14.        
  15.         b HandlePrefetchAbort

  16. HandleDataAbort:
  17.        
  18.         b HandleDataAbort

  19. HandleNotUsed:
  20.        
  21.         b HandleNotUsed
  22.        
  23.        

  24.         b HandleIRQ

  25. HandleFIQ:
  26.        
  27.         b HandleFIQ


  28. Reset:
  29.        
  30.         ldr sp,=0x1000
  31.        
  32.         ldr r0,=0x53000000
  33.        
  34.         mov r1,#0x0
  35.        
  36.         str r1,[r0]
  37.        
  38.        
  39.         msr cpsr_c,#0xd2
  40.        
  41.         ldr sp,=3072
  42.        
  43.        
  44.         msr cpsr_c,#0xdf
  45.        
  46.         ldr sp,=0x1000
  47.        
  48.        
  49.         bl IO_Init
  50.        
  51.         bl IRQ_Init
  52.        
  53.         msr cpsr_c,#0x5f
  54.        
  55.         ldr lr,=loop
  56.        
  57.         ldr pc,=INT_Main

  58. loop:       
  59.        
  60.         b loop

  61. HandleIRQ:
  62.        
  63.         sub lr,lr,#4
  64.        
  65.         s>真美妙b sp!,{r0-r12,lr}

  66.        
  67.         ldr lr,=int_return
  68.        
  69.         ldr pc,=IRQ_Ser

  70. int_return:
  71.        
  72.         ldmia sp!,{r0-r12,pc}^

  73. .end



  74. 》》》》》》》》》》》》》》》》》


  75. #define rSRCPND                (*(volatile unsigned *)0x4a000000)
  76. #define rINTMOD         (*(volatile unsigned *)0x4a000004)
  77. #define rINTMSK                (*(volatile unsigned *)0x4a000008)
  78. #define rPRIORITY        (*(volatile unsigned *)0x4a00000c)
  79. #define rINTPND                (*(volatile unsigned *)0x4a000010)
  80. #define rINTOFFSET        (*(volatile unsigned *)0x4a000014)
  81. #define rSUBSRCPND        (*(volatile unsigned *)0x4a000018)
  82. #define rINTSUBMSK        (*(volatile unsigned *)0x4a00001c)

  83. #define rGPBCON                (*(volatile unsigned *)0x56000010)
  84. #define rGPBDAT                (*(volatile unsigned *)0x56000014)
  85. #define rGPBUP                (*(volatile unsigned *)0x56000018)
  86. #define rGPFCON         (*(volatile unsigned *)0x56000050)
  87. #define rGPFDAT                (*(volatile unsigned *)0x56000054)
  88. #define rGPFUP                (*(volatile unsigned *)0x56000058)

  89. #define rEXTINT0         (*(volatile unsigned *)0x56000088)
  90. #define rEXTINT1        (*(volatile unsigned *)0x5600008c)
  91. #define rEXTINT2        (*(volatile unsigned *)0x56000090)
  92. #define rEINTFLT0        (*(volatile unsigned *)0x56000094)
  93. #define rEINTFLT1        (*(volatile unsigned *)0x56000098)
  94. #define rEINTFLT2        (*(volatile unsigned *)0x5600009c)
  95. #define rEINTFLT3        (*(volatile unsigned *)0x560000a0)
  96. #define rEINTMASK        (*(volatile unsigned *)0x560000a4)
  97. #define rEINTPEND        (*(volatile unsigned *)0x560000a8)

  98. void IO_Init(void);
  99. void IRQ_Init(void);
  100. void Delay(unsigned short t);

  101. int INT_Main(void)
  102. {
  103.         while(1)
  104.         {
  105.                 rGPBDAT = ~(1<<8);
  106.                 Delay(50);
  107.                 rGPBDAT = ~(1<<10);
  108.                 Delay(50);
  109.         }
  110.         return 0;
  111. }

  112. void IO_Init(void)
  113. {
  114.         rGPBCON = 0x1dd7fc;
  115.         rGPBDAT = (1<<5)|(1<<6)|(1<<8)|(1<<10);
  116.         rGPBDAT &= 0xffe;
  117.         rGPBUP = 0X00;
  118.         rGPFCON = 1<<5;
  119.         //rGPFUP |= (1<<0);
  120. }
  121. void IRQ_Init(void)
  122. {
  123.         rSRCPND = (1<<2);
  124.         rINTPND = (1<<2);
  125.         rINTMSK = ~(1<<2);
  126. }

  127. void IRQ_Ser(void)
  128. {
  129.         rEINTPEND = 0;
  130.         rSRCPND = 0;
  131.         rINTPND = (1<<2);
  132.         while(1)
  133.         {
  134.                 rGPBDAT = ~(1<<5);
  135.                 Delay(50);
  136.                 rGPBDAT = ~(0<<5);
  137.                 Delay(50);
  138.                 rGPBDAT = ~(1<<5);
  139.         }
  140. }

  141. void Delay(unsigned short t)
  142. {
  143.         unsigned char i,j;
  144.         while(t--)
  145.         {
  146.                 for(i=0;i<0xff;i++)
  147.                         for(j=0;j<0xff;j++);
  148.         }
  149. }
复制代码
这段代码有什么问题吗?为什么会出现Dabort exception错误,求解决,求解决,求解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-6-2 12:37

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表