用户和程序存储器 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文

用户和程序存储器表示运行已编译的可执行文件所需的所有存储器。按照约定,这包括用于存储指令、只读数据、读写数据、程序栈和程序堆的存储器。这些节可以存储在系统中的任意可寻址存储器中。默认情况下,编译器会生成代码和数据,这些代码和数据从 预留存储器 的表中所列的地址开始,并占用连续的存储器位置。这是程序最常用的存储器布局。您可通过在连接器中定义符号 _TEXT_START_ADDR(用于 MicroBlaze)和 START_ADDR(用于 Arm)来修改程序的起始位置。

在特殊情况下,您可跨不同存储器来对 ELF 文件的各节进行分区。此操作是使用连接器命令语言来完成的,欲知详情,请参阅 连接器脚本。以下罗列了几种您可能想要更改可执行文件的存储器映射的情况:

  • 跨多个较小的存储器对大型代码段进行分区时
  • 将频繁执行的节重新映射到快速存储器
  • 将只读区段映射到非易失性闪存

对于可执行文件的分区方式并不适用任何限制。分区可以在输出节级别完成,或者甚至可以在个别函数和数据级别完成。生成的 ELF 可以不连续,即在存储器映射中可能存在“孔隙”。请确保不使用已记录的预留位置。

或者如果您是高级用户,也可以修改工具为预留的存储器位置提供的默认二进制数据。在此情况下,您必须替换连接器提供的默认启动文件和存储器映射。