この記事にはこんなことが書かれています。
- OSを自作するモチベーション
- 仮想環境の立ち上げ
- 自作OSでHallo World表示までの軌跡
■モチベーション
一言でいうと
マイコン、組み込みOSなど下回りを意識したモノ作りができるようになると
数多いるアプリ開発者とはひと味異なる(OS・F/W周りも意識した設計ができる)エンジニアに成ることができると思っています。
なんだか面接みたい…笑。
こんなこと、ふと思いつかないことなので、少しだけ背景を書かせてください
私には尊敬する先輩が2人いて、どちらも知の巨人と言っても過言ではないお二方だ。
歳は2個、4個しか違わないしフランクな関係なんだが、4個違いの先輩は会社に行きながら土日に大学に通い博士課程をとるような、そんな人だ(博士取得に伴い得た会社からの一時報酬金は、赤十字に全額寄付するという人格者でもある)。コロナ前の話だが、課の宴会があったときも電車で向かう道中で論文を査読していた。スキマ時間でやることが違う…と感激した。
2個違いの先輩は天才と呼ばれた人で、業務の傍らで業務効率を向上させる自作ツールをいくつも排出している。皆がそのツールを使って感謝している。従業員一人一人の作業時間が1日5分短くなるだけで掛け算で会社の人件費がウン百万/年規模の削減に役立つと思う。
そんな二人は仲がよく、スキルアップについての情報のやり取りをしているという。
そこに、私なんかがちょっと混ぜてもらっているという構成だ。
非常に恐縮だが、ありがたすぎるゥ!!
さて、OSを自作するモチベーションに繋がっていくのだが、そんなお二人が「ソフトウェア開発においてアプリ制作ばかりに目がいってしまうが、下回りを勉強するには何がよいだろう?」という会話から、選ばれた教材は以下2本。
1⃣12ステップで作る組込みOS自作入門
2⃣CPUの創りかた
下回りについては何となくでやってきた私。OSを作る?ナニソレ?な状態から少しでも脱却したい…。
1⃣は環境構築にすごく時間がかかったと話しているお二人に少しでもついていくべく、奮闘が始まりました。
さっそく、1⃣の教材で環境構築を行ってみました。
■必要なもの
基板から自作ではないです!H/Wはできるだけ購入品でということで、教本にもある以下を用意しました。
- 12ステップで作る組み込みOS自作入門
- H8/3069F マイコンボード
- ACアダプタ 5V1A AD-D50P100.
- シリアル延長ケーブル MXT10050CMBK.
- USB-シリアル変換ケーブル BSUSRC0605BS.
あとやる気!
ものが揃ったら、環境構築です。
■VirtualboxとUbuntuのインストール&初期設定
以下HPを参考にインストールとセッティングを実施
私の環境はWin11だが、あまり気にせず進めました。
VirtualBox と Ubuntu のインストール
一個だけ詰まったところは以下
$ sudo apt update
リンクの指示どおり上記コマンドを打った時に、以下エラーが出た
$ sudo apt update
エラー:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
'jp.archive.ubuntu.com' を解決できませんでした
エラー:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease
'jp.archive.ubuntu.com' を解決できませんでした
エラー:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease
'jp.archive.ubuntu.com' を解決できませんでした
エラー:4 http://security.ubuntu.com/ubuntu bionic-security InRelease
'security.ubuntu.com' を解決できませんでした
エラー:5 http://archive.ubuntulinux.jp/ubuntu bionic InRelease
'archive.ubuntulinux.jp' を解決できませんでした
エラー:6 http://archive.ubuntulinux.jp/ubuntu-ja-non-free bionic InRelease
'archive.ubuntulinux.jp' を解決できませんでした
これは以下サイトを参考に解決
‘jp.archive.ubuntu.com’ を解決できませんでしたの解決
尚、configファイルをいじる時にvimを操作する必要があるが、私は触ったことがなかった。
操作方法が難しいので以下サイトを参考に操作して解決
UbuntuでVimを使ってファイルを編集する
vi の基本コマンドの一覧
■Ubuntu シリアルポートの認識
h8write 指令をしてもh8writeが見つかりませんとなり実行されない…。 h8writeのパスを変えてみたり、インストールし直したりしたが解消しなかった。 ファイルの受け渡しがしやすいように、ホストOSとゲストOSの共有フォルダにクロスコンパイラ環境を作っていた(教本P37のフォルダ体系を作りそこでビルド等をしていた)が、どうやら共有フォルダではだめなようだった。理由は不明。 Ubuntuのローカルファイルで実行したところ上記エラーはなくなった。
具体的にはhome/*/ ←*はusername で実行すれば問題がなくなった
その後、通ったはいいものの、以下エラー
com port open error
が出るようになった。
以下サイトを参照に対策を実施する
https://monoist.itmedia.co.jp/mn/articles/0808/22/news123_2.html
まずは、シリアルポートの認識を確認した。
ls -l /dev/ttyUSB0
USBを外していると、そのようなファイルやディレクトリはありません と表示される。つけていると以下のようなメッセージ
crw-rw---- 1 root dialout 188,0 日付 /dev/ttyUSB0
これでmake writeしても未だにcom port errorが消えないが 上記ページの下の方に読み書き権限を与えておくという話があります。 この対策後に成功!
入力
# make write
出力
../../tools/h8write/h8write -3069 -f20 kzload.mot
~
~うんたらかんたら~
~
complete.
写真はこんな感じ。
教本にあるminicomとやらは以下サイトを参考に導入&起動
https://qiita.com/baggio/items/3db759da67c0123e993e
今回私が使ったのはUbuntu(Linux)なので、/dev/ttyUSB0 をシリアルポートとして
Linux(Ubuntu)でCOMポート(シリアルポート:RS-232C:/dev/ttyS1など)を使う
https://minokamo.tokyo/2022/03/14/4470/
■HalloWorldの表示
教本に従い、基板のDIPスイッチをいじりデバックモードにしました。
そして、ついに!!で、でたーーー!
今回はここまで