IAR是否能够锁定FLASH中的程序禁止JTAG?

one65one   2008-7-3 08:20 楼主
现在遇到了个棘手的问题,发现我3块板子+1块开发板都不能烧写FLASH了,具体表现是:
当JTAG时 DOWNLOADING  FILES和PROGRAMING FLASH都通过,然后有3种可能的表现

1 仿真时走了第一句程序就显示堆栈指针配置超出范围。。堆栈溢出
2 在C程序中根本不出那个指示当前运行语句的绿色箭头,只有反汇编界面有
3 JTAG烧录完刚进去时我什么都没按就在全速运行,手动停止后随即停在那里

三种表现拔掉板子电源后再上电全是一个结果:我刚才烧写的程序没有运行,运行的还是我出故障前烧写的代码。我昨天问的新添语句在JTAG时不能运行就是这个原因,原帖:
https://bbs.eeworld.com.cn/club/bbs/list.asp?boardid=49&page=1&t=3019664&tp=%u9999%u6C34%u8BF7%u8FDB%uFF0C%u53C8%u51FA%u6BDB%u75C5%u4E86

现在拿到别人案例烧他的程序出现的问题一样,最郁闷的是我用万利用开发板下载他的例程都不行了。。。很怀疑是我在IAR中配置错了什么东西,然后烧写进去的程序锁定了FLASH再也不能下载程序了

回复评论 (8)

是否可以在RAM中调试?如果可以表示JTAG通道没问题

                                 如果怀疑程序没有烧进Flash,可以用调试器的Memory窗口看看Flash中的内容。
点赞  2008-7-3 09:15

刚换了个CPU 用STlink能烧例程了 可是烧完我的程序又出故障

这是校验时发现的 无论FALSH还是RAM都出错
下面是FLASH的错误

Thu Jul 03 09:34:14 2008: DLL version: V3.72a, compiled Jun 18 2007 18:58:11
Thu Jul 03 09:34:14 2008: Firmware: J-Link ARM V6 compiled Jun 14 2007 14:33:17
Thu Jul 03 09:34:14 2008: JTAG speed is initially set to: 32 kHz
Thu Jul 03 09:34:15 2008: Found Cortex-M3, Little endian.
Thu Jul 03 09:34:15 2008: TPIU fitted.
Thu Jul 03 09:34:15 2008:   FPUnit: 6 code (BP) slots and 2 literal slots
Thu Jul 03 09:34:15 2008: Software reset was performed
Thu Jul 03 09:34:15 2008: Initial reset was performed
Thu Jul 03 09:34:15 2008: J-Link found 2 JTAG devices. ARM core Id: 3BA00477(Cortex M3), ARM core Id: 00000000(ARM9)
Thu Jul 03 09:34:15 2008: Device at TAP0 selected
Thu Jul 03 09:34:16 2008: 3518 bytes downloaded and verified (3.05 Kbytes/sec)
Thu Jul 03 09:34:16 2008: Warning: 
Verify error at address 0x20000058, target byte: 0x02, byte in file: 0x11
Thu Jul 03 09:34:16 2008: Warning: 
Verify error at address 0x20000059, target byte: 0x08, byte in file: 0x00
Thu Jul 03 09:34:16 2008: Warning: 
Verify error at address 0x2000005A, target byte: 0x06, byte in file: 0x00
Thu Jul 03 09:34:16 2008: Warning: 
Verify error at address 0x2000005B, target byte: 0x08, byte in file: 0x20
Thu Jul 03 09:34:16 2008: There were warnings during download of FLASH loader, see Log Window
Thu Jul 03 09:34:17 2008: Failed to load flash loader: C:Program FilesIAR SystemsEmbedded Workbench 4.0 KickstartarmconfigflashloaderST
FlashSTM32F10x.d79

点赞  2008-7-3 09:40

。。

换完CPU能下例程用的是STlink
现在下完例程用Jlink就不行了,出现上面的错误,用STlink或者Jlinlk都不行了  不可能我的程序有毒吧  把CPU都搞坏了
点赞  2008-7-3 09:48

你烧进去的代码用到了哪些外设?

                                 你可以把板子的BOOT跳线选到从RAM启动,然后重新上电,试试看烧录有没有问题。
点赞  2008-7-3 10:02

查了一下旧帖,发现上次已经帮你解决了这个问题

首先我在2楼建议你在RAM中试试,请做一下,这是一个很好的方法。

其次,我查了一下旧帖,发现上次已经帮你解决了这个问题,请看:香水救命啊,Jlink和ST Link都遇到的下载问题,尤其是13楼以后的讨论。希望你再次确认“在你的项目中是否开启了DMA、看门狗、定时器中断等功能?
点赞  2008-7-3 10:09

RAM我试了

RAM我试了,跟FLASH一样下载了没反应,不过我现在的感觉是IAR会篡改lnkarm_flash.xcl这个文件,我现在找来2个全新的lnkarm_flash.xcl和ram.xcl调成只读放在桌面就没问题了。。。。
真晕死

请问调成boot全是1在ram是什么原理?
点赞  2008-7-3 10:36

BOOT引脚在Reset时会把某个存储区映像到地址0x0000 0000

                                 内置SRAM的真实地址是0x2000 0000,内置Flash的真实地址是0x0800 0000,BOOT引脚在Reset时会把上述地址映像0x0000 0000。Cortex-M3的内核是从地址0x0000 0000启动的。
点赞  2008-7-3 10:43

LZ 真有意思!

                                  
点赞  2008-7-3 17:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复