|
具体启动代码如下:
IMPORT main
IMPORT close_watch_dog
IMPORT clock_init
IMPORT memsetup
IMPORT copy_steppingstone_to_sdram
IMPORT CopyCode2SDRAM
;IMPORT nand_init
;IMPORT nand_read
;IMPORT RdNF2SDRAM
IMPORT init_irq
IMPORT IRQ_Handle
IMPORT led
AREA Init,CODE,READONLY;申明代码段
ENTRY ;程序入口
CODE32 ;声明32位ARM 指令
b Reset
;@ 0x04: 未定义指令中止模式的向量地址
HandleUndef
b HandleUndef
;@ 0x08: 管理模式的向量地址,通过SWI指令进入此模式
HandleSWI
b HandleSWI
;@ 0x0c: 指令预取终止导致的异常的向量地址
HandlePrefetchAbort
b HandlePrefetchAbort
;@ 0x10: 数据访问终止导致的异常的向量地址
HandleDataAbort
b HandleDataAbort
;@ 0x14: 保留
HandleNotUsed
b HandleNotUsed
;@ 0x18: 中断模式的向量地址
b HandleIRQ
;@ 0x1c: 快中断模式的向量地址
HandleFIQ
b HandleFIQ
;******************************************************
Reset
ldr sp,=1024
bl close_watch_dog
bl led ;这是我在关闭看门狗后用led作为信号,但是没有运行到这里。 led函数确定是之前我运行过的代码。
bl clock_init
bl memsetup
;bl nand_init
;BL RdNF2SDRAM
;@将NAND Flash中地址4096开始的1024字节代码(main.c编译得到)复制到SDRAM中
;@nand_read_ll函数需要3个参数:
ldr r0, =0x30000000 ;@1. 目标地址=0x30000000,这是SDRAM的起始地址
mov r1, #4096 ;@2. 源地址 = 4096,连接的时候,main.c中的代码都存在NAND Flash地址4096开始处
mov r2, #16*1024 ;@3. 复制长度= 2048(bytes),对于本实验的main.c,这是足够了
bl CopyCode2SDRAM
msr cpsr_c, #0xd2 ;@ 进入中断模式
ldr sp, =0x31000000 ;@ 设置中断模式栈指针
msr cpsr_c, #0xdf ;@ 进入系统模式
ldr sp, =0x34000000 ; @ 设置系统模式栈指针,
ldr lr, =ret_initirq ;@ 设置返回地址
ldr pc, =init_irq ;@ 调用中断初始化函数
ret_initirq
msr cpsr_c, #0x5f ;@ 设置I-bit=0,开IRQ中断
ldr lr, =halt_loop ;@ 设置返回地址
ldr pc, =main ;@ 调用main函数
halt_loop
b halt_loop
HandleIRQ
sub lr, lr, #4 ; @ 计算返回地址
stmdb sp!, { r0-r12,lr } ; @ 保存使用到的寄存器
; @ 注意,此时的sp是中断模式的sp
; @ 初始值是上面设置的4096
ldr lr, =int_return ; @ 设置调用IRQ_Handle函数后的返回地址
ldr pc, =IRQ_Handle ; @ 调用中断分发函数,在interrupt.c中
int_return
ldmia sp!, { r0-r12,pc }^ ; @ 中断返回, ^表示将spsr的值复制到cpsr
END
我看很久没看出问题,在ADS1.2 编译环境下编译的,不知道是否是ads1.2的环境下设置有问题。其截图如下
我的开发板是mini2440 开始我用vivi选a把bin问价下载到nand 也是没有运行。在ads的R0 base下设置成0x30000000 后来用axd调试下载到nor中 改成了0x0
(原文件名:{TPLG4TR9F7R8$3}PH4U0YQ.jpg)
(原文件名:6~~O`R7MO)$5]FRHBF32SAV.jpg)
(原文件名:6E74D2CE-AF90-468F-AA22-CCDB72194A35.jpg)
(原文件名:78AZF5VPUE[~SHRM]MGJ882.jpg)
(原文件名:X2TT`Z[]J$(V)1GNPD_F[9J.jpg)
(原文件名:N%556R{M_]_Q~0ZEQV08MI3.jpg)
跪请高手们 指点··········· |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|