iOS 开发 对讲录音 语音对讲软件开发_软件开发


iOS 开发 对讲录音 语音对讲软件开发_iOS 开发 对讲录音_02

[EIPC事務局,MONOist]


本连载以今后从事嵌入式机器开发的技术人员和工程师为对象,介绍作为嵌入式机器开发入门应该知道的所有内容。

上一讲已经介绍了嵌入式硬件开发的一些特点,这一讲将开始介绍嵌入式的软件开发。

软件在嵌入式机器中的重要性


把时间往前翻40年,那时候的电子产品开发中还没有软件工程师这个概念,因为基本是以设计的硬件来实现产品的功能,软件几乎没有或者只占很小的比例。但是,随着电子产品的功能高度复杂化,低成本化。对软件的要求越来越高,然后才出现了专门负责软件开发的工程师。

以按键为例,40多年前基本是以硬件来实现按键功能的,然而现在呢,比如我们的手机,按键大概只剩开机键了吧,之前输入信息的按键全部由触摸屏和软件来配合实现。按键的表示、切换、接收等都是通过软件来实现的。

通过软件实现一部分硬件的功能,可以提高产品的性能,降低产品的成本,给客户带来更好的体验。所以电子产品中软件的比例越来越大,重要性也随之变大。

嵌入式软件的构成


和PC软件类似,嵌入式软件可以分为驱动层、操作系统(OS)、中间层和应用层。只不过针对特定的用途,各个层可能会和PC软件中各层的定义不同,没有操作系统的嵌入式软件也不占少数。

嵌入式软件的开发


以前说到嵌入式的软件开发都会联想到汇编语言,确实,嵌入式开发曾经经历过那样的年代,但最近,嵌入式的软件开发已基本都用C语言、C++和JAVA等中高级编程语言了。只是,嵌入式当中有一部分只能用汇编语言编写,其他编程语言无法替代。

汇编语言的编程只需要照着数据手册开发就可以了,另外一个看出嵌入式软件开发者水平的是开发中使用的ICE(In-Circuit Emulator)和JTAG(Joint Test Action Group)。本身说到嵌入式开发就是指开发环境(PC上)与运行环境(嵌入式机器上)不同,所以与PC上一行一行Debug形成区别的是,嵌入式软件的Debug是需要运行环境与Debug环境进行通信。因为这种特性,可能造成无法像PC那样一行一行运行,或者看到的值与实际的值不同。再比如在Debug时停止程序,然而运行环境中的某些计时功能还在执行,造成运行环境重启。

像这样预计和实际结果出现不同的情况很多,而这就需要嵌入式软件开发者拥有比PC软件开发者更多的经验和技术去发现并解决问题。

使用嵌入式操作系统的原因


大家可能对PC的操作系统比较熟悉,比如Windows 10,操作系统就是控制、管理各个硬件资源的基本软件。那么嵌入式系统为什么要用操作系统呢?有以下几个需求。

同时运行程序:对于真正运行程序,CPU中心的Core来说,一个Core只能运行一个程序,像Windows(单核年代的PC)那样一边拷贝资料,一边移动鼠标的操作其实是操作系统控制两个程序分别在Core上以极小的时间片段分别运行。当嵌入式系统也有类似多进程的需求时就会考虑采用OS。

网络连接:当嵌入式机器需要通过WIFI等无线网络进行通信时,OS可以提供很多已经实装的功能,包括运行的网络协议,只需要调用OS提供的接口就可以实现。

界面:当需要有输入输出的界面时,比如中英文的文字输入或者语音,画面描画等,利用带有标准输入输出功能的OS就可以省去很多开发时间。

嵌入式操作系统和普通操作系统区别


在说明这里的时候,对于嵌入式操作系统,或者观察君用实时操作系统来称呼它大家应该能够更好的理解,代表性的类似TOPPERS、uiTRON,它和大家熟悉的Windows、MacOS等普通操作系统的区别就在实时性上。

普通操作系统在处理多进程时可能根据进程的大小等进行切换,可能进程还没有执行结束就被吊起。然而,实时操作系统则不同,它会根据进程的优先性,将优先度高的程序走完。

比如汽车上的安全气囊,事故发生时打开安全气囊,将它优先度设为最高,则只要发生车祸,无论其他什么进程要求执行,程序也不会跳出,直到执行完安全气囊打开的程序为止。

嵌入式操作系统发展的趋势


刚刚将嵌入式操作系统称呼为实时操作系统,放在以前应该是没有问题的,但是,随着时代的发展,嵌入式机器硬件的性能越来越强,而普通操作系统也更加完善,错误率也逐渐降低,开始向移动终端等嵌入式机器方向发展。在万物互联的时代,无论什么样的嵌入式机器可能都需要联网,