网站建设管理情况汇报,中文网站模板下载免费,手机网站设计公司哪家好,上海市中小企业服务平台文章目录 前言Greenhillls中gsize的用法修改ld文件将lib中的data段指定区域示例定义与链接总结 前言
项目开发过程中#xff0c;遇到客户开发ASW#xff0c;提供Lib进行集成#xff0c;但ASW中的标定量没有定义对应的data段#xff0c;导致无法将标定量指定到特定的内存。… 文章目录 前言Greenhillls中gsize的用法修改ld文件将lib中的data段指定区域示例定义与链接总结 前言
项目开发过程中遇到客户开发ASW提供Lib进行集成但ASW中的标定量没有定义对应的data段导致无法将标定量指定到特定的内存。本文介绍将Lib中的data段链接到指定区域的一种方法。以及当我们拿到Lib后如何获取Lib中的有用信息。
Greenhillls中gsize的用法
gsize用来查看文件中的各个段的大小输入的文件可以是.o文件.a文件lib或可执行文件。 使用方法
Usage: gsize [-table] [-all] [-nototals] file1 [file2 ...]commandfile read in additional options from commandfile-help display this help message-all show all sections. overrides -text -nobss etc-commons display common symbols (ELF only)-count_commons include commons in total size of .bss .sbss-[no]details suppress/display section detail info-[no]totals suppress/display section summary info-table display output in table format-gcompare display output in format suitable for gcompare-text only show text sections. same as -nodata -nobss-notext ignore text sections-nodata ignore data sections-nobss ignore bss sections-zero display zero-length sections当我们拿到一个lib后使用如下方式可以完整读取到lib中的各个文件中的各个段的大小
gsize -all libTest.a打印信息示例如下 最后输出的是整个lib中所占的各个段大小 前面会输出Lib中各个文件的各个段大小 另外可以使用ax -t命令将lib中的.o解压出来
修改ld文件将lib中的data段指定区域
在GHS编译手册中有介绍如何将.o或.a文件中的段链接到指定段如下图所示 注意对于.a和.o不要使用完整路径只用其名称即可 如果我们需要将lib中的所有文件的data段指定到特定段可以按下面的定义 使用*通配符即可表示为lib中的所有文件
示例定义与链接
示例中ASW已有一部分标定量定义到指定的caldata段其他还有一些文件中的data段未映射到data将lib中的其他data段也映射到caldata上。 .caldata :{. ALIGN(4);*(.caldata) . ALIGN(4);libASW.a(*(.data)). ALIGN(4);} ram_cal通过该方式将lib中的data段重映射到caldata段 在未映射时lib中的data段会被分配到默认的data段sram_data地址不是单独的一块区域 重映射后lib中的data数据被映射到caldata段为指定地址 总结
使用该方法有一个弊端就是标定量和观测量若初始化不为0无法区分还是建议将标定量放在单独的文件中这样维护起来更加方便。