无法使用ST Link实用程序对STM32进行编程:编程错误@:0x00000001

时间:2016-11-09 16:01:38

标签: stm32

我一直在尝试编程STM32。我有一个Nornir开发的Dash7 /传感器板(绝对没有文件以某种方式存在......),它有一个STM32L100RBT6 MCU。所以我想为这个主板编写自己的软件。

到目前为止,我已经成功完成了一个项目并构建了固件。此时,我正在尝试使用官方ST-link v2编程器与ST-Link实用程序软件(在Windows 10下)将.hex文件刷新到MCU上。我在电路板上使用JTAG接口。

在ST-link实用程序中,我可以连接到电路板,并将其读出。我已经擦除了芯片,我只在存储器中读取零,用于两个存储页面(0x00000000和0x08000000)。

当我尝试Target > Program时,在选择我的.hex文件并点击Start后,控制台告诉我:

16:54:48 : Connected via JTAG.
16:54:48 : Connection mode : Normal.
16:54:48 : Debug in Low Power mode enabled.
16:54:49 : Device ID:0x416 
16:54:49 : Device flash Size : 128KBytes
16:54:49 : Device family :STM32L100x8/L15xx8
16:54:52 : Memory programmed in 0s and 250ms.

但是当我读出内存时,它没有被编程。它只显示两个页面上的零(0x00000000和0x08000000)。

当我选择Target > Program & Verify时,我收到错误消息'编程错误@:0x00000001'以及以下控制台输出:

16:55:39 : Connected via JTAG.
16:55:39 : Connection mode : Normal.
16:55:39 : Debug in Low Power mode enabled.
16:55:39 : Device ID:0x416 
16:55:39 : Device flash Size : 128KBytes
16:55:39 : Device family :STM32L100x8/L15xx8
16:56:16 : No OnChip verification function found. Verify after programming will be performed.
16:56:17 : Programming error @: 0x00000001

我的内存链接器脚本(mem.ld)如下:

MEMORY
{
  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K
  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K

  /*
   * Optional sections; define the origin and length to match
   * the the specific requirements of your hardware. The zero
   * length prevents inadvertent allocation.
   */
  CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 0
  FLASHB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
  EXTMEMB0 (rx) : ORIGIN = 0x00000000, LENGTH = 0
  EXTMEMB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0
  EXTMEMB2 (rx) : ORIGIN = 0x00000000, LENGTH = 0
  EXTMEMB3 (rx) : ORIGIN = 0x00000000, LENGTH = 0
}

我在这一点上陷入困​​境,到目前为止还没有找到任何资源指向我正确的方向。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

ST Link实用程序缓存您使用的文件。它没有记录在任何地方,但是它做到了。如果您想100%确保已对最新的二进制/十六进制文件进行了编程,请更改文件名(来自以前的版本),然后再次编程