文章来源:【NuttX】浅析操作系统及NuttX在STM32平台上的移植 - 知乎 (zhihu.com)
操作系统(Operating System),简称OS,是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。
根据计算机组成原理,计算机由CPU(运算器+控制器),存储器,输入,输出设备组成。
根据操作系统原理,OS由调度,内存管理,文件系统,进程间通信,计算机网络组成。
CPU对应OS的调度(Schedule);
内存对应OS的内存管理(Memory Management);
存储器对应OS的文件系统(File System);
输入/输出设备对应OS的驱动,也可以认为是文件系统(一切皆文件);
进程间通信(Internal Process communacation)是OS提供给应用程序的通信方式。
OS的作用就是用来管理计算机的硬件资源,并隔离硬件,提供给应用开发抽象的统一接口。另外,其本身作为系统软件,也要占用一定的硬件资源。
本文主要介绍nuttx的下载,配置,编译,烧写,nsh运行。
1 Nuttx介绍(Introduction)
Linux大家都很熟悉,其有很多发行版本,比如Ubuntu,RedHat,centos等。NuttX是一种类Linux的嵌入式系统,原理和使用都非常类似与Linux。
关键功能:
- 符合各类重要标准
- 核心任务管理
- 模组化的微核心
- 完全可抢占
- 可扩展,高度可配置
- 容易移植到各类新的处理器、SoC或者板级架构上
- 先进先出和时间片轮转调度,并可以采取无节拍内核
- 实时,具备确定性
- 具备和POSIX/ANSI类似的任务控制,有名消息队列,计数信号量,时钟、定时器和信号,POSIX线程,环境变量和文件系统
- 具备和VxWorks类似的任务管理和看门狗定时器
- 具备和BSD类似的socket接口
2 下载源代码(Download)
git下载地址:
git clone https://bitbucket.org/nuttx/nuttx.git nuttx
git clonehttps://bitbucket.org/nuttx/apps.git apps
git clonehttps://bitbucket.org/nuttx/tools.git tools
下载完成:
3 配置(Configuration)
根据主板型号进行配置,我用的是STM32F103C8T6的最小系统板子
nuttx目录下执行:./tools/configure.sh -l stm32f103-minimum:nsh
这时可使用menuconfig进行可视化配置
nuttx目录下执行:make menuconfig
注意需要开启UART1,便于串口登录终端,进入nsh(nuttx shell)。
可根据自己需要开启/关闭一些功能,进行裁剪或增加。该配置的目的是修改.config文件,而.config文件是makefile编译时所依赖的的宏配置。
4 编译(Compile)
nuttx目录下执行:make
最终生成hex和bin文件。
5 烧写bin文件
使用J-Flash进行烧写,地址选择0x08000000(Flash的起始地址)
6 串口连接
sudo minicom 选择波特率与UART1一致(115200),进入nsh终端,完成移植。
至此,就完成了nuttx在STM32F103最小系统上的移植工作,就可以在nuttx的基础上编写自己想要的驱动程序以及应用程序啦。愉快的玩耍吧~