組込みOS自作入門 環境構築 【Windows11, WSL2】(2/2 - ツールインストール、Hello World! 編)

書籍『12ステップで作る 組込みOS自作入門』をWSL2で環境構築。
長くなったので記事を2つに分けています。
前回の記事ではUSBシリアルをWSLにアタッチして、デバイスファイル(/dev/ttyUSB0)を表示するところまで行いました。


前回の記事:
hayariapp.hatenablog.com

2年前にVirtualBoxで環境構築を行なったときの記事:
hayariapp.hatenablog.com

書籍の公式サポートページ:
kozos.jp



目次


環境

前回の記事と同内容です。


1. binutils インストール

作業用ディレクトリを作成

$ mkdir ~/12step_emb_os

2年前、VirtualBoxで環境構築した際は以下コマンドで binutils 2.19.1をダウンロードしましたが、今回はmakeでエラーが出ました。

$ wget https://ftp.gnu.org/gnu/binutils/binutils-2.19.1.tar.bz2

代わりに binutils 2.21 をダウンロードしたところ、make install まで問題なく実行できました。

$ cd ~/12step_emb_os
$ wget https://kozos.jp/books/makeos/binutils-2.21.tar.gz
$ tar xvf binutils-2.21.tar.gz
$ cd binutils-2.21
$ mkdir build
$ cd build
$ ../configure --target=h8300-elf --disable-nls --disable-werror
$ make
$ sudo make install



2. gcc インストール

gcc 3.4.6をインストールします。

binutils同様、2年前と同じリンクからダウンロードしたところ、makeに失敗しました。

$ wget http://core.ring.gr.jp/pub/GNU/gcc/gcc-3.4.6/gcc-3.4.6.tar.gz

書籍のサポートページに掲載されているリンクからダウンロードすると成功しました。
もしかしたらbinutilsもサポートページからダウンロードすればバージョン2.19.1でも問題なくmakeできたのかもしれません。

$ cd ~/12step_emb_os
$ wget https://kozos.jp/books/makeos/gcc-3.4.6.tar.gz
$ tar xvzf gcc-3.4.6.tar.gz
$ cd gcc-3.4.6
$ nano gcc/collect2.c
(書籍にある通りにcollect2.cを修正)
 L1537, redir_handle= open(...); → open (... , 0755);

$ grep "redir_handle = open" gcc/collect2.c
      redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0755);

$ wget http://kozos.jp/books/makeos/patch-gcc-3.4.6-x64-h8300.txt
$ patch -p0 < patch-gcc-3.4.6-x64-h8300.txt
$ ./configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-werror
$ make
$ sudo make install


3. kz_h8write をmake

$ cd ~/12step_emb_os
$ wget https://cubeatsystems.com/kz_h8write/resources/kz_h8write-v0.2.1.zip
$ unzip kz_h8write-v0.2.1.zip
$ cd PackageFiles/src/
$ make


4. ソースコードをダウンロード、make

ソースコードは手打ちしても良いですが、今回はダウンロードします。

$ cd ~/12step_emb_os
$ wget https://kozos.jp/kozos/osbook/osbook_03.zip
$ unzip osbook_03.zip

kz_h8write を書籍に記載のあるディレクトリにコピーしつつ、ファイル名を h8write に変更します。

$ mkdir -p osbook_03/tools/h8write
$ cp PackageFiles/src/kz_h8write osbook_03/tools/h8write/h8write
$ cp PackageFiles/src/kz_h8write.c osbook_03/tools/h8write/h8write.c

Makefileを以下のように書き換えてmakeします。
H8WRITE_SERDEV = [デバイスファイル]

$ cd osbook_03/01/bootload/
$ nano Makefile
$ grep ttyUSB0 Makefile
H8WRITE_SERDEV = /dev/ttyUSB0
$ make
$ make image


5. H8マイコンのフラッシュROMへの書き込み

バイスファイルの権限を変更しておきます。

sudo chmod 666 /dev/ttyUSB0

H8マイコンのディップスイッチを ON, ON, OFF, ON に合わせて電源とPCに接続したら、フラッシュROMに kzload.mot を書き込みます。

$ sudo make write


6. フラッシュROMから起動、Hello World!

今回、シリアル通信にはcuコマンドを使用するためインストールしておきます。

$ sudo apt install cu

マイコンのディップスイッチを ON, OFF, ON, OFF に合わせて電源とPCに接続し、cuコマンドでシリアル接続します。

$ cu -s 9600 -l /dev/ttyUSB0
Connected.
Hello World!
Hello World!
Hello World!
~[(PC名)].
Disconnected.

「Connected.」と表示されたら、リセットボタンを押す度に「Hello World!」が出力されます。
接続を終了するには「~」「.」を入力します。
(私は癖でよくCtrl+Cをしてしまいますが、これでは何も起こりません。)



以上、組込みOS自作入門の 1st ステップの確認でした。