Zephyr内核——应用模块——代码和数据重新定位

本文档介绍了Zephyr内核如何实现代码和数据的重新定位,允许将.text、.rodata、.data和.bss部分放入指定内存区域,通过脚本在不修改代码的情况下实现内存内容的重新排序。详细阐述了脚本的调用、内存区域的定义、以及NOCOPY标志的使用,同时提供了示例说明。

代码和数据重新定位

概述

此功能将允许从所需的文件中重新定位.text、.rodata、.data和.bss部分,并将它们放在所需的内存区域中。内存区域和文件以字符串的形式提供给scripts/gen_relocate_app.py脚本。这个脚本总是从cmake内部调用。

这个脚本提供了一种健壮的方法来重新排序内存内容,而不需要实际修改代码。简单地说,这个脚本将为一堆文件一起执行 __attribute__((section("name"))) 的工作。

详细信息

内存区域和文件以字符串的形式提供给scripts/gen_relocate_app.py脚本。

这样一个字符串的一个例子是:SRAM2:/home/xyz/zephyr/samples/hello_world/src/main.cSRAM1:/home/xyz/zephyr/samples/hello_world/src/main2.c

这个脚本用以下参数调用:in gen_relocate_app.py生成代码

当在prj.conf中启用Kconfig CONFIG_CODE_DATA_RELOCATION选项时,它将调用该脚本并执行所需的重定位。

这个脚本还会触发对linker_relocate.ldcode_reg

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值