STM32上移植nuttx操作系统

文章来源:【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  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的基础上编写自己想要的驱动程序以及应用程序啦。愉快的玩耍吧~

原文地址:https://www.cnblogs.com/jiayezi/p/15146251.html