NuttX とは
NuttX とは Posix インタフェースをサポートしたフリーの RTOS (RealTime OS) です. 組込向けの Posix インタフェースに準拠したOSとして Linux が使われることが多いですが, よりコンパクトでシンプルなRTOSとしての挙動が必要な場合に使用されるとの印象です.
今回,Pthread 対応で作成されたミドルウェアを RTOS 上での動作として確認したい事案があり, 何かしらフリーかつPosixインタフェース仕様の RTOS を探していて,NuttX に出会いました.
初めて扱うRTOSのため,どのような感じかを含め,ここに記録を残していこうかと思います.
NuttX の入手
Nuttx はその オフィシャルサイト で紹介されているリポジトリサイトから入手可能です. サイトとしては SOURCEFORGE と bitbucket の2つがありますが,bitbucket から Git Repository の clone を作ることにしました.
webページに記載されている以下のコマンドを発行することで,ソースコードの入手が可能です:
$ git clone https://bitbucket.org/nuttx/nuttx.git nuttx Cloning into 'nuttx'... remote: Counting objects: 405581, done. remote: Compressing objects: 100% (17927/17927), done. remote: Total 405581 (delta 13936), reused 0 (delta 0) Receiving objects: 100% (405581/405581), 96.67 MiB | 6.37 MiB/s, done. Resolving deltas: 100% (317842/317842), done. Checking out files: 100% (11222/11222), done.
ダウンロードした内容は以下のようになっています:
$ ls -al ./nuttx/ 合計 2812 drwxr-xr-x 21 myname myname 4096 5月 12 15:03 . drwxr-xr-x 3 myname myname 4096 5月 12 15:02 .. drwxr-xr-x 8 myname myname 4096 5月 12 15:03 .git -rw-r--r-- 1 myname myname 258 5月 12 15:03 .gitignore -rw-r--r-- 1 myname myname 11658 5月 12 15:03 COPYING -rw-r--r-- 1 myname myname 1397501 5月 12 15:03 ChangeLog drwxr-xr-x 2 myname myname 4096 5月 12 15:03 Documentation -rw-r--r-- 1 myname myname 40418 5月 12 15:03 Kconfig -rw-r--r-- 1 myname myname 2099 5月 12 15:03 Makefile -rw-r--r-- 1 myname myname 82846 5月 12 15:03 README.txt -rw-r--r-- 1 myname myname 1095746 5月 12 15:03 ReleaseNotes -rw-r--r-- 1 myname myname 147195 5月 12 15:03 TODO drwxr-xr-x 15 myname myname 4096 5月 12 15:03 arch drwxr-xr-x 2 myname myname 4096 5月 12 15:03 audio drwxr-xr-x 6 myname myname 4096 5月 12 15:03 binfmt drwxr-xr-x 173 myname myname 4096 5月 12 15:03 configs drwxr-xr-x 2 myname myname 4096 5月 12 15:03 crypto drwxr-xr-x 35 myname myname 4096 5月 12 15:03 drivers drwxr-xr-x 27 myname myname 4096 5月 12 15:03 fs drwxr-xr-x 7 myname myname 4096 5月 12 15:03 graphics drwxr-xr-x 9 myname myname 4096 5月 12 15:03 include drwxr-xr-x 6 myname myname 4096 5月 12 15:03 libs drwxr-xr-x 11 myname myname 4096 5月 12 15:03 mm drwxr-xr-x 26 myname myname 4096 5月 12 15:03 net drwxr-xr-x 2 myname myname 4096 5月 12 15:03 pass1 drwxr-xr-x 19 myname myname 4096 5月 12 15:03 sched drwxr-xr-x 4 myname myname 4096 5月 12 15:03 syscall drwxr-xr-x 3 myname myname 4096 5月 12 15:03 tools drwxr-xr-x 5 myname myname 4096 5月 12 15:03 wireless
上記でダウンロードした README.txt を見てみると,以下が書かれていました:
INSTALLATION ^^^^^^^^^^^^ There are two ways to get NuttX: You may download released, stable tarballs from either the Bitbucket or Sourceforge download locations. Or you may get NuttX by cloning the Bitbucket GIT repositories. Let's consider the released tarballs first:
コメントに従って tarball をダウンロードする所から始めます...
NuttX の tarball の入手
README.txtに記載されている bitbucket からのファイルダウンロードページ から tar.gz を入手します. 最新のファイル名が nuttx-7.29.tar.gz なので,この記事作成時点での stable 版の最新バージョンは 7.29 ということでしょうか.
展開した tar.gz を展開すると以下のフォルダが作成されました:
$ ls -al ./nuttx-7.29 合計 2812 drwxr-x--- 20 myname myname 4096 3月 25 23:08 . drwxr-xr-x 4 myname myname 4096 5月 12 15:31 .. -rwxr-xr-x 1 myname myname 153 3月 25 23:08 .version -rwxr----- 1 myname myname 11658 3月 25 23:02 COPYING -rwxr----- 1 myname myname 1397501 3月 25 23:02 ChangeLog drwxr-x--- 2 myname myname 4096 3月 25 23:07 Documentation -rwxr----- 1 myname myname 40418 3月 25 23:02 Kconfig -rwxr----- 1 myname myname 2099 3月 25 23:02 Makefile -rwxr----- 1 myname myname 82804 3月 25 23:02 README.txt -rwxr----- 1 myname myname 1095746 3月 25 23:02 ReleaseNotes -rwxr----- 1 myname myname 147542 3月 25 23:02 TODO drwxr-x--- 15 myname myname 4096 3月 25 23:03 arch drwxr-x--- 2 myname myname 4096 3月 25 23:07 audio drwxr-x--- 6 myname myname 4096 3月 25 23:07 binfmt drwxr-x--- 172 myname myname 4096 3月 25 23:07 configs drwxr-x--- 2 myname myname 4096 3月 25 23:03 crypto drwxr-x--- 35 myname myname 4096 3月 25 23:07 drivers drwxr-x--- 27 myname myname 4096 3月 25 23:07 fs drwxr-x--- 7 myname myname 4096 3月 25 23:07 graphics drwxr-x--- 9 myname myname 4096 3月 25 23:07 include drwxr-x--- 6 myname myname 4096 3月 25 23:03 libs drwxr-x--- 11 myname myname 4096 3月 25 23:07 mm drwxr-x--- 26 myname myname 4096 3月 25 23:07 net drwxr-x--- 2 myname myname 4096 3月 25 23:07 pass1 drwxr-x--- 19 myname myname 4096 3月 25 23:07 sched drwxr-x--- 4 myname myname 4096 3月 25 23:07 syscall drwxr-x--- 3 myname myname 4096 3月 25 23:07 tools drwxr-x--- 5 myname myname 4096 3月 25 23:07 wireless
また README.txt を見てみると app も必要そうなので,同じくダウンロードページから app-7.29.tar.gz もダウンロードします.
appも展開して README.txt 記載のフォルダ構成にシンボリックリンクを作ると 以下のような感じになります:
$ ls -al 合計 23860 drwxr-xr-x 4 myname myname 4096 5月 12 15:51 . drwxr-xr-x 39 myname myname 4096 5月 12 14:59 .. lrwxrwxrwx 1 myname myname 9 5月 12 15:51 apps -> apps-7.29 drwxr-x--- 19 myname myname 4096 5月 12 15:50 apps-7.29 -rw-rw-r-- 1 myname myname 3529151 5月 12 15:48 apps-7.29.tar.gz lrwxrwxrwx 1 myname myname 10 5月 12 15:51 nuttx -> nuttx-7.29 drwxr-x--- 20 myname myname 4096 3月 25 23:08 nuttx-7.29 -rw-rw-r-- 1 myname myname 20885489 5月 12 15:29 nuttx-7.29.tar.gz
事前に準備されているコンフィグレーション
事前に準備されているコンフィグレーションは NuttX フォルダの configs の下にあります. ls で表示させてみると,以下の通りです:
$ ls -a ./nuttx/configs/ . maple sam3u-ek .. max32660-evsys sam4cmp-db Board.mk mbed sam4e-ek Kconfig mcb1700 sam4l-xplained Makefile mcu123-lpc214x sam4s-xplained README.txt metro-m4 sam4s-xplained-pro amber micropendous3 sama5d2-xult arduino-due mikroe-stm32f4 sama5d3-xplained arduino-mega2560 mirtoo sama5d3x-ek avr32dev1 misoc sama5d4-ek b-l072z-lrwan1 moteino-mega samd20-xplained b-l475e-iot01a moxa samd21-xplained bambino-200e ne64badge same70-xplained beaglebone-black nr5m100-nexys4 saml21-xplained boardctl.c nrf52-generic samv71-xult c5471evm ntosd-dm320 shenzhou clicker2-stm32 nucleo-144 sim cloudctrl nucleo-f072rb skp16c26 demo9s12ne64 nucleo-f091rc stm3210e-eval dk-tm4c129x nucleo-f103rb stm3220g-eval dummy nucleo-f207zg stm3240g-eval ea3131 nucleo-f302r8 stm32_tiny ea3152 nucleo-f303re stm32butterfly2 eagle100 nucleo-f303ze stm32f051-discovery efm32-g8xx-stk nucleo-f334r8 stm32f072-discovery efm32gg-stk3700 nucleo-f410rb stm32f103-minimum ekk-lm3s9b96 nucleo-f446re stm32f334-disco esp32-core nucleo-f4x1re stm32f3discovery ez80f910200kitg nucleo-h743zi stm32f411e-disco ez80f910200zco nucleo-l073rz stm32f429i-disco fire-stm32v2 nucleo-l152re stm32f4discovery flipnclick-pic32mz nucleo-l432kc stm32f746-ws flipnclick-sam3x nucleo-l452re stm32f746g-disco freedom-k28f nucleo-l476rg stm32f769i-disco freedom-k64f nucleo-l496zg stm32l476-mdk freedom-k66f nutiny-nuc120 stm32l476vg-disco freedom-kl25z olimex-efm32g880f128-stk stm32l4r9ai-disco freedom-kl26z olimex-lpc-h3131 stm32ldiscovery gapuino olimex-lpc1766stk stm32vldiscovery hymini-stm32v olimex-lpc2378 sure-pic32mx imxrt1050-evk olimex-stm32-e407 teensy-2.0 imxrt1060-evk olimex-stm32-h405 teensy-3.x kwikstik-k40 olimex-stm32-h407 teensy-lc launchxl-cc1310 olimex-stm32-p107 tm4c123g-launchpad launchxl-cc1312r1 olimex-stm32-p207 tm4c1294-launchpad launchxl-tms57004 olimex-stm32-p407 tms570ls31x-usb-kit lc823450-xgevk olimex-strp711 twr-k60n512 lincoln60 olimexino-stm32 twr-k64f120m lm3s6432-s2e omnibusf4 u-blox-c027 lm3s6965-ek open1788 ubw32 lm3s8962-ek or1k us7032evb1 lm4f120-launchpad p112 viewtool-stm32f107 lpc4330-xplorer pcduino-a10 xmc4500-relax lpc4337-ws photon z16f2800100zcog lpc4357-evb pic32mx-starterkit z80sim lpc4370-link2 pic32mx7mmb z8encore000zco lpcxpresso-lpc1115 pic32mz-starterkit z8f64200100kit lpcxpresso-lpc1768 qemu-i486 zkit-arm-1769
とりあえず何かしら動作評価をしてみたいので, QEMU の i486 版 (qemu-i486) から初めてみたく思います.
0 件のコメント:
コメントを投稿