(2年前)

「12ステップで作る組込みOS自作入門」の環境構築でつまずいた点と解決方法

𝕏XでシェアB!はてなブックマークLINEでシェア
コピーしました!

「12ステップで作る組込みOS自作入門」の環境構築でつまずいたポイントと解決策をまとめます。

目次

12ステップで作る組込みOS自作入門について

H8/3069F というマイコンボードで、著者の「KOZOS」という組み込みOSをフルスクラッチで自作していく書籍です。

12ステップで作る 組込みOS自作入門 — Amazon

組込みOSの仕組みを基礎から学べる名著ですが、環境構築が難しいことでも知られています。書籍の発刊からかなり時間が経っているため、現在のOS環境では一筋縄ではいかない部分があります。

基本的にこちらの方の手順を参考に環境構築を行いました。

12ステップで作る組込みOS自作入門 WSL環境構築 — to-son.net


開発環境

項目バージョン
OSWindows 11
Linux環境WSL2 Ubuntu 18.04 LTS
binutils2.19.1
gcc3.4.6
kz_h8write0.2.1

kz_h8write — OSDN


参考元記事にはないが実施したこと

WSL2の環境からUSB変換のシリアルケーブルを認識させるため、WSL2の環境にUSBを認識させた(=アタッチさせた)

アタッチの方法は下記を参考にしました。

WSL2でUSBデバイスを使用する方法 — Qiita


発生した問題

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シリアル変換ケーブル(グレー色)**でした。

USBシリアル変換ケーブル — 秋月電子通商

解決方法

家にあった別のシリアル変換ケーブル(BUFFALO BCUSRC0610BS)に交換したところ、問題なく書き込めるようになりました。

BUFFALO BCUSRC0610BS USBシリアル変換ケーブル — Amazon

是正後の実行結果

ケーブル交換後、無事に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時間ほど でした。

今回のポイントをまとめると:

  1. WSL2でのUSB認識usbipd を使ってWSL2にUSBデバイスをアタッチする必要がある
  2. シリアルケーブルの互換性 — PL2303TAチップ搭載ケーブルはWindows 11非対応。usbipd wsl list のデバイス名で確認可能
  3. 解決策 — ケーブルを交換するか、古いドライバを適用する

環境構築が難しいと言われる書籍ですが、問題の原因さえわかれば対処は簡単でした。同じ問題でつまずいている方の参考になれば幸いです。

関連記事

カテゴリー