Other Parts Discussed in Thread: MSPM0G3519, MSPM0C1104, UNIFLASH, MSPM0G3518
器件型号: MSPM0G3519
主题中讨论的其他器件: MSPM0C1104、 UNIFLASH、 MSPM0G3518
您好:
我使用的是 MSPM0G3519 LaunchPad。 我想进行基于 OTA 的固件升级、 我有 2 个代码。 第 1 页是引导加载程序代码、我在其中更改了 linker.cmd 文件中的闪存区域


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.
Other Parts Discussed in Thread: MSPM0G3519, MSPM0C1104, UNIFLASH, MSPM0G3518
器件型号: MSPM0G3519
主题中讨论的其他器件: MSPM0C1104、 UNIFLASH、 MSPM0G3518
您好:
我使用的是 MSPM0G3519 LaunchPad。 我想进行基于 OTA 的固件升级、 我有 2 个代码。 第 1 页是引导加载程序代码、我在其中更改了 linker.cmd 文件中的闪存区域


您好、
我这边的方法看起来不错。


此致、
Zoey
您好、Zoey、
我来到 is_application_valid (),我得到的堆栈= 0x20210000。 因此、正如我所说、If condition 应该为 true、它应该返回 result =1、但我不进入循环、方法是保留断点 I 进行检查、在 If condition 之后、当我进入它时、在 default_handler 中进入一些 while 循环。
我共享的 main() 函数是 bootloader。
您好、
您可以在 ……\ti\mspm0_sdk_2_09_00_01\examples\nortos\LP_MSPM0C1104\bsl\flash_bsl -- flashbsl_invoking.c 中找到演示代码
您好、
我尝试使用 bsl_software_invoke_app_demo_uart 代码、我刷写了代码、一个蓝色的 LED 开始闪烁、我按了 S2、然后绿色的 LED 闪烁并停止、现在我开始闪烁 gpio_toggle_output 代码、即.hex 文件。 编程成功、我现在希望 gpio_toggle 代码可以运行、但它没有运行。 即使重新连接了硼酸盐、也没有运行代码。 电路板损坏了。 再次编程之前、我需要对电路板进行复位。
请帮我解决这个问题。
您好、
您是指成功刷写 MCU?? 您是如何确认的? 您的引导加载程序协议是否与我们的 ROM BSL 相同?
BSL_software_invoke_app_demo_uart 使用我们的 ROM 引导加载程序。 如果您有自己的协议、请参阅
。 并修改演示代码、如 UART 引脚、协议等。 我还附上了 BSL 用户指南以供您参考:
https://www.ti.com/lit/pdf/slau887
https://www.ti.com/lit/pdf/slaae88
我有一个疑问,如果你能清除它。
RightNow 我无法在 Android 中实现应用以获得 BSL 协议,我可以做的是,通过移除蓝牙模块,我可以连接电缆,在那里我可以打开 docklight 并可以发送帧格式。 否则第二种方法是接收.bin 文件、将其存储在仿真 EEPROM 中、然后我可以通过将其转换为适当的 BSL 帧格式来将其发送到 BSL。 只是为了测试、我使用的是小尺寸文件、因此我认为这不是问题。
我将等待您的答复
您好、
现在、我可以进行固件升级。 我正在使用 docklight 发送 BSL 数据包。 我有一个疑问。 ROM BSL 在 UART0 上接受数据包。 我可以将配置更改为任何其他 UART 吗? 还有一点、比如在升级时、发生了任何干扰、那么电路板就无法正常工作。 我想、即使它不会升级到新固件、但我的旧固件应该运行。 因为我在发送新固件之前正在擦除,所以闪存中没有任何内容,所以什么都不起作用。 如何应对这种情况?
您好、
现在、我正在尝试使用辅助 BSL。 但此代码没有在电路板上闪烁。 这是什么代码? 以及如何测试这段代码。 此代码能否解决我在固件升级中遇到的问题? 我在刷写代码时遇到以下错误。
闪存编程器:无效的批量擦除命令
文件加载程序:存储器写入失败:闪存编程器:错误、尝试在不擦除的情况下写入 NONMAIN!
GEL:文件:C:\Users\dibyarekha\workspace_ccstheia\secondary_bsl_uart\Debug\secondary_bsl_uart.out:加载失败。
您好、
很抱歉晚才回复。 我在个人休假后才回到办公室。
ROM BSL 正在 UART0 上接受数据包。 我可以将配置更改为任何其他 UART 吗? [/报价]那么您是对的。 ROM BSL 仅支持 UART0。 如果您想使用其他 UATR、请使用辅助 BSL 或 BSL 插件
因为我在发送新固件之前要擦除、所以闪存中没有任何内容、所以什么都不起作用。 如何处理此问题?MSPM0G3519 支持双组。 您只能升级唯一的银行。 并将旧固件保留在另一组中。 在辅助 BSL 中、可以添加超时功能。 如果主机卡住、则目标可以跳转到旧版本进行运行。
[/quote]
您好、
辅助 BSL 未从 0x0000 开始。 因此、您可以尝试读取地址、看看 0x2000 是否具有相关代码。

为什么无法再次加载:
在此演示代码中、启用了受静态闪存保护的功能。 在这种情况下、正常闪存(批量擦除)无法工作并更改相关闪存。 您应该执行恢复出厂设置 e2e.ti.com/.../7674.Factory-reset_5F00_Auto.pdf

您好、
我尝试这样做、但在调试时遇到错误。 请检查随附的文件。
错误:(错误–1001 @ 0x0)此器件不支持所请求的操作。 (仿真包 20.4.0.3835)
停止目标 CPU 时出现问题:设备连接错误。 这可能是由于器件进入低功耗模式。 尝试按下“Force Reset“(强制复位)按钮强制进行外部复位。 如果错误仍然存在、请尝试:1) 调用 BSL、2) 调用 DSSM 批量擦除、或 3) 调用 DSSM 恢复出厂设置。 有关更多信息、请查看器件常见问题解答。
断点管理器:删除作业失败:注册/内存写入失败[22005]e2e.ti.com/.../bootloader_5F00_code.txt
当我尝试读取 0x00058000 时、 buffer[0]=*(uint32_t *)(TEMP_BASE + offset);此行进入 default_handler、我不理解原因。
您可以在这里检查一下
1.您需要注意的是使用 uint32_t 指针读取数据、地址 TEMP_BASE +偏移量应为 4 字节对齐。
2.确保 TEMP_BASE + OFFSET 不超过 MSPM0G3519 的最大地址 0x0007FFFF
3.您可以尝试 添加 Fault_Handler 以查看是否因此导致缺省处理程序
我还尝试使用 MSPM0G3519 运行以下代码、在 myside 没有问题、因此代码格式应该没有问题。

您可以尝试这个工程
确保您的器件是 MSPM0G3519、而不是 MSPM0G3518。
您提到的问题仍然没有
将数据从 0x00058000 复制到 0x00008000 后、复位不起作用、我正在执行 JUMP_TO_application。
您好、
我解决了这个问题。 我昨天只犯了个错误。 使用写入 0x00008000
我还需要您的帮助、我将.bin 文件转换为十六进制、并使用 docklight 通过 UART 发送十六进制字节。
我的目标是使用蓝牙发送文件。 现在、在这个 Launchpad 中、为了通过 docklight 发送十六进制字节、我使用了 uart0。 但我已将蓝牙连接到 UART1。 那么、如果我使用 uart1 也能实现同样的效果、这会不起作用?
二次怀疑
如何通过蓝牙发送.bin 文件?
气象蓝牙会以十六进制字节的形式发送.bin 文件、还是需要使用外部软件将.bin 转换为十六进制字节并通过蓝牙传输?
我正在将.bin 文件转换为十六进制、并使用 docklight 通过 UART 发送十六进制字节。
CCS 可直接生成 HEX 或 TI-TXT 格式、便于轻松处理。
我的目标是使用蓝牙发送文件。 现在、在这个 Launchpad 中、为了通过 docklight 发送十六进制字节、我使用了 uart0。 但我已将蓝牙连接到 UART1。 因此、如果我使用 uart1 执行同样的操作、它会有效吗?
您是指使用 MSPM0 的 UART1 将固件发送到蓝牙器件吗?
如何通过蓝牙发送.bin 文件?
请参阅此 使用 1G 的 www.ti.com/.../slaa721e.pdf。
天气蓝牙会将.bin 文件发送为十六进制字节、还是需要使用外部软件将.bin 转换为十六进制字节并通过蓝牙传输?
在我们的演示代码中、使用 CCS Generate TI-TXT 格式固件、然后将其转换为可由 C 代码调用的头文件。 我们提供了 python 脚本来将固件转换为头文件。
我的意思是、是必须使用 uart0 发送十六进制字节、还是还可以使用 uart1?
没关系。 UART1 也可以。
.hex 文件我尝试使用 uniflash 刷写、但它不起作用。
尝试以下方法来生成十六进制文件