嵌入式开发:嵌入式与非嵌入式操作系统

更新时间: 2021-10-22 10:02:24来源: 粤嵌教育浏览量:12532

  什么是嵌入式设备?如果你使用过电子设备,比如智能手机或家用电器,那么你很可能已经接触过这些设备。简单地说,嵌入式设备是设计用于执行特定任务的“简单”设备。在嵌入式开发中,这些设备在驱动或运行简单的单任务环境中起着不可替代的作用。


  没有操作系统的设备驱动程序(裸机设备)


  不是每台计算机都需要操作系统来运行;在许多情况下,操作系统是不必要的。对于相对简单且控制不复杂的功能,单任务体系结构完全能够支持它们的工作。


  嵌入式系统的一些现实例子包括公交卡读卡器、冰箱、微波炉和简单的移动电话。除此之外,不需要复杂任务(如多任务调度、文件系统或内存管理)的计算机不依赖于操作系统。


  此类系统中的典型软件架构包括无限循环设备中断测试,轮询设备。裸机设备实现了一些类似于单芯片设备或微控制器(MCU)的功能。如果裸机设备包括一个驱动器,它应该能够胜任微控制器的工作。


  在这样的嵌入式开发系统中,虽然没有操作系统,但设备驱动程序必须仍然存在。设备驱动接口直接提交给应用软件,并且应用软件直接访问设备驱动接口而不跨越任何层次结构。设备驱动程序还包括直接与硬件功能配合使用的接口功能,无需任何附加功能。


  带有设备驱动程序的操作系统


  当系统包含操作系统时,设备驱动程序会是什么样子?


  首先,非嵌入式操作系统的设备驱动硬件操作可能仍然至关重要。如果没有这个部分,设备驱动程序和硬件就不能相互交互。



  其次,我们还需要将设备驱动程序合并到内核中。为了实现这种融合,我们必须在所有设备驱动程序中设计操作系统内核的接口。操作系统规定了这些类型的接口,并且在结构上独立于特定于一类设备的设备。


  因此,当有操作系统时,设备驱动程序成为连接硬件和内核的链接。操作系统的存在将不可避免地要求设备驱动程序附加更多的代码和功能,从而将单个“驱动硬件设备操作”变成一个模块,用于从操作系统内部与硬件交互。


  它以操作系统API的形式出现,不再提供直接接口。在获得操作系统后,设备驱动程序变得越来越复杂。问题是,在这种情况下,操作系统应该做什么?


  首先,一个复杂的软件系统需要处理多个并发任务。如果没有操作系统,完成多任务并发是一项挑战。其次,操作系统为嵌入式开发工程师提供了内存管理机制。


  举个典型的例子,大多数基于MMU的处理器、Windows、Linux和其他传统操作系统都支持每个进程单独访问4GB内存。总之,操作系统给设备驱动程序带来了哪些优势?


  操作系统为设备驱动程序带来问题,以实现向更高级别的应用程序提供方便操作的目的。如果所有设备驱动程序的设计理念都是操作系统提供独立于设备的接口,那么应用程序将可以使用统一的系统调用接口访问各种设备。对于UNIX的VxWorks、Linux和其他操作系统,应用程序可以读取和写入文件,并通过write()和read()函数访问不同的字符设备和块设备。这与设备和工作的具体类型无关,因此非常方便。

免费预约试听课