主题中讨论的其他器件:AM4379
工具/软件:Code Composer Studio
在裸机上使用 AM437x 的最新 PDK 推荐 GCC。 我看到代码将.bss 段清零、但没有任何内容可初始化.data 段(从 ROM 复制到 RAM)。 是否有人可以将我指向执行此操作的代码?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我不确定您使用的模板或示例代码、但传统上您需要:
-在定义目标(VMA)和原始(LMA)地址的.data 存储器段上使用 at>运算符
-在链接器脚本.data 和非易失性存储器段的边界处定义全局符号(__data_start__、__data_end__等)。
-创建在初始化时调用的 C 或 ASM 函数,并使用上面定义的符号复制数据。
我尚未对 CCS 提供的裸机初始化文件(startup_arMCA9.S 和 AM437x.lds,位于 ccs_install_DIR/Ccs/Ccs_base/arm/include 下)执行此操作,但以下 参考文献中的 at (ldadr)部分显示了一个非常通用的示例:
https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_chapter/ld_3.html#SEC21
希望这对您有所帮助、
拉斐尔
Arun、
我对此做了一些工作。 使用 CCS 项目向导中的简单 Hello World 项目(菜单 File -> New -> CCS Project)、我修改了 STARTUP_ARMCA9.S 和 AM437x.lds 文件、以保存从 DDR 到 L3OCMC0的段副本。
请检查所附项目。 我将一个数组(位于文件 testdataset_32kB.h 中)分配给具有不同加载(LMA)和虚拟(VMA)存储器地址的单独存储器段.edata (在 GNU LD lingo 中)。
执行复制的例程位于 STARTUP_ARMCA9.S 内、并使用链接器创建的符号来分隔要复制的存储器范围。
我在 AM4379 IDK 上测试了代码、但它是通用的、也可以在其他 AM437x 开发板上运行。
希望这对您有所帮助、
拉斐尔