Hi Daniel,
Thanks for your reply.
I found below defines in ".icf" file:
define symbol __ICFEDIT_region_RAM_start__ = 0x1fff0000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFF0;
I used "0x1fff0000" as start address for my test code, kept incrementing it until address "0x2000FFF0" is reached, and ran below pseudo test code on all the RAM addresses/locations starting from address "0x1fff0000" up-to "0x2000FFF0".
Please refer below pseudo code that i tried:
_int_disable();
_task_stop_preemption();
//take "backup" of original data present at test RAM location so that we can restore the test RAM location with it later.
//write test pattern to RAM location.
//Read RAM data and compare with test pattern written.
//If read value of RAM data matches the test pattern; SUCCESS.
//If read value of RAM data does not match the test pattern; FAILURE.
//Restore the test RAM location data that was taken as "backup" previously.
_task_start_preemption();
_int_enable();
Repeat above pseudo code for next RAM location.
This way I was able to access the entire SRAM (From 0x1fff0000 to 0x2000FFF0) and could run my test successfully.
I verified that my test pattern was actually getting written in RAM addresses by monitoring the RAM contents in IAR IDE.
I have created one low priority Task using "_task_create()" MQX API and I am running above test code from this Task periodically. MQX RTOS is running and other application specific high priority Tasks are also running.
I did not see any data corruption happening. I am disabling interrupts (_int_disable() ), stopping task preemption (_task_stop_preemption() ) and restoring original RAM contents as soon as test pattern is verified, so looks like the possibility of data corruption is eliminated, correct?
Do you see any problem with this approach?
Kindly let me know your thoughts on this.
With Best Regards,
Swapnil