Edited at

12ステップで作る組込みOS自作入門 1stステップ ~開発環境の構築


はじめに

OSの下回りについて知識がなかったので、今回この本を購入して勉強しようと思います。

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


用語集


GUIとCUI

・GUIはマウスからの操作を主体にしたインターフェース

・CUIはキーボードからのコマンド入力を主体にしたインターフェース


組込みOSと汎用OSの違い

・組込みOSは「すべてのアプリケーションは悪さをしない」性善説に基づいたアーキテクト

・汎用OSは「悪さをするアプリケーションがいる」性悪説に基づいたアーキテクト

 → 仮想メモリ、プロセスなどシステム全体へ影響しない仕組み


クロス開発とセルフ開発の違い

・クロス開発は「開発環境と実行環境が異なる」

・セルフ開発は「開発環境と実行環境が同一」


ファームウェアとソフトウェア

・ファームウェアはハードウェアを動かすためのソフトウェア

 → 基本的にユーザーが書き換え、入れ替えを想定していないところが異なる


開発環境の構築


使用するマイコン

H8/3069F


開発環境

ノートPC:Windows10 64bit

ソフトウェア:Cygwin


組込み機器のプログラム実行

①PC上でプログラムを開発

②組込み機器に対応した機械語を生成


構築手順


1.セルフコンパイラの環境作成

Cygwin(32bit)のインストール(https://www.cygwin.com のsetup-x86.exe)


補足

・インストールするPCが64bitでも64bitをインストールしてはいけない!!

・本付属のCDも最新版をインストールする旨のエラーが出るのでできない!!


2.Cygwinのインストール内容

Devel以下、次の4つのコンテンツをインストールする

f42ce299-s.png


1.binutils

213924a3-s.png


2.gcc

0569becd-s.png


3.make

91fe5ecf-s.png


4.patch(書籍にはないが、パッチをあてるために必要)

d1752b13-s.png


3.クロスコンパイラの作成

以下のファイルを取得

・binutils-2.19.1( http://www.ring.gr.jp/pub/GNU/binutils/ )

・gcc-3.4.6( http://www.ring.gr.jp/pub/GNU/gcc/ )

・Teraterm( https://ja.osdn.net/projects/ttssh2/releases/ )


4.パッチファイルの作成

・こちら( http://kozos.jp/books/makeos/patch-gcc-3.4.6-x64-h8300.txt )の内容を

ファイルをpatch.txtで保存


5.tar.gzファイルの展開

・「C:\cygwin\home\ユーザ名」の配下にbinutils-2.19.1.tar.gzとgcc-3.4.6.tar.gzを配置


6.cygwinでの操作


binutils


cygwin

$ tar xvf binutils-2.19.1.tar.gz

$ cd binutils-2.19.1
$ mkdir build
$ cd build
$ ../configure --target=h8300-elf --disable-nls --disable-werror
$ make
$ make install


gcc-3.4.6


cygwin

$ tar xvf gcc-3.4.6.tar.gz

$ cd gcc-3.4.6

このフォルダ内にpatch.txtを配置

またgcc\collect2.cについて、書籍17ページに記載の修正を行う


cygwin

$ patch -p0 < patch.txt 

$ ../configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-werror
$ make
$ make install


書籍のソースコード一式

こちら(http://kozos.jp/kozos/osbook/) の「osbook_03.zip」

解凍したフォルダの階層を「osbook\src\01\bootload/各ソースコード」に合わせ、

「C:\cygwin\home\ユーザ名」の配下に配置する。(Makefileの変更を避けるため)


kz_h8write

シリアル通信でH8/3069FのフラッシュROMに書き込みを行うツール

もともとのh8_writeの改良版ツールとなる。

こちら(https://ja.osdn.net/projects/kz-h8write/)

解凍したフォルダのPackageFiles\bin\kz_h8write.exeを

「C:\cygwin\home\ユーザ名\osbook\src」の配下に配置する。


6.プログラムのビルド

上記の設定で、開発環境の準備完了。ビルド・実行に関しては以下を実施。


プログラムのビルド

「C:\cygwin\home\ユーザ名\osbook\src」以下各章ごとで開発したソースを置く。


1章での開発の場合

Cygwinで「C:\cygwin\home\ユーザ名\osbook\src\01」まで移動


cygwin

$ make

$ make image

もしも、コンパイルで生成したファイルを削除したい場合は make cleanを実行


7.ボードへの書き込みと実行


1章での開発の場合

Cygwinで「C:\cygwin\home\ユーザ名\osbook\src\01」まで移動


Makefileの以下の箇所を変更

H8WRITE_SERDEV = comXX

(自分のWindows PCの場合はcom5で接続されている。ポート番号はTeratermで確認する)


ボードをROM書き込み用にスイッチを合わせる(ON,ON,OFF,ON)


cygwin

$ make write



ボードをROM書き込み用にスイッチを合わせる(ON,OFF,ON,OFF)


Teratermを開き、シリアルデバイスを実行

comXX(Makefileで変更した番号)を選択し、実行。

以下リセットボタンを実行するとコンソールに表示される。

これで開発できる。長かった(20時間くらいをこれに費やした…)