嵌入式操作系统

Linux

主要目录

/bin:
bin 是 Binaries(二进制文件)的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动 Linux 时使用的一些核心文件, 包括一些连接文件以及镜像文件。

/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备 , 在 Linux 中访问设备的方式和访问文件的方式是相同的。

/etc :
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录 ,一般该目录名是以用户的账号命名的。

/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库, 其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的, 当系统非法关机后, 这里就存放了一些文件。

/media:
Linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统 (也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s 就是 Super User 的意思,是Superuser Binaries(超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放 selinux 相关的文件的。

镜像

zImage/bzImage:常规压缩内核镜像
uImage:带U-Boot头部的镜像
xipImage:可直接在ROM中执行的镜像

嵌入式系统通常通过U-Boot引导,加载内核镜像到内存执行

通过文件头特征识别镜像类型(如uImage头部特征)
使用binwalk等工具解析固件结构

RTOS

实时操作系统(Real-time operating system, RTOS)又称即时操作系统,会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础。与一般操作系统相比,最大特色是"实时性",能在较短时间内立即执行任务,保证各任务的及时执行。

模块构成:

  • 基础内核
  • 可选模块:文件系统、网络协议栈、设备驱动等
  • 常用自定义基础功能(如实现malloc.c)

Vxworks

VXWORKS既是一个操作系统、又是一个可以运行的最小基本程序
VXWORKS有BSP(板级支持包,可以认为是一种低层驱动),可以减小驱动程序的编写过程
VXWORKS具有强大的调试能力,可以在没有仿真器的情况下,通过串口调试
VXWORKS具有软件DEBUG功能,可以对软件部分进行模拟调试
VXWORKS具有丰富的函数库
同时VXWORKS自带TCP/IP协议栈

可加载型VxWorks镜像

镜像文件存储在开发机上,运行时加载到目标板RAM的高地址中

类似PC启动过程,通过BootStrap程序将系统从存储介质加载到内存运行

包含明确的地址空间划分,用于定位系统组件

若可通过UART等串口进入bootloader后,可利用flash/mem操作命令读取指定地址的镜像内容,则可获得完整的Vxworks镜像

可加载的VxWorks镜像

基于ROM的Vxworks镜像

系统镜像存储在ROM/Flash中,其中包含一个启动程序会将镜像读取到RAM中并加载启动

基于ROM的Vxworks镜像

驻留ROM的Vxworks镜像

系统镜像永久存储在ROM/Flash中并直接在其中运行

仅将易变的bss段、data段数据移至RAM中处理

由于主要代码在ROM中,掉电不会影响系统完整性,仅可能丢失RAM中的临时数据

驻留ROM的Vxworks镜像

一个仍在爬山的人