主题中讨论的其他器件: EK-TM4C1294XL、 TM4C123、 TM4C123GH6PM、 TM4C129ENCPDT、 SEGGER
您好!
在我的项目中执行闪存擦除/写入操作期间、我遇到了一个奇怪的问题。 我正在使用 TM4C1294NCPDT 微控制器、将其内部闪存拆分为两个相等的部分、同时我还在使用镜像模式。 因此、在我的项目中、我执行固件升级过程、将数据写入闪存的未使用部分、因此、如果固件从闪存的较低部分(0x00000000)启动、则写入较高部分(从0x00080000开始)、反之亦然。
问题是在 FlashEras()或 FlashProgram()函数期间冻结 CPU,此时所有内核寄存器的值完全相等。 这些函数来自 TivaWare 2.1.4.178。 我尝试使用这些函数的 MAP_版本、结果相同。 您可以在第一张图片上看到 MAP_FlashEras()的问题。 困难的是、即使在项目的其他部分更改某些代码、问题也会消失或再次出现。
我成功创建了演示相同问题的简单项目、可以在 EK-TM4C1294XL Launchpad 板上运行。 该项目只会将某个计数器从0x90000写入到0x100000。 在我的设置中、如果您只是注释掉、问题就会消失
vTaskDelayUntil (&ui32LastTime、30000 / portTIk_RATE_MS);
并取消注释下一行
//while (1){};
在'main.c'文件中的'FlashWrTask()'函数中。
e2e.ti.com/.../FlashFailureTest.zip
要运行我的项目、请在'Project Properties -> CCS General -> Main'选项卡上将'Linker comand file'设置为'FlashFailureTest.cmd'。 并将'C/C++ Build->Build Variables'选项卡上的 TIVAWARE_DIR 变量设置为您的 TivaWare 路径。
该项目使用:
- FreeRTOS v9.0.0
- TivaWare 2.1.4.178
- TI v16.9.7.LTC 编译器
- CCS 7.2.0.00013
有人能帮我确定此问题的根本原因吗?
硬件中是否可能有错误? 我在 TM4C123 CPU 中发现了类似的问题
此致
Dmitry



