一、背景
最近在自己开发基于Nuttx的四轴飞行器控制系统。慢慢的对Nuttx有了自己的理解。
二、Nuttx系统分层
- NSH(Nuttx Shell),各种APP
- Virtual File System(虚拟文件系统)
- Upper Half Drivers(上层驱动)
- Lower Half Drivers(下层驱动)
- Microcontroller + Peripherals(外设)
三、各层的作用
- NSH, APP。这一层也就是实际的应用层,应用程序或者我们常说的终端。
- Virtual File System。这一层比较容易理解,也就是一个文件系统,这个虚拟文件系统符合Linux系统的思想。即这一层主要的作用是,将设备的操作,转化为对于虚拟文件的操作。比如我们的NSH输出,就可以虚拟成
/dev/console
这个文件。通过open打开设备,write进行数据传输,read进行数据读取。文件在很多地方和设备有共性,毕竟都视作资源。 - Upper Half Drivers 上层驱动,这一层的驱动实现的是对于各种设备的操作接口的定义,比如PWM,Network, Graphics等等。这一层也就是可以认为是系统的API。应用程序中你可以用这一层提供给你的函数操作PWM设备。这一层的驱动位于
nuttx/include/drivers
中。 - Lower Half Drivers 下层驱动,这一层驱动是对于上层驱动的具体实现。这一层的驱动提供的API直接操作各种芯片,也就是说不同的芯片这部分的驱动将是不同的。STM32有S