強烈!? LLVM/Clang コンパイラの実力

第2部
第
9章
定番 Cortex-A ボード BeagleBone Black で
確かめる
強烈!? LLVM/Clang
コンパイラの実力
村井 和夫
表 1 今回使ってみた StarterWare に入っているサンプル・ソフト
ウェア
機 能
サンプル・アプリケーション
割り込みによる Echo アプリケーション
UART
DMA による Echo アプリケーション
割り込みモードによる EEPROM 読み込み
I2C
DMA モードによる EEPROM 読み込み
タイマ
割り込みサービス・ルーチンでの係数
ウォッチドッグ・ ウォッチドッグ・タイマ・デモンストレー
タイマ
ション
GPIO
LED オン / オフ
MMC/SD
SD カードの FAT ファイル・システム・
アクセス
リアルタイム・
クロック
リアルタイム・クロックの設定と読み出し
CDC(Communication Device Class)
シリアル・デバイス・モード
Custom Bulk デバイス・モード
MSC(Mass Storage Class)デバイス・モード
USB
MSC(Mass Storage Class)ホスト
MSC(Mass Storage Class)ホスト+デバイス
CDCシリアル・デバイス + CDCシリアル・
デバイス(USB0 ポートをデバッグとシリア
ル・ポート・エミュレーションに使用)
ウェブ・ページヘのアクセス
イーサネット
ソケット・プログラムによる Echo
EDMA(DMA)
ブートローダ
DMA によるメモリ間転送
MMC/SD ブート
UART ブート
イーサネット駆動(WEB ブラウザ)
パワー制御モードのサポート
低消費電力制御モード
UART とタイマによる起動
独自のデモ・
アプリケーション OPP50(パワー・マネージメント機能)
OPP100(パワー・マネージメント機能)
OPP120(パワー・マネージメント機能)
SR-TURBO(パワー・マネージメント機能)
ベクタ浮動小数点演算
NEON/VFP
Math ライブラリ(sin, cos の CPU 固有機能
あり・なし)※ GCC のみ
低価格 Linux ボードの一つ BeagleBone Black には,
Cortex-A8 コアを搭載した AM335x プロセッサ(テキ
サス・インスツルメンツ)が使われています.本プ
ロセッサには,OS を使わない CPU プログラミング
(ベア・メタル・プログラミング)向けに,Starter
Ware と い う ラ イ ブ ラ リ 群 が 用 意 さ れ て お り, 生
Cortex-A 用プログラムを試すのに非常に便利です.
本稿では,この BeagleBone Black を使って,強
力といわれる LLVM/Clang の Cortex-A 向けコンパ
イル性能を確認してみます.
Cortex-A8 搭載 AM335x 用実験プログラムの作り
方は Appendix 7 で説明します.
(編集部)
生 Cortex-A を簡単に操作できる
StarterWare ライブラリの構造
● ハードウェア制御のサンプル・プログラムが
てんこ盛り!
テキサス・インスツルメンツのサイトには,AM335x
を OS レス(ベア・メタル)で動かすための StarterWare
というソフトウェア・ライブラリが公開されていま
す.StarterWare には,ハードウェアを直接制御する
ためのサンプル・プログラムが揃っていますので,今
回はこれを利用します.
初心者がマニュアルを片手に OS レス・プログラミ
ン グ を 行 う の は と て も ハ ー ド ル が 高 い も の で す.
StarterWare には OS を書くために用いられる基本的
な CPU 制御プログラムのサンプルが用意されていま
すので,とても役に立つと思います.通常のプログラ
ムなら,これを組み合わせるだけで作成できます.イ
ンストール方法は Appendix 5 をご覧ください.
StarterWare には,表 1 に示すサンプル・プログラ
ムが用意されています.BeagleBone Black では,サ
ポートされていない機能もあります.
● 複数の開発環境に対応するためディレクトリ
構造が少し複雑
StarterWare は,AM335x を 使 っ た 各 種 プ ラ ッ ト
ホームで動作するプログラムを,GCC やテキサス・
2015 年 3 月号
75