AnsweredAssumed Answered

What memory block to use (PFB01CR or PFB23CR)?

Question asked by markosiponen on May 21, 2014
Latest reply on Jun 2, 2014 by Jorge_Gonzalez

I'm using a MK10FN1M0VLQ12.

 

I must modify an old function from a previous project that writes to MCU flash (not the same MCU).

 

I have a lot of access to register PFB0CR in my old code.

 

But this register is doubled in MK10FN1M0VLQ12, called PFB01CR and PFB23CR.

 

I don't understand which one I should use. I must write to a region at address 0xFF000 to 0xFFFFF. What memory bank is this?

 

The reference manual says:

 

• For devices with program flash only: 4 blocks of program flash consisting of 4 KB

sectors

 

and

 

• FMC_PFB01CR controls the lower code addresses (blocks 0-1)

• FMC_PFB23CR controls the upper code addresses (blocks 2-3)

 

So is the flash memory (1MByte) divided in four parts so

block 0 = 0x00000000 - 0x001FFFFF

block 1 = 0x00200000 - 0x003FFFFF

block 2 = 0x00400000 - 0x005FFFFF

block 3 = 0x00600000 - 0x007FFFFF

 

And if this is correct I should use PFB23CR?

 

And one more question. Do I still need to invalidate the cache ways?

 

FMC->PFB01CR = PFB0CR_restore | FMC_PFB01CR_CINV_WAY(15);

Outcomes