打印
[学习笔记]

动态加载eflash进行flash编程

[复制链接]
968|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驱动里面的函数进行擦写操作了,通过仿真可以查看擦写的页的状态。
   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)

使用特权

评论回复

相关帖子

沙发
caigang13| | 2021-1-6 08:10 | 只看该作者
学习了,感谢楼主分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

415

帖子

11

粉丝