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执行程序。
你好、Tiger、
您使用什么程序来刷写器件?
此致、
卢克
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、
是否在 MSPM0G 和 MSPM0L uniflash 会话之间采用了相同的设置? 特别是与复位配置有关的内容。
当前、当选择了硬复位选项时、代码将自动运行、您无需连接 NRST 引脚、因为它是通过 SWDIO 连接调用的。 我将介绍为什么需要硬复位选项。
此致、
卢克
我的设置与您的屏幕截图完全相同。
你好、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。
进一步调查:
停止时、SYSCTL->SOCLOCK。 NMIIIDX 指示 SRAM 双错检测。
您能进一步研究一下吗?
跟进:
下面的代码对我来说是权变措施、但 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); }
你好、Tiger、
您使用的是自定义的启动代码还是 ROM 中的启动代码?
复位是否允许您的代码返回 main?
我认为 GPIO 不会变为高电平是在初始化 GPIO 之前出现 SRAM DED 错误的症状。
此致、
卢克
您的意思是"自定义启动代码"? 我只是以 bootmanger (mcuboot)为例。
奇怪的是、如果我删除 mcuboot 函数调用并只是进行 GPIO 切换、问题就会消失。
最终找出原因的根源。
器件进入闪存0x0地址执行状态、但立即触发 SRAMDED NMI 中断。 根本原因是 链接器文件中的 SRAM 区域指向0x20000000、但 M0G 系列放弃了 ECC。 因此访问该区域可能会导致问题。 但是、SYSRST 可以解决这一问题。 (在 NMI ISR 中、触发 SYSRST、或手动切换 RST 引脚以触发 POR)。
分辨率:
需要按照示例更改链接器文件、使用0x20200000。