nRF51822:Keil下载程序报错(Erro;Flash Download failed - "Cortex-M0")

问题描述

今天在用keil软件下载程序时遇到这个问题。

比较奇怪的是我下载之前的其他工程都没有问题,可以正常,重新开的以前的另一个样例工程下载测试就出现了这个问题。

 

nRF51822:Keil下载程序报错(Erro;Flash Download failed -

原因分析与解决办法

1.找攻略

在查看了J-Link配置没问题之后,在网上查找解决办法

查到 Error:Flash Download Failed-"Cortex-M0" 这篇博客跟我遇到的同样的问题

但是博客中说的文件我配置中是存在的。

2.仔细检查 Options Target 配置 

仔细对比检查可以正常下载和不能正常下载工程的配置情况。没有什么不同。

3.思考

仔细思考了一下,我现在用到样例工程只是一个简单的关于外设的工程,没有涉及到蓝牙服务程序,主要是此时的ROM地址设置是从0x0开始的,如下图所示。

nRF51822:Keil下载程序报错(Erro;Flash Download failed -

可是之前用到的工程都是有蓝牙程序,所以会先烧写softdevice.hex 服务文件,因为此时的地址设置为

nRF51822:Keil下载程序报错(Erro;Flash Download failed -

因此在烧写过蓝牙协议文件的板子上再烧写普通文件之前,应该先用 nRFgo Studio 将设备上的程序全部擦除

不然就会烧不进程序,因为从0X0程序开始的地址已经有程序了,擦除之后重新烧写程序,烧写成功。

(太久没用nRF51822我竟然把这个给忘了,果然还是写下来比较好)

同理:在烧写需要用到蓝牙服务协议的程序时,一定要记得先烧写蓝牙服务程序,已经修改待烧写程序的烧写起始地址。


Tip

  1. 报这个错可能是因为下载配置的问题,仔细检查配置吧!!!
  2. 也可能是板子上存在蓝牙协议服务程序导致烧写不进。
  3. 在烧写需要用到蓝牙服务程序前一定得注意:(不然程序烧写进板子会达不到效果,或者单步调试程序的时候可能会报错:**JLink Warning: Mis-aligned memory read: Address: 0x00000000, NumBytes: 60, Alignment: 2 (Halfword-aligned))

    (1)ROM区的开始地址的配置

(2)蓝牙栈协议文件的提前烧写

nRF51822:Keil下载程序报错(Erro;Flash Download failed -

 

你可能感兴趣的:(nRF51822学习笔记)