flash 的读写
在flash中,首先存放的是BIM,接着是imageA的一部分,接着是完整的imageB,然后才是剩下的imageA. imageA从page1开始 imageB从page8 开始,一共62 个page 每个page可存储2k数据,也就是一共可存54*2=108k数据。 如果不用ota,那么便可以用此空间来存数据。 利用函数TI自带函数 如ota中写flash: addr = oadBlkNum * (OAD_BLOCK_SIZE (数据大小16)/ HAL_FLASH_WORD_SIZE(4)) + HalFlashWrite(addr,pValue+2,(OAD_BLOCK_SIZE / HAL_FLASH_WORD_SIZE)); ota每一包数据包含18个字节,前两个为帧的数量,每传一帧此值加1. 剩下的十六位为数据。上面函数就是将此16位数据存进flash。 写flash是根据地址来写的,每写一帧数据,addr增加4(一帧有16个字节), 读flash,每一次读16个字节?
? ? ? ? ?HalFlashRead(page,offset,&Imgbuf[0],16);//读取 ? ? ? ? ? offset = offset+16;? ? ? ? ? if(offset >=2048) ? ? ? ? ? { ? ? ? ? ? ? offset = 0; ? ? ? ? ? ? FlashPage ++; ? ? ? ? ? } 这里不是很明白, 刚开始FlashPage?不增加,只增加offset ,可以正确读出0x4000个数据,然后出错。改成上述代码之后,能正确读出全部数据。 每个page存储2k字节数据。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |