打印

[应用方案] 如何实现实现启动任意地址上的固件:

[复制链接]
130|3
跳转到指定楼层
楼主
 楼主 | 2019-11-28 18:59 | 只看该作者 |退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
背景:
我用自定义协议, 通过 USB VCOM下载固件 FMC_APROM_SIZE/2 的位置.

问题:
1. 如何 下载完毕后就自动加载此位置上的固件.
2. 如何在下次开机时, 如何加载FMC_APROM_SIZE/2地址上的固件.
3. 如果下次升级, 固件放在位置 FMC_APROM_BASE地址上了, 那么M453在启动时, 如何知道当前应到的是那个地址上的固件呢.

使用特权

评论回复
沙发
 楼主 | 2019-11-28 19:01 | 只看该作者
void check_firmware_reload(void)
{
    uint32_t u32Now = FMC_GetVECMAP();         
    log_info(LOG_ERR, "[%d] indexFW=%d, u32Addr=0x%0x  u32Now=0x%x", fw_test_idx++, flash_partion.idx_used, flash_partion.addr_used);
    delay_ms(100);   
   
    if (flash_partion.idx_used != 0)
    {
        FMC_SetVectorPageAddr(flash_partion.addr_used);
        SYS_ResetCPU(); //PC直接指到 0的地方重新执行程序
        while (1);
    }
}
这是我实现的部分代码, 不能实现我的预想, 应该怎么做呢?

使用特权

评论回复
板凳
| 2019-11-29 11:23 | 只看该作者
搞个计数写入闪存,用于记录第几次开机?;蛘呤欠裎仄?,有个标志的,不同复位类型是不一样的标志

使用特权

评论回复
地板
| 2019-11-29 11:24 | 只看该作者
可以查看sys那个例子

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表
快3注册邀请码tt 松原市| 黎平县| 大英县| 龙井市| 皋兰县| 伊宁市| 民和| 福清市| 铜山县| 新乐市| 华坪县| 织金县| 定边县| 荆州市| 镇沅| 九寨沟县| 措美县| 武穴市| 鄂伦春自治旗| 五大连池市| 理塘县| 高台县| 桐庐县| 大连市| 界首市| 新晃| 木兰县| 新蔡县| 英山县| 鹤庆县| 谷城县| 福建省| 丹巴县| 伊川县| 黄平县| 安庆市| 崇明县| 惠水县| 凤城市| 华池县| 临汾市|