XEP100的Program Flash只能从[2:0] = 000的开始写入4个word,也就是前8个bytes,
而000-FFF总共有4Kbytes,那 8个bytes之后的怎么写呢?
1. Flash每次最小插写单位为8个(或者4个)bytes,一般情况都是8个写一次,比如0x0000写入8个地址;再从0x0008开始写8个bytes;以此类推。还有一种是块写,你1K大小写一次,这个得根据你的上位机是如何解析hex的,很多情况下hex的地址并不是联系的,我用的是第一种方法;
另外还有一个问题,s19中的address,是指的CPU绝对地址吗?还是PPAGE+分页地址?
在XEP100中写flash,ccob寄存器中,
是写PPAGE+分页地址呢?
还是直接写CPU绝对地址呢?
2. s19的地址是逻辑地址,你必须把它转化为全局地址才能写,这个比较麻烦。所有对flash操作的驱动只认全局地址有效;(我指的全局地址是你说的绝对地址,我说的逻辑地址是你说的page分页地址)
还有一个问题,在DG128中,操作Flash的语句要copy到RAM中去执行,
在XEP100中是不是也要这样哦?
3. 我把它copy到RAM中去了,放在RAM一是速度快,而是安全可以避免误操作插写程序。个人认为这个要看你的Bootloader是如何设计的。 |