TI中文支持网
TI专业的中文技术问题搜集分享网站

关于大数据量转存至内部FLASH的问题

    我现在直接使用SNV读写函数可以实现,但是可转存的数据量比较小,函数osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf) 中的每个id中可以存储的数据为252个字节(不知道为什么,自己测试得出的结果,虽然该函数的len类型是uint8_t,这个类型可以修改么?),然后就是有0x80–0x8F共15个id可供使用,也就是3780个字节(约3KB),上述我的理解对么?(貌似SNV里面还有为bonding预留的存储空间)

   但是假如我想读写的数据量比较大(比如10KB)如何实现呢?一个flash page 4KB,假如使用函数 FlashProgram(uint8_t *pui8DataBuffer, uint32_t ui32Address, uint32_t ui32Count),这个ui32Address的地址空间范围哪些可控用户使用呢?还是直接参考编译以后生成的map文件中所给出的哪部分flash空间没有使用的话,该部分就可以使用?

summer xu:

空中升级固件里边用的是HalFlashWrite这个函数,不过你是不是需要考虑在写入的时候不能覆盖现有程序?没弄过,仅供参考。

xianglin dong:

回复 summer xu:

对啊,肯定不能覆盖啊,覆盖以后代码就挂了哦。我是为了存储用户数据的,急等TI官方给个解决办法啊

cedar_xuesong:

1: 在链接脚本里面保留对应的FLASH地址空间,留作数据用

2: 直接操作寄存器来擦除,写入FLASH数据

3: 写FLASH时,注意地址的问题,最后两bit不用

4: 读FLASH时,注意页切换机制,先切换内存页,然后再读FLASH数据

用DMA来读就可以了

赞(0)
未经允许不得转载:TI中文支持网 » 关于大数据量转存至内部FLASH的问题
分享到: 更多 (0)