三、如何将代码放到Ram中运行

本文详细介绍了嵌入式系统中Flash的0Partion和1Partion结构,以及如何通过静态编译、Link文件配置和启动代码实现代码从Flash到RAM的安全擦除和迁移过程。最后展示了Map文件中的内存映射情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Flash的特性

Flash分为不同的Partion,主要是0 Partion和1 Partion,且0 Partion和1 Partion在整个物理地址中是交互存在的,如下图。所以你的Code既会存在0 Partion中又会存在1 Partion中。但是当你要去擦Flash的时候,如果你的Code完全存在0 partion中,是可以擦1 partion的;反之依然。但一般不是这么存放的,即Code既会存在0 Partion又会存在1 Partion中。所以,当你想去擦Flash的时候,是不可以直接去擦的,目前常规的做法是将Code拷贝到Ram中运行。方法如下:

2.首先将和Flash相关的代码,通过静态编译放到想要的段内,此段为Ram段,如下。

3.在link文件中,将.ramcode段放到对应的Ram分区中,即将代码生成到Ram段,但初始值在对应的Flash中,在上电初始化时,为做Copy动作做准备,如下:

4.在启动代码里做将flash_memory拷贝到int_sram段的动作,如下:

5.最终查看生成的Map文件如下,CddBootFnt_ErsFlDt已经在Ram段内,如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值