24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 嵌入式软件开发
技术专题
嵌入式软件开发
嵌入式软件开发
什么是嵌入式软件开发?
“嵌入式软件”是一种程序,用(yòng)于控制与通用(yòng)计算机不同的各种设备和机器。非计算机设备和工程技术的结合形成了嵌入式系统。如今,嵌入式系统在制造设备,音频/视频设备,電(diàn)信设备,汽車(chē)工业,航空,消费类電(diàn)子产品,游戏机,运动传感器和医學(xué)等各个领域都非常流行(如图1所示)。
要设计嵌入式系统,需要具有(yǒu)操作系统,微控制器/微处理(lǐ)器和良好的编程工具。要為(wèi)嵌入式系统编写程序,可(kě)以使用(yòng)多(duō)种语言,包括Python,QT,C ++,C等。嵌入式软件开发可(kě)以定义為(wèi)创建机器可(kě)理(lǐ)解的代码(使用(yòng)任何可(kě)用(yòng)的语言)来运行设备上的特定用(yòng)途。
图1:嵌入式系统的应用(yòng)
嵌入式软件开发的历
微控制器和微处理(lǐ)器的兴起在嵌入式系统的开发中起着至关重要的作用(yòng)。在过去的几年中,嵌入式软件的发展经历了许多(duō)变化。
在早期,仿真器和汇编器,软件开发工具仅由生产芯片(微控制器)的制造商(shāng)提供。后来,许多(duō)不同的公司开始為(wèi)开发工具提供完整的解决方案。一些公司只专注于微控制器之类的硬件,而另一些公司则将重心转移到了诸如汇编器,仿真器和模拟器之类的软件上。然后,一些公司介入并增加了对高级语言的支持。
随着时间的流逝,出现了对实时操作系统(RTOS)的需求,并且公司将重点转移到了这种系统上。Ready Systems在1990年代初开发了第一个RTOS。导致RTOS发展的另一个主要因素是微芯片的发展,芯片的功能(néng)变得比以前更强大。随着微芯片的发展,工程师可(kě)以為(wèi)特定应用(yòng)编写单个程序。可(kě)以将程序加载到设备中,并且设备可(kě)以根据输入来处理(lǐ)实时数据并做出输出控制决策。
随着更多(duō)的进步,微芯片的成本也降低了几美分(fēn)。现在,我们每天都可(kě)以找到嵌入式系统,甚至无法想象它们对于我们日常活动的重要性。我们可(kě)以在儿童玩具,電(diàn)风扇,烤面包机,微波炉,空调等中找到嵌入式系统。
嵌入式软件开发工具
嵌入式软件开发工具对于开发嵌入式设备的高效软件非常重要。可(kě)以使用(yòng)多(duō)种工具来实现此目的。这些工具的详细信息在此处列出。
编辑
编辑器是软件开发中最重要的工具之一。该工具可(kě)用(yòng)于以不同的编程语言(包括C,C ++,Python和Java)编写和编辑代码。可(kě)以使用(yòng)不同的编辑器,这些编辑器是免费软件,并且附带价格。选择编辑器时可(kě)能(néng)要考虑的另一件事是它的环境,轻量级是更好的选择。一些编辑器包括Notepad ++,Atom,Visual Studio,NetBeans,Kite和Geany。良好的编辑器必须具备以下功能(néng)。
突出显示语法
代码导航
自动缩进代码
自动完成代码
行号
定期自动保存
注释多(duō)行
概述代码(包括功能(néng),库)
突出显示警告和错误
编译器
在最近的发展之后,源代码是用(yòng)高级语言编写的。编译器用(yòng)于将高级代码转换為(wèi)机器可(kě)以理(lǐ)解的低级代码。然后,机器可(kě)以使用(yòng)翻译后的代码执行所需的任務(wù)。有(yǒu)各种可(kě)用(yòng)的编译器,其中一些是Visual Studio,Eclipse,NetBeans,MATLAB,Arduino和Keil。
组装工
汇编程序几乎达到了与编译器相同的目的,但是还有(yǒu)一段距离。汇编程序将高级代码转换為(wèi)目标代码,同时将高级代码转换為(wèi)操作码并解析内存位置。然后,它将目标代码或汇编代码转换為(wèi)通常称為(wèi)机器语言代码的位级指令。GNU是用(yòng)于此目的的常见汇编程序之一。
调试器
就错误跟踪而言,它是最关键的工具。它通过指示和突出显示错误和警告(在发生的地方)来帮助开发人员跟踪错误。调试器提供的另一个功能(néng)是逐步调试。这样,开发人员可(kě)以通过执行代码的每一行并监视其执行状态来跟踪错误。上面列出的大多(duō)数编译器都包含调试器,但最常见的调试器是IDA Pro。该工具在Linux和Windows上均可(kě)用(yòng)。
连结器
在嵌入式系统中,程序通常以小(xiǎo)块或模块的形式编写。要将所有(yǒu)模块链接在一起,请使用(yòng)链接器工具。这将所有(yǒu)模块作為(wèi)输入,将它们组合在一起,并制作一个信号可(kě)执行程序。它还可(kě)以组合使用(yòng)不同编程语言创建的目标文(wén)件,并将它们合并為(wèi)一个可(kě)执行文(wén)件(如图2所示)。GNU链接器是最常见的链接器之一。
图2:链接来自不同编程语言的不同对象
仿真器
在使用(yòng)实际设备之前,在复制目标设备的工具上测试程序很(hěn)重要。為(wèi)此,使用(yòng)了仿真器。仿真器提供目标设备的组件和功能(néng)的副本。这样,开发人员可(kě)以轻松识别在实际设备上执行代码时可(kě)能(néng)发生的任何问题。通过使用(yòng)仿真器,开发人员可(kě)以调整代码参数以实现目标设备的最佳性能(néng)。优化代码性能(néng)后,可(kě)以将其部署在实际设备上。
开发人员很(hěn)难為(wèi)项目使用(yòng)所有(yǒu)不同的工具。因此,為(wèi)此目的,重要的是要在一个通常称為(wèi)集成开发环境(IDE)的单一环境中获得所有(yǒu)工具。IDE是一种工具,為(wèi)嵌入式软件的开发提供了所有(yǒu)必要的工具。
嵌入式软件语言
在嵌入式系统中,使用(yòng)实时操作系统,以便可(kě)以同时执行多(duō)个任務(wù)。嵌入式软件使用(yòng)不同的语言进行编程,这些语言通常包括Java脚本,Python和C / C ++。所有(yǒu)语言都可(kě)以使用(yòng)不同的操作系统进行处理(lǐ),这些操作系统可(kě)能(néng)包括Windows,Linux,micro C / OS,Nucleus RTOS等。但是,编程语言的选择是嵌入式软件开发的关键步骤,这取决于不同的因素。这里列出了一些关键参数:
内存大小(xiǎo):嵌入式设备的内存非常有(yǒu)限,用(yòng)于存储数据和代码。因此,拥有(yǒu)可(kě)以有(yǒu)效利用(yòng)内存的代码很(hěn)重要。
速度:希望程序能(néng)够快速执行。因此,需要為(wèi)特定的应用(yòng)选择正确的编程语言。
可(kě)移植性:我们在不同的工作地点没有(yǒu)相同的编译器。因此,编程语言必须能(néng)够在不同的处理(lǐ)器上执行。
实现:编程语言必须具有(yǒu)更简单的语法,并且出错的可(kě)能(néng)性很(hěn)小(xiǎo)。
维护:语言的维护应该很(hěn)容易,因為(wèi)调试旧代码可(kě)能(néng)是一项繁琐的任務(wù)。
嵌入式软件开发流程
嵌入式系统开发需要注意两件事:(i)软件开发,(ii)硬件开发。Embedder软件的开发经历了一个艰难的过程,因此它可(kě)能(néng)会為(wèi)我们提供完美的软件。為(wèi)了实现此任務(wù),使用(yòng)了不同的过程,其中之一就是敏捷开发方法(如图3所示)。
图3:嵌入式软件开发过程
第一步是集思广益,其中的想法需要进行讨论和完善,然后才能(néng)进入开发阶段。在第二和第三阶段中,将设计和开发该系统。第四阶段是关键阶段,在此阶段检查开发系统的质量。一旦系统清除了质量检查,便将其部署。
使用(yòng)图4所示的流程图可(kě)以更详细地描述“开发阶段”。在图4中,我们可(kě)以看到,开发阶段可(kě)以分(fēn)為(wèi)两个部分(fēn),即硬件和软件,这两个部分(fēn)是相互关联的。在硬件部分(fēn),為(wèi)目标系统完成组装,然后执行硬件测试,其中也包括软件部分(fēn)。在硬件链的末端,执行最终测试以检查是否达到了所需的结果。如果未达到结果,则将硬件组装进行更新(xīn)(在大多(duō)数情况下是不需要的),并且软件也将进行更新(xīn)以获得所需的结果。
图4:嵌入式软件开发的开发阶段
对于软件开发,使用(yòng)了“编辑-测试-调试”方法。在这种方法中,使用(yòng)了许多(duō)工具来获得期望的结果。在软件开发阶段,使用(yòng)了第3节中列出的所有(yǒu)工具。编辑-测试-调试周期所需的工具也可(kě)以使用(yòng)下面的图5进行说明。
图5:嵌入式软件开发的“编辑-测试-调试”阶段