- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用-Chapter09-ARM嵌入式程序设计
ARM编译器 编译器和语言库 program和关键字 C/C++运行时库 编译器和语言库 文件类型 数据类型 调试信息和代码生成控制 文件类型 文件类型 *.c:C编译器源文件 *.c,*.cp,*.cpp,*.c++,*.cc:C++编译器源文件 *.h:头文件 *.s:ARM汇编代码源文件 *.o:ELF格式目标文件(含DRAWF2调试信息) *.lst:错误和告警信息列表文件 文件类型 基本数据类型 调试信息和代码生成控制 调试信息控制 -g[option] -dwarf2 代码生成控制 代码优化编译选项 代码段、数据段的编译选项 内存模式编译选项 对齐模式编译选项 告警信息和错误信息控制 告警信息控制 -W[options]+[options] 一般情况下应更改程序而不是关闭告警信息 错误信息控制 -E[options]+[options] 一般情况下应更改程序而不是关闭错误信息 pragmas和关键字 pragmas 声明函数的关键字 声明变量的关键字 限定数据类型的关键字 pragma 格式 check_printf_format, check_scanf_format, debug, Ospace, Otime, Onum, stack_check, softfp_linkage, import -pragma feature-name设置特性 -pragma no_feature-name取消特性 举例 #pragma check_printf_formatsextern void myprintf(const char*,...)#pragma no_check_printf_formats 声明函数的关键字 __asm __inline __irq __pure __softfp __swi 声明变量的关键字 register _int64 _global_reg 声明变量的关键字 _align(8) _packed _volatile _weak C/C++运行时库 概述 建立包含运行时库的应用程序 建立不包换运行时库的应用程序 运行时库裁减 C/C++运行时库概述 注意事项 C运行时库以二进制提供 编译自己的C运行时库 重新实现部分函数实现C运行时库移植 C++运行时库不是免费的 建立包含运行时库的应用程序 建立C/C++应用程序运行环境 建立数据栈 建立数据堆 初始化运行时库 运行main()函数 提供堆ISO C标准规定的函数 捕捉运行时错误信息 建立包含运行时库的应用程序 在semihost环境下使用C/C++运行时库 在无主机支持环境下使用C/C++运行时库 不使用main()函数和不初始化运行时库环境下使用运行库环境 semihosted下使用运行时库 ARM使用SWI软件中断方式提供支持 使用ARM标准semihosting SWI 建立自己的semihosting SWI中断处理函数 semihosting函数是可以被重新实现的 semihosted下使用运行时库 ARM工具对semihosting的支持 ARMulator提供semihosting SWI支持 Angel调试监视器提供semihosting SWI支持 Multi-ICE/EmbeddedICE提供semihosting SWI支持 semihosted下使用运行时库 去除semihosting支持 删除semihosting函数调用 重新实现semihosting函数 实现SWI中断处理程序 nonsemihosted下使用运行时库 在无semihosting支持环境下不能调用包含semihosting功能的函数 在无semihosting支持环境下使用运行时库 建立与目标环境相关的函数实现 不实用semihosting功能 将新的目标文件与应用程序连接 更新配置建立适应目标环境的应用系统 nonsemihosted下使用运行时库 重新实现semihosting功能函数和目标环境相关函数以提供给C运行时库使用 表10.8列举了直接依赖semihosting功能的函数;表10.9列举了间接依赖semihosting功能的函数; 建立不包含运行时库的应用程序 若不包含main()函数则不会对C运行时库进行初始化,称为裸机C程序: 不支持数据栈检查 不支持stdio 不支持signal()和raise() 不支持atexit()和alloca() 重新实现__rt_raise()已便被错误处理代码使用 编写汇编代码实现C程序运行环境初始化,并保证代码在C程序前运行 建立不包含运行时库的应用程序 重新实现部分函数以使用C运行时库 实现__rt_raise()获取除法、结构数据复制和浮点数算术运算支持 显示调用set_
您可能关注的文档
- 加强对村级小学的督导评估夯实农村基础教育的基础.doc
- 务虚笔记 解读.docx
- 副井下井口信号工操作规程.doc
- 动静结合,让海量阅读更高效.doc
- 化妆品电商呈现明星投资化趋势.doc
- 化工原理考试题9.doc
- 同济大学线性代数课件__第一章.ppt
- 北魏军中的异族军队及其管理.doc
- 化解 心里压力.doc
- 华北电力大学动力工程考研秘籍.ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)