最近又把 MCU 给干废了,现象如下:

Load "main.axf"
* JLink Info: Device "CORTEX-M4" selected.
Set JLink Project File to "JLinkSettings.ini"
* JLink Info: Device "CORTEX-M4" selected.

JLink info:
------------
DLL: V7.22b, compiled Jun 17 2021 17:22:49
Firmware: J-Link V9 compiled May 7 2021 16:26:12
Hardware: V9.60
S/N : 69667602
Feature(s) : RDI, GDB, FlashDL, FlashBP, JFlash

* JLink Info: Found SW-DP with ID 0x2BA01477
* JLink Info: DPIDR: 0x2BA01477
* JLink Info: Scanning AP map to find all available APs
* JLink Info: AP[1]: Stopped AP scan as end of AP map has been reached
* JLink Info: AP[0]: AHB-AP (IDR: 0x24770011)
* JLink Info: Iterating through AP map to find AHB-AP to use
* JLink Info: AP[0]: Skipped. Invalid implementer code read from CPUIDVal[31:24] = 0x00
* JLink Info: Found SW-DP with ID 0x2BA01477
* JLink Info: DPIDR: 0x2BA01477
* JLink Info: Scanning AP map to find all available APs
* JLink Info: AP[1]: Stopped AP scan as end of AP map has been reached
* JLink Info: AP[0]: AHB-AP (IDR: 0x24770011)
* JLink Info: Iterating through AP map to find AHB-AP to use
* JLink Info: AP[0]: Skipped. Invalid implementer code read from CPUIDVal[31:24] = 0x00

***JLink Error: Could not find core in Coresight setup

Error: Flash Download failed - Target DLL has been cancelled
Flash Load finished at 10:35:22

事情经过是这样的,某款产品第一版硬件的时钟源选用的是 6MHz 的外部晶振,内部倍频至 128MHz 作为系统主频,而第二版则改成了 24MHz 的外部晶振,第二版硬件出来后,将第一版程序直接烧录进第二版硬件后 MCU 无法正常启动且无法被识别。

初步推测,应该是外部晶振频率提高,但是程序没有进行适当地分频,导致系统主频远远超过数据手册中规定的频率上限(200MHz)。

128MHz×(24MHz/6MHz)=512MHz   >   MAX(200MHz)

后面通过调试,证实程序的确是在 M4_SYSREG->CMU_CKSWR_f.CKSW = enTargetSysSrc; 处出现异常。

上述操作其实就是「超频」,只是超得有点猛,导致芯片直接宕机。这种情况借助华大的离线下载器重新烧录程序即可恢复正常。

倘若只有 main.h 和 main.c 两个文件,那么只需要执行少量的指令即可完成编译工作。但是实际上一个工程通常包含几十上百个文件,意味着要执行大量的编译指令才能得到目标文件,这是我们所无法接受的。因此需要借助 make、cmake、ninja、scons 等构建工具来提高开发效率。

« 閱讀全文 »


集成开发环境-GCC.ARM(#01)环境搭建
集成开发环境-GCC.ARM(#02)程序构建
集成开发环境-GCC.ARM(#03)程序烧录
集成开发环境-GCC.ARM(#04)快捷任务
集成开发环境-GCC.ARM(#05)程序调试
集成开发环境-DBG


传统的集成开发环境(MDK、IAR)通常会提供包括编辑、编译、烧录、调试在内的一整套工具,开发者无需配置,简单易用,但 license 也不是一般的贵。

替代方案:

« 閱讀全文 »

LilyPond 是什么?(https://lilypond.org/)

LilyPond (荷花池) 是一个音乐雕版软件,致力产生最高质量的乐谱。它把传统音乐雕版印刷的美学,呈现在计算机打印的乐谱上。LilyPond 是自由软件,也是 GNU Project 的一部分。

计算机软件的内核是将接收到的数据进行计算并输出,LilyPond 也不例外。我们需要按照 LilyPond 开发者制定的规则编写乐谱源码,然后使用 LilyPond 将源代码转换为 PNG、PDF、SVG、MIDI 等格式的文件。

« 閱讀全文 »