阿哲
发表于: 2016-7-26 15:01:40 | 显示全部楼层

最近在使用NXP的LPC1127FBD48控制器做一个项目,程序的代码写的差不多了。因为其他的事情,写代码的工作停了几天。今天闲下来,继续写剩下的代码。打开原来的工程,刚将程序下载到LPC1127中,Keil的调试输出窗口就提示:*** error 57: illegal address(0x00001000)。

illegal address.jpg

刚开始时,还以为是由于LPC1127的启动文件配置造成的。多次更改相应的配置信息,仍没有解决问题。后来在官网看到的介绍,发现是调试器的配置造成的。


解决方法:

Options for Target Debug Settings Debug Download Options对话框取消勾选Download to Flash选项。

002.jpg


参考资料

Keil官方也给出了相关的介绍:

http://www.keil.com/support/docs/3508.htm


下面是官方给出的解决方法:

现象描述:

开始调试Cortex-M器件后,在调试输出窗口提示以下信息:*** error 57: illegal address (...)

为什么会出现非法地址访问呢?

原因:

这种现象有可能是由调试器造成的,例如,当memory窗口的地址指向了调试过程中不能访问的位置。另外,当 Target — Debug — Settings — Debug — Download Options的Flash in Options启用时,也会造成这种现象。

Download to Flash向所有的内存区域写入代码,包括那些定义为Flash的区域。这种方式不能替代直接向Flash内存写代码,需要使用闪存编程算法来烧写Flash。检查 Target Driver Setup — Flash Download对话框。

Download to Flash选项是非常有用的。例如,在间接访问启动存储区如NAND Flash,但需要从SDRAM执行的系统中。在这种情况下,SDRAM区域定义为Flash。代码通过Flash算法烧写到NAND Flash。启动时,代码从NAND复制到SDRAM,并且在SDRAM中执行。但是,在调试时,代码需要通过调试器下载到SDRAM中。通过这个选项,一个target可以用于从SDRAM调试,也可以烧写程序到NAND。

解决方法:

禁用 Target — Debug — Settings — Debug中的Download to Flash选项。这样非法地址的错误就会消失。如果你想在调试前更新目标,请在调试前启用Target — Utilities — Update Target 选项。

跳转到指定楼层
huaiqiao
发表于: 2016-8-1 14:11:24 | 显示全部楼层

谢谢分享啦。
回复

使用道具 举报

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

本版积分规则

主题 53 | 回复: 76



手机版|

GMT+8, 2024-12-21 19:55 , Processed in 0.049508 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表