翻译自这篇博文
不同物理设备之间的数字转换可以说是随处可见,让其智能又强大。驱动设备的引擎是嵌入式软件,它是快速发展的IoT生态系统中不可或缺的一部分。
本篇博客主要谈嵌入式软件开发工具。解释什么是嵌入式系统以及需要什么工具能够构建出来一个。你将了解到现在IT市场上最受欢迎的、可用的嵌入式系统软件开发工具。
什么是嵌入式软件
桌面软件是为计算机编写的,嵌入式软件针对非计算机硬件编写从而控制其功能。硬件包括各种各样的监控设备、传感器、可穿戴设备以及基于所有的现代电器设备。嵌入式技术与网络、信息科技一起构成了IoT系统,并被广泛用于医疗、制造业、工业自动化以及运输、航空(Aviation
)等领域。
桌面程序和嵌入式程序最核心的区别存在于它们的目的不同。通用的计算机被用于多种意图,这就是它们的软件在众多设备上运行并且可以被重置。相反地,嵌入式软件被用于服务某种它能够运行的设备。除此之外,嵌入式解决方案的开发要考虑环境因素如温度或者湿度,这些会影响设备的运行和性能。
嵌入式系统是硬件模块和软件模块的集合。
嵌入式系统的硬件至少要包括以下基础的组件:
- 电源
SoM(System-on-a-Module)
/SoC(System-on-a-Chip)
——一个具有微处理器、外围设别、内存以及IO
口的板子
嵌入式系统的软件至少要包括以下基础的组件:
- 操作系统:
Windows CE
、Yocto Linux
、ThreadX
、Nucleus RTOS
- 语言:
C
、C++
、Python
、JavaScript
等 - 工具:
IDE
、SDK
、PDK
、编译工具链、软硬件调试器(ST-Link
、Segger
)
操作系统构成如下图所示。
嵌入式软件开发工具种类
下面是不同的嵌入式软件设计开发工具及描述。
编辑器
文本编辑器是你开始创建嵌入式系统的第一个工具,可以用之来写C
和C++
源码,保存为文本格式。Geany
就是一个很好的例子,不仅内存占用少而且轻量级。支持C
、Java
、PHP
、HTML
、Python
、Perl
、Pascal
和其他文件类型。
基础功能有:
- 语法高亮
- 代码折叠
- 自动补全
- 自动关闭
XML
和HTML
标记 - 代码定位
编译器
源码使用高级语言写的。编译器就是用来将高级语言代码翻译成低级语言代码——机器能理解的。
Keil C51
是一个最受欢迎的编译器,用它来创建8051单片机的应用,翻译用C语言写的源码。
汇编器
这个工具的功能是将人们写的代码转换成机器语言,与直接翻译的编译器相比,汇编器先将源码转换成对象码,最后再到机器语言。
GNU Assembler(GAS)
被广泛用于Linux操作系统,可以在Macintosh tools package中找到。
调试器
这是一个重要的测试工具。浏览代码查找bugs
和errors
,并通知他们出现的位置。调试器可以指出问题出现的行数,因此开发者可以迅速地进行定位。IDA Pro
是可以运行在主流操作上的调试器,广受开发者的欢迎。
链接器
几乎所有的代码都是分片、分模块写的。链接器就是用于将这些分散的代码片连接起来,来创建一个可运行的程序。GNU Id
是其中一个链接器。
仿真器
仿真器是目标系统的替代品,具有相同的功能和组件。该工具用来模拟软件性能,查看代码在实际工作的。开发者可以通过有序得改变参数值来达到立理想的代码性能。一旦所有的代码被检查一遍,就可以嵌入到设备上。
IDE工具
谈到嵌入式软件开发工具我们不得不说集成开发环境,上边提及的所有工具都需要来创建嵌入式软件。如果分开使用他们会很不方便,增加了项目构建的复杂度。因此,强烈建议使用集成环境。IDE
就是对一系列的来发工具进行打包来为开发者提供开发服务。
下年列出了市场上一些最受欢迎的IDE
软件。
- PyCharm
一个名为JetBrains
的捷克国家的公司开发的这个IDE软件。毋庸置疑,PyCharm
适合做跨平台的开发,因为它支持在三种主流操作系统上JavaScript
、CoffeeScript
、TypeScript
、Cython
、SQL
、HTML/CSS
、AngularJS
、Node.js
、模板语言
以及其他的编程语言的开发。
PyCharm
提供高产出的嵌入式软件开发:
@ 智能代码补全
@ 错误高亮及修复
@ 自动代码重构
@ 简单的项目切换
@ 集成测试
@ 虚拟机远程开发
@ 支持网页开发框架,像Django
、Flask
、Google APP Engine
、Pyramid
、web2py
PyCharm
有三种版本供君挑选,社区版、专业版以及教育版,被认为是针对不同编程意图完美的工具。
- WebStorm
JetBrains
公司另一款IDE,用于CSS
、JavaScript
、HTML
语言的编程。
其特点是:
@ 自动编译
@ 快速代码分析
@ 自动代码重构
@ 整合版本控制系统
@ 集成测试
@ 支持多层嵌套:HTML
里嵌入JS
脚本的同时还可以在嵌入HTML
代码,在嵌入的HTML
代码中又可以嵌入JS
脚本
- Qt Creator
Qt
集成的开发环境拥有大量的库、API接口和工具来用C++
、JavaScript
和QML
编程语言为嵌入式设备开发应用程序。
特点在于:
@ 跨编辑
@ 自动编译
@ 语法高亮
@ 虚拟键盘
@ 板上调试
@ 功能安全
@3D
/2D
用户接口
70多个行业领先的嵌入式系统制造商都选择Qt Creator
来构建它们的产品,包括汽车、自动化、医疗、电视和机顶盒、物联网、移动应用等等。
- MPLAB X
MPLAB X
是美国Microchip Tecnology
公司开发的IDE软件MPLAB
最新的版本。该软件基于NetBeans
开源平台开发,为不同类型的PIC
微控制器和数字信号处理器构建应用程序。
主要优点:
@ 使用简单
@ 自动编译
@ 标记呈现
@ 动态语法检查
@ 板上调试
@ 仪表盘窗口
- Visual Studio
一个很受欢迎的微软开发平台。不仅可以被用来构建计算机程序和移动应用程序,还可以构建嵌入式软件程序。Visual C++
的扩展使得开发者可以在Windows
或者微处理器亦或远程Linux
机器上调试本地C
/C++
代码。使用IoT Visual Studio
,你可以构建、编辑、调试运行着Linux
操作系统的设备。
VisualGDB
提供了Visual Studio
和GNU
工具链的接口来构建和调试嵌入式固件。因此你可以通过第三方编译器进而库来配置你的项目。
- Eclipse
最初,Eclipse
被用于Java应用程序的开发,现在成为Java编程人员使用最广泛的IDE软件。Eclipse
还可以通过插件形式支持其他编程语言,如Ada
,ABAP
,C
,C++
,C#
,Python
,PHP
等。
Eclipse
为嵌入式汽车设备提供了一个分离的包,包含工具和框架,能够简单、快速开发应用程序。
- NetBeans
一款针对Java 8
开发的IDE
软件,免费且开源。NetBeans
被很多社区开发者和用户支持。它还包括PHP
和C/C++
工具,因此可以使用CSS
、JavaScript
以及HTML
编程语言开发程序。
基础特性:
@ 小而快的代码编辑
@ 简单有效的项目管理
@ 快速的UI开发
@ 调试
@ 多语言支持
@ 跨平台
@ 插件丰富
- MATLAB
MATLAB
是一系列工具的集合,它的编程语言被用来数字运算。不同领域的开发者使用MATLAB
来创建用户接口,实现算法,以及用其数据块、图表和功能进行工作。其环境可以让用C
,C++
,C#
,Java
,Python
及其他语言编写的程序与之交互。
和MATLAB
与生而来的Simulink
软件用于做模拟。二者的结合对嵌入式软件开发很有用,因为他们允许设计和编写从原型到生产的嵌入式系统。
优点在于:
@ 鲁棒且易用的调试工具
@ 丰富有效的数学与统计功能
@ 坚固的社区
@ 优良的工具开发文化
- Arduino
一款开源的IDE
软件,为了Arduino
微处理器而生,其丰富的特性和库使得嵌入式开发者更简单。
优点主要有:
@ 带完整组件的开发板
@ 带实例代码的库
@ 容易上手
@ 开源、可扩展的软硬件
@ 跨平台
@ 社区活跃
- ARM Keil
ARM Keil
开发工具为基于ARM
的设备创建嵌入式应用程序提供了完整的环境。这个软件包涵盖了C
/C++
编译器、模拟模块、调试器、链接器、汇编器以及中间件库。
除此之外,ARM Keil
为基于Cortex
、ARM
处理器的设备提供了模拟板。
优点在于:
@ 容易上手
@ 接口丰富
@ 整合第三方库
@ 项目示例
@ 技术支持
@ 适合初学者和专业者
很难说你应该选择哪一款工具来进行嵌入式软件开发,因为它们是在是太多了。应该取决于开发者的技能、喜好以及项目需要。在任何情况下,以上所有工具都能帮助开发者加速嵌入式软件开发。
总结
嵌入式系统和IoT
解决方案被应用在广泛领域,提高我们生产力的同时,节约了成本。
更多推荐
10种受欢迎的嵌入式软件开发工具
发布评论