赞
踩
因为需要对Flash做CRC校验,第一步先把flash数据读出来。
代码如下所示
- #include "ac780x_eflash.h"
- #include "string.h"
- #define TestSize 1024 ///< 4K
- #define TestAddressStart 0x08000000
- uint8_t Data[7000];
- int main(void)
- {
- unsigned int i = 0;
- InitDebug();
- EFLASH_UnlockCtrl();
- EFLASH_Read(TestAddressStart, (uint32_t *)Data, TestSize);
- EFLASH_Read(TestAddressStart + TestSize, (uint32_t *)Data + 256, TestSize);
- EFLASH_Read(TestAddressStart + TestSize * 2, (uint32_t *)Data + 256 * 2, TestSize);
- EFLASH_Read(TestAddressStart + TestSize * 3, (uint32_t *)Data + 256 * 3, TestSize);
- EFLASH_Read(TestAddressStart + TestSize * 4, (uint32_t *)Data + 256 * 4, 304);
- EFLASH_LockCtrl();
- printf("0x8000000 ");
- while (i < TestSize * 5 + 304)
- {
- printf("%02x", Data[i]);
- i++;
- if (i % 16 == 0)
- {
- printf("\r\n0x%7x ", 0x8000000 + i);
- }
- }
-
- while (1)
- {
- }
- }
每次读取数据不要太多,太多会导致程序无法运行,这里测试到1024即可,后续请读着自行测试。
缓存数组尽可能放大一点,否则程序无法执行,我开到6400发现无法运行就放到了7000。
因为地址被强转为32位,所以每次增加首地址需要加256,即256*4=1024。
最后不足1024个数从ATCLinkTool查看总共数据,减去第72行的(uint32_t *)Data + 256 * 4即可。
最后4位是CRC,所以减去这4位用来计算FLASH的CRC值
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。