adyanced 发表于 2011-12-23 13:59:23

STM32 IAR没法调试,求教

第一次接触STM32,按照stm库例子编了个空白main(),芯片是STM32F107RCT6,Revision Z(看了Errata Sheet这个版本有点问题,不过我不用Boot Loader)系统是Win7,编译环境是EWARM 6.30的30天试用版(和谐了,就算没和谐也在试用期内),仿真器是STLINK/V2,使用SWD调试接口。问题如下:
1、通过编译后,想下载到Flash中调试,修改了stm32f10x_flash.icf里面的ROM和RAM设置到芯片对应范围,打勾use flash loader,提示断点只能6个之类,并且下载一直结束不了,cancel后有出错信息,提示目标设备上电之类的。打开verify download选项,发现校验通不过,但奇怪的是在校验0x20000000 RAM区域里面的东西。几次后摸不着头脑,换新方法
2、网上找了些资料,想转到RAM中调试,免得flash折寿。compiler选项preprocessor中加入VECT_TAB_SRAM,linker中换成stm32f10x_ram.icf,并且把ROM设置成0x2000000-0x20007FFF,RAM设置成0x20008000-0x2000FFFF,vector table为0x20000000,去掉download中的各种选项,下载,执行,程序不知所终。去掉run to main选项,再下载,程序停止在__iar_program_start位置,机器码为0x5a20,单步死了,PC变为0xFFFFFFFE。上电断电反复试验均是如此,该处机器码始终是0x5a20。检查vector table,里面的地址正确,检查map文件,定位信息正确。
3、不作任何改动,换成simulator,加载,一切正常!但发现__iar_program_start处的机器码为0x46C0,不是0x5A20。说明没有向RAM中写入代码,但是即使断电,RAM调试时始终为0x5A20,说明仿真器还是IAR向该处写过东西,否则不会一直不变。试过修改ROM和RAM其他分配方式,还是如此。
4、仍然使用RAM调试方法,停在__iar_program_start位置后,根据simulator里面的信息手工修改后面的几条机器码,单步正常,说明芯片是好的。
折腾了2天,网上到处找,没有相关信息,没辙了,上来向STM32的高手求教:lol不过我刚注册,没分数送
 

火雷达 发表于 2011-12-23 21:34:16

回复:STM32 IAR没法调试,求教

用官方的例程来调试,你的软件版本太高了,我们跟不上时代。:L

发表于 2011-12-23 22:32:26

RE:STM32 IAR没法调试,求教

1、icf可以不用修改,这个默认就可以。如果你用到IAP或者是特殊的空间定义的时候用。
2、你默认,不修改试试看看能不能运行,实在不行你把你的工程发出来,大家帮你改一下。

ning-191742 发表于 2012-1-1 21:46:03

RE:STM32 IAR没法调试,求教

IAR在RAM调试我第一次搞了两三天,其实很简单,发工程设置图片和代码看看。最主要有几点:
1)并不一定要定义"ECT_TAB_SRAM",直接在工程源代码里找到NVIC的初始化程序,将其向量定位到RAM。
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
//NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
// NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
//......(其余省去)

ilovestmcu 发表于 2013-5-8 15:47:42

RE:STM32 IAR没法调试,求教

我也是用IAR 6.3遇到lz一样的问题,不知道lz是怎么解决的?
页: [1]
查看完整版本: STM32 IAR没法调试,求教