网站大量收购独家精品文档,联系QQ:2885784924

嵌入式系统及应用-Chapter09-ARM嵌入式程序设计.ppt

嵌入式系统及应用-Chapter09-ARM嵌入式程序设计.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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_formats extern 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_

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档