音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

搞不定了,上來向大家求助:IAR下LPC2214的調(diào)試問題

作者:stonewater 欄目:ARM技術(shù)
搞不定了,上來向大家求助:IAR下lpc2214的調(diào)試問題
幾乎把有關(guān)的帖子都看了,我把問題說一下吧:
我用的開發(fā)環(huán)境是IAR V4.40A,工具是wiggler,使用了H-JTAG。
只要是運(yùn)行這段代碼****處就跳到地址為0x0000000C處(代碼用的是micrium上面的,不論有沒有用ucos都是這樣)
      #define  BSP_UNDEF_INSTRUCTION_VECTOR_ADDR   (*(INT32U *)0x00000004L)
      #define  BSP_SWI_VECTOR_ADDR                 (*(INT32U *)0x00000008L)
      #define  BSP_PREFETCH_ABORT_VECTOR_ADDR      (*(INT32U *)0x0000000CL)
      #define  BSP_DATA_ABORT_VECTOR_ADDR          (*(INT32U *)0x00000010L)
      #define  BSP_IRQ_VECTOR_ADDR                 (*(INT32U *)0x00000018L)
      #define  BSP_FIQ_VECTOR_ADDR                 (*(INT32U *)0x0000001CL)

      #define  BSP_IRQ_ISR_ADDR                    (*(INT32U *)0x00000038L)
      #define  BSP_FIQ_ISR_ADDR                    (*(INT32U *)0x0000003CL)
      .
      .
      .
      MEMMAP = 0x01;
      PINSEL2 = 0x0f814914;   
      BCFG0   = 0x1000ffef;    
      BCFG1   = 0x1000ffef;     
      .
      .
      .
****      BSP_IRQ_VECTOR_ADDR               = 0xE59FF018;             
****      BSP_IRQ_ISR_ADDR                  = (INT32U)OS_CPU_IRQ_ISR;
****      BSP_FIQ_VECTOR_ADDR               = 0xE59FF018;                   
****      BSP_FIQ_ISR_ADDR                  = (INT32U)OS_CPU_FIQ_ISR;

****      BSP_UNDEF_INSTRUCTION_VECTOR_ADDR = 0xEAFFFFFE;                  
****      BSP_SWI_VECTOR_ADDR               = 0xEAFFFFFE;
****      BSP_PREFETCH_ABORT_VECTOR_ADDR    = 0xEAFFFFFE;
****      BSP_DATA_ABORT_VECTOR_ADDR        = 0xEAFFFFFE;
****      BSP_FIQ_VECTOR_ADDR               = 0xEAFFFFFE;

     我在加了starup文件后,對(duì)xcl文件進(jìn)行了修改在log文件中可以看到(沒有加這個(gè)文件的時(shí)候,log文件中沒有提示以下的問題):
1:FLASH調(diào)試時(shí):
     The stack pointer for stack 'SVC_STACK' (currently 0x400000F8) is outside the stack range (0x400005FC to 0x400006FC)
2: RAM調(diào)試時(shí):
     The stack pointer for stack 'SVC_STACK' (currently 0x4000220C) is outside the stack range (0x40002710 to 0x40002910)

    全軟件仿真的時(shí)候沒有問題,但是在內(nèi)部FASH和內(nèi)部RAM下就跳到數(shù)據(jù)預(yù)取出錯(cuò)0x0000000C處了,希望各位高手能夠指點(diǎn),先謝了:)

2樓: >>參與討論
wlq_9
memmap=0x02;
 
3樓: >>參與討論
stonewater
試了,可以調(diào)試了,謝謝wlq_9了
但是為什么:不能用memmap=0x01;呢?為什么不能用FLASH模式而要用RAM模式呢?還有就是:
The stack pointer for stack 'SVC_STACK' (currently 0x40002208) is outside the stack range (0x40002710 to 0x40002910)還是出現(xiàn)。我也設(shè)置xcl文件了:
-DRAMSTART=40000000
-DRAMEND=40003FFF

-D_SVC_STACK_SIZE=200

-D_CSTACK_SIZE=1000
-D_IRQ_STACK_SIZE=100
-D_FIR_STACK_SIZE=20

-D_ABT_STACK_SIZE=0
-D_UND_STACK_SIZE=0
-D_HEAP_SIZE=1000

-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)FIR_STACK+_FIR_STACK_SIZE=RAMSTART-RAMEND

-Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)UND_STACK+_UND_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND
這個(gè)問題怎么解決啊,謝謝了



4樓: >>參與討論
wlq_9
因?yàn)?br>重映射到RAM,你才可以動(dòng)態(tài)修改中斷向量啊.如果映射到FLASH,中斷向量就不能動(dòng)態(tài)修改了.

5樓: >>參與討論
stonewater
哦,原來是這樣
還有一個(gè)問題要請(qǐng)教:
The stack pointer for stack 'SVC_STACK' (currently 0x40002208) is outside the stack range (0x40002710 to 0x40002910)的問題是因?yàn)閤cl文件沒有設(shè)置好嗎?

6樓: >>參與討論
stonewater
問題具體的現(xiàn)象和設(shè)置
在:

LDR     R0, ??OS_TaskSwHook     ; OSTaskSwHook();
        MOV     LR, PC
        BX      R0

運(yùn)行的是SYS模式下,執(zhí)行:

MSR     CPSR_cxsf, #0xD3        ; SWITCH.html">SWITCH to SVC mode with IRQ and FIQ disabled

后切換到SVC模式下之后,執(zhí)行到*****時(shí):

                                ; SWITCH TO HIGHEST PRIORITY TASK
               LDR     R4, ??OS_TCBHighRdy     ;    Get highest priority task TCB address
               LDR     R4, [R4]                ;    get stack pointer
******       LDR     SP, [R4]                ;    SWITCH to the new stack
就抱堆棧越界了。

堆棧的分配是:

INTVEC                             00000000 - 0000003B          3C   com    2
ICODE                              00000040 - 0000015F         120   rel    2
DIFUNCT                                 00000160                     rel    2
CODE                               00000160 - 00001EB3        1D54   rel    2
INITTAB                            00001EB4 - 00001EBF           C   rel    2
DATA_ID                                 00001EC0                     dse    0
DATA_C                             00001EC0 - 0000203B         17C   rel    2
DATA_I                                  40000000                     dse    0
DATA_Z                             40000000 - 400007CC         7CD   rel    2
SVC_STACK                          400007D0 - 400008CF         100   rel    2
CSTACK                             400008D0 - 400018CF        1000   rel    2
IRQ_STACK                          400018D0 - 40001ECF         600   rel    2

xcl文件是:

-DRAMSTART=40000000
-DRAMEND=40003FFF

-D_SVC_STACK_SIZE=100

-D_CSTACK_SIZE=1000
-D_IRQ_STACK_SIZE=600

-D_FIR_STACK_SIZE=10

-D_ABT_STACK_SIZE=10
-D_UND_STACK_SIZE=10
-D_HEAP_SIZE=2000

-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND

-Z(DATA)FIR_STACK+_FIR_STACK_SIZE=RAMSTART-RAMEND

-Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)UND_STACK+_UND_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND

搞了幾天都不知道怎么解決這個(gè)越界的問題(SVC_STACK_SIZE我也改大過),啟動(dòng)文件用的是IAR下帶的:

lpc2xxx_cstartup.s79,希望大家能夠給些指導(dǎo),謝謝了


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
S3C44B0和LCD
淺談內(nèi)存分配
請(qǐng)教一個(gè)內(nèi)核啟動(dòng)問題
44B0與LCD的接口名字是什么?
請(qǐng)教達(dá)人關(guān)于程序異常的問題,急
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)