【已解决】IAR 下初始化mini 2440 栈指针问题
前段时间 搞来一块 mini2440 起初用Keil开发但是老是在调试的时候出现错误,改为更稳定的IAR环境开发磕磕碰碰几天现在遇到一个问题从启动代码(参照Keil启动代码修改而来) 进入main 再调用其他函数,然后——————然后程序就跑飞了…………
Jlink 调试确定为SP指针问题,不过修改多次 要么和icf冲突 要么达不到效果特来求助
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641575VNOM7Y.JPG
(原文件名:1.JPG)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641576ZQCMNH.JPG
(原文件名:2.JPG)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641577OQ0KSN.JPG
(原文件名:3.JPG)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641578RLHBLE.JPG
(原文件名:4.JPG)
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_641579MA19AD.JPG
(原文件名:5.JPG) 发现一个怪问题IAR 调用 c 函数 栈指针 是向下减的----特意做了一个 递归 测试 还是自己搞定了不知道正规的做法是怎么做的 ;//========================栈空间定义===========================================
SECTION CSTACK:DATA:ROOT(2)
DATA
CSTACK_BASE
DS8 __ICFEDIT_size_cstack__
CSTACK_TOP
SECTION SVC_STACK:DATA:ROOT(2)
DATA
SVC_STACK_BASE
DS8 __ICFEDIT_size_svcstack__
SVC_STACK_TOP
SECTION IRQ_STACK:DATA:ROOT(2)
DATA
IRQ_STACK_BASE
DS8 __ICFEDIT_size_irqstack__
IRQ_STACK_TOP
SECTION FIQ_STACK:DATA:ROOT(2)
DATA
FIQ_STACK_BASE
DS8 __ICFEDIT_size_fiqstack__
FIQ_STACK_TOP
SECTION UND_STACK:DATA:ROOT(2)
DATA
UND_STACK_BASE
DS8 __ICFEDIT_size_undstack__
UND_STACK_TOP
SECTION ABT_STACK:DATA:ROOT(2)
DATA
ABT_STACK_BASE
DS8 __ICFEDIT_size_abtstack__
ABT_STACK_TOP
LDR R0,=UND_STACK_BASE
MSR CPSR_c, #Mode_UND|I_Bit|F_Bit
MOV SP, R0
LDR R0,=ABT_STACK_BASE
MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit
MOV SP, R0
LDR R0,=FIQ_STACK_BASE
MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit
MOV SP, R0
LDR R0,=FIQ_STACK_BASE
MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit
MOV SP,R0
LDR R0,=SVC_STACK_BASE
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
MOV SP,R0
LDR R0,=SVC_STACK_BASE
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
MOV SP,R0
LDR R0,=CSTACK_TOP
MSR CPSR_c, #Mode_USR
MOV SP,R0
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ {section CSTACK};
define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ {section SVC_STACK};
define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ {section IRQ_STACK};
define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ {section FIQ_STACK};
define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ {section UND_STACK};
define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ {section ABT_STACK};
页:
[1]