MPC5744P内部Flash相当大,除了存储代码,多余的空间还可以另作它用,例如参数存储,故障存储,当然,Bootloader也是依赖于Flash读写。
内部Flash的结构请参考上一篇关于Flash结构及启动原理的说明:https://blog.csdn.net/u010875635/article/details/85162135
读取:一次读取256位。
擦除:一次擦除一个block,无论是16KB、32KB、64KB抑或256KB
编程:内置flash存储可以通过word(32bits)或者double words(64bits)寻址编程,多个word或double words填充编程页缓存(256bits),使能page编程(256bits,4个double words)或者quadpage编程(1024bits,16个double words)。推荐的编程操作从64bits到1024bits,并且64bits对齐。
flash读写示例:https://download.csdn.net/download/u010875635/10872302
建议将示例中的Flash_Check_g注释掉,以便于支持2个32位数据编程,//ret = Flash_Check_g(startAddr,endAddr);
注意:
1、每组数据不能超过1024bits,否则会被截掉。
2、若是当前程序运行,则此partition不能被擦除,否则会死机。
MPC5744P的Flash按照地址空间分为LOW、MID、HIGH、First256K、Second256K(没有这么多256K空间,因此Second实际上一直是空的)。
LOW--not program, partition 0 and 1 | ||||||||
0x00800000-0x00803FFF | -- | 16KB,EEPROM-low block0, RWW_P:0 | ||||||
0x00804000-0x00807FFF | -- | 16KB,EEPROM-low block1, RWW_P:0 | ||||||
0x00F98000-0x00F9BFFF | -- | 16KB,low flash memory block2, RWW_P:1 | ||||||
0x00F9C000-0x00F9FFFF | -- | 16KB,low flash memory block3, RWW_P:1 | ||||||
MID , partition 2 and 3 | ||||||||
0x00808000-0x0080FFFF | -- | 32KB,EEPROM-mid block0, RWW_P:2 | ||||||
0x00810000-0x00817FFF | -- | 32KB,EEPROM-mid block1, RWW_P:3 | ||||||
HIGH, , partition 4 and 5 |