書籍『12ステップで作る 組込みOS自作入門』をWSL2で環境構築。
長くなったので記事を2つに分けています。
前回の記事ではUSBシリアルをWSLにアタッチして、デバイスファイル(/dev/ttyUSB0)を表示するところまで行いました。
前回の記事:
hayariapp.hatenablog.com
2年前にVirtualBoxで環境構築を行なったときの記事:
hayariapp.hatenablog.com
書籍の公式サポートページ:
kozos.jp
目次
- 環境
- 1. binutils インストール
- 2. gcc インストール
- 3. kz_h8write をmake
- 4. ソースコードをダウンロード、make
- 5. H8マイコンのフラッシュROMへの書き込み
- 6. フラッシュROMから起動、Hello World!
環境
前回の記事と同内容です。
- Windows11 Pro
- WSL2
- USB to シリアルケーブル
- ELECOM UC-SGT1 [ ELECOM USBtoシリアルケーブル モデム用 USBオス-RS-232C用 UC-SGT1 ]
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 ステップの確認でした。