代码和数据重新定位
概述
此功能将允许从所需的文件中重新定位.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.c,SRAM1:/home/xyz/zephyr/samples/hello_world/src/main2.c
这个脚本用以下参数调用:in gen_relocate_app.py生成代码
当在prj.conf中启用Kconfig CONFIG_CODE_DATA_RELOCATION选项时,它将调用该脚本并执行所需的重定位。
这个脚本还会触发对linker_relocate.ld和code_reg
本文档介绍了Zephyr内核如何实现代码和数据的重新定位,允许将.text、.rodata、.data和.bss部分放入指定内存区域,通过脚本在不修改代码的情况下实现内存内容的重新排序。详细阐述了脚本的调用、内存区域的定义、以及NOCOPY标志的使用,同时提供了示例说明。
订阅专栏 解锁全文
485

被折叠的 条评论
为什么被折叠?



