Other Parts Discussed in Thread: EK-TM4C1294XL, TM4C123GH6PM, TM4C129ENCPDT, SEGGER
Hello,
I have a strange issue during flash erase/write operations in my project. I'm using TM4C1294NCPDT microcontroller and split it's internal flash to a two equal parts and also I'm using mirror mode. So in my project I do a firmware upgrade procedure which writes data to unused part of flash, thus if firmware has started from lower part of flash (0x00000000) it writes to a upper part (from 0x00080000) and vise-versa.
The issue is it freezing the CPU during FlashErase() or FlashProgram() functions and at this time all core registers has exactly equal value. These functions are from TivaWare 2.1.4.178. I'm trying to use MAP_ versions of these functions with the same results. You can see the issue with MAP_FlashErase() on first picture. The difficult is that if change some code even in other part of project the issue can disappear or appear again.
I've managed to create simple project which demonstrate the same issue and can be run on EK-TM4C1294XL Launchpad board. The project just writes to a flash some counter from 0x90000 till 0x100000. In my setup the issue disappeared if you just comment out
vTaskDelayUntil(&ui32LastTime, 30000 / portTICK_RATE_MS);
and un-comment the next line
//while(1){};
in 'FlashWrTask()' function in 'main.c' file.
To run my project set 'Linker comand file' to 'FlashFailureTest.cmd' on 'Project Properties -> CCS General -> Main' tab. And set TIVAWARE_DIR variable on 'C/C++ Build->Build Variables' tab to your TivaWare path.
The project uses:
- FreeRTOS v9.0.0
- TivaWare 2.1.4.178
- TI v16.9.7.LTC compiler
- CCS 7.2.0.00013
Can anybody help me to determine the root cause of this issue?
Is it possible bug in hardware? I found the similar issue in TM4C123 CPU
With best regards
Dmitry