- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
性能分析 议程 代码和数据的大小 ARMulator 周期计算 ARMulator 实时仿真 其他 ARMulator 的问题 编译器的优化级别 C/C++ 编译器的优化级别是可以选择的. -O0 (debug版的默认值, -g) 除了一些简单的代码转换之外,关闭了大部分的优化 有最好的调试信息,是没有优化的代码. -O1 大部分的优化. 带有满意的调试信息,同时有好的代码密度. -O2 (默认) 全部优化. 有限的调试信息,但有最好的代码密度. 代码密度和执行速度的平衡可以使用选项-Ospace (默认) 或 –Otime来选择. 利用 -g 选项来包括源代码调试信息. 应用代码和数据的大小 armlink 提供两个可选择项来提供相关的信息: -info sizes (所有目标的大小) -info totals (总体大小) 其他大小的考虑 连接器的输出表明了应用最小的ROM和RAM的需求. 栈和堆需要额外的RAM空间. 把栈放在零等待状态-32 位的片上内存将比在8位或16位上的片外内存性能更高. 你也可以把代码从ROM里拷贝到RAM里运行,这样将增加RAM空间. ELF文件的代码/数据的大小可以使用以下选项得到: fromelf -z. 库文件的代码/数据的大小可以使用以下选项得到: armar -sizes. 练习 1 在这个练习部分,我们将看到,C编译器的不同优化级别对于一些简单的应用代码的影响. (the Dhrystone 2.1 benchmark) 这些信息是连接时用-info totals 选项时得到的. 议程 代码和数据大小 ARMulator 周期计算 ARMulator 实时仿真 其他 ARMulator 问题 周期计算 (1) ARMulator 可以通过执行应用程序来计算周期. 可以产生Sequential, Non-sequential, Coprocessor 等周期信息. 可以使用调试器来显示: print $statistics (armsd / ADW / ADU / AXD), 或者View?Debugger Internals (ADW / ADU / AXD) 对消逝的(增加的)周期计算的输出: View?Debugger Internals 或者 print $statistics_inc_w (ADW/ ADU), 或者 View?Debugger Internals?Add New Reference Point (AXD) 你可以使用这些信息来分析子程序的调用问题. 周期计算 (2) 例子输出 (ARM7TDMI) 练习部分 2 这一部分里,我们可以看到由ARMulator产生的周期信息. 我们将比较两种不同的内存拷贝的性能,一种使用LDR/STR指令,令一种使用LDM/STM(IA) 指令. 议程 代码和数据大小 ARMulator 周期计算 ARMulator 实时仿真 其它的 ARMulator 问题 实时仿真 为了得到时间统计表, ARMulator 需要以下信息: 处理器的类型, 例如 ARM7TDMI 内核的时钟频率 与处理器连接的内存的信息 (地址,宽度.速度) 指定时钟频率: 对于 armsd, 利用命令行选项 ‘-clock’, 例如armsd -clock 25MHz prog.axf 对于AXD / ADW / ADU, 选择 Options?Configure Debugger, 接着 配置ARMulate 目标环境速度 (in MHz). ARMulator 配置 可以通过调试器 (Options ? Configure Debugger)来实现简单的配置 配置文件里的高级配置 armulate.dsc “固定的” 核的类型和功能 例如. TCM/Cache 大小 default.ami 全局核配置信息 例如. MCCFG 控制时钟设置,页表使用等. peripherals.ami 外部的配置 例如. MMU/MPU 配置, semihosting 默认值, 堆栈基地址等. 内存配置 (1) 如果没有指定映象文件: ARMulator 将利用4Gb, 32-bit, 零等待状态, 读/写 内存映象. 为了指定一个‘实际’的系统内存映象,可以使用一个映象文件. 内存配置 (2) ARMulator仿真了一个基本的内存控制器. 适当加入一些等待状态, 这依赖于内存速度和时钟频率. 启动的旗语说明(在其他事件中)例如: 观察仿真时间 当执行仿真时,调试器一直追踪着流逝的仿真时间. 这可以通过以下方法来观察: 通过应用程序 从汇编语言: 利用semihosting SWI SYS_CLOC
原创力文档


文档评论(0)