みつきんのメモ

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

STM32F4Discovery

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の設定方法はここを…

Zephyrでデバッグ

はじめに コンフィグレーション menuconfig デバッグ用設定 デバッグ開始 gdbgui まとめ はじめに Zephyrのアプリケーションをデバッグする。ターゲットはSTM32F4Discoveryを使用する。 コンフィグレーション menuconfig westでmenuconfigを開くには次のよう…

ZephyrをSTM32F4Discoveryで試す

はじめに 準備 west ninja CMakeの更新 Zephyr SDK Zephyrのソースを取得 依存パッケージのインストール westでビルドする 対応ボードを調べる Hello worldをビルドする westで書き込む まとめ (おまけ)qemuで実行 はじめに Zephyrの勉強のためにとりあえず…

NuttXでmbedTLSを動かす

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

TinyGoをSTM32F4Dicoveryで動かす

はじめに TinyGoの勉強を兼ねてSTM32F4Dicoveryへ移植してみる。 LチカとHelloWorldを動かせれば良いので、次のペリフェラルのみ動かす。 GPIO UART(USART2) 実際に動かしたサンプル。 examples/brinky1(Lチカ) examples/brinky2(gofuncの並列Lチカ) example…

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

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

PlatformIOでSTM32F4Discoveryのプログラムを書く

はじめに 組み込み向けの開発環境を構築する手段としてPlatformIOというものがある。 PlatformIOはPythonのスクリプトで、必要に応じてクロスコンパイル用のツールチェインなどダウンロードしてくれたり、 それぞれのボード向けのスタートアップコードなんか…

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の作成 基本的なとこ…