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

投稿

7月, 2023の投稿を表示しています

WSL2にて vscode + openocd.exe + gdb-multiarchをつかってarm ターゲットをデバッグ

久しぶりにWSL2上でOpenOCDとgdbを使いstm32のデバッグをしようとおもったのですが、openocd for windowsは動作するもののarm-none-eabi-gdb.exeがwsl上のファイルを認識してくれませんでした。以前は特に何もしなくても認識していたはずなんですが、理由はよくわかっていません。とはいえ、WSL2+VSCODEの環境でdebugをしたいので、少し手間がかかるのですが、表題の通りできたので備忘録として本稿を挙げてみることにしました。 wsl2とvscodeはすでにインストールされている前提ですが、開発関連ツールをインストールしておくこと以外、特に注意することはありません。 次にvscode拡張機能ですが、cortex-debugとC/C++拡張機能をインストールします。これも特に注意することはありません。 つづいてソースディレクトリに移動し、code + エンターとするとvscodeが起動します。コンパイルなどのtasks.jsonはターゲットによりことなるので、本稿では割愛します。 つぎはlaunch.jsonです。今回の場合例として以下のようにしました。 { "version": "0.2.0", "configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "${workspaceRoot}/bluepill-dual-cdc.elf", "request": "launch", "type": "cortex-debug", "servertype": "external", "gdbTarget

STM32F103C6T6を デュアルUSB Serial Converterにする

実はType-C インターフェースのSTM32F103C8T6を注文した(つもりだった)のですが、後でよく見るとC8T6ではなくC6T6だった事にあとで気づいてしまいました。 C6T6はRAM/FlashともにC8T6より少ないうえ、USARTが2つしかないため、C8T6向けのファームウェアを持ってくるのに制約がありますし、もちろんプロジェクトを作るにしても制約がありますのでこのままではお蔵入りさせるしかありません。しかし、もったいないので何かに使えるようにしておきたいと思うのですが、たとえば以前紹介したC8T6向けのTriple CDCはUSARTを3つ使用するのでそのままでは使えません。どうしたものかと思いまず他のDual CDCのKeil向けのソースをCubeIDEでコンパイルできるようにしたのですが、通信はできないわけではないがCubeProgrammerでUARTでターゲットに接続できないうえ、USB接続するのに少し手間がかかるので、これはダメでした。さらにDualではなくSingleでソースをCubeIDEを使ってコードをおこしてみたのですが、これも通信はできるがCubeProgrammerのほうはダメでした。そこでもう一度気を取り直し、Triple CDCのソースを編集してDual CDCにしてみたところ思ったよりも簡単に編集でき、通信もCubeProgrammerも動作したので、本稿を挙げてみることにしました。 2023/09/24追記:rs232接続ではなく、tx/rxのみ使用する場合、9600等の低速だと、テキストサイズが大きめの場合、残念ながら暴走します。また、同じく、9600等の低速だと、zmodemによるファイル転送はサイズの大小にかかわらず、暴走してしまいます。なおkermitの場合は9600でもファイル転送できました。また、115200の場合はzmodemによるファイル転送は同時に2つ送受信できますが、テキストサイズが極端に大きい場合(例えば8k bytes)暴走します。逆に921600の場合、テキストサイズが100kを超える場合でも暴走しませんでした。また、CubeProgrammerは115200でのみ動作確認できました。なお、rs232接続でのテストは行っていません。 使用にあたって当方は責任を一切おいませんので、あし

BluePill STM32F103C8T6を トリプル USB Serial Converterにする

以前からBluePill(STM32F103C8T6)をUSB Serial Converterにするソースはいくつかあるのは知っていたのですが、CubeProgrammerでターゲットに書き込みができなかったり接続が不安定なものや、また、電源を事前に確保してからでないとUSBシリアルコンバータとしてつかえないものだったのでBluePillでのUSBシリアルコンバータとしての使える実装は公開されていないのかなとおもっていました。しかし、しらべていると、 こちらにbluepill-serial-monsterというレポジトリ があり、ビルド・書き込みをしたところ、3ポートともCubeProgrammerでの接続ができ、もちろん、普通のUSBシリアルポートとしても3本同時につかえたので、Debian(ネィティブまたはWSL2)でビルドするまでを備忘録として挙げてみることにしました。 2023/09/24追記:rs232接続ではなく、tx/rxのみ使用する場合、9600等の低速だと、テキストサイズが大きめの場合、残念ながら暴走します。また、同じく、9600等の低速だと、zmodemによるファイル転送はサイズの大小にかかわらず、暴走してしまいます。なおkermitの場合は9600でもファイル転送できました。また、115200の場合はzmodemによるファイル転送は同時に3つ送受信できますが、テキストサイズが極端に大きい場合(例えば8k bytes)暴走します。逆に921600の場合、テキストサイズが100kを超える場合でも暴走しませんが、zmodeによるファイル転送は同時に2つまでしかできませんでした。なお、rs232接続でのテストは行っていません。 使用にあたって当方は責任を一切負いませんので、あしからずご了承ください。追記以上 まず、ツール類を以下のようにインストールします。 sudo apt-get install build-essential gcc-arm-none-eabi binutils-arm-none-eabi git stlink-tools 続いてソースをクローンして、ビルドします。 git clone https://github.com/STMicroelectronics/STM32CubeF1 git clone https