松山事務所の石丸です。
Raspberry Piでなにをしようか考えていたときに「自分でOSを作ってみたい」という夢を思い出しました。

とネットを頼りに Raspberry Pi 2 で動作するOSを作ってみたいと思います。

開発環境の構築

macOS High Sierra(バージョン10.13.6) に開発環境を構築していきます。
ターゲットになるRaspberry Piのスペックは以下のようになります。

  • モデル: Raspberry Pi 2 Model B v1.1
  • SoC: Broadcom BCM2836
  • CPU: ARM Cortex-A7(ARMv7)

BareMetalで遊ぶ Raspberry Pi」ではLinux上で開発を行うため、WindowsやMacユーザはVirtualBoxにDebianをインストールするところから始まり、crosstool-NGでツールチェーンを構築するのですが、仮想マシン上で開発するのが嫌だったので、

【macOS】ARMのGCCコンパイル環境を構築する
https://www.yokoweb.net/2016/09/03/macos-arm-gcc/

を参考にMac上に開発環境を構築していきました。

1. ARM用GNUツールチェーンのダウンロード

GNU Arm Embedded Toolchain | Downloads – Arm Developer
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads

から gcc-arm-none-eabi-7-2018-q2-update-mac.tar.bz2 をダウンロードします。

私の環境ではThe Unarchiverでは正しく解凍ができずハマったので、コマンドでの解凍をおすすめします。

2. パスを通す

.bash_profileを編集してパスを通します。

MacでPATHを通す
https://qiita.com/nbkn/items/01a11392921119fa0153

3.動作確認

ターミナルを再起動して、ARM用gccにパスが通っていることを確認して開発環境の構築完了です。

ファームウェアをブートする

FAT32形式でフォーマットしたSDカードを用意したら

RaspberryPiのVideoCore IV(GPU)を使ってOS無し(ベアメタル)からポリゴン出して遊ぶ
https://qiita.com/gyabo/items/f3a411a63d608d00b384

Raspberry Pi2(Linux Kernel)のブートシーケンスを読む(その1) アーキテクチャ依存部
https://qiita.com/Nao1215/items/b8f866b4ede757cdaa73

を参考にファームウェアが起動するところまで持っていきます。

1. ブートローダとファームウェアをダウンロード

Raspberry Pi 公式のGitHubから

  • ブートローダ: bootcode.bin
  • ファームウェア: start.elf

をダウンロードしてSDカードのルートフォルダにコピーします。

このSDカードを Raspberry Pi に挿して電源をいれると、ディスプレイに coloured splash screen が表示されてファームウェアが起動したことを確認できます。
config.txtはなくてもデフォルト設定で起動するみたいです。

このとき Raspberry Pi 本体の赤く点灯しているLEDの横で、緑のLEDが7回点滅を繰り返しているかと思います。
これはSDカードのルートフォルダにkernel.imgがないというエラーを表しています。

R-Pi Troubleshooting
https://elinux.org/R-Pi_Troubleshooting#Green_LED_blinks_in_a_specific_pattern

これからこのkernel.imgを作っていきます。

TOP
TOP