[学习笔记] 动态加载eflash进行flash编程

[复制链接]
1383|1
 楼主| JasonLee27 发表于 2020-12-29 15:07 | 显示全部楼层 |阅读模式
本帖最后由 JasonLee27 于 2020-12-29 15:07 编辑

软件环境:keil 5.23硬件环境:AC7811通用开发板

分享个动态加载flash驱动的工程。

附件里面有两个工程,一个用于生成flash驱动,一个用于测试,因为没有实现通信,所以生成的flash驱动文件,我用bin2c把它转换成了数据放在flash.h中,然后导入到测试工程。
测试的流程如下:
将data里面的flash驱动拷贝到flashDriverStartAdd起始的SRAM中,然后修改前面的偏移地址。
在下面就可以使用flash驱动里面的函数进行擦写操作了,通过仿真可以查看擦写的页的状态。
  1.    memset((uint8_t *)flashDriverStartAdd, 0, sizeof(data));
  2.     memcpy((uint8_t *)flashDriverStartAdd, data, sizeof(data));  ///<copy driver
  3.     tmp = (uint32_t *)flashDriverStartAdd;
  4.     for(i=0; i<sizeof(tFlashOptInfo)/4; i++)
  5.     {
  6.       //  tmp[i] -= 0x410;
  7.         tmp[i] += (uint32_t)flashDriverStartAdd;
  8.     }
  9.    
  10.     g_pstFlashOptInfo = (tFlashOptInfo *)flashDriverStartAdd;
  11.     if (STATUS_SUCCESS != g_pstFlashOptInfo->FLASH_EraseSector(0, 0x08010000, 0x800))  ///<
  12.     {
  13.         printf ("line%d: eflash error\r\n", __LINE__);  
  14.     }
  15.     for (i=0;i<512;i++)
  16.     {
  17.         wBuff[i] = i;
  18.     }
  19.     if (STATUS_SUCCESS != g_pstFlashOptInfo->FLASH_Program(0, 0x08010000, 0x800, (const uint8_t *)wBuff))  ///<
  20.     {
  21.         printf ("line%d: eflash error\r\n", __LINE__);  
  22.     }




eflash.rar (838.04 KB, 下载次数: 206)

caigang13 发表于 2021-1-6 08:10 来自手机 | 显示全部楼层
学习了,感谢楼主分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

415

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部