Cにちょっとアセンブラ… 全ARMで動く共通プログラム

第1部
第
3章
ご購入はこちら
基本32ビットARMのリセット直後からの動作メカニズム
C にちょっとアセンブラ…
全 ARM で動く共通プログラム
村井 和夫
本稿では,32 ビット系 ARM を例にして,全 ARM
で動かす共通プログラムの基本構造について解説しま
す(図 1).ターゲット ARM ボードを以下に示します.
ビ ッ ト 対 応 ARM Cortex-A53 コ ア )
,Cortex-M 系
FM3 マイコン基板(ARM Cortex-M3 コア)も基本は
同様です.対応の詳細については,誌面の都合で全て
を本特集で紹介することは難しいため,今後連載など
でフォローアップしていきます.
(編集部)
・ラズベリー・パイ(ARM11 コア)
・ラズベリー・パイ 2(ARM Cortex-A7 コア)
・BeagleBone Black 基板(ARM Cortex-A8 コア)
・CEV RZ/A1L 基板(ARM Cortex-A9 コア)
・LPC2388 基板(ARM7TDMI コア)
プログラミング体得!
ARM 共通プログラムの仕様
本章では,32 ビット ARM 共通のプログラム記述方
法を解説していきます.今回はその後,ラズベリー・
パイやラズベリー・パイ 2 について,CPU 固有機能の
プログラムを作成する方法を紹介します.
他の 32 ビット系 ARM ボードや,アーキテクチャが
大きく異なる 64 ビット ARM 系ラズベリー・パイ 3(64
スタートアップ
スタート
アップ処理 ・アセンブラ
ベクタ・テーブル
vect.c
・汎用ディジタル I/O(GPIO)
・シリアル通信(UART)
ctr0.o
crt0.s
割り込み
ARM 共通プログラムの要求条件として,以下の項
目を満たすものとします.
(1)I/O 処理を行う
代表的な I/O 処理をひと通り行います
vect.o
割り込み処理
プログラム
interrupt.c
interrupt.o
ボード
main.c
メイン・
プロ
グラム
I/O構造定義
io.h
main.o
リンク
I/O処理
実行ファイル
PIE.out
ARM
macro.h
I/O処理
I/Oや
printf
io.c
printf.c
printf.h
ユーザ・
アプリ
pi.c
ARM共通
プログラム
要は,割り込みやI/Oの
設定や処理を合わせ込む
CPU個別
プログラム
io.o
printf.o
C標準
ライブラリ
pi.o
C内部
ライブラリ
libc.a
メモリ情報
(リンカ・スプリクト)
memory.x
libgcc.a
制御
Makefile
それなりに
共通
図 1 ARM 共通プログラムの構成…割り込みや I/O 関連の設定や処理を合わせこめばどの ARM で動かすことも可能になる
64
2017 年 2 月号