问题
调试时在代码中对Flash进行写操作时(比如Bootloader对Code Flash进行升级操作,Application对Data Flash进行写操作),Memory窗口中Flash内容不更新。
原因
正常情况下,Flash对应Memory区域在ddf(device description file)文件中的AccType是R,表示调试器对Flash只读,不能修改Flash的内容:
Memory Configuration窗口中(Memory Configuration窗口可以通过对应的仿真器 > Memory Configuration打开)Flash默认Type是Read only,,对应的Cache Type是ROM/Flash:
对于Cache Type是ROM/Flash的Memory区域,调试器会认为对应Memory区域的值在调试过程中不会改变,所以调试器在调试过程中不会去更新对应Memory区域的值,导致即使对应Memory区域的值实际已经更新了,但是Memory窗口中的值却没有更新:
解决办法
前面介绍了造成调试时Memory窗口中内容不更新的原因是因为对应Memory区域的Cache Type是ROM/Flash,而Cache Type是ROM/Flash是因为ddf文件里面对应Memory区域的AccType是R,下面介绍对应的解决方法:
1.Disable Debugger Cache
使能Disable Debugger Cache(Disable Debugger Cache菜单可以通过对应的仿真器 > Disable Debugger Cache使能)之后,调试器将不会使用cache,所有的访问都会映射到目标系统:
2. 修改Flash对应Memory区域的Cache Type为RAM
需要在Memory Configuration窗口中将对应Flash对应Memory区域的Cache Type改成RAM(选中对应Memory区域,点击Edit,在Edit Memory Range窗口中选择Cache Type为RAM),这样调试器就会认为对应Memory区域的值在调试过程中会改变,从而会去读取目标系统对应Memory区域,在Memory窗口中更新对应Memory区域的值:
3. 修改ddf文件中Flash对应Memory区域的AccType为RW
在IAR安装目录armconfigdebugger下找到对应ddf文件,然后修改Flash对应Memory区域的AccType为RW。修改之后重新打开IDE,对应Memory Configuration窗口会加载更新的ddf文件:
-
FlaSh
+关注
关注
10文章
1683浏览量
152181 -
调试
+关注
关注
7文章
614浏览量
34804 -
Memory
+关注
关注
1文章
79浏览量
29839 -
代码
+关注
关注
30文章
4905浏览量
70989
原文标题:调试时Memory窗口中Flash内容不更新
文章出处:【微信号:IAR爱亚系统,微信公众号:IAR爱亚系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
MDK调试时出现MEMORY MISMATCH错误的原因及解决方法
蜂鸣器不响原因以及解决办法
STM32烧录出现The core is locked up的原因及解决办法
音箱没声音的原因和解决办法
汽车空调不制冷的十种原因及解决办法
电感啸叫的原因和解决办法

评论