This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
MSPM0G1507器件在下载后无法自动运行代码。
即使我们选择了下载后运行程序的选项、仍然需要复位才能从0x0执行程序。
Uniflash、Web 版本。
该错误适用于 Mac 和 Linux、无论我们使用何种形式的 xds110 (M0L1306、M0G3507或 CC3220 Launchpad)
但 MSPM0L1306目标 IC 没有这个问题。
更新:
打开 macOS ,如果我使用的是以下路径中的本机 DSLite:
/Applications/ti/uniflash/deskdb/content/TICloudAgent/osx/ccs_base/DebugServer/bin/DSLite help DSLite version 12.3.0.3041 DSLite [operation] [Args...] ...
不需要重置!
我 不确定这是否链接到某个程序。
你好、Tiger、
我将解决我们在通话中谈到的问题。
软复位和硬复位均完全通过软件完成、其中软复位的目的是 CPU 复位、而硬复位则是系统复位。 使用空白器件或调用 BSL 时、软复位不会使器件进入 MAIN 模式、而是由于器件内部存在硬复位。 当用户使用辅助 BSL 时、他们不会进入这个模块。
此致、
卢克
在进一步调查该问题之后。 我添加了以下代码:
void NMI_Handler(void) { DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_24); while(1); }
然后、在刷写器件后立即使用 CCS 连接调试器(看到无响应、无 GPIO 切换)。 PC 指示代码运行到此处。 但 GPIO 似乎没有设置。
附件是我的修改文件。 我只从 SDK 复制您的示例(MSPM0G3507示例、转换为我的目标1507)
/cfs-file/__key/communityserver-discussions-components-files/908/boot_5F00_application_5F00_mod.c
另一件奇怪的事情是、如果我在代码的任何位置放入一个阻塞快捷方式 while (1)、我可以看到 PA24已设置。 否则、PA24永远不会被置位。
注意:MCUBOOT_LOG 已禁用。 优化标志:-OS 堆栈/堆1024。
跟进:
下面的代码对我来说是权变措施、但 SRAMDED 的原因仍然不清楚。
BTW、我尝试了 SYSCTL_RESETLEVEL_LEVEL_CPU、但它不起作用。 POR/BOOTRST 工作。
void NMI_Handler(void) { if (SYSCTL_NMIIIDX_STAT_SRAMDED == DL_SYSCTL_getPendingNonMaskableInterrupt()) { DL_SYSCTL_resetDevice(SYSCTL_RESETLEVEL_LEVEL_BOOTLOADEREXIT); } while (1); }
最终找出原因的根源。
器件进入闪存0x0地址执行状态、但立即触发 SRAMDED NMI 中断。 根本原因是 链接器文件中的 SRAM 区域指向0x20000000、但 M0G 系列放弃了 ECC。 因此访问该区域可能会导致问题。 但是、SYSRST 可以解决这一问题。 (在 NMI ISR 中、触发 SYSRST、或手动切换 RST 引脚以触发 POR)。
分辨率:
需要按照示例更改链接器文件、使用0x20200000。