1. Arm Compiler链接器调用图功能深度解析
在嵌入式系统开发中,理解函数调用关系对代码优化和调试至关重要。Arm Compiler的armlink工具提供了强大的调用图生成功能,下面我们深入探讨其技术细节和实际应用。
1.1 调用图基础配置
调用图功能通过--callgraph选项启用,默认输出HTML格式。基本命令格式如下:
bash复制armlink --callgraph --callgraph_output=html input.o -o output.axf
HTML格式输出包含交互式元素:
- 可折叠的函数调用树
- 函数名搜索功能
- 调用关系可视化连线
- 函数属性标注(如弱引用、库函数等)
文本格式则更适合脚本处理:
bash复制armlink --callgraph --callgraph_output=text input.o -o output.axf
1.2 高级调用图控制
1.2.1 符号子集分析
对于大型项目,可以使用--callgraph_subset聚焦关键函数:
bash复制armlink --callgraph_subset=main,app_entry --callgraph_file=critical_path.htm *.o
典型应用场景包括:
- 验证关键路径是否符合预期
- 分析中断处理函数的调用链
- 检查特定模块的接口使用情况
1.2.2 符号类型过滤
通过--cgsymbol控制符号包含范围:
bash复制armlink --cgsymbol=globals --callgraph # 仅分析全局函数
可选参数对比:
| 参数值 | 包含内容 | 适用场景 |
|---|---|---|
| all | 全局和局部函数 | 完整调用关系分析 |
| globals | 仅全局函数 | 模块间接口分析 |
| locals | 仅静态函数 |
