版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章单片机软件开发基础
何宾2023.07KeilμVision设计流程和应用开发本节将介绍KeilμVision的软件设计流程以及编写和处理软件代码的具体实现过程通过KeilμVision集成开发环境开发STC32G系列单片机软件程序的流程如下图所示KeilμVision设计流程和应用开发
---KeilμVision软件设计流程KeilμVision设计流程和应用开发
---KeilμVision软件设计流程从STC32G系列单片机应用的角度而言,程序开发的任务包含两个方面:编写STC32G系列单片机内所有硬件模块的驱动代码,并提供应用程序接口函数API。基于API编写应用程序,使得单片机系统能满足应用要求。KeilμVision设计流程和应用开发
---KeilμVision软件设计流程传统上,8051单片机的程序开发都是直接面向于底层硬件,即编写硬件驱动,然后基于硬件驱动编写,也就是我们通常所说的“裸奔”这种开发程序的方法最大的局限性在于程序的可移植性较差、维护成本高由于这种开发方式没有使用操作系统进行支持,因此很难实现多任务的协同分时处理KeilμVision设计流程和应用开发
---KeilμVision软件设计流程随着单片机应用程序开发的要求不断提高,程序设计思想也发生了明显的变化,主要体现在:使用API函数封装底层具体的硬件,而应用程序开发者只需要调用这些API函数即可,这样就显著降低了应用程序对底层的依赖性,使得应用程序具有更好的可移植性在单片机程序开发中,引入操作系统的支持,这样可以支持多任务的分时协同同步处理,显著提高了复杂应用程序的可靠性KeilμVision软件设计流程
--明确软件需求对于编写软件代码的程序员而言,在开始编写软件代码前,需要明确并完成下面的要求:了解所提供硬件的性能了解软件开发环境KeilµVision5(C251版本)所能实现的功能明确软件代码所要实现的功能绘制用于表示软件代码实现过程的数据流图和程序流图进一步明确程序的概要设计和详细设计方案KeilμVision软件设计流程
--创建设计工程在使用KeilμVision5集成开发环境创建设计工程时,需要完成下面的任务:指定工程所在的路径和文件夹命名工程名字从单片机元器件库中,找到STC32G系列单片机元器件库,并添加软件开发所使用的一款STC32G单片机型号编写汇编语言/C语言软件代码
--汇编语言汇编语言操作代码(助记符)很容易让程序开发人员记住(MOV用于移动指令、ADD用于相加等)此外,还可以用符号表示指令操作数字段中引用的地址和值。因为分配了这些名字,所以可以使它们像指令的助记符一样有意义。编写汇编语言/C语言软件代码
--汇编语言汇编程序由三部分组成,包括:机器指令。编写机器可以执行的代码。汇编助记符指令的格式为:<[>label:<]>mnemonic<[>operand<]><[>,operand<]><[>/,operand<]><[>;comment<]>
注:<>标记为可选项。格式中:label:标号的名字。它是指令在存储器中所在地址的符号表示mnemonic:助记符。它是用符号表示机器语言指令的ASCII文本字符串operand:操作数。它是指定得助记符所需要的参数。comment:注释。它是对指令的可选描述或解释。注释以分号字符’;’开始,注释可以包含软件开发人员所希望的任何文本。汇编器将忽略出现在汇编指令中的注释。编写汇编语言/C语言软件代码
--汇编语言汇编器命令定义程序结构和符号,并生成不可执行的代码(数据、消息等)汇编器控制设置汇编模式和直接汇编流程。如IF、ELSE、ENDIF和ELSEIF汇编器控制描述。汇编器程序控制语句提供了一组功能强大的操作符,可用于从程序集中包含或排除程序的某些部分。编写汇编语言/C语言软件代码
--C语言C编程语言是一种通用的编程语言,它提供了代码效率、结构化编程元素和丰富的运算符集C语言不是一门大型语言,也不是为一个特定的应用领域设计的它的通用性和无限制性相结合,使得C成为一种方便高效的编程解决方案,也用于各种软件任务与其他更专业的语言相比,使用C可以更容易、更高效地解决许多应用编写汇编语言/C语言软件代码
--C语言C语言本身无法执行通常需要操作系统干预的操作(如输入和输出)相反,这些功能是作为标准库的一部分提供的。因此这些函数与语言本身是分开的,所以C特别适合生成可移植到多种平台的代码KeilμVision软件设计流程
--汇编器对汇编语言的处理汇编器是一种将符号代码(汇编语言)转换为可执行目标代码的程序该目标代码可以使用兼容MCS-251ISA的单片机运行(比如STC32G系列单片机)在一些对速度、代码长度和要求对硬件进行精确控制的应用中,必须使用汇编语言编写代码Keil开发环境中的汇编器软件工具将汇编语言助记符翻译/转换为可执行的机器码,同时支持源码级符号调试,以及对宏处理的强大能力。KeilμVision软件设计流程
--汇编器对汇编语言的处理汇编器将汇编代码源文件翻译成可重定位的目标模块,以及可以选择创建带有符号表和交叉引用细节的列表文件。并且,将完整的行号、符号和类型信息写到所生成的文件中通过这些信息,可以在调试器中准确的显示程序变量,行号则用于μVision调试器和第三方调试工具的源代码级调试KeilμVision软件设计流程
--汇编器对汇编语言的处理A251汇编器在编译期间生成许多输出文件默认情况下,每个输出文件与源文件共享相同的文件名文件扩展名描述.LST具有此扩展名的文件列出了包含格式化源文件以及汇编器检测到的任何错误的文件。列表文件可以选择包含使用的符号和交叉引用.OBJ具有此扩展名的文件是包含可重定位目标代码的目标模块。通过L251链接器,将目标模块连接到绝对目标模块KeilμVision软件设计流程
--C编译器对C语言进行处理用于MS-DOS操作系统的C251优化C编译器是美国国家标准学会(AmericanNationalStandardsInstitute,ANSI)C语言标准的完整实现C251编译器不是用于251目标的通用C编译器它是一种全新的实现,致力于为兼容MCS-251ISA的单片机(如STC32G系列)生成超快和紧凑的代码。C251编译器为软件开发人员提供了C语言编程的灵活性以及汇编语言的代码效率和速度由于C251编译器是一个交叉编译器,C编程语言和标准库的某些方便被修改或增强,以解决嵌入式目标处理器的特性KeilμVision软件设计流程
--库管理器生成库文件LIB251库管理器允许软件开发人员创建和维护库文件,这些库文件可能包含一个或多个目标文件L251链接器可以使用库文件来解析外部变量和函数引用。LIB251库管理器可以通过命令行进行交互控制,也可以由μVisionIDE使用KeilμVision软件设计流程
--库管理器生成库文件
KeilμVision软件设计流程
--链接器生成绝对目标模块文件L251链接器/定位器通过将使用KeilA251汇编器和C251编译器创建的目标模块连接在一起,创建一个绝对目标模块这些工具创建的目标模块是可重定位的,不能直接执行(即使它们只包含一个源模块),必须使用链接器将它们链接并转换为绝对模块KeilμVision软件设计流程
--链接器生成绝对目标模块文件L251链接器的目的包括:链接由汇编器和编译器生成的目标模块链接保存在用LIB251生成的库文件中的目标模块为了实现这些目标,链接器组合目标模块并解析它们之间的引用。这允许软件开发人员创建分布在许多源模块、目标模块和库上的大型程序。KeilμVision软件设计流程
--链接器生成绝对目标模块文件在运行链接器时,它执行下面的行为:将可重定位的程序模块组合成单个的绝对模块自动包含库文件中的模块执行代码打包以优化公共代码序列将可重定位的部分段(同名)合并为单个段为所有可重定位和绝对段分配和操作必要的存储器使用重叠技术分析程序结构并操作数据解析外部符号和公共符号KeilμVision软件设计流程
--链接器生成绝对目标模块文件定义绝对地址并计算可重定位段的地址生成包含整个程序的绝对目标文件生成包含下面内容的列表文件,包括有关链接和定位过程的信息程序符号、外部符号和公共符号的交叉引用检测在命令行或在链接/定位过程中发现的错误KeilμVision软件设计流程
--链接器生成绝对目标模块文件生成目标文件L251链接器生成KeilOMF251目标模块格式的可执行目标程序。OMF251格式支持最多16MB的CODE和XDATA。链接器为普通(非分组)或代码分组的应用生成绝对目标文件。无论哪种情况,目标文件都是绝对的,不包含可重定位信息或外部引用。它可以加载到调试工具(如μVisionDebugger或仿真器)中,也可以通过OH251Object-Hex转换器转换为IntelHEX文件,并用于编程PROM或下载到闪存中生成的目标模块可包含有助于符号级、源代码级调试和测试的调试信息。软件开发人员可以使用链接器命令从目标文件中去掉调试信息KeilμVision软件设计流程
--链接器生成绝对目标模块文件生成列表文件链接器生成一个列表文件,该文件提供有关链接和定位过程中每个步骤的信息。该文件包含关于有关所涉及符号和段的信息,以及下面:命令行上指定的文件名和其他参数所有已处理模块的文件名和模块名存储器分配表,其中包含段的位置、段类型、位置方法和段名字。可以通过指定NOMAP指令来压缩掉该表KeilμVision软件设计流程
--链接器生成绝对目标模块文件显示已完成程序的结构并列出本地数据和函数位段的地址信息的重叠信息。重叠映射还列出了存在OVERLAYABLE段的所有代码段。软件开发人员通过指定NOMAP命令来压缩掉重叠映射程序中所有PUBLIC符号的列表。通过在命令行上指定NOPUBLICS或PRINTCONTROL指令,可以压缩掉公共符号段和符号中所有错误的列表。错误原因列在列表文件的末尾所有未解析外部符号的列表。如果另一个输入文件中不存在对应的公共符号,则无法解析外部符号。对未解析外部符号的每个引用都列在列表文件末尾的错误消息中包含输入文件中的符号信息的符号表。该信息包含模块(Module)名字、符号(Symbol)名字、公共(Public)名字和行(Line)名字。软件开发人员可以通过链接器控制有选择地抑制掉符号信息。KeilμVision软件设计流程
--链接器生成绝对目标模块文件按字母顺序排列的所有公共和外部符号的交叉引用报告,其中显示了存储器类型和包含该符号引用的模块名字。在执行链接器/定位器期间检测到的错误显示在屏幕上以及列表文件的结尾。KeilμVision软件设计流程
--目标到HEX转换器OH251目标到HEX转换器(OH251Object-HEXConverter)用于将链接器所创建的绝对目标文件转换为IntelHEX文件保存在绝对目标文件中的程序代码转换为十六进制的值,并保存在IntelHEX文件格式的文件中。然后,通过STC的STC-ISP软件工具,软件开发人员可以将IntelHEX文件下载到STC32G系列单片机中KeilμVision软件设计流程
--目标到HEX转换器KeilμVision软件设计流程
--调试器调试目标代码在KeilμVision中的OptionforTarget的标签界面提供了两种调试模式,包括仿真器模式和目标模式当勾选图中UseSimulator前面的复选框时,选择仿真器模式;当勾选Use:STCMonitor-251Driver前面的复选框时,选择目标模式。KeilμVision软件设计流程
--调试器调试目标代码仿真器模式使用仿真器,将μVisionDebugger配置为模拟一个控制器大多数功能的纯软件产品。软件开发人员可以在硬件准备就绪之前测试和调试嵌入式应用程序μVision模拟各种外设,包括串口、外部I/O和定时器μVisionDebugger模拟外设的能力因所选设备的不同而有所不同KeilμVision软件设计流程
--调试器调试目标代码目标模式在目标模式下,调试器将与真实的STC32G系列单片机硬件系统进行连接。在对STC32G系列单片机系统进行调试时,使用调试界面下已经提供的STCMonitor-251Driver驱动程序。通过STC-USBLink工具,对实际硬件目标系统进行调试KeilμVision软件设计流程
--调试器调试目标代码在μVisionDebugger中提供了下面的调试窗口和对话框,包括:断点(Breakpoint),定义程序执行的停止条件调用栈+本地(CallStack+Local)窗口,查看当前位于调用树中的对象代码覆盖率(CodeCoverage)检查有关代码执行的统计信息,包括分支测试命令(Command)窗口,输入并查看已执行的命令反汇编窗口(DisassemblyWindows),在汇编指令级上测试程序KeilμVision软件设计流程
--调试器调试目标代码事件查看器(EventViewer),检查任务切换事件的历史记录逻辑分析仪(LogicAnalyzer),在时间图上调查外设、寄存器和变量值的变化存储器映射(MemoryMap),评估存储器区域和他们的访问权限存储器窗口(MemoryWindow),分析和修改存储器内容性能分析仪(PerformanceAnalyzer),在模块或函数级上评估时间和调用统计信息
寄存器窗口(RegisterWindow),查看和修改寄存器的内容KeilμVision软件设计流程
--调试器调试目标代码串行窗口(SerialWindow),是应用和PC之间的通信接口状态栏(StatusBar),查看调试状态信息符号窗口(SymbolsWindow),查找程序中使用的调试符号信息。系统查看
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电铲铲斗钢丝绳辅助安装机械臂的设计与分析
- 2026儿童益智玩具设计创新与家长消费决策报告
- 2026儿童体适能培训行业市场调研与发展趋势预测报告
- 儿童日常护理最佳实践
- 呼吸科护理人员的专业技能培训
- 带状疱疹患者日常护理要点
- 深度解析(2026)《GBT 26869-2011标称电压高于1000V低于300kV系统用户内有机材料支柱绝缘子的试验》
- 深度解析(2026)《GBT 26053-2023碳化物基热喷涂粉》
- 免疫系统疾病的预防与护理
- 深度解析(2026)GBT 24797.3-2014橡胶包装用薄膜 第3部分:乙烯-丙烯-二烯烃橡胶(EPDM)、丙烯腈-丁二烯橡胶(NBR)、氢化丙烯腈-丁二烯橡胶(HNBR)、乙烯基丙烯酸酯橡胶(AEM)和丙烯酸酯
- GB/Z 36271.3-2026交流1 kV及直流1.5 kV以上电力设施第3部分:高压设施的设计和安装原则高压设施的安全
- 2026年山东济南市高三二模高考化学试卷试题(含答案详解)
- 2026电力重大事故隐患判定标准及治理监督管理规定全文逐条学习课件
- 2026中央台办所属事业单位招聘工作人员10人笔试参考试题及答案解析
- 西医综合(循环系统)历年真题试卷汇编3
- 2025年区块链安全审计安全职业发展路径
- 2026年北师大版三年级下册数学全册教学设计-合集
- 《公路工程质量检验评定标准》JTG F80∕1-2017宣贯材料
- 史学概论课件(2015修改版)
- 国开电大《高等数学基础》形考任务四国家开放大学试题答案
- 射波刀技术的质量保证培训教材(-61张)课件
评论
0/150
提交评论