首页 理论教育 物联网实验教程-软件环境简介

物联网实验教程-软件环境简介

时间:2023-10-21 理论教育 版权反馈
【摘要】:对于单片机的开发环境,软件方面涉及对编程语言、编辑编译和调试环境的选择问题。本节结合常用的单片机类型,简单介绍有代表性的软件开发环境。目前,已经有一些较为通用的单片机集成开发环境,如ICC、IAR Embedded Workbench、CodeVision AVR、Keil μVision、GCC等。Keil公司主要开发、制造和销售嵌入式8051、251、ARM、XC16x/C16x/ST10等微控制器软件开发工具、调试和模拟器、综合评估板等。在AVRGCC编译器的Win32版本中,有一个软件包WinAVR。GCC最大的特点是开源,发展较快,并且免费使用。

物联网实验教程-软件环境简介

对于单片机的开发环境软件方面涉及对编程语言、编辑编译和调试环境的选择问题。根据应用对象的特点选择合适的开发编程语言和开发工具,是解决问题的首要任务。本节结合常用的单片机类型,简单介绍有代表性的软件开发环境。

1.编程语言的选择

早期的单片机开发均使用汇编语言。把汇编语言源程序变为单片机可执行的机器码(一般为.bin和.hex等文件格式)有两种方法:一种是手工汇编;另一种是机器汇编。手工汇编完全参照处理器的指令表,逐条地将汇编语句翻译成机器指令。这种方法显然效率极低,目前几乎不再使用。机器汇编是通过汇编器(Assembler)将源程序变为机器码,例如用于MCS-51单片机的A51汇编软件。机器汇编极大地减少了人工参与的过程,效率显然更高。

随着单片机开发技术的不断发展,高级语言,特别是嵌入式C语言,成为了单片机开发的主要编程语言。与汇编语言相比,C语言在功能、结构、可读性和可维护性上有明显的优势,尤其对于那些使用过汇编语言后,再使用C语言来开发的编程员来说,会觉得C语言非常易学易用。当然,采用C语言编程存在着生成代码效率问题,这取决于编译器和程序员的编程风格。由于C语言编译器已经对单片机部分硬件资源进行了封装,如堆栈、子程序的跳转、中断处理时的现场保护等。C代码中的函数、控制语句在编译时都会被编译器编译成相应的汇编指令,这些语句生成的代码量对各种不同的C语言编译器不尽相同。一般来说,同样功能的总代码生成量比使用汇编语言略高20%。可以这样说,任何一款编译器都不会比一个经验丰富的汇编语言程序员编写的汇编程序效率高。

无论是采用C语言,还是采用汇编语言,都各有其利弊。虽然对汇编语言的娴熟使用需要一定的时间,并且调试起来困难很大,但其程序执行效率高是不争的事实。C语言虽易学易用,但对于一些底层和重复性操作,采用C语句实现起来效率偏低。所以在开发过程中,推荐采用C语言和汇编语言相结合的编程方式,以充分发挥这两者的优势。例如,通常用汇编语言来编写底层的对硬件的操作,把与硬件无关或相关性较小的部分用C代码实现。当然,要充分发挥两者的性能优势,需要程序员对C编译器有一定了解,并注重平时的积累。

2.开发平台的选择

单片机开发平台的基本功能是实现对源代码的编译、连接并生成目标代码,提供目标代码下载的功能或接口,并支持仿真以及目标调试功能。目前,已经有一些较为通用的单片机集成开发环境,如ICC(Imagecraft C Compiler)、IAR Embedded Workbench、CodeVision AVR(或称CVAVR)、Keil μVision、GCC等。这些开发平台虽然针对某些特定品种而定制,它们包括集成环境IDE、处理器专家库、可视化参数显示工具、项目工程管理器、C编译器、宏汇编、连接/定位器,以及目标文件生成、库管理及功能强大的仿真调试器等,是一种集成化的文件管理编译环境,具有良好的用户接口,并且都普遍支持汇编语言和C语言的混合编程。(www.xing528.com)

ICC的集成开发环境包括一个叫Application Builder的代码生成器,可通过设置MCU所具有的中断、内存、定时器、IO端口、UART、SPI等外围设备,从而自动生成初始化外围器件的代码,这为简化初始配置提供了便利。ICC集成开发环境还有一个终端程序,可以发送和接收ASCII码,这为设备的调试提供了方便。此外,它还提供了常用的器件库和运算库代码,以方便用户的编程调用,可以提高开发效率。

CVAVR是一个针对AVR单片机的集成开发环境。它有一个CodeWizard的代码生成器,可生成外围器件的相应初始化代码,支持位变量操作,并且与Keil C51的代码风格最为相似,集成较多常用外围器件的操作函数以及一个集成代码生成向导,并且集成了串口/并口AVRISP等下载烧写功能,开发起来也非常方便。

IAR Embedded Workbench可支持AVR、MSP430、MCS-51、ST8等多种单片机。经过反复实验证明,IARSystems的C编译器可以生成高效可靠的可执行代码,并且应用程序规模越大,效果越明显,生成的代码尺寸远远小于其他同类编译器生成的代码尺寸。此外,IAREmbeddedWorkbench还提供了Visual State和IAR MakeApp两套图形开发工具帮助开发者完成应用程序的开发,它可以根据设计需求自动生成应用程序代码,使开发者摆脱这些耗时的任务并且也保证了代码的质量。

Keil公司主要开发、制造和销售嵌入式8051、251、ARM、XC16x/C16x/ST10等微控制器软件开发工具、调试和模拟器、综合评估板等。2005年,Keil公司被ARM公司收购。其早期的Franklin C51交叉编译器是专门为8051系列单片机设计的简单、高效C语言编译器,Franklin软件包主要由C51交叉编译器、A51交叉汇编器、L51连接器、OHS51代码转换器及DSCOPE-51软件仿真器等模块组成,其输入/输出库函数scanf和printf默认是通过8051单片机的串行口实现的,其他输出方式可以通过编写特定的输入/输出函数来实现,以方便用户的板上调试。KeilμVision则是把上述编辑、编译、连接和仿真等模式打包成集成开发环境,还包含项目管理和调试器等功能,其中包含的微处理器模拟器可以模拟被支持的微处理器设备,包括指令集、片上外设,甚至还可模拟外部激发信号

GCC是一款优秀的C编译软件,针对一些特定的单片机型号,通过在其上的移植而得到针对该处理器的C编译器。GCC支持多种操作系统,在MS-DOS、Windows、Linux下都可以使用。在AVRGCC编译器的Win32版本中,有一个软件包WinAVR。它虽然不是集成开发环境,但不仅包括C编译器,还包括了编辑、编译流程中所需的所有软件。GCC最大的特点是开源,发展较快,并且免费使用。

可以说,单片机的开发环境虽然品种繁多,但对于普通用户的使用来说,并不一定能体会到其底层的细微差别。主要感觉到的区别体现在与用户的交互接口上,因此用户可以根据使用习惯和应用需求,综合进行开发平台的选择。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈