2日目(Makefile見直し)
2日目の項目は一通り終わらせたけど、Ubuntu用に少しよけいなことも検証しておく。
他の方の環境を参照して、サポートページからリンクのあったLinux版開発セットを使わないようにMakefileをカスタム。
要するに、exeファイルではなくできるだけLinuxのコマンドで対応。そうするとファイルが少なくて済む。
Linuxでのアセンブラ環境はnasmとgasのどちらかが多いようだが、ここではnasmにする。
まず
$ nasm ipl.nas -o ipl.bin -l ipl.ls
としてみたが、56行目でエラー。
RESB 0x7dfe-$
しかし前回出なかったような??
どうやらnasmを使うと出てきてしまうらしい。他の方のブログを参照して、
RESB 0x7dfe-0x7c00-($-$$)
と、書き換え。
それとRESB を 使うと
warning: uninitialized space declared in .text section: zeroing
というエラーは出る。でもまあ無視しても大丈夫らしい。
でも気になるので、治すならTIMES命令にする。
24行目で
TIMES 18 DB 0
と、56行目
TIMES 0x7dfe-0x7c00-($-$$) DB 0
に変えると、ワーニングがなくなる。
さらにコマンドmformatでimgファイルを作成。
これでMakefileを編集できる。
参考までに先日作ったMakefile、元のとあまり変わらない。
---
# デフォルト動作
default :
../z_tools/make.exe img
# ファイル生成規則
ipl.bin : ipl.nas Makefile
../z_tools/nask.exe ipl.nas ipl.bin ipl.lst
helloos.img : ipl.bin Makefile
../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img
# コマンド
asm :
../z_tools/make.exe -r ipl.bin
img :
../z_tools/make.exe -r helloos.img
run :
qemu-system-i386 helloos.img
install :
../z_tools/make.exe img
../z_tools/imgtol.com w a: helloos.img
clean :
-del ipl.bin
-del ipl.lst
src_only :
../z_tools/make.exe clean
-del helloos.img
---
こっちがLinux用。自分がわかる範囲のみでまとめたら他の方のものとほぼ同じになってしまった。
---
# ファイル生成規則
ipl.bin : ipl.nas Makefile
nasm ipl.nas -o ipl.bin -l ipl.lst
helloos.img : ipl.bin Makefile
mformat -f 1440 -B ipl.bin -C -i helloos.img ::
# コマンド
asm :
make -r ipl.bin
img :
make -r helloos.img
run :
qemu-system-i386 -fda helloos.img
---
どちらを使うかは、もう数日進めてみてからにする。
それまでは両方のファイルで行ったり来たりしたい。
この辺りは本体の内容ももちろんだけど、今後のために環境を整えることも大切だと気付いた。
しかしこのままだと中身を理解せず動いたらOK、といういつものパターンになりそうなので、3日目からはもっと本体のプログラムを重視していく予定。
参考にさせて頂いたサイト:
https://motojiroxx.hatenablog.com/entry/2018/05/10/030811
http://cyberbird.indiesj.com/x86%E3%80%80os%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80/os%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80%20onlinux%202%E6%97%A5%E7%9B%AE#ps_text
https://qiita.com/pollenjp/items/d15fce401bccd37e8059
https://wisteria0410ss.hatenablog.com/entry/2019/02/06/122929
マイコン超初心者のSTM8解析(予定)
カテゴリをもうひとつ追加。
解析というほど凄いことはしてませんが、あのSTM8S103F3P6の載った小さい基板がお気に入りで、マイコンについて何も知らないのに裏でこそこそ調べていました。
今もまだいろんなサイトから節操なしに情報をかき集めてます。
調べたことはテキストにして適当に置いてあったんですが、せっかくなのでこっちにちょっとずつまとめることにしました。
具体的にやったことは本家の方で確認してください。
こっちは前から適当に書きなぐってた文章や参照しているURLを、自分用に読みやすくして保管する予定です。
ただ、OS自作入門をやってる間はあんまり更新しないと思います…。
2日目(アセンブラとMakefile)
エディタの紹介があるが、自分の環境ではVisual Studio Codeを使用中。
最近Ubuntuにインストールしたので、活用したいため。
1日目の後半と同じく、前半はアセンブラ言語についての解説が中心。
ほとんど頭に入ってないので、後からかなり読み返すことになると思う。今も読み返しているが。
プログラムの写経は時間の無駄だと思っていたが経験者のブログを見ると意外と推奨しているので、ダウンロードしたデータから02_dayのhelloos3内のhelloos.nasを写経し、本の内容通りに編集・実行していくことにした。
いきなり1日目とhelloos.nasの内容が違うが、わかりやすく編集された結果らしい。
写経しながら内容をチェックしていくと、わかった気がしなくもない。
次にブートセクタだけのファイルを作成。
tolsetの中にhelloos4フォルダを作り、helloos.nasから後ろの方を削除したipl.nasを作成。
ついでにLinux版開発セットからedimg.exeとfdimg0at.tekをホームディレクトリのz_toolsにコピーしておく。
本書を参照して、imgファイルを作成してみる。
$ ../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img
helloos.imgができることを確認。
さらにこのあとのmakefile作成のため、Linux版開発セットからmake.exeもz_toolsにコピーしておいた。
helloos5フォルダを作り、ipl.nasをコピー。
元データのhelloos5からはMakefileファイル(ややこしい…)をコピーしておいた。
試しに
$ make
だけしてみたところ、helloos.imgファイルまでできることを確認。
あとはMakefileの内容確認と、編集。
前回バッチファイル作成をすっ飛ばしたが、Makefileは避けて通れない。
だいたいやったことを羅列してるだけだったが、コマンドでrunがエラーになったので、
run :
qemu-system-i386 helloos.img
のみに書き換えた。これでhello worldができる。
これ以外にもLinux用に編集できそうなので、また別途考える。コマンドを使った方がファイルが少なくて済むので。
まだ2日目なのに、すでに他の方のブログを参照しないとわからなくなってきている。
かなり先行き不安。
今回参照させて頂いたサイト:
https://inakadeikinaosu.com/shumi/os_nyumon_4/
https://qiita.com/pollenjp/items/d15fce401bccd37e8059