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.
工具与软件:
您好!
我在使用评估板(LP-MSPM0L1306)时在定制电路板上遇到了 MSPM0L1105问题。 已受影响的2个定制板。
问题是、我在调试固件时根本没有任何问题、但在 停止调试并再次尝试对电路板进行编程后、它无法进行编程、尽管之前编程的固件仍然在工作。 J-Link 编程器返回错误"Error:Failed to initialized DAP"。
还尝试使用 UniFlash 将 MSPM0L1105连接到评估板上提供的 XDS110调试探针进行编程或恢复出厂设置、但显示错误"[错误] CS_DAP_0:连接到目标时出错:DAP 连接错误。 这可能是由器件进入低功耗模式引起的。 尝试强制执行外部复位。 如果错误仍然存在、请尝试强制执行 BSL、批量擦除或恢复出厂设置。 有关更多信息、请查看器件常见问题解答。"
我遵循了该指南: /cfs-file/__key/communityserver-discussions-components-files/908/1220.Unlock-MSPM0-instructions.pdf 、但我停留在方法1:步骤5。 此步骤让我采用方法2、该方法工作正常、因为我收到绿色消息"Send firmware successfully"和"Download complete"(如 PDF 中所示的图像)、但 MCU 与之前的状态相同、但未进行编程、并且在尝试解锁时停留在方法1:步骤5。
我不是尝试在 NVM 或 NONMAIN 上进行写入(我看到这可能是导致锁定的原因、但我不使用它)、它只是一个简单的固件、可以对 IO 和 SPI 引脚进行读取和写入、来测试 定制板上的组件是否正常工作。
注意:我将 vscode 与 cmake 一起使用来构建固件 和 J-Link (通过 SWD 进行编程/调试)。
提前感谢。
您好、感谢您的 快速回复
1.我没有迁移、因为我在"TI 系统配置工具"中创建了一个新项目。 我使用 GCC 构建、没有.cmd 文件。 我正在使用该工具生成的链接器文件(.lds)、其中在"Select Device"中选择了 MSPM0L1105。
(已尝试一切措施来解决警告、但在选择器件后、它仍然会显示)
我的启动文件是"startup_mspm0l110x_gcc.c"、包含在 MSPM0 SDK v2.00.00.03中(source/ti/devices/msp/m0p/startup_system_files/gcc)
如果是这样、会生成链接器文件:
/* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0; /* required amount of heap */ _Min_Stack_Size = 0x80; /* required amount of stack */ /* Specify the memory areas */ MEMORY { FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00007FF8 SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00001000 BCR_CONFIG (R) : ORIGIN = 0x41C00000, LENGTH = 0x00000080 BSL_CONFIG (R) : ORIGIN = 0x41C00100, LENGTH = 0x00000080 } /* Note: SRAM length must match MPPC/MEMSS config! Please edit it manually. */ REGION_ALIAS("REGION_TEXT", FLASH); REGION_ALIAS("REGION_PREINIT_ARRAY", FLASH); REGION_ALIAS("REGION_INIT_ARRAY", FLASH); REGION_ALIAS("REGION_FINI_ARRAY", FLASH); REGION_ALIAS("REGION_BSS", SRAM); REGION_ALIAS("REGION_NOINIT", SRAM); REGION_ALIAS("REGION_DATA", SRAM); REGION_ALIAS("REGION_STACK", SRAM); REGION_ALIAS("REGION_HEAP", SRAM); REGION_ALIAS("REGION_TEXT_RAM", SRAM); REGION_ALIAS("REGION_ARM_EXIDX", FLASH); REGION_ALIAS("REGION_ARM_EXTAB", FLASH); /* Define output sections */ SECTIONS { /* section for the interrupt vector area */ PROVIDE (_intvecs_base_address = DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x00000000); .intvecs (_intvecs_base_address) : AT (_intvecs_base_address) { KEEP (*(.intvecs)) } > REGION_TEXT PROVIDE (_vtable_base_address = DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000); .vtable (_vtable_base_address) (NOLOAD) : AT (_vtable_base_address) { KEEP (*(.vtable)) } > REGION_DATA .text : { CREATE_OBJECT_SYMBOLS KEEP (*(.text)) . = ALIGN(0x8); *(.text.*) . = ALIGN(0x8); KEEP (*(.ctors)) . = ALIGN(0x8); KEEP (*(.dtors)) . = ALIGN(0x8); KEEP (*(.init)) . = ALIGN(0x8); KEEP (*(.fini*)) . = ALIGN(0x8); } > REGION_TEXT AT> REGION_TEXT .ramfunc : { __ramfunct_load__ = LOADADDR (.ramfunc); __ramfunct_start__ = .; *(.ramfunc) . = ALIGN(0x8); __ramfunct_end__ = .; } > REGION_TEXT_RAM AT> REGION_TEXT .rodata : { *(.rodata) . = ALIGN(0x8); *(.rodata.*) . = ALIGN(0x8); } > REGION_TEXT AT> REGION_TEXT .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)); PROVIDE_HIDDEN (__preinit_array_end = .); } > REGION_PREINIT_ARRAY AT> REGION_TEXT .init_array : { . = ALIGN(0x8); PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); } > REGION_INIT_ARRAY AT> REGION_TEXT .fini_array : { . = ALIGN(0x8); PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT(.fini_array.*))) KEEP (*(.fini_array*)) PROVIDE_HIDDEN (__fini_array_end = .); . = ALIGN(0x8); } > REGION_FINI_ARRAY AT> REGION_TEXT .ARM.exidx : { __exidx_start = .; *(.ARM.exidx* .gnu.linkonce.armexidx.*) __exidx_end = .; } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX .ARM.extab : { . = ALIGN(0x8); KEEP (*(.ARM.extab* .gnu.linkonce.armextab.*)) . = ALIGN(0x8); } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB __etext = .; .data : { __data_load__ = LOADADDR (.data); __data_start__ = .; KEEP (*(.data)) KEEP (*(.data*)) . = ALIGN (8); __data_end__ = .; } > REGION_DATA AT> REGION_TEXT .bss : { __bss_start__ = .; *(.shbss) KEEP (*(.bss)) *(.bss.*) *(COMMON) . = ALIGN (8); __bss_end__ = .; } > REGION_BSS AT> REGION_BSS .noinit : { /* place all symbols in input sections that start with .noinit */ KEEP(*(*.noinit*)) . = ALIGN (8); } > REGION_NOINIT AT> REGION_NOINIT .heap : { __heap_start__ = .; end = __heap_start__; _end = end; __end = end; KEEP (*(.heap)) __heap_end__ = .; __HeapLimit = __heap_end__; } > REGION_HEAP AT> REGION_HEAP .stack (NOLOAD) : ALIGN(0x8) { _stack = .; KEEP(*(.stack)) } > REGION_STACK AT> REGION_STACK .BCRConfig : { KEEP(*(.BCRConfig)) } > BCR_CONFIG .BSLConfig : { KEEP(*(.BSLConfig)) } > BSL_CONFIG __StackTop = ORIGIN(REGION_STACK) + LENGTH(REGION_STACK); PROVIDE(__stack = __StackTop); }
2.我曾尝试按照指南操作、但在本例中无法正常工作、使用的是 J-Link、评估板上的 XDS110调试探针(LP-MSPM0L1306)连接到定制板上的 MSPM0L1105。
使用 J-Link 时、就会出现错误:
使用 XDS110调试探针:
单击"Force Reset"时:
当我单击"确定"时:
此致。
您好!
SWD 似乎可以访问您的内核、但无法访问 DAP。
您可以检查自己的电路板上的 VCORE 电压吗?
这似乎是由硬件造成的。
此致、
Zoey
您好!
VCORE 的电压为1.347V。 硬件开发指南指出典型电压为1.35V、情况应该不错。
我可以在首次将板连接到 PC 时加载固件、第一次连接后固件会停止连接。
此致。
您好!
很抱歉这么晚才回复。
您的软件对于 MSPM0L1306 LaunchPad 来说是可以的、但如果迁移到自己的工程、它无法正常工作?
看门狗? 有一种可能的条件是、在发送 DSSM 消息时您的 MCU 始终处于复位状态。
请尝试执行以下步骤进行确认:
1.将 PA18上电并使 MCU 进入 BSL 模式。
2.尝试在10秒内下载或恢复出厂设置。
此致、
Zoey
您好!
我的意思是、该软件适用于 MSPM0L1306 LaunchPad、因为我每次都可以对其进行刷写/调试。
但对于定制电路板上的 MSPM0L1105、当我首次刷写/调试时、一切都在运行。 这是我第二次尝试闪存/调试时、MCU 没有响应。
禁用看门狗。 我在"TI 系统配置工具"上启用的唯一模块是 GPIO、SPI、TIMER 和 SYSCTL (SYSCTL 具有所有默认值)。
我尝试了 这些步骤 ,但我得到相同的错误,我显示在上一个答复.
此致
你(们)好
奇怪的是、一旦你下载了项目、那么 MCU 将被锁定。
您是否首次尝试过恢复出厂设置? 然后在第二次尝试连接 MCU。
您能否将电路板的 MCU 器件原理图发送给我们? 让我们首先排除它是否与硬件有关
此致、
Zoey
您好!
这是原理图
此致
您好!
硬件没有问题。 您是否可以尝试按照以下步骤读取 MCU 的状态?
e2e.ti.com/.../Read-CFGAP_5F00_BOOTDIAG.pdf
此致、
Zoey
您好!
我无法读取砖型 MCU 上的这些寄存器、因为我无法连接到 CS_DAP_0 (DAP 连接错误)。
不确定这是否是您需要的结果、但我购买了新出厂的定制电路板并读取该 MCU 上的寄存器。
此致。
您好!
您的 MCU SWD 功能似乎已被禁用。 您是否更改了 NONMAIN?
您好!
否、我未更改 NONMAIN。 如果 NONMAIN 已更改、那不是因为我想更改。
此致。
你(们)好
尝试在 SWDCLK、SWDIO 线路上添加拉电阻、使用2.2K 或4.7K 电阻器上拉至3V。
应使 SWD 线路稳定。
您好!
我尝试了两个电阻、先4.7K、然后是2.2k、但都没有使 SWD 工作。
此致
经过软件和硬件测试后、我们注意到当 IC 处于启用状态时、IC 从机的其中一条 I/O 线路干扰了 SWDIO 引脚、因此我们将更改用于该 I/O 的引脚 感谢您的时间和耐心!