Hi,
I am encountering a machine check exception when programming the internal flash on a MPC5745R using Core0 and I don't know why this happens.
The software is located in a section between 0x00FA0000-0x00FFFFFF and it tries to install a bootheader in 0x00F9C000. Just some instructions after a write or erase in this ROM area will raise the machine check exception.
Writing to a section located in 0x01000000-0x01280000 is no problem at all.
The c55fmc driver is used from the SDK to program the internal flash.
Memory protection has been disabled so it is sure this does not trigger the exception.
A peculiar thing is this software is running successfully when running on Core1 which does not have dual lockstep support. Because the safety level of the software we have to run this on Core0 using its dual lockstep feature.
What could be the cause of this machine check exception?
See below some usefull register values and attached is a complete register dump.
mcsr 0x10000
srr0 0xfa71ae
srr1 0x9000
mcsrr0 0xfb84c0
mcsrr1 0x9000
mcar 0
Solved! Go to Solution.
Hi,
this is caused by Read-While-Write (RWW) error, most likely.
RWW is supported only between partitions. It is not possible to access a partition while it is being programmed or erased.
This is a screenshot from Memory_Map_Tables.xls which can be found attached inside the reference manual:
Address 0x00F9C000 is in Partition 1 and the code is obviously running also from Partition 1.
Regards,
Lukas
Hi,
this is caused by Read-While-Write (RWW) error, most likely.
RWW is supported only between partitions. It is not possible to access a partition while it is being programmed or erased.
This is a screenshot from Memory_Map_Tables.xls which can be found attached inside the reference manual:
Address 0x00F9C000 is in Partition 1 and the code is obviously running also from Partition 1.
Regards,
Lukas
Hi Lukas,
Thanks for you quick reply. This seems to be problem indeed.
Moving this piece of software to another partition solves the problem.
When the software was running on Core1, the code was very different and the part that installed the bootheader was linked into partition 0. So it looks like the software worked by accident back then. :smileyhappy:
Kind regards,
Andre