C/C+

Raspberry Pi で Hello World

前回に引き続きラズパイ用の開発環境を構築し実機でHello Worldを表示(シリアル経由)するまでをやってみる。

実機は初期モデルからメモリが2倍の512MBになったVer。
最近のラズパイに比べたら装備も性能も劣るけれど個人的にはこっちのシンプルな方が好き。
Raspberry Pi Type B 512MB

環境構築続き

gatewayの設定変更

前回の作業ではホストオンリーアダプタにgatewayの設定を入れてしまい、
NAT経由で名前解決ができずapt-getが出来ない凡ミスを犯していたため修正した。

◆ネットワーク設定ファイルの修正とdefault gatewayの確認

クロスコンパイラ(+その他)の取得

下記を参考にクロスコンパイラをgitで取ってくる。取得先は/usr/local/配下とした。

Kernel building – Raspberry Pi Documentation

クロスコンパイラが取ってこれたらパスを追記しておく。

その他、ビルドしたファイルのファイル転送用にFTPサーバと純粋なviが使いずらいのでvimを追加する。

起動イメージの作成

ビルド環境が整ったので早速 “Hello World” してみる。
具体的には電源ON後にHello Worldのメッセージを表示して終了するだけのバイナリ(kernel.img)を作る。

ソースコード

main.c

uart.c

uart.h

mmio.h

boot.S

バイナリのビルド

Makefile

コンパイル

その他必要なファイル

SDカードにkernel.imgと合わせてbootcode.binとstart.elfが必要なので下記から拝借する。

raspberrypi/firmware (github.com)

実機起動

SDカードに下記3ファイルを配置する。SDをラズパイに挿入し電源を入れると上から順に実行されていく。

  • bootcode.bin
  • start.elf
  • kernel.img

実行結果

結線はこんな感じ。

Teratermの画面にメッセージが表示されれば成功。(ボーレートは115200)