Machine check exception when writing to internal flash

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Machine check exception when writing to internal flash

Jump to solution
1,186 Views
andreheinemans
Contributor II

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   

Tags (2)
1 Solution
1,049 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

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:

pastedImage_2.png

Address 0x00F9C000 is in Partition 1 and the code is obviously running also from Partition 1.

Regards,

Lukas

View solution in original post

2 Replies
1,050 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

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:

pastedImage_2.png

Address 0x00F9C000 is in Partition 1 and the code is obviously running also from Partition 1.

Regards,

Lukas

1,049 Views
andreheinemans
Contributor II

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

0 Kudos
Reply