みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

NuttX

ASF傘下に入ったNuttXをビルド

はじめに NuttXはASFのIncubatorプロジェクトへ採択され、リポジトリがBitBucketからGitHubに変更された。 今後はプルリクエストなどもGitHubで受け付ける。 ソースコードを取得 GitHubからソースコードを取得するには次のようにする。 $ git clone https://…

STM32F4Discovery向けのNuttXをClangでビルドする

はじめに NuttXは次のボードについてClangでのビルドに対応している。 nucleo-f446re nucleo-f4x1re stm32f746g-disco 筆者的によく使用するSTM32F4DiscoveryもClangでビルドできないか試してみる。 今回はclang-9を使用している。 clangの設定方法はここを…

NuttXをnRF52840-DKで動かす

はじめに NuttXがnRF52840-DKに対応したっぽいので動かしてみる。 ARMのツールチェインの設定方法についてはここを参照。 J-Linkツールの設定方法についてはここを参照。 NuttXの作成 ソースの取得 $ git clone https://bitbucket.org/nuttx/nuttx.git $ git…

NuttXアプリケーションの作成を補助するスクリプトを作った

はじめに NuttXで小さい書捨てのアプリケーションをたくさん作る必要が出てきたので、 アプリケーションの雛形を出力するスクリプトを自分用に作成した。 せっかくなので(?)、githubに置いといた。 スクリプトがやっていることの詳細はここを参照。 使い方 n…

NuttXでmbedTLSを動かす

はじめに NuttXでmbed TLSを動かす。 3年ほど前にMarceloさんが一度移植したらしいので、ここを参考にする。 ただし情報が古くその間にNuttXも新しくなっているのでこのままではうまく行かない。 今回使用するターゲットはSTM32F4Discovery。 NuttX まずはNu…

NuttX ビルトインアプリケーションを作成する

はじめに NuttXにビルトインアプリケーションを追加する方法を調査した。 ここが日本語でよくまとまっていた。 プログラムを作成する場所 プログラムをどこに追加するかと言うのが一つ考えどころだが、apps/README.txtによると、 Use of the name ''apps/ext…

STM32F4Discovery NuttXでC++(libc++)をためす

はじめに make menuconfigで見てみると、NuttXでもlibc++やuClibc++などが使えるようになっているらしい。 ただ、ライブラリのソースはカーネルやアプリからは分離されているようで、別途取得する必要がある。 具体的なやり方はAlan C. Assisさんが紹介して…

NuttX STM32F4Discovery+RNDISでEthernet(ついでにMQTT)

はじめに NuttXはRNDISドライバを持っている。 STM32F4DiscoveryはRNDISドライバを使用すると、USBでEthernetデバイスとして通信できるようになる。 意外なほど簡単に使用することができる。 コンフィグレーション $ tools/configure.sh -l configs/stm32f4d…

NuttX STM32F4Discovery+ENC28J60でMQTT

はじめに STM32F4DiscoveryでEthernetが使えるようになったのでMQTTを動かしてみる。 既にNuttXでMQTTを動作させた例がないかWebで調べたところ、こんなものを見つけた。 リンク先では、MQTT-Cを動かそうとしていて問題が発生したというissueで、最終的には…

NuttX STM32F4Discovery+ENC28J60でEthernet

はじめに Amazonで購入したEthernetコントローラ基板をSTM32F4Discovery + NuttXで使用できるようにする。 このコントローラ基板はENC28J60が載っている。ENC28J60はMACとPHYの機能を持っているため、ホストとなるボードはSPIで通信できればEthernetが使える…

NuttXでRAMLOG(dmesg)を使用する

はじめに NuttXではデバッグログをRAMに出力することができる。 RAMに出力されたログデータはLinuxなどでおなじみのdmesgコマンドで表示することができる。 BluePillのようなRAMの少ない環境では活用は難しそうだが、STM32F4Discoveryくらい余裕のある環境で…

NuttXをSTM32F4Discoveryで動かす(NSH編)

STM32F4Discovery + NuttXの続き。 NuttXをSTM32F4Discoveryで動かす はじめに STM32F4DiscoveryでのNSHの使用方法を紹介する。 コンフィグレーション 次のようにコンフィグレーションを実行する。 $ cd nuttx $ tools/configure.sh -l stm32f4discovery/nsh…

NuttXをSTM32F4Discoveryで動かす

はじめに これまでBluePillで遊んできたNuttXをSTM32F4Discoveryで動かす。 STM32F4DiscoveryはSTM32F407VGT6が載っている。 メモリ サイズ フラッシュ 1MiB RAM 192KiB BluePillと比較するとかなりリッチなリソースを持っている。 NuttXの作成 基本的なとこ…

STM32F103 minimum(BluePill)上のNuttXをOpenOCD(とブラウザ)でデバッグ

BluePill + NuttXの続き。 NuttXをSTM32F103 minimum(BluePill)で動かす NuttXのSTM32F103 minimum(BluePill)で128Kのフラッシュを使う NuttXをSTM32F103 minimum(BluePill)で動かす(NSH編) OpenOCDでデバッグ フラッシュを128K使うために、OpenOCDを使用し…

NuttXをSTM32F103 minimum(BluePill)で動かす(NSH編)

NuttX + BluePillの続き。 NuttXをSTM32F103 minimum(BluePill)で動かす NuttXのSTM32F103 minimum(BluePill)で128Kのフラッシュを使う UARTでシェル 前回まではBluePillとPCをUSBケーブルで接続しUSB経由でシェルを使用していたが、 今回はUSB-TTL変換ケー…

NuttXのSTM32F103 minimum(BluePill)で128Kのフラッシュを使う

はじめに 前回はSTM32F103C8T6のフラッシュは64KiBだと書いた。 しかし、NuttXのconfigs/stm32f103-minimum/scripts/ld.scriptを参照すると、次のように書いてある。 * * NOTE: While the STM32F103C8T6 states that the part has 64Kb of FLASH, * all part…

NuttXをSTM32F103 minimum(BluePill)で動かす

はじめに STM32F103 Minimum BoardでNuttXというRTOSを動かしてみる。 このボードはAmazonで買えた 2個で990円。もっと安いものもあるみたいだが、中国から直送で1ヶ月くらい輸送にかかりそうなのでプライムで短期間で届きそうなものを買った。 このボードに…