本帖最后由 JasonLee27 于 2020-12-29 15:07 编辑
软件环境:keil 5.23硬件环境:AC7811通用开发板
分享个动态加载flash驱动的工程。
附件里面有两个工程,一个用于生成flash驱动,一个用于测试,因为没有实现通信,所以生成的flash驱动文件,我用bin2c把它转换成了数据放在flash.h中,然后导入到测试工程。
测试的流程如下:
将data里面的flash驱动拷贝到flashDriverStartAdd起始的SRAM中,然后修改前面的偏移地址。
在下面就可以使用flash驱动里面的函数进行擦写操作了,通过仿真可以查看擦写的页的状态。
memset((uint8_t *)flashDriverStartAdd, 0, sizeof(data));
memcpy((uint8_t *)flashDriverStartAdd, data, sizeof(data)); ///<copy driver
tmp = (uint32_t *)flashDriverStartAdd;
for(i=0; i<sizeof(tFlashOptInfo)/4; i++)
{
// tmp[i] -= 0x410;
tmp[i] += (uint32_t)flashDriverStartAdd;
}
g_pstFlashOptInfo = (tFlashOptInfo *)flashDriverStartAdd;
if (STATUS_SUCCESS != g_pstFlashOptInfo->FLASH_EraseSector(0, 0x08010000, 0x800)) ///<
{
printf ("line%d: eflash error\r\n", __LINE__);
}
for (i=0;i<512;i++)
{
wBuff[i] = i;
}
if (STATUS_SUCCESS != g_pstFlashOptInfo->FLASH_Program(0, 0x08010000, 0x800, (const uint8_t *)wBuff)) ///<
{
printf ("line%d: eflash error\r\n", __LINE__);
}
eflash.rar
(838.04 KB)
|