12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2019-06-25

はじめに

OSの下回りについて知識がなかったので、今回この本を購入して勉強しようと思います。
12ステップで作る 組込みOS自作入門

変更履歴

2020/12/31
PCを新しくしたので、本記事を更新しました。

2021/11/03
cygwinのバージョンが64bitを使用する場合用に、本記事を更新しました。

用語集

GUIとCUI

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

組込みOSと汎用OSの違い

・組込みOSは「すべてのアプリケーションは悪さをしない」性善説に基づいたアーキテクト
・汎用OSは「悪さをするアプリケーションがいる」性悪説に基づいたアーキテクト
 → 仮想メモリ、プロセスなどシステム全体へ影響しない仕組み

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

・クロス開発は「開発環境と実行環境が異なる」
・セルフ開発は「開発環境と実行環境が同一」

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

・ファームウェアはハードウェアを動かすためのソフトウェア
 → 基本的にユーザーが書き換え、入れ替えを想定していないところが異なる

開発環境の構築

使用するマイコン

H8/3069F

開発環境

ノートPC:Windows10 64bit
ソフトウェア:Cygwin

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

①PC上でプログラムを開発
②組込み機器に対応した機械語を生成

構築手順

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

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

補足

・インストールするPCが64bitの場合、32bitをインストールした場合、正しく動作しない可能性
 があるので、PCのbit数に適したバージョンをインストールする。

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

Devel以下、次の4つのコンテンツ(最新のバージョン)をインストールする
無題0.png

1.binutils

無題.png

2.gcc

無題2.png

3.make

無題3.png

4.patch(64bitの場合、パッチファイルの適用)

image4.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.圧縮ファイルの配置

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

5.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

パッチファイルのインストール(64bit)

・こちら( http://kozos.jp/books/makeos/patch-gcc-3.4.6-x64-h8300.txt )の内容を
ファイルをpatch.txtで保存。解凍した「gcc-3.4.6」直下に配置。

cygwin
$ patch -p0 < patch.txt 

config.guessファイルの更新(64bit)

・こちら( https://github.com/gcc-mirror/gcc/blob/master/config.guess )の内容を
「gcc-3.4.6」内にある全ての「config.guess」ファイルに反映する。

補足

・config.guessファイルを更新しない場合、次のコマンド実行時にエラーと
 修正先URLが出る。「ftp://ftp.gnu.org/pub/gnu/config」
 こちらのサイトの内容のソースコードのコピーがGitにある。

gcc\collect2.cの更新

・書籍17ページに記載の修正を行う。

cygwin
$ mkdir build
$ cd build
$ ./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://cubeatsystems.com/kz_h8write/)
解凍したフォルダのPackageFiles\bin\kz_h8write.exeを以下に置く
・「C:/cygwin/home/ユーザ名/osbook/src/tools/h8write」
・「kz_h8write.exe」を「h8write.exe」にリネーム

6.プログラムのビルド

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

プログラムのビルド

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

1章での開発の場合

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

Makefileの以下の箇所を変更

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

cygwin
$ make
$ make image

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

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

1章での開発の場合

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

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

cygwin
$ make write

もしも書き込みに失敗した場合は、ボードのリセットボタンを押下して
もう一度書き込みを行う。

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

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

comXX(Makefileで変更した番号)を選択し、実行。
リセットボタンを押下するとコンソールに表示される。

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

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?