主题中讨论的其他器件:test2.
您好专家
客户希望将 MCU 闪存的一位从 1 更改为 0、但获得一些有趣的测试结果、下面介绍了背景和问题:
背景:他们想要更改 GPIO0 设置为高电平 将配置为 GPIO0 设置为低电平 编写一个新的脚本、以便他们更改代码、然后构建固件。 其结果是发现与中只有一位变化 0x0201 最终目的 0x0200 ,所以他们想尝试是否可以在他们的应用代码中使用闪存 API 直接更改闪存,以实现这种修改。
因此、我与客户一起进行以下测试:
TEST1:将 0x0201 更改为 0x0200:
我调用的闪存 API 为:
Fapi_issueProgrammingCommand ((Uint32 *) 0x825e3、&BufferIO、1、0、0、Fapi_Data Only);
步骤 1:在没有闪存 API 的情况下测试 GPIO 切换 — 正常切换 GPIO
步骤 2:在切换 GPIO 之前添加闪存 API Fapi_issueProgrammingCommand、重新编译工程。
第 3 步:可以观察到闪存数据发生变化、但当汇编代码运行到 GPIO 代码时、GPIO 仍然像第 1 步一样切换、没有任何变化。
步骤 4:对电路板进行下电上电、使用 XDS 将电路板连接到 PC、通过 CCS 加载符号、GPIO 代码经确认更改为 0x0200、但 GPIO 仍按步骤 1 切换、没有任何更改。
测试 2:将 0x0201 更改为 0x0000:
执行步骤 1-4、器件将报告 ECC 问题并跳转到非法处理程序。
测试 3:在禁用 ECC 的情况下将 0x0201 更改为 0x0200(由客户测试):
测试结果与 test1 相同。 在我这边、即使我更改 ECC_Enable 字节托 0xB、程序运行时也会返回到 0xA。
测试 4:在禁用 ECC 的情况下将 0x0201 更改为 0x0000(由客户测试):
测试结果与 test2 相同。 在我这边、即使我将 ECC_Enable 字节更改为 0xB、程序运行时也会返回到 0xA。
因此、根据以上测试、问题如下:
- ECC 自动校正功能是否会使 GPIO 即使闪存数据已更改、也仍然切换?
- 在手动禁用 ECC 的情况下、为什么 ECC 功能和 ECC 错误仍由 MCU 生成?
谢谢
Joe

