組込みOS自作 H8マイコンの開発環境構築
OSの自作ブームが来ている気がするので例にもれずやってみます。
組込みOSということで、X86系以外のCPUが乗ったデバイスで自作のOSを動かしたいと思います。
ホビー向けの組込みデバイスといえば、現在だとRaspberry PiやArduinoが人気ですが、組込みOSの自作といえば、名著である「組込みOS自作入門 」がありますので、ターゲットのデバイスは本著で扱っているH8マイコン(H8/3069F)を使用します。
H8/3069Fネット対応マイコンLANボード
https://akizukidenshi.com/catalog/g/gK-01271/
クロスコンパイル環境
必要なものを用意したら開発環境を構築します。
本ページではWindows 10の環境にVirtualbox + Ubuntu 20.04LTS + USBシリアル変換(USB 3.0)の構成で構築します。
Virtualboxのインストール手順は省略します。
Ubuntuのインストール
UbuntuのホームページからUbuntu 20.04 LTSのDVDイメージをダウンロードします。
https://ubuntu.com/download/desktop

イメージファイルのダウンロードが出来たらVirtualboxでVMを作成します。


メモリは余裕をもって2Gbyteの割り当てにしました。




ハードディスクは念のため倍の20GBを割り当てます。

以上でVM(OS無し)が作れました。
続いてUbuntuをインストールしていきます。
仮想CD/DVDスロットにダウンロードしたUbuntuのDVDイメージをセットします。



VMを起動します。


起動後、自動的にインストールメニューが出るので案内に従ってインストールを行います。
英語は苦手なので日本語で進めます。
基本的にデフォルトのままOKボタンを押していくだけです。







ユーザアカウントを作成します。
まあまあのパスワードだそうです。



インストールが完了したら再起動しましょう。
再起動ボタンを押してもうまく再起動が走らない場合は、右上の×ボタンでVMの電源OFF⇒再起動しましょう。
SSH接続
Ubuntuのインストールができたら開発環境を整えていきます。
VMのGUIでは操作しづらいので、Windowsで起動した端末から、SSHでログインして操作できるようにしてきます。
まずは、Ubuntuで端末を開き、sshサーバのインストールして起動します。
sudo apt update
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
続いてVMにポートフォワーディングを設定します。
Windowsの127.0.0.1、ポート10022にssh接続をするとUbuntuにつながるように設定します。


適当な端末から接続してみます。
無事ログインできればOKです。


ついでにホームディレクトリの日本語のフォルダ名が気に食わないので英語のフォルダ名に変更しておきます。
端末を開いて下記を実行します。
LANG=C xdg-user-dirs-gtk-update

Update Namesをクリックするとディレクトリ名が英語になります。
H8開発環境構築
ひとまず必要になるパッケージをイントールしておきます。
sudo apt install build-essential cu m4
続いてbinutilsとgccのソースコードを取得してH8開発環境向けにビルドしていきます。
binutilsのビルド
wget https://ftp.gnu.org/gnu/binutils/binutils-2.36.tar.xz
tar xf binutils-2.36.tar.xz
cd binutils-2.36/
./configure --prefix=/usr/local --target=h8300-elf --disable-nls
gccのビルド
gccをこのままビルドしようとすると何回か罠にハマります。
具体的には下記が参考になります。
https://blog.wataridori.co.jp/2017/12/post-370/
事前に必要なパッケージをインストールしましょう。
wget https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
tar xvf gmp-6.2.1.tar.xz
cd gmp-6.2.1
./configure
make
make check
sudo make install
sudo ldconfig
wget https://ftp.gnu.org/gnu/mpfr/mpfr-4.1.0.tar.xz
tar xf mpfr-4.1.0.tar.xz
cd mpfr-4.1.0
./configure
make
make check
sudo make install
sudo ldconfig
wget https://ftp.gnu.org/gnu/mpc/mpc-1.2.1.tar.gz
tar xf mpc-1.2.1.tar.gz
cd mpc-1.2.1
./configure
make
make check
sudo make install
sudo ldconfig
準備が出来たらgccをビルド&インストールします。
configureを実行するディレクトは別途自分で掘る必要があることに注意です。
wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
tar xf gcc-10.2.0.tar.xz
mkdir build
cd build
../gcc-10.2.0/configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-libssp
make -j4
sudo make install
USBシリアル接続
UbuntuからH8マイコンにUSBシリアル経由でアクセスするための設定を行います。
一度VMの電源をOFFにしてUSBドライバに対象のUSBシリアルインタフェースを追加します。
今回USB 3.0に対応したものを使っているのでUSBコントローラをUSB 3.0に変更しています。

以上で開発に必要な環境は整いました。
コメント