H8/3069Fボードのクロス開発&Flash書き込み環境を構築
組込みのOSについて勉強したくなり「12ステップで作る組込みOS自作入門」を買って勉強をしている。
組込みOSの勉強をするには非常に良い本なのだが、環境構築でかなり苦労した。四苦八苦しつつ、最終的には無事にクロス開発環境&Flash書き込み環境を構築することができたのでメモしておく(あまりスマートな方法ではないが…)
ざっくり概要だけ先に書くと、配布されているVMイメージ上でファイルをビルドして、それをWindows PC上にもってきてボードに書き込んで実行、という方法でやった。
使用したPCやソフトウェア
PCのOS:Windows 10
VM環境:Oracle VM Virtual Box
クロス開発環境の構築
最初Windows10上でCygwinを使って環境を構築しようと試みたのだが、gccをビルドするときのエラーが解決できずに断念。公式サイトで配布されているVMイメージを使って、Virtual Box上で動かすことにした。VMイメージは以下で配布されている。
http://kozos.jp/books/makeos/#vmimage
Virtual BoxはOracle VM Virtual Boxを使用。
https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html
ちなみに、Window環境でVirtual Boxを動かすとBIOSの設定起因のエラーが出て起動できないことがある。その時の対処は以下の記事で書いるので、こちらを参照。
なお、VMイメージを起動したとき、デフォルトではCLIで起動するが、色々あって私は以下のコマンドでGUIを立ち上げて使うことにした。
[root@localhost /]# startx
GUIはこんな感じで立ち上がる(※Desktopにあるいくつかのファイルは私が後から追加したもの)。GUI上から本の内容をCLIで実行する場合は、左上のメニューからTerminalを起動すればOK。
VM内でビルドしたファイルをWindows環境に持ってくる
VM内で立ち上げたCentOS内でビルドしたファイルを、VM内からUSBシリアル変換ケーブルでそのままFlashに書き込むのはちょっと厳しそう。
ということで、少し面倒だがVM内のCentOSでビルドしたファイルをWindowsに持ってきて、FDT(Flash Development Toolkit)でH8/3069Fマイコン・ボード書き込むことにした。
VM内のLinuxとWindowsでファイル共有するにはGuest AdditionsをLinuxにインストールする方法がメジャーみたいだが、今回使ったVMイメージだとデフォルトではyumが使えなくて(設定されているレポジトリが古いらしい)Get Additionsを使うまでのセットアップに手間がかかりそう。
そのため、PCにUSBメモリをさし、これを共有ディスクとしてつかってファイルを共有することにする。具体的にはVM内のCentOSにUSBメモリをマウントしてファイルを保存し、WindowsでUSBメモリ内のファイルを取ってFlash Development Toolkitでボードに書き込む。
まず、VirtualBoxを起動して、今回使うVMイメージを右クリックして設定を開く。
PCにUSBメモリをさし、設定画面でUSBの設定画面を開き、以下のようにさしたUSBメモリを追加する(表示される名前はUSBメモリや環境によって異なると思う)。これで準備は完了。
この状態でさきほどのようにVMのCentOSのGUIを起動すると、DesktopにUSBがマウントされる。あとはこの中にビルドしたファイルを保存すればOK。
VMの起動中はWindows側からはUSBメモリが認識されなくなるが、VMを終了すれば再びWindowsでUSBメモリが認識されるので、USBメモリに保存されたファイルをWindows側で取って、Flash Development Toolkitを使ってボードのFlashに書き込むことで無事にプログラムを実行できた。
ちなみにUSB – シリアル変換ケーブルを使用している場合、変換ケーブルとの相性でうまく書き込めない場合がある。それについては以下で書いているので、こちらを参照。
PCとボードとのシリアル通信についてはTeraTermを使ったが、こちらは本に書かれている内容通りに設定すれば問題なく通信できた。
色々と周りくどいことをやったが、これでクロス開発&Flash書き込み環境を構築できた。