主题中讨论的其他器件:UNIFLASH、 SysConfig、
工具与软件:
客户端有一项要求以完全限制的方式完全锁定调试、因此在 BCR 区域、当我配置为完全限制并将最后一个十六进制文件刷写到 MCU 时、我仍然能够连接和擦除/读取存储器。 我尝试移除并重新连接电源、但仍然是相同的。
这是 BCR 配置的二进制部分、我将使用 JLINK 将二进制文件刷写到 MCU。 BSL 禁用
有人能找出这里的错误
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.
工具与软件:
客户端有一项要求以完全限制的方式完全锁定调试、因此在 BCR 区域、当我配置为完全限制并将最后一个十六进制文件刷写到 MCU 时、我仍然能够连接和擦除/读取存储器。 我尝试移除并重新连接电源、但仍然是相同的。
这是 BCR 配置的二进制部分、我将使用 JLINK 将二进制文件刷写到 MCU。 BSL 禁用
有人能找出这里的错误
Ashish、您好!
理论上、如果将 SWD 安全性设置为级别2、则将禁用应用调试、批量擦除等。 您的意思是、设置之后、您仍然可以读取存储器、您能否帮助读取并检查地址41C00004h 中的值? 我们需要检查闪存中的实际值、而不是您的代码文件中的值。
事实上、如果您要对 NONMAIN 进行编程、您需要在 Keil 中设置某个值、您是这样做的吗?
此致、
Janz Bai
尊敬的 Janz:
感谢您的答复。
我尝试了它与 Keil 和 Jlink 闪存软件,也仍然非主要区域没有更新 (仍然0x41C00004h 是 AABBAABB ),但闪烁没有显示问题或警告,所以只是想知道我错过了任何设置或其他任何东西这里需要配置额外的二进制或 Keil ,
是的、这个非主区域被添加到调试器设置的闪存下载中。
谢谢。此致
Ashish Kumar Verma
Ashish、您好!
1)。 您可以如下所示配置"Options -> Debug->Flash Download":
2)。 然后、您需要执行以下步骤:
此致、
Janz Bai
Ashish、您好!
添加了一点、请检查是否为 NONMAIN 区域设置了写保护。 如果没有、那么在理论上、执行这些步骤应该是成功的。 您也可以尝试直接使用 J-link 和 Keil 进行下载、而不是使用 hex 文件进行下载。 或者、您可以尝试生成 bin 文件或 txt 文件来执行相同的测试。 也可以尝试使用 XDS110进行相同的测试。 这些测试可以帮助您确认问题的位置。
并添加了 boot_config.c 文件、对吧?
此致、
Janz Bai
Ashish、您好!
实际上、我的意思是、将写保护设置为 NONMAIN 可能会导致您无法对 NONMAIN 进行编程。 但现在这并不重要。 如果不想、则不需要为 NONMAIN 设置写保护。 您使用的 hex 文件在 NONMAIN 中似乎具有修改后的值、但在使用 J-Link 和 J 闪存进行闪存之后、未成功修改 NONMAIN。 J Flash 窗口还会显示您已选择所需的闪存区域。 这太奇怪了。 现在、请执行以下测试并告诉我结果:
此致、
Janz Bai
尊敬的 Janz:
我尝试使用 Jlink Flash 而不是 Jlink-Flash lite 进行刷写、现在我知道它不是更新到 BCR 区域、它显示了类似这样的错误、是的、你让我使用 Keil 中的 Load 选项也抛出了错误和
你对此有什么建议吗
还有一个问题:BSL 段不是以十六进制生成的、我是否也必须对其进行配置?
此致
Ashish Kumar Verma
Ashish、您好!
我在我这边做了一些测试。
理论上、如果您已经完成了如下图所示的配置、则可以成功下载代码。 您应该选择所使用的端口、如果可以检测到您的设备、您将在"Device (设备)"窗口中找到它。 如果在窗口中找不到、请检查设备连接。
请注意、如果您使用 正版 J-link、那么您需要一个外部 VCC 为 MCU 供电。 J-link 无法为 MCU 供电。
如果上述信息无法解决您的问题、请尝试更新您的软件。 你可以发送你向我使用的 hex 文件、我可以尝试在我这边进行测试下载。
此致、
Janz Bai
尊敬的 Janz:
很抱歉、可以提供所有二进制文件、因为这是客户端项目、无法披露信息、但我注意到 TI 为 MSPM01306提供的 SDK 中有一项内容"flashctl_nonmain_memory_write"
它们使用属性(place_in_memory (".bCRConfig") )将整个结构放置在文件 boot_config.c 的 BCR 区域地址中。
不仅如此,他们还把 algo 写入 main ()中的 BCR 和 BSL 区域。
当我注释 boot_config.c 代码时、为该段生成了十六进制、但 BCR 区域更新了我在 main ()写入中提供的值、但当我注释 main ()写入函数时、BCR 区域不会更新
是否有办法仅通过十六进制生成来更新 BCR 区域? 我的意思是、不对应用执行任何操作、仅通过 BCR 区域的 J-Link 生成十六进制并进行刷写。 仅限通过应用程序代码更新 BCR 区域的选项。
Ashish、您好!
事实上、您只需在 Sysconifg 中配置 NONMAIN、并根据我之前提到的步骤执行。 我不知道为什么直接使用 Keil 下载代码时会出现错误、以及为什么使用 J Link 和 J Flash 无法帮助您实现此目的。 但是、正如我在之前的回复中提到的、您应该注意到、如果您使用 正版 J-link、那么您需要一个外部 VCC 来为 MCU 供电。 J-link 无法为 MCU 供电。
1.检查您的硬件连接: 如果您使用 正版 J-link、则需要一个外部 VCC 为 MCU 供电。 J-link 无法为 MCU 供电。
2.设置 JLINK 配置 我在前面提到过 :
3.使用 SysConfig 根据需要配置 NONMAIN 区域
4. 首先构建您的项目
5.在构建后添加 boot_config.c
6.再次构建项目并下载
或者、您也可以在构建项目后使用 J Flash 下载 hex 文件。
我使用它
7.我尝试了我自己的一边,我可以根据这些步骤成功地下载代码。 如果您仍然不能、请先尝试更新您的软件。
如果您发现不带 NONMAIN 配置的下载代码也会失败、可以先执行恢复出厂设置。 请参阅此帖子以执行恢复出厂设置。
(+) MSPM0L1105:MSPM0L1105TDGS20R -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
此致、
Janz Bai
是的、Janz、我们也尝试了这些步骤、它显示刷写已完成、但未更新 BCR 区域。
如果您检查已下载的验证代码、则会抛出错误。
与 J-Flash 软件(最新)相同:如果这个区域没有变化,那么它将说完成,但如果我们试图修改该区域,那么它将抛出一个验证问题。 MCU 由外部 VCC (定制电路板)供电。
但是、如果我们通过应用程序更新运行时区域、则表示它有效。
我们在"ti\mspm0_sdk_2_04_00_06\examples\nortos\LP_MSPM0L1306\driverlib\flashctl_nonmain_write\Keil"位置探索了 MSPM0的 SDK 中提供的示例代码
这个示例代码生成二进制文件以写入位置0x4C100000、但作为替代、它也在更新代码以在主应用程序的运行时更新 BCR 区域。
我们必须通过闪存 CMDWEPROTNM 寄存器取消写保护、然后擦除并更新 BCR 区域。
问题来了
是否可以仅通过 JLink 闪存更新 BCR 区域?
我不想在我的闪存区域(0x00000000 - 0x0000FFFF)中添加任何与 BCR 相关的内容。 我的意思是、我不想通过主应用程序更新 BCR 区域。 SWD 将在最终生产中锁定,BCR 区域只会在最后阶段闪存,而不是在开发阶段,我们也不能为它保留宏,因为客户端不想这样做。
抱歉、由于客户合同、我无法共享二进制文件。
如果可能、您能否提供二进制文件和工作区? 我们将尝试刷写和检查相同内容、并对其进行更新。
Ashish、您好!
e2e.ti.com/.../L1306_5F00_GPIO-toggle_2B00_-NONMAIN-modification.zip
Ashish、您好!
事实上,我不知道你的地图为什么与我的不同。 但在您的映射中、大小为0x0、在我的映射中、它有实际的 size 值。 我认为这就是无法正确更新 BCR 区域的原因。 我想您可以尝试部分地将您的代码部分迁移到我与您共享的项目中。 在迁移过程中、您有时可以检查映射以确认没有错误。 因为我不知道您为什么生成这个奇怪的映射文件。
很抱歉、今天我没有时间在这篇文章上为您提供帮助、因为我需要完成一个 DDL 是明天的案例。 因此,只是根据我的回应做测试,如果你有一些关于 Keil 本身的问题,我认为尝试在 Google 上搜索它也是一个很好的方法,如如何生成映射文件等
此致、
Janz Bai