坂井弘亮著「組み込みOS自作入門」 1st step
本が10年くらい前のものなので、binutils,gccで最新のものを使おうとすると記載通りにうまく行かない箇所が出てくる。
binutilsのインストール
# checkinstall利用の場合
sudo apt install checkinstall
# Documentの生成のためか、以下がないとエラー発生した
sudo apt install texinfo
# binutils-2.34.tar.xzとしてカレント以下にDLされていると仮定
# xzアーカイブの場合tarにJを指定
tar xJvf binutils-2.34.tar.xz
cd binutils-2.34/
./configure --target=h8300-elf --disable-nls
make
# checkinstallでインストールする場合
# パッケージ名をbinutils-h8300など別にしないと
# システムのbinutilsと衝突してそちらが使えなくなった
sudo checkinstall
# 通常のインストールを行う場合
sudo make install
gccのインストール
# カレント以下にgcc-9.2.0.tar.gzとしてDLされていることを想定
tar xzvf gcc-9.2.0.tar.gz
cd gcc-9.2.0/
# 依存ソースをDLする必要がある
# 以下の付属スクリプトで自動的にやってくれる
./contrib/download_prerequisites
# ビルドは別ディレクトリでやらないとエラー発生する
mkdir build
cd build/
# 本にはなかったが、SSPを無効化しないとinstallでエラー発生する
../configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-libssp
# Build
make
# checkinstallでインストールする場合
# ただし、上記binutilsと一部衝突が起き、debによるインストールは失敗する
# この時点で通常のインストールは行われており、
# debは生成されるので、アンインストール時はそれを使うことにして無視
sudo checkinstall
# 通常のインストールを行う場合
sudo make install
2021/03/08追記 M1 macOS(11.2.2)でコンパイルできました。
binutilsは上記の通りでインストールできる。2.36にて確認。Linuxではないので、checkinstallは使えない。
gccは、10.2.0で試したがmakeでhosthooksがうんたらというエラーが発生する。 この意味するところはわかっていないのだが、以下の方が書いてくれている対応でコンパイルは通るようになる。
https://zenn.dev/tunefs/articles/80aa34dcce386e
シリアル通信関連 on M1 Mac
MacだとTeratermのような優秀なシリアル端末アプリがない。
GUIのCoolTermは、コマンドのやり取りだけなら可能だが、xmodem転送はうまく行かなかった。(kozosの受取時にサイズがffffffffなどになる)
ほかはCUIとなるが、個人的にminicomは使いにくかったので、標準のcuとmacports/homebrewで入れられるlrzszを使うのが良さそう。
ただし、本に書いてあるFreeBSD用のcuとは微妙にコマンドが違っている。 以下のサイトに対応方法が記載されている。 http://blog.livedoor.jp/noanoa07/archives/1994090.html
Parallels上でUbuntuを使用する方法でもうまくできた。