OTA升级时的存放地址时0x7000,看手册里在CodeFlash的地址区间内,但是程序中说的是在DataFlash,是我理解的有问题吗?
您好,区分用的是codeflash还是dataflash,主要看接口函数名,codeflash 与 dataflash 分为两组接口,详见EVT包中的FLASH例程。
codeflash的基地址为0,dataflash 的基地址为0x70000。接口函数中已在flash操作库中添加好了基地址,用户调用接口时只需关心偏移地址。
所以操作codeflash的函数是FLASH_ROM_WRITE,操作dataflash的是EEPROM_WRITE。请问是这样嘛?
对的,是这样的,不过上面的OTA_DATAFLASH_ADD是用来存放ota标志的,并不是用来放ota的程序的,所以地址是dataflash的。
现在遇到一个问题,我移植了一个文件系统进去,操作的是codeflash,但是因为文件系统源码是按照下图操作的
由于codeflash的擦除后是不经过加解密的,但是读是有加解密,这样就导致下载程序时清空codeflash后,我在初始化文件系统时读出来的数据不是FF,文件系统进行合法性检查,检查后报错。这有什么办法解决吗,或者说贵司有无提供相应的操作codelfash的文件系统。谢谢!
codeflash操作会进行加密,如果没有写的话也就是没有进行加密的过程,但是读的话进行了解密。所以在擦了之后读出来的数据是a9 bd f9 f3,实际上是擦除成功的。
因此可以尝试修改你的操作系统,在没有写的情况下,判断为上述的数据则为成功。
这里的操作系统不止需要修改一个地方,整体的逻辑都需要修改,太麻烦了。贵司有没有提供操作codeflash的文件系统呢
目前暂无专门的操作codeflash的文件系统demo提供参考。