- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统 郑州大学信息工程学院 南京航空航天大学继续教育学院 第3章 嵌入式软件开发的概念和方法 3.1 软件开发流程 3.2 环境搭建 3.3 实例 3.4 代码优化 * * 3.1 嵌入式软件开发流程 * * 一、编码阶段 把系统的需求和设计转变为语言的实现 C语言 C++ 汇编语言 其他 * * 二、构建阶段 任务:把源代码转换为可以在嵌入式硬件上可执行的二进制映像。 包括四个步骤:编译、链接、定址、打包 1.编译:将源文件变为目标文件 C编译器、汇编器、交叉编译 * * 构建的过程 交叉编译 运行在一个计算机平台上并为另一个平台产生代码的编译过程 嵌入式软件开发的重要特征之一 输出为目标文件(包含指令集和数据的特定格式的二进制文件.o或.obj) 两种格式(COFF和ELF) 通用目标文件格式Commom Object File Format 可执行链接格式Executable and Linking Format 尽量使用相同的文件格式 * * 目标文件的格式 大多数目标文件以一个描述后续段的头部开始,每一段包含一块或几块源于源文件的代码或数据,这些块可以被编译器重新组合到相关的段中 .text段:所有的代码块 .data段:已初始化的全局变量及其初始值 .bss段:未初始化的全局变量 .symtab:符号表记录源文件引用的所有变量和函数的名字及位置。不是所有的变量和函数都在同一个文件里定义,符号表可能不完整,要链接时才可以解决不完整的引用。 * * 例:ELF格式的目标文件 ELF格式有三种类型:可重定位文件、可执行文件、共享目标文件 可重定位文件由编译器 和汇编器创建,运行前 需要链接 ELF Header: 描述整个文件的组织 段头部表: 包含描述了文件节区 的信息,如每一段的 名称、大小 数据按段存放:见表3-1常见的段及其解释 * * ELF的可重定位文件格式 * * 2.链接: 把所有目标文件链接为一个目标文件(可重定位程序Relocation Program),同时解决所有的未解决的符号问题,最终生成一个可执行文件。主要任务是: 合并目标文件中对应的段(见p101表3-2) 符号管理,匹配在不同目标文件中的符号,解决符号之间的引用关系 * * * * 被编译器认为是符号的有 当前模块中被定义的全局变量和函数 当前模块中引用的但未被定义的全局变量和函数(外部符号) 段名称,被当作定义在段起始位置的全局符号 链接器不使用而调试器用到的非全局变量 * * 3.定址和打包: 定址:把一个或多个可重定位的可执行文件整合为一个可以在嵌入式系统上运行的二进制映像文件 重定位(见P104例) 系统的多个子程序被加载到互不重叠的地址上运行; 一个子程序可以被加载到不同的地址上运行 打包:将多个可执行文件打包成一个映像 压缩打包和不压缩打包 很多嵌入式系统不需要重定位功能 * * 三、部署阶段 把可执行文件或映像部署到嵌入式设备上的非易失存储器介质中 如ROM、Flash等 NOR Flash和Nand Flash 部署方法与Flash类型密切相关,兼顾引导程序、操作系统、文件系统 * * Nor Flash不存储文件系统,配套使用ROM或Nand Flash存储文件系统 * * NOR Flash的一般部署结构 NAND Flash的一般部署结构 Nand Flash容量大,剩余空间存储文件系统 3.2 环境搭建 1.开发机和目标机 开发人员用来编写和调试代码的机器称为开发机 通用的PC机 经过编译链接下载,最终执行的机器称为目标机 各种各样的嵌入式设备 开发机和目标机之间一般通过串口、并口或通用接口(或卡槽)等连接。开发机上安装用于嵌入式软件开发的一系列工具集,如代码编辑器、编译器、链接器、调试工具、软件配置管理工具等。 * * 开发机与目标机的不同 体系结构不同 处理能力不同 运行的操作系统不同 输入输出方式不同 * * 2.选择编程语言 选择编程语言考虑以下方面 与汇编语言和机器代码的接口建立连接 直接内存地址寻址 对硬件的访问和控制 位操作 中断处理 指针 数据类型检测 程序控制结构 * * 选择编程语言考虑以下方面 模块结构与独立编译 异常事件处理 任务结构支持 数学模型支持 语法与结构 多任务支持 标准库 OOP(面向对象的程序设计)结构支持 * * 3.选择开发工具 开发工具包括编辑器、编译器、链接器、调试工具、测试工具、验证工具 * * ARM体系的常用开发工具集 GNU ARM工具集 微软ARM工具集 ADS/RealView工具集 * * 4.建立连接 * * 典型的嵌入式开发环境中的连接 3.3实例 p115~p136 G
您可能关注的文档
最近下载
- CJJT258-2017 住宅专项维修资金管理信息系统技术规范.docx VIP
- 电缆管施工方案.docx
- 凿岩台车、潜孔钻司机岗位安全生产责任制.doc VIP
- 地理丨广东省广州市2022届高三上学期12月调研测试地理试卷及答案.doc VIP
- JMP入门与提高学习资料.pptx VIP
- CJJT257-2017 住宅专项维修资金管理基础信息数据标准.docx VIP
- 概率论与数理统计教程(华东师范大学).docx VIP
- 分离工程绪论培训课件.ppt VIP
- 阅读理解之七选五五种考法(讲案)解析版-2024年高考英语一轮复习知识清单(全国通用).pdf VIP
- 大厦写字楼招商部流程管理手册.doc VIP
文档评论(0)