Nuttx操作系统学习(一)

由于项目需要,最近在学习和研究PX4和Nuttx的相关内容,自己之前也摸索过一些,但网络上资料较少且比较凌乱且没有章法,又苦于身边做这一块的人很少无人请教交流,所以在博客上记录下自己的学习过程,算是对自己学习的督促,希望自己能够扎实学习这块内容。部分内容源自官网或大佬们的博客,在此表示感谢,有什么不对的地方欢迎批评指正,也欢迎小伙伴们与我交流。

一、初识Nuttx

Nuttx是一种实时嵌入式操作系统 (real time operating system),从8位扩展到32位微控制器环境,Nuttx中的主要控制标准为Posix 和 ANSI标准。

【实时操作系统】能够在外界事件或数据产生时,接受并以足够快的速度予以处理,其处理结果又能在规定事件内来控制生成过程或对系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行。(快速响应、统筹调度) 【Posix】Portable Operating System Interface,意为可移植操作系统接口,是电气和电子工程师协会(IEEE)为要在UNIX操作系统上运行软件,而定义应用程序接口(API)的一系列相互关联的标准的总称。

二、Nuttx系统的结构分层及各层作用

2.1 Nuttx结构分层

    NSH(Nuttx Shell ),APP Virtual File System (虚拟文件系统) Upper Half Drivers (上层驱动) Lower Half Drivers (下层驱动) Microcontroller + Peripherals (微控制器+外设)

2.2 各层功能

  1. NSH,APP:实际的应用层,是应用程序或者说是终端。
  2. Virtual File System:即文件操作系统,Linux中一切皆文件。该层主要作用是将对设备的操作,转化为对虚拟文件的操作。
  3. Upper Half Drivers :这层驱动实现的是对各种设备的操作接口的定义,比如PWM,Network,Graphics等,可以认为是系统的API。位置在 nuttx / include / drivers 中。
  4. Lower Half Drivers :是对于上层驱动的具体实现,这层驱动提供的API直接操作各种芯片。
  5. Microcontroller + Peripherals:各种硬件。

三、开发步骤

  1. 系统移植:根据需要将Nuttx系统移植到开发板。
  2. 创建并初始化设备:分析你的应用程序需要哪些设备,创建并初始化你所需要的设备,在configs / / src / * 下的C文件中编写。
  3. 应用程序开发:在app目录下创建自己的app目录,通过调用Upper Half Drivers 驱动来实现功能。

下面打算根据自己的经历来举例简单谈谈Nuttx系统的移植和应用程序的编写,请见下篇。

经验分享 程序员 微信小程序 职场和发展