这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ISP,2132 ISP到2132启动不了,会不会是堆栈不够引起的?堆栈大小如何

共2条 1/1 1 跳转至

ISP,2132 ISP到2132启动不了,会不会是堆栈不够引起的?堆栈大小如何估计?

院士
2006-09-17 18:14:16     打赏
ISP,2132 ISP到2132启动不了,会不会是堆栈不够引起的?堆栈大小如何估计?



关键词: 启动     不了     会不会     堆栈     不够     引起     大小     如何         

院士
2006-12-22 22:43:00     打赏
2楼
问      会不会是我的堆栈空间不够引起ISP下去启不来的问题?

     具体程序映像大小有17k,RAM占用有9k,程序中有串口中断和IIC中断,串口中断里处理的数据很多且程序也很长,调用很多函数,会不会设置的堆栈太小了?

    模板中的IRQ中断堆栈设置是256,不知道够不够用?

    堆栈空间是怎么估计出来的?

    其它如管理模式堆栈\中止模式堆栈\未定义模式堆栈\系统模式堆栈等,也没定义其空间(即值为是0),这些是不是可以不用,在什么情况下用这些堆栈,其空间大小如何决定?

    SVC_STACK_LEGTH         EQU         0
    FIQ_STACK_LEGTH         EQU         0
   IRQ_STACK_LEGTH         EQU         256
   ABT_STACK_LEGTH         EQU         0
   UND_STACK_LEGTH         EQU         0

                                                              1: EasyJTAG仿真是否可以?首先使用一个简单的工程测试一下硬件是否正常。 2: 用EasyJTAG仿真一切正常1、用EasyJTAG仿真一切正常,就是ISP到CPU上,然后启动板子,程序启动不起来.
原采用堆栈定义如下:
;定义堆栈的大小
USR_STACK_LEGTH     EQU         64
SVC_STACK_LEGTH     EQU         0
FIQ_STACK_LEGTH     EQU         16
IRQ_STACK_LEGTH     EQU         64
ABT_STACK_LEGTH     EQU         0
UND_STACK_LEGTH     EQU         0

程序启动不起来,但EasyJTAG仿真完全正常.

2、后改为你们的模板上的,ISP下载成功后,程序可以起来但就是中断产生不了.
SVC_STACK_LEGTH         EQU         0
    FIQ_STACK_LEGTH         EQU         0
   IRQ_STACK_LEGTH         EQU         256
   ABT_STACK_LEGTH         EQU         0
   UND_STACK_LEGTH         EQU         0
3、后我将 MSR     CPSR_c, #0xdf
        LDR     SP, StackUsr
   改为:CPSR_c, #0x5f;允许IRQ中断。
    但程序中断一次后进入DATA ABORT,即运行不起来了。

请帮分析一下这些问题,谢谢!        

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]