スキップしてメイン コンテンツに移動

投稿

10月, 2020の投稿を表示しています

Uno R3 用 Touch Screen を Nuttx on Nucleo-64で駆動

安価なUno R3用のタッチスクリーンは、Arduinoではつかえるのは当然ですが、Nuttx + NucleoではUno R3向けのLCDとピンを共用しているタッチスクリーンドライバがみあたらなかったので、他のタッチスクリーンドライバなどを参考にしながら、ADCTS(adc touch screen) なるdriverをプログラムしてみました。 画像は、Nucleo-F446RE + Nuttx(nxwm) + ili9486 3.5inchのものですが、主にロジックレベルコンバータ搭載の3.3v駆動対応のものをテストしています。 LCDドライバもなかったので、ほかのLCDドライバやarduinoのソースを参考にLCDドライバも、プログラムしています。動いてはいますが、珍しいドライバの上、プログラムも非常にダーティー&アグリーですし、あまりテストしていませんので、とりあえず動いたよ程度の報告がてら、本稿をUPしてみました。 今のところ以下のディスプレイで 動作 "とりあえず動いたよ"確認しています。 st7793 3.75 inch 240x400-- mcufriend (discon. ) ili9326 2.4 inch 240x400 -- mcufriend  (discon. ) r61581 3.5 inch 320x480 -- mcufriend (discon. ) ili9486 3.5 inch 320x480 -- lcdwiki ( Available at amazon.co.jp as of 2020/11/15) 参考までに、mcufriendのタッチパネル用ピンアウトと lcdwiki のピンアウトが異なるため、ドライバのビルドオプションで選択できるようにしています。なお、Nucleo-F411REでも一部 動作確認 "とりあえず動いたよ"確認しているので、ADC1をDMAで2chを駆動でき、Nuttxが走るリソースが十分にあれば、他のNucleo-64/144でも 動作できる "とりあえず動いたよ"確認できる と思います かもしれません。(追記2020/12/04:NuttX on Nucleo-L476RGではタッチパネル動作確認できませんでした。追記20

WSL/VSCodeからNuttx/STM32をWindows10上のOpenOCD/ST-LINK経由でgdbデバッグ

NuttXのソースコードに触れているのですが、shell上だけで作業/デバッグするのには限界があり、なにかよい方法はないかと調べたところ、VSCodeにてCortexのデバッグができるようなので、試してみたところ、とりあえず動いており、WSLとWindowsだけでコンフィグ・コンパイルし、ST-LINK経由でデバッグする方法は他には見当たらなかったので、備忘録を兼ねて本稿をUPしてみました。 まず、WSLをインストールします。筆者の場合はWSL2を使っています。次に、VSCodeをインストールしますが、VSCodeの起動はウィンドウズからではなく、WSLのシェルから起動します。 追記:2021/03/16 一番最初の起動は以下の通りです。 $ code . Installing VS Code Server for x64 (2b9aebd5354a3629c3aba0a5f5df49f43d6689f8) Downloading: 100% Unpacking: 100% Unpacked 1824 files and folders to /home/MyUserID/.vscode-server/bin/2b9aebd5354a3629c3aba0a5f5df49f43d6689f8. その後の起動は、.vscodeをnuttxのルートに置く場合 $ cd /usr/src/nuttx-9.1.0/nuttx $ code で起動できます。起動に成功すると、Windowの左下に(WSL/Debianの場合) WSL: Debian と表示されます。 続いてソースコードですが、/mnt/c以下に置くとファイルアクセスが遅いので、WSLからみた/usr/src上にソースを展開します。筆者の場合、前述のように、/usr/src/nuttx-9.1.0/以下にnuttxとappsを置いています。 続いて、wsl上でlinux機と同様にコンパイル環境を整えます。makeやhost用gcc/binutils、target用gcc/binutilsなどをインストールします。これに加えて、menuconfig用にkconfig-frontendsをインストールしてきます。ここまでで、nuttxの作業環境(コンフィグ・コンパイルまで)をlinux機と同じように