操作系统属于软件而不属于固件!

很多人会搞混是因为操作系统、固件和驱动挨得很近,我们将其拆开:


层级关系

应用软件(微信、抖音、相机APP) ← 上层软件

操作系统内核 + 设备驱动(Driver) ←【操作系统,软件层】

命令通过总线下发(I2C/AXI/SPI)

固件(Firmware) ← 芯片内部小程序

硬件(CPU、ISP、传感器、SSD芯片) ← 物理硬件


操作系统是什么

OS是跑在主控CPU上的一大套软件,如Windows、Linux、Android、鸿蒙、iOS、FreeRTOS、LiteOS等。而固件绝大多数跑在外设独立的子处理器上,只管这一块硬件

特点:

运行载体 主CPU
管辖范围 全局。管理内存、任务调度、中断、所有外设和上层app
存储位置 板载Flash,不是cpu芯片内部
目标受众 给上层应用、驱动提供运行环境。【驱动属于OS的一部分,也是软件,相当于OS和固件间的翻译官】
可替换性 可以重装、刷别的系统

注意:

RTOS(实施操作系统)如FreeRTOS和LiteOS,当把实时操作系统直接烧进单片机MCU片内Flash的时候它既是操作系统,又是固件。原因:具备OS能力,如任务调度、信号量和队列维护,又固化在芯片内部掌管单片机全部硬件,没有另外一颗主CPU(因此无主机-外设两颗cpu划分,边界消失)

对比表格

对比项 操作系统 固件
运行CPU 主cpu(ap) 外设芯片独立子内核
管辖范围 全局资源 只管理自身这一块
存储位置 主板Flash,独立于CPU 外设芯片内部Flash
上层接口 给APP和驱动提供API 给主CPU的驱动提供接口
能不能卸载重装 可以换系统、重装Linux/Android 不能卸载,只能单独升级
例子 Android、linux、鸿蒙、windows ISP固件、蓝牙固件
通信对象 上层应用程序(驱动软件为OS内核组件) 主机的驱动软件

通信对象补齐

模块 向上和谁通信 向下和谁通信 接口类型
上层APP OS 用户态API
OS 上层APP 设备驱动 向上:API;向下:内核API/框架接口
驱动 OS 固件 向上:调用内核API;向下:跨核通信接口
固件 驱动 硬件寄存器 向上:固件通信接口

总结

OS往上给APP提供API,往下和驱动通信,使用内核的API/框架接口。驱动在跨国处理器边界通过通信接口和ISP固件说话

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐