嵌入式软件开发是什么?

blog-image

嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件、软件以及综合研发。硬件研发通常指在EDA软件平台上,用硬件描述语言VerilogHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

嵌入式软件研发就是在一定硬件条件下的系统化设计和软件研发。

主要使用的语言是C/C++、Ada。

嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,有些嵌入式系统都是由单个程序实现整个控制逻辑。

嵌入式系统的演进方向

  1. 以单片机为核心、可编程控制器存在形式

没有操作系统支持 软件以汇编为主 功能单一、处理效率低、存储容器小,没有外部接口 使用简单、价格低

  1. 以嵌入式CPU为基础、简单操作系统为核心 CPU种类多,通用性弱 系统开销小,效率高 达到一定的兼容性,拓展性 用户体验度不高,交互界面不够友好

  2. 以嵌入式操作系统为标志 兼容性好,适用于不同平台 系统开销小,效率高,具有高度模块化及拓展性 图形化界面、用户界面友好 丰富的外部接口

  3. 以物联网为标志 将传感器技术、互联网技术及传统嵌入式技术综合联系 小型化、智能化、网络化、可视化 低功耗、绿色环保 多核技术、云计算、虚拟化技术

嵌入式的两种开发模式

非嵌入式的开发

A类机编写源代码,编译得到可执行程序,发布给A类机运行。

嵌入式开发

A类机编写源代码,编译得到可执行程序,发布给B类机运行,这种编译模式也叫作交叉编译。

为什么使用交叉?嵌入式开的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有;交叉编译器可以用高性能机器为低性能机器开发软件。交叉编译必须使用专用的交叉编译工具。由于可执行程序不能在本地运行调试,因此必须使用特殊的方法将可执行程序加载到目标嵌入式设备上运行及调试。

嵌入式开发流程

创建工程项目

在配置硬件设备和安装软件开发工具后,就可以开始创建工程项目,通常需要选择项目文件的存储位置及目标处理器。

添加项目文件

开发人员需要创建源程序文件,编写应用程序代码,并添加到工程项目中;还将使用设备驱动程序的库文件,包括启动代码、头文件和一些外设控制函数,甚至中间件(Middleware)等。这些文件也需要添加到项目中。

配置工程选项

源于硬件设备的多样性和软件工具的复杂性,工程项目提供了不少选项,需要开发人员配置,如输出文件类型和位置、编译选项和优化类型等,还要根据选用的开发板和在线仿真器,配置代码调试和下载选项等。

交叉编译连接

利用开发软件工具对项目的多个文件分别编译,生成相应的目标文件,然后连接生成最终的可执行文件映像,以下载到目标设备的文件格式保存。如果编译连接有错误,返回修改;如果没有错误,先进行软件模拟运行和调试,再下载到开发板运行和调试。

程序下载

目前,绝大多数微控制器都使用闪存(Flash Memory)保存程序。创建可执行文件映像后,需要使用在线仿真器(或串口、网口)将其下载到微控制器的闪存中,实现闪存的编程;还可以将可执行文件下载到SRAM中运行。

运行和调试

程序下载后,可以启动运行,看是否正常工作。如果有问题,连接在线仿真器,借助软件开发工具的调试环境进行断点和单步调试,观察程序操作的详细过程。如果应用程序运行有错误,返回修改。