[ZLG-ARM] SmartARM2300+IAR+JLINK的问题,各位大侠帮忙

[复制链接]
5588|12
 楼主| ZorroCN 发表于 2009-3-25 11:50 | 显示全部楼层 |阅读模式
之前一直用ADS,刚刚接触IAR,不知道是不是有什么设置不对。<br />SmartARM上官网上下的uCOSII2.86,准备移植LWIP。用J-LINK&nbsp;V6调试的时候发现走不到main函数里面,调试break后,发现是停在cstartup.s文件的如下位置:<br />__data_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;data_handler<br />另外,日志栏有如下记录:<br /><br />Wed&nbsp;Mar&nbsp;25&nbsp;11:44:42&nbsp;2009:&nbsp;The&nbsp;stack&nbsp;'CSTACK'&nbsp;is&nbsp;filled&nbsp;to&nbsp;100%&nbsp;(8192&nbsp;bytes&nbsp;used&nbsp;out&nbsp;of&nbsp;8192).&nbsp;The&nbsp;warning&nbsp;threshold&nbsp;is&nbsp;set&nbsp;to&nbsp;90.%<br />Wed&nbsp;Mar&nbsp;25&nbsp;11:44:42&nbsp;2009:&nbsp;The&nbsp;stack&nbsp;'SVC_STACK'&nbsp;is&nbsp;filled&nbsp;to&nbsp;100%&nbsp;(256&nbsp;bytes&nbsp;used&nbsp;out&nbsp;of&nbsp;256).&nbsp;The&nbsp;warning&nbsp;threshold&nbsp;is&nbsp;set&nbsp;to&nbsp;90.%<br />Wed&nbsp;Mar&nbsp;25&nbsp;11:44:42&nbsp;2009:&nbsp;The&nbsp;stack&nbsp;'IRQ_STACK'&nbsp;is&nbsp;filled&nbsp;to&nbsp;100%&nbsp;(256&nbsp;bytes&nbsp;used&nbsp;out&nbsp;of&nbsp;256).&nbsp;The&nbsp;warning&nbsp;threshold&nbsp;is&nbsp;set&nbsp;to&nbsp;90.%<br />Wed&nbsp;Mar&nbsp;25&nbsp;11:44:42&nbsp;2009:&nbsp;The&nbsp;stack&nbsp;'FIQ_STACK'&nbsp;is&nbsp;filled&nbsp;to&nbsp;100%&nbsp;(256&nbsp;bytes&nbsp;used&nbsp;out&nbsp;of&nbsp;256).&nbsp;The&nbsp;warning&nbsp;threshold&nbsp;is&nbsp;set&nbsp;to&nbsp;90.%<br />Wed&nbsp;Mar&nbsp;25&nbsp;11:44:42&nbsp;2009:&nbsp;The&nbsp;stack&nbsp;'UND_STACK'&nbsp;is&nbsp;filled&nbsp;to&nbsp;100%&nbsp;(256&nbsp;bytes&nbsp;used&nbsp;out&nbsp;of&nbsp;256).&nbsp;The&nbsp;warning&nbsp;threshold&nbsp;is&nbsp;set&nbsp;to&nbsp;90.%<br />Wed&nbsp;Mar&nbsp;25&nbsp;11:44:42&nbsp;2009:&nbsp;The&nbsp;stack&nbsp;'ABT_STACK'&nbsp;is&nbsp;filled&nbsp;to&nbsp;100%&nbsp;(256&nbsp;bytes&nbsp;used&nbsp;out&nbsp;of&nbsp;256).&nbsp;The&nbsp;warning&nbsp;threshold&nbsp;is&nbsp;set&nbsp;to&nbsp;90.%<br />好像是堆栈都满了,不过这里明明是刚开始啊,难道堆栈设置错误?
wlq_9 发表于 2009-3-25 12:58 | 显示全部楼层

取数据中止

程序里面有错误.<br />报告的是堆栈错误,堆栈超出范围了,IAR本身提供的堆栈检查功能,相当不错的一个小功能.
 楼主| ZorroCN 发表于 2009-3-25 13:45 | 显示全部楼层

re

大侠,关于那几处堆栈设置,是在哪里进行的?单就cstartup.s里面,开始是下面这段,貌似和此有关:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;IRQ_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;FIQ_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;SVC_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;ABT_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;UND_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;CSTACK:DATA:NOROOT(3)<br />但是这个似乎又没有规定堆栈的大小。另外就是下面这段:<br /><br />mrs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,cpsr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Original&nbsp;PSR&nbsp;value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#SVC_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;Supervisor&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(SVC_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;SVC_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#UND_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;Undefined&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(UND_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;UND_MODE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#ABT_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;Data&nbsp;abort&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(ABT_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ABT_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#FIQ_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;FIR&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(FIQ_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;FIQ_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#IRQ_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;IRQ&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(IRQ_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;IRQ_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;|&nbsp;I_Bit&nbsp;|&nbsp;F_Bit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#SYS_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;System&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(CSTACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;CSTACK<br />这里似乎是逐个初始化栈顶,好像也不是堆栈大小的设定。<br />还有一点,我在main()函数里面只是简单地TargetResetInit()初始化了一下CPU,UCOSII的任何函数都没有调用,这样堆栈怎么就满了?<br />按调试日志里面的记录,分配的堆栈空间并不小<br />CSTACK&nbsp;&nbsp;8192<br />SVC_STACK&nbsp;256<br />……<br />如果什么都不运行,这么大的堆栈空间,怎么可能?
 楼主| ZorroCN 发表于 2009-3-25 14:08 | 显示全部楼层

re

呵呵,找到了相关的设定,似乎是在这里:<br /><br />/*-Sizes-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_cstack__&nbsp;&nbsp;&nbsp;=&nbsp;0x2000;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_svcstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_irqstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_fiqstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_undstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_abtstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_heap__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x8000;<br />/****&nbsp;End&nbsp;of&nbsp;ICF&nbsp;editor&nbsp;section.&nbsp;###ICF###*/<br />不过,就好像我前面说的,已经设置不小了,其他什么都没有运行,堆栈怎么就满了?
wlq_9 发表于 2009-3-25 14:55 | 显示全部楼层

先查取数据中止的问题

程序有错.堆栈可以后查,程序跑飞了,堆栈错是正常的..
 楼主| ZorroCN 发表于 2009-3-25 14:56 | 显示全部楼层

re

对原来的icf文件进行修改:<br />这里是原来的:<br />/*###ICF###&nbsp;Section&nbsp;handled&nbsp;by&nbsp;ICF&nbsp;editor,&nbsp;don't&nbsp;touch!&nbsp;****/<br />/*-Editor&nbsp;annotation&nbsp;file-*/<br />/*&nbsp;IcfEditorFile=&quot;$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml&quot;&nbsp;*/<br />/*-Specials-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_intvec_start__&nbsp;=&nbsp;0x0;<br />/*-Memory&nbsp;Regions-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_ROM_start__&nbsp;&nbsp;&nbsp;=&nbsp;0x80;<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_ROM_end__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x1FFFF;<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_RAM_start__&nbsp;&nbsp;&nbsp;=&nbsp;0x100000;<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_RAM_end__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x1FFFFF;<br />/*-Sizes-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_cstack__&nbsp;&nbsp;&nbsp;=&nbsp;0x2000;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_svcstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_irqstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_fiqstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_undstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_abtstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_heap__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x8000;<br />/****&nbsp;End&nbsp;of&nbsp;ICF&nbsp;editor&nbsp;section.&nbsp;###ICF###*/<br /><br /><br />define&nbsp;memory&nbsp;mem&nbsp;with&nbsp;size&nbsp;=&nbsp;4G;<br />define&nbsp;region&nbsp;ROM_region&nbsp;&nbsp;&nbsp;=&nbsp;mem:[from&nbsp;__ICFEDIT_region_ROM_start__&nbsp;&nbsp;&nbsp;to&nbsp;__ICFEDIT_region_ROM_end__];<br />define&nbsp;region&nbsp;RAM_region&nbsp;&nbsp;&nbsp;=&nbsp;mem:[from&nbsp;__ICFEDIT_region_RAM_start__&nbsp;&nbsp;&nbsp;to&nbsp;__ICFEDIT_region_RAM_end__];<br /><br />define&nbsp;block&nbsp;CSTACK&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_cstack__&nbsp;&nbsp;&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;SVC_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_svcstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;IRQ_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_irqstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;FIQ_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_fiqstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;UND_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_undstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;ABT_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_abtstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;HEAP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_heap__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;};<br /><br />initialize&nbsp;by&nbsp;copy&nbsp;{&nbsp;readwrite&nbsp;};<br />do&nbsp;not&nbsp;initialize&nbsp;&nbsp;{&nbsp;section&nbsp;.noinit&nbsp;};<br /><br />place&nbsp;at&nbsp;address&nbsp;mem:__ICFEDIT_intvec_start__&nbsp;{&nbsp;readonly&nbsp;section&nbsp;.intvec&nbsp;};<br /><br />place&nbsp;in&nbsp;ROM_region&nbsp;&nbsp;&nbsp;{&nbsp;readonly&nbsp;};<br />place&nbsp;in&nbsp;RAM_region&nbsp;&nbsp;&nbsp;{&nbsp;readwrite,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block&nbsp;CSTACK,&nbsp;block&nbsp;SVC_STACK,&nbsp;block&nbsp;IRQ_STACK,&nbsp;block&nbsp;FIQ_STACK,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block&nbsp;UND_STACK,&nbsp;block&nbsp;ABT_STACK,&nbsp;block&nbsp;HEAP&nbsp;};<br /><br />这是现在的:<br />/*###ICF###&nbsp;Section&nbsp;handled&nbsp;by&nbsp;ICF&nbsp;editor,&nbsp;don't&nbsp;touch!&nbsp;****/<br />/*-Editor&nbsp;annotation&nbsp;file-*/<br />/*&nbsp;IcfEditorFile=&quot;$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml&quot;&nbsp;*/<br />/*-Specials-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_intvec_start__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x00000000;<br />/*-Memory&nbsp;Regions-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_ROM_start__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x00000044;<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_ROM_end__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x0007FFFF;<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_RAM_start__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x40000040;<br />define&nbsp;symbol&nbsp;__ICFEDIT_region_RAM_end__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x40007FFF;<br />/*-Sizes-*/<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_cstack__&nbsp;&nbsp;&nbsp;=&nbsp;0x400;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_svcstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_irqstack__&nbsp;=&nbsp;0x100;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_fiqstack__&nbsp;=&nbsp;0x40;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_undstack__&nbsp;=&nbsp;0x10;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_abtstack__&nbsp;=&nbsp;0x10;<br />define&nbsp;symbol&nbsp;__ICFEDIT_size_heap__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x2000;<br />/****&nbsp;End&nbsp;of&nbsp;ICF&nbsp;editor&nbsp;section.&nbsp;###ICF###*/<br /><br /><br />define&nbsp;memory&nbsp;mem&nbsp;with&nbsp;size&nbsp;=&nbsp;4G;<br />define&nbsp;region&nbsp;ROM_region&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;mem:[from&nbsp;__ICFEDIT_region_ROM_start__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;__ICFEDIT_region_ROM_end__];<br />define&nbsp;region&nbsp;RAM_region&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;mem:[from&nbsp;__ICFEDIT_region_RAM_start__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;__ICFEDIT_region_RAM_end__];<br /><br />define&nbsp;symbol&nbsp;__region_USB_DMA_RAM_start__&nbsp;&nbsp;=&nbsp;0x7FD00000;<br />define&nbsp;symbol&nbsp;__region_USB_DMA_RAM_end__&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x7FD01FFF;<br />define&nbsp;region&nbsp;USB_DMA_RAM_region=&nbsp;mem:[from&nbsp;__region_USB_DMA_RAM_start__&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;__region_USB_DMA_RAM_end__];<br /><br />define&nbsp;symbol&nbsp;__region_EMAC_DMA_RAM_start__&nbsp;=&nbsp;0x7FE00000;<br />define&nbsp;symbol&nbsp;__region_EMAC_DMA_RAM_end__&nbsp;&nbsp;&nbsp;=&nbsp;0x7FE03FFF;<br />define&nbsp;region&nbsp;EMAC_DMA_RAM_region=&nbsp;mem:[from&nbsp;__region_EMAC_DMA_RAM_start__&nbsp;&nbsp;to&nbsp;__region_EMAC_DMA_RAM_end__];<br /><br />define&nbsp;block&nbsp;CSTACK&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_cstack__&nbsp;&nbsp;&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;SVC_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_svcstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;IRQ_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_irqstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;FIQ_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_fiqstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;UND_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_undstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;ABT_STACK&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_abtstack__&nbsp;{&nbsp;};<br />define&nbsp;block&nbsp;HEAP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;alignment&nbsp;=&nbsp;8,&nbsp;size&nbsp;=&nbsp;__ICFEDIT_size_heap__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;};<br /><br />initialize&nbsp;by&nbsp;copy&nbsp;{&nbsp;readwrite&nbsp;};<br />do&nbsp;not&nbsp;initialize&nbsp;&nbsp;{&nbsp;section&nbsp;.noinit&nbsp;};<br />do&nbsp;not&nbsp;initialize&nbsp;&nbsp;{&nbsp;section&nbsp;USB_DMA_RAM&nbsp;};<br />do&nbsp;not&nbsp;initialize&nbsp;&nbsp;{&nbsp;section&nbsp;EMAC_DMA_RAM&nbsp;};<br /><br />place&nbsp;at&nbsp;address&nbsp;mem:__ICFEDIT_intvec_start__&nbsp;{&nbsp;readonly&nbsp;section&nbsp;.intvec&nbsp;};<br /><br />place&nbsp;in&nbsp;ROM_region&nbsp;&nbsp;&nbsp;{&nbsp;readonly&nbsp;};<br />place&nbsp;in&nbsp;RAM_region&nbsp;&nbsp;&nbsp;{&nbsp;readwrite,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block&nbsp;CSTACK,&nbsp;block&nbsp;SVC_STACK,&nbsp;block&nbsp;IRQ_STACK,&nbsp;block&nbsp;FIQ_STACK,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block&nbsp;UND_STACK,&nbsp;block&nbsp;ABT_STACK,&nbsp;block&nbsp;HEAP&nbsp;};<br />place&nbsp;in&nbsp;USB_DMA_RAM_region<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;section&nbsp;USB_DMA_RAM&nbsp;};<br />place&nbsp;in&nbsp;EMAC_DMA_RAM_region<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;section&nbsp;EMAC_DMA_RAM&nbsp;};<br />修改之后,每次break,还是停在这个位置:<br />__data_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;data_handler<br />而且在这里之前加断点,也不会停下来。F10跟,log如下:<br />Wed&nbsp;Mar&nbsp;25&nbsp;14:50:51&nbsp;2009:&nbsp;Failed&nbsp;to&nbsp;set&nbsp;breakpoint&nbsp;at&nbsp;0x00000018<br />Wed&nbsp;Mar&nbsp;25&nbsp;14:50:51&nbsp;2009:&nbsp;Performance&nbsp;warning:&nbsp;Lack&nbsp;of&nbsp;breakpoints&nbsp;forces&nbsp;single-stepping.<br />注意,这里没有再提示堆栈溢出,不过,明明是将堆栈空间减小了,最重要的是,原来的问题并没有解决。只不过,貌似这个问题也不是堆栈溢出这么简单。
 楼主| ZorroCN 发表于 2009-3-25 14:58 | 显示全部楼层

re

cstartup.s文件<br />;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />;;<br />;;&nbsp;Part&nbsp;one&nbsp;of&nbsp;the&nbsp;system&nbsp;initialization&nbsp;code,<br />;;&nbsp;contains&nbsp;low-level<br />;;&nbsp;initialization.<br />;;<br />;;&nbsp;Copyright&nbsp;2006&nbsp;IAR&nbsp;Systems.&nbsp;All&nbsp;rights&nbsp;reserved.<br />;;<br />;;&nbsp;$Revision:&nbsp;21638&nbsp;$<br />;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MODULE&nbsp;&nbsp;?cstartup<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;Forward&nbsp;declaration&nbsp;of&nbsp;sections.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;IRQ_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;FIQ_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;SVC_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;ABT_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;UND_STACK:DATA:NOROOT(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;CSTACK:DATA:NOROOT(3)<br /><br />;<br />;&nbsp;The&nbsp;module&nbsp;in&nbsp;this&nbsp;file&nbsp;are&nbsp;included&nbsp;in&nbsp;the&nbsp;libraries,&nbsp;and&nbsp;may&nbsp;be<br />;&nbsp;replaced&nbsp;by&nbsp;any&nbsp;user-defined&nbsp;modules&nbsp;that&nbsp;define&nbsp;the&nbsp;PUBLIC&nbsp;symbol<br />;&nbsp;__iar_program_start&nbsp;or&nbsp;a&nbsp;user&nbsp;defined&nbsp;start&nbsp;symbol.<br />;<br />;&nbsp;To&nbsp;override&nbsp;the&nbsp;cstartup&nbsp;defined&nbsp;in&nbsp;the&nbsp;library,&nbsp;simply&nbsp;add&nbsp;your<br />;&nbsp;modified&nbsp;version&nbsp;to&nbsp;the&nbsp;workbench&nbsp;project.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;.intvec:CODE:NOROOT(2)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;&nbsp;__vector<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;&nbsp;__iar_program_start<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;&nbsp;__vector_0x14<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERN&nbsp;&nbsp;&nbsp;&nbsp;undef_handler,&nbsp;swi_handler,&nbsp;prefetch_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERN&nbsp;&nbsp;&nbsp;&nbsp;data_handler,&nbsp;irq_handler,&nbsp;fiq_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARM&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Always&nbsp;ARM&nbsp;mode&nbsp;after&nbsp;reset&nbsp;&nbsp;&nbsp;&nbsp;<br />__vector:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Absolute&nbsp;jump&nbsp;can&nbsp;reach&nbsp;4&nbsp;GByte<br />__undef_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;undef_handler<br />__swi_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;swi_handler<br />__prefetch_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;prefetch_handler<br />__data_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;data_handler<br />__vector_0x14<br />&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;0xFFFFFFFF<br />__irq_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;pc,[pc,&nbsp;#-0x0120]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;irq_handler<br />__fiq_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;fiq_handler<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Constant&nbsp;table&nbsp;entries&nbsp;(for&nbsp;ldr&nbsp;pc)&nbsp;will&nbsp;be&nbsp;placed&nbsp;at&nbsp;0x20<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;__iar_program_start<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;__undef_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;__swi_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;__prefetch_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;__data_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;0xFFFFFFFF<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;0xFFFFFFFF<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;&nbsp;&nbsp;&nbsp;__fiq_handler<br /><br />;&nbsp;--------------------<br />;&nbsp;Mode,&nbsp;correspords&nbsp;to&nbsp;bits&nbsp;0-5&nbsp;in&nbsp;CPSR<br /><br />MODE_MSK&nbsp;DEFINE&nbsp;0x1F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Bit&nbsp;mask&nbsp;for&nbsp;mode&nbsp;bits&nbsp;in&nbsp;CPSR<br /><br />USR_MODE&nbsp;DEFINE&nbsp;0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;User&nbsp;mode<br />FIQ_MODE&nbsp;DEFINE&nbsp;0x11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Fast&nbsp;Interrupt&nbsp;Request&nbsp;mode<br />IRQ_MODE&nbsp;DEFINE&nbsp;0x12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Interrupt&nbsp;Request&nbsp;mode<br />SVC_MODE&nbsp;DEFINE&nbsp;0x13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Supervisor&nbsp;mode<br />ABT_MODE&nbsp;DEFINE&nbsp;0x17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Abort&nbsp;mode<br />UND_MODE&nbsp;DEFINE&nbsp;0x1B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Undefined&nbsp;Instruction&nbsp;mode<br />SYS_MODE&nbsp;DEFINE&nbsp;0x1F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;System&nbsp;mode<br /><br />CP_DIS_MASK&nbsp;DEFINE&nbsp;0xFFFFFFF2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECTION&nbsp;.text:CODE:NOROOT(2)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERN&nbsp;&nbsp;?main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REQUIRE&nbsp;__vector<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERN&nbsp;&nbsp;low_level_init<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARM<br /><br />__iar_program_start:<br />?cstartup:<br /><br />I_Bit&nbsp;&nbsp;&nbsp;&nbsp;DEFINE&nbsp;0x80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;I&nbsp;bit&nbsp;is&nbsp;set,&nbsp;IRQ&nbsp;is&nbsp;disabled<br />F_Bit&nbsp;&nbsp;&nbsp;&nbsp;DEFINE&nbsp;0x40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;F&nbsp;bit&nbsp;is&nbsp;set,&nbsp;FIQ&nbsp;is&nbsp;disabled<br /><br />#define&nbsp;VIC_INT_ENABLE&nbsp;&nbsp;0xFFFFF014<br />;&nbsp;Disable&nbsp;all&nbsp;interrupts<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;r0,=VIC_INT_ENABLE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;r1,#0xFFFFFFFF<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />;&nbsp;Execution&nbsp;starts&nbsp;here.<br />;&nbsp;After&nbsp;a&nbsp;reset,&nbsp;the&nbsp;mode&nbsp;is&nbsp;ARM,&nbsp;Supervisor,&nbsp;interrupts&nbsp;disabled.<br />;&nbsp;Initialize&nbsp;the&nbsp;stack&nbsp;pointers.<br />;&nbsp;The&nbsp;pattern&nbsp;below&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;any&nbsp;of&nbsp;the&nbsp;exception&nbsp;stacks:<br />;&nbsp;FIQ,&nbsp;IRQ,&nbsp;SVC,&nbsp;ABT,&nbsp;UND,&nbsp;SYS.<br />;&nbsp;The&nbsp;USR&nbsp;mode&nbsp;uses&nbsp;the&nbsp;same&nbsp;stack&nbsp;as&nbsp;SYS.<br />;&nbsp;The&nbsp;stack&nbsp;segments&nbsp;must&nbsp;be&nbsp;defined&nbsp;in&nbsp;the&nbsp;linker&nbsp;command&nbsp;file,<br />;&nbsp;and&nbsp;be&nbsp;declared&nbsp;above.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mrs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,cpsr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Original&nbsp;PSR&nbsp;value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#SVC_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;Supervisor&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(SVC_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;SVC_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#UND_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;Undefined&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(UND_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;UND_MODE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#ABT_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;Data&nbsp;abort&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(ABT_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ABT_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#FIQ_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;FIR&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(FIQ_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;FIQ_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#IRQ_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;IRQ&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(IRQ_STACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;IRQ_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODE_MSK&nbsp;|&nbsp;I_Bit&nbsp;|&nbsp;F_Bit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Clear&nbsp;the&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#SYS_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;System&nbsp;mode&nbsp;bits<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Change&nbsp;the&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SFE(CSTACK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;CSTACK<br /><br />#ifdef&nbsp;__ARMVFP__<br />;&nbsp;Enable&nbsp;the&nbsp;VFP&nbsp;coprocessor.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;#BASE_ARD_EIM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;EN&nbsp;bit&nbsp;in&nbsp;VFP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmxr&nbsp;&nbsp;&nbsp;&nbsp;fpexc,&nbsp;r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;FPEXC,&nbsp;clear&nbsp;others.<br /><br />;&nbsp;Disable&nbsp;underflow&nbsp;exceptions&nbsp;by&nbsp;setting&nbsp;flush&nbsp;to&nbsp;zero&nbsp;mode.<br />;&nbsp;For&nbsp;full&nbsp;IEEE&nbsp;754&nbsp;underflow&nbsp;compliance&nbsp;this&nbsp;code&nbsp;should&nbsp;be&nbsp;removed<br />;&nbsp;and&nbsp;the&nbsp;appropriate&nbsp;exception&nbsp;handler&nbsp;installed.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;#0x01000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Set&nbsp;FZ&nbsp;bit&nbsp;in&nbsp;VFP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmxr&nbsp;&nbsp;&nbsp;&nbsp;fpscr,&nbsp;r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;FPSCR,&nbsp;clear&nbsp;others.<br />#endif<br /><br />;&nbsp;Add&nbsp;more&nbsp;initialization&nbsp;here<br /><br /><br />;&nbsp;Continue&nbsp;to&nbsp;?main&nbsp;for&nbsp;more&nbsp;IAR&nbsp;specific&nbsp;system&nbsp;startup<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=?main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br /><br /><br />
 楼主| ZorroCN 发表于 2009-3-25 14:59 | 显示全部楼层

re to:wlq_9

谢谢,似乎是个思路,再去看看
 楼主| ZorroCN 发表于 2009-3-25 15:11 | 显示全部楼层

to wlq_9

还是没思路,毕竟还没有进main函数,而启动代码这里又是参考IAR的sample写的……
 楼主| ZorroCN 发表于 2009-3-25 15:37 | 显示全部楼层

刚刚重新编译了一下,现象略有不同

F10或者F11跟踪,软件是在下面这几步进行循环,在这之前加入断点也不起作用。<br /><br /><br />__swi_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;swi_handler<br />__prefetch_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;prefetch_handler<br />__data_handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;pc,[pc,#24]&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;data_handler<br />__vector_0x14<br />&nbsp;&nbsp;&nbsp;&nbsp;dc32&nbsp;0xFFFFFFFF<br />__irq_handler:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;pc,[pc,&nbsp;#-0x0120]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Branch&nbsp;to&nbsp;irq_handler<br />在这几步当中设置断点,程序可以停下来,但在这之前或者之后都不行。比较怀疑的是这个#-0x0120,这是哪里来的?
qingfengyishi 发表于 2009-3-26 19:02 | 显示全部楼层

如果发生了异常,可以在异常处理程序入口设断点

如果发生了异常,可以在异常处理程序入口设断点,发生异常后查看R14,得到发生异常的位置,从而判断原因
reeper 发表于 2009-4-3 10:13 | 显示全部楼层

路过学习

  
ddpxy 发表于 2009-4-6 17:02 | 显示全部楼层

路过

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

本版积分规则

29

主题

84

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部