keil的分散加载实例(cm3)

在下这厢有礼了。

平台:Keil工程

需求:分散加载(为了将函数放到指定的内存上)

操作:

1. 首先,你有个keil工程,你想将其中一个或者几个函数加载到指定地址上;

2.打开keil工程,Alt+F7进入配置选项

3.点击Linker,

操作上面4步后就可以去写*.sct的分散加载文件了。

4. 实例介绍,比如

添加函数将她放进flash地址里面。

这是添加的函数flash_patch_func_1.c 另一个是脚本project.sct

#include<stdio.h>

void modify_function()
{
	printf("这个函数我想放到0x00400000");
}
LR_IROM1 0x08000000 0x00080000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

FLASH_DOWNLOAD 0x00400000 0x1000 {
	FLASH_DOWNLOAD_ROM 0x00400000 {
	flash_patch_func_1.o (+RO)
	}
}

5.生成两个bin 或者一个bin

keil配置的user里面写脚本

C:\Keil\ARM\BIN40\fromelf.exe --bin -o "$L@L.bin" "#L"
这个配置可以生成两个bin

C:\Keil\ARM\BIN40\fromelf.exe --bincombined -o "$L@L.bin" "#L"
这个配置联合生成一个bin

 


个人理解说明,仅供参考;

目前,工作中经常会用到Keil工具,因此做一个小结;keil中最重要的是配置,我最关心的是ROM和RAM地址的编写,根据硬件工程师给的memory的分布表去设置这块。

而对于一个软件工程来说,你的代码有 数据段(数据(+RW))、代码段(指令(+RO));因此,数据段存放在SRAM中,代码段存放在ROM段中;但是SRAM也可以存放代码段的东西。

CPU有I-code和D-code;I-code用于指令的取指;D-code用于数据的取数。

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值