「12ステップで作る組込みOS自作入門」の環境構築でつまずいたポイントと解決策をまとめます。
12ステップで作る組込みOS自作入門について
H8/3069F というマイコンボードで、著者の「KOZOS」という組み込みOSをフルスクラッチで自作していく書籍です。
組込みOSの仕組みを基礎から学べる名著ですが、環境構築が難しいことでも知られています。書籍の発刊からかなり時間が経っているため、現在のOS環境では一筋縄ではいかない部分があります。
基本的にこちらの方の手順を参考に環境構築を行いました。
開発環境
| 項目 | バージョン |
|---|---|
| OS | Windows 11 |
| Linux環境 | WSL2 Ubuntu 18.04 LTS |
| binutils | 2.19.1 |
| gcc | 3.4.6 |
| kz_h8write | 0.2.1 |
参考元記事にはないが実施したこと
WSL2の環境からUSB変換のシリアルケーブルを認識させるため、WSL2の環境にUSBを認識させた(=アタッチさせた)。
アタッチの方法は下記を参考にしました。
発生した問題
Makeを実施し、コンパイルはエラーなしで通りました。しかし、H8/3069FへのROM書き込みで失敗しました。
エラーメッセージ:Bitrate sequence failed. (code=0x04)
** wsl2 **
$ ../../kz_h8write-v0.2.1/PackageFiles/src/kz_h8write -3069 -f20 kzload.mot /dev/ttyS1
=================================================
H8/3069F Flash Writer for KOZOS (Version 0.2.1)
Copyright(C) 2011-2012 Shinichiro Nakamura
=================================================
Bitrate sequence failed. (code=0x04)
顛末
原因:シリアルケーブルがWindows 11と非互換
調査の結果、使用していたシリアルケーブルがWindows 11と相性が悪いことが判明しました。
PowerShellで usbipd wsl list を実行すると、デバイス名にはっきりと警告が表示されていました。
** powershell **
usbipd wsl list
BUSID VID:PID DEVICE STATE
4-2 067b:2303 PL2303TA DO NOT SUPPORT WINDOWS 11 OR LATER, PLEASE CONTA... Attached - Ubuntu-18.04
使っていたのは秋月電子の**USBシリアル変換ケーブル(グレー色)**でした。
解決方法
家にあった別のシリアル変換ケーブル(BUFFALO BCUSRC0610BS)に交換したところ、問題なく書き込めるようになりました。
是正後の実行結果
ケーブル交換後、無事にROM書き込みが成功しました。
** wsl2 **
~/12step/src/01/bootload$ make write
../../kz_h8write-v0.2.1/PackageFiles/src/kz_h8write -3069 -f20 kzload.mot /dev/ttyUSB0
=================================================
H8/3069F Flash Writer for KOZOS (Version 0.2.1)
Copyright(C) 2011-2012 Shinichiro Nakamura
=================================================
Bitrate sequence: Done.
Inquiry device: Done.
Select device: Done.
Inquiry clock mode: Done.
Select clock mode: Done.
Select bitrate: Done.
Waiting for erase done:..........
Programming:.....
Program: Done.
Complete.
シリアル通信の確認
Windowsの PuTTY からシリアル通信させるため、いったんWSL2からUSBをデタッチしました。
** powershell **
> usbipd.exe wsl attach -d Ubuntu-18.04 --busid 4-2
Hello World の表示を確認できました!
まとめ
鬼門の環境構築を乗り越えることができました。所要時間は 2時間ほど でした。
今回のポイントをまとめると:
- WSL2でのUSB認識 —
usbipdを使ってWSL2にUSBデバイスをアタッチする必要がある - シリアルケーブルの互換性 — PL2303TAチップ搭載ケーブルはWindows 11非対応。
usbipd wsl listのデバイス名で確認可能 - 解決策 — ケーブルを交換するか、古いドライバを適用する
環境構築が難しいと言われる書籍ですが、問題の原因さえわかれば対処は簡単でした。同じ問題でつまずいている方の参考になれば幸いです。


