最近摸了好久,发现这个东西真的难,
MHCP 这套16bit 体系flash的擦写操作,分为ICSP和RTSP两种方式,前者就是常见的官方pickit/ICD编程烧写操作时序。而后者是为bootload或者数据保存自擦写准备的,运行过程中的擦写操作。
RTSP flash读很简单,速度也很快。
但是RTSP擦写就是各种坑了。看了编程手册和datasheet发现这货在写入之前必须进行擦除操作,而擦除的最小擦除单位是一个page,不是一个row。那么一个page是多大呢,大概一千多words吧。摔QQQQ!!!!
然后,擦完了一页,就可以写入了,每次可以按row写32/64个words;也可以按双字节写,每次写一个指令字word。而且你在flash读取里看,发现因为这货24bit的指令字位宽,实际你每个指令字能使用的只有低端16bits,高位8bits是浪费的,不能用。擦了就是保持ff。