问题描述
今天在用keil软件下载程序时遇到这个问题。
比较奇怪的是我下载之前的其他工程都没有问题,可以正常,重新开的以前的另一个样例工程下载测试就出现了这个问题。
原因分析与解决办法
1.找攻略
在查看了J-Link配置没问题之后,在网上查找解决办法
查到 Error:Flash Download Failed-"Cortex-M0" 这篇博客跟我遇到的同样的问题
但是博客中说的文件我配置中是存在的。
2.仔细检查 Options Target 配置
仔细对比检查可以正常下载和不能正常下载工程的配置情况。没有什么不同。
3.思考
仔细思考了一下,我现在用到样例工程只是一个简单的关于外设的工程,没有涉及到蓝牙服务程序,主要是此时的ROM地址设置是从0x0开始的,如下图所示。
可是之前用到的工程都是有蓝牙程序,所以会先烧写softdevice.hex 服务文件,因为此时的地址设置为。
因此在烧写过蓝牙协议文件的板子上再烧写普通文件之前,应该先用 nRFgo Studio 将设备上的程序全部擦除 。
不然就会烧不进程序,因为从0X0程序开始的地址已经有程序了,擦除之后重新烧写程序,烧写成功。
(太久没用nRF51822我竟然把这个给忘了,果然还是写下来比较好)
同理:在烧写需要用到蓝牙服务协议的程序时,一定要记得先烧写蓝牙服务程序,已经修改待烧写程序的烧写起始地址。
Tip
- 报这个错可能是因为下载配置的问题,仔细检查配置吧!!!
- 也可能是板子上存在蓝牙协议服务程序导致烧写不进。
- 在烧写需要用到蓝牙服务的程序前一定得注意:(不然程序烧写进板子会达不到效果,或者单步调试程序的时候可能会报错:**JLink Warning: Mis-aligned memory read: Address: 0x00000000, NumBytes: 60, Alignment: 2 (Halfword-aligned))
(1)ROM区的开始地址的配置
(2)蓝牙栈协议文件的提前烧写