S32DS使用Tips--S32DS for Power V1.2 链接文件和启动过程详解
0赞
作者按:本文对S32DS for Power V1.2 应用工程的链接文件和启动过程进行了详细介绍,同时也介绍了如何通过应用工程的链接文件(57xx_flash.ld)和启动文件(startup.s)实现用户自定义data和code段以及重定向代码/函数的自动拷贝实现方法和步骤。最后还分享了本文使用的基于MPC5775K单核CPU的S32DS for Power V1.2应用工程,供大家参考学习!
内容提要
引言
1. 存储器分区详解(V1.0的mem.ld文件内容):
2. 编译结果链接放置段详解(V1.0的sections.ld文件内容):
3. 启动文件Start.s修改
4. C文件测试数据和代码
总结
引言
S32DS for PowerIDE是NXP推出的Qorivva MPC57xx系列MCU的软件集成开发环境,其至2016年发布以来,历经3个版本的更新,其基于eclipse的友好界面,提供了强大的代码编辑功能和丰富的调试特性,受到了广大工程师的喜爱。但是,作为一款新的IDE,其基于GNU的工具链开发,对于很多之前使用CodeWarrior IDE的工程师来说,其略显陌生。尤其是那些需要开发BootLoader的工程师来说,了解其链接文件和启动过程,尤为关键。本文就是针对此种需求,以S32DS for Power V1.2为例,对其链接文件和MPC57xx系列MCU的启动过程给大家做一个详细的介绍。
在S32DS for Power V1.0默认创建的工程中有如下3个链接脚本文件作为工程链接器(Linker)控制应用程序的编译结果链接:
Ø "${ProjDirPath}/Project_Settings/Linker_Files/mem.ld"à存储器分区
Ø "${ProjDirPath}/Project_Settings/Linker_Files/sections.ld"à编译结果链接放置
Ø "${ProjDirPath}/Project_Settings/Linker_Files/libs.ld"à用户库链接控制脚本,本例中未使用,为空白
完整的链接文件(Linker file)包含memory{}和section{}两部分。
其中memory{}用于存储器进行分区,而section{}则对编译结果按段(section)进行放置。
Tips: 在在S32DS for Power V1.0默认创建的工程中则默认添加了如下3个链接文件:
Ø "${ProjDirPath}/Project_Settings/Linker_Files/57xx_flash.ld"à编译目标为Debug或者Release时使用的链接文件,其将工程代码编译到MCU的Flash空间,掉电后程序不丢失
Ø "${ProjDirPath}/Project_Settings/Linker_Files/57xx_ram.ld"à编译目标为Debug_RAM时使用的链接文件,其将工程代码编译到MCU的RAM空间,掉电后程序丢失
Ø "${ProjDirPath}/Project_Settings/Linker_Files/libs.ld"à用户库链接控制脚本,本例中未使用,为空白
其中,57xx_flash.ld/57xx_ram.ld包含了S32DS for Power V1.0中的mem.ld和sections.ld两部分。本文以MPC5775K的单核CPU新建应用工程编译目标为Debug的链接文件57xx_flash.ld进行介绍。
由于本文写作是使用copy工程链接文件和启动文件,添加注释的方式进行详解,而微信手机上,限于屏幕宽度会做自动调整,从而会严重影响阅读。因为我将剩下的详解部分做成了PDF文档,并截图插入,这样方便大家阅读:
总结
本文所讲内容,是开发BootLoader必须掌握的知识,希望大家能够熟练掌握。为了帮助大家学习和理解本文知识点,我将本例使用的S32DS for Power v1.2应用工程和之前S32DS for Power v1.0的应用工程上传分享到如下百度云盘,供大家参考:
链接:http://pan.baidu.com/s/1nv86F2L
密码:t0u2
S32DS for Power v1.2工程:
MPC5775K_single_core_test_Z4_1_data_specify_address_V1.2_Z4.zip
S32DS for Power v1.0工程:
MPC5775K_single_core_test_Z4_1.zip