Upload
palmer-hale
View
63
Download
0
Embed Size (px)
DESCRIPTION
SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作. 5497041 金子恵. 目次 . 1 組込みシステム 2 動機 3 目標 4 ターゲットマシン 5 クロス開発環境の構築 6 プログラムの概要. 1. 組込みシステム (embedded system). ● 各種の機械や機器に組み込まれて、 その制御を行うコンピュータシステム. ● ある目的に専門化されたコンピュータシステム. 例 自動車 家電製品 AV 機器 - PowerPoint PPT Presentation
Citation preview
SH-4 上で動作する組込みプログラムの
クロス開発環境構築とその試作
5497041
金子恵
目次 1 組込みシステム
2 動機 3 目標 4 ターゲットマシン
5 クロス開発環境の構築6 プログラムの概要
1. 組込みシステム(embedded system)
● 各種の機械や機器に組み込まれて、 その制御を行うコンピュータシステム
● ある目的に専門化されたコンピュータシステム
例 自動車 家電製品 AV 機器 携帯電話など
自動車内の組込みシステム
パワートレイン系(駆動系) エンジン制御 トランスミッション制御シャシー系(走行系) ブレーキ制御 姿勢制御 サスペンション制御ボディー系 ドアロック・ウィンドウ制御 照明・シート制御情報・エンターテイメント系 カーオーディオ・カーナビゲーション情報ー制御複合システム 情報系のシステムから得た情報を制御に活用
汎用コンピューターシステム
特別な用途のために設計されたのではない
多くの組込みシステムを含んでいる (モデム・キーボード・マウスなど)
プラント制御システム パソコンベースのハードウェアが用いられる場合も多い
携帯電話機 JAVA をサポートしている物も販売されている
多種多様な組込みシステム
システム規模の面においても、要求事項の面においても、多種多様な組込みシステムが存在する。全ての組込みシステムに適用できる技術は多くない。
例 機器の製造個数が多い場合 システム1つの製造コストがトータルコストに大きい影響をもつ
機器の製造個数が少ない場合 開発コストを小さくする必要がある
組込みシステムの特性① 専用化されたシステム ・組込みソフトウェアは機器に固定されている →ソフトウェアが入れ替えられることは希である。 ・ハードウェアや OS はアプリケーションが用いる必要最低限の 機能のみを備えていればよい →最適化設計が出来る
② 厳しいリソース制約 ・コストダウン要請 ・動作条件の制約 ・低消費電力 ・小型化・軽量化
← 製造個数が多い物← 自動車など(温度条件・ノイズ条件)
← 携帯機器 ← 人工衛星・非接触 IC カード
③ リアルタイム性
④ 高い信頼性
組込みソフトウェアの特性
① ハードウェアに密着したプログラミング
② 開発環境とターゲットマシンの分離
③ 多様なハードウェアと多様な OS PowerPC 系 i86 系 SH シリーズ V800 シリーズ など OS9 μITRON WindowsCE など
組込みシステムのまとめ
① 最低でも1つのプロセッサとソフトウェアを含んでいる。
② ソフトウェアをもつために、 ・実行コードを保存する領域 (ROM) ・実行時のデータ処理のため一時的な保存領域 (RAM)
③ 入力・出力をもっている
プロセッサ
メモリ
入力 出力
2 動機
家電製品や AV 機器などのコンシューマ機器の分野では、世界的な有力メーカーの多くが日本企業である。
この意味で、組込みシステムは、日本が世界に先駆けて研究に取り組むべき分野であり、日本が先進性・独自性を発揮できる分野でもあるので、その基礎を学ぶことは将来仕事をする上でとても大切なことであると思った。
3 目標
組込みシステムのソフトウェアを開発するためのクロス開発環境を構築し、その上で作成したプログラムをターゲットマシン上で動かす。
4 ターゲットマシン
デバッガ
ROM ライター
SH7750
メモリ
CPU ボード PARTNER-J
exeGCC評価版
日立純正 C/C++コンパイラ評価版
CQ RISC評価キット /SH4
CPUボードと PARTNER-J
マイクロプロセッサ(プロセッサコア)
汎用システム
組込みシステム
← 高速化に重点
← 高速化に加え、低消費電力や コード効率も重視
SH7750(日立 SuperH RISC engine SH7750)
● 日立製作所の SuperH シリーズのマイクロプロセッサ ( 32 ビット RISC プロセッサ)
SH-1 SH-2 SH-3 SH-4
● コード効率を高めるために、16ビット固定長命令を採用 RISC 系のプロセッサは一般的に32ビット固定長
● デジタルスチルカメラ・カーナビゲーション・ PDA などの マルチメディア分野をはじめとして多く採用されている
SH-1 SH-2 SH-3 SH-4
・組込み用途としての ラインアップを充実・処理能力があり、 低消費電力で様々な 機能をオンチップ化 チップが小さい →低価格
・ SH-2E 自動車
・キャッシュ・メモリ管理機構 を追加・コンピュータとしての機能 アップを実現
・ SH-3 モバイルコンピュータ「パワーザウルス」「カシオペア」
SH-4 91命令
SH-3 68命令
SH-2 62命令
SH-1 56命令
グラフィック演算命令(ベクトル・内積)セガのドリームキャストに採用された。
メモリ以外の周辺モジュールのオンチップ化
命令セット
SH7750 ( LSI) について
CPU
MMU
CPG INTC SCI RTC TMU
BSC
DMAC
メモリ
メモリやモジュールの
データなどの受け渡し
クロックの発生割り込みの制御 通信制御 カウント
仮想記憶
メモリマップ物理アドレス エリア n 接続デバイス データバス幅
0x0000_0000
0x0400_0000
0x0800_0000
0x0C00_0000
0x1000_0000
0x1400_0000
0x1800_0000
0x1C00_0000
0
1
2
3
4
5
6
7
フラッシュ ROM
SDRAM
SRAM
LED
予約
16ビット
32ビット
8ビット
8ビット
5 クロス開発環境の構築
クロス開発環境とは…?
Windows UNIX
C言語
コンパイルする
実行コード
コピー
Windows の実行コード
実行できない!
なぜか?? そのマシン特有の機械語を生成している 他のマシンでは実行できない!!
今回のターゲットマシンで考えると
パソコン SH-4
C言語
コンパイルSH-4 の
実行コードSH-4 の
実行コード
実行できる!
パソコン上でそのパソコン特有の機械語とは異なる、ターゲットマシンの機械語を生成するようなコンパイル環境
環境構築のために用意したもの
・ GCC
・ binutils アセンブラ・リンカ・ユーティリティー
Cコンパイラー
・ GDB デバッガ
・ newlib 組込み用途に使える標準ライブラリ
これらは、 UNIX 系の OS 上で動作する
FSF(Free Software Foundation) という団体の GNU プロジェクトが開発しているフリーソフトウェアのコンパイラ
今回の環境
FreeBSD
binutils
GCC
GDB
newlibconfigure --target=sh-coff
Windows
PARTNER-J
プリンター
ケー
ブル
LAN
CPU ボード
ROM 化に使うリモートデバッグ時に使う
RS232-C
ROM 化するまでの流れ
FreeBSD Windows
PARTNER-J
CPU ボード
LAN
C言語コンパイル
オブジェクト
ROMGDBの stubGBD と通信して
リモートデバッグ
オブジェクト
RAMオブジェクト
GDB
リモートデバッグ
S レコード・バイナリレコード
プログラム ROM化
6 プログラムの概要
• 発光ダイオードを点滅させる• 初期化の流れ• メインプログラムの概要
初期化の流れ
パワーオンリセット
CPU による初期化処理
プログラムによる初期化処理
メインプログラム
処理モード
特権モード ユーザーモード
リセット
復帰命令( RTE命令)
例外発生割り込み発生
CPU 内の重要なレジスタ(32ビット)
① 汎用レジスタ
R0R1
・・
R15
15メモリ
R0 の値+メモリの値
10 15
R0+R1
25
② ベクタベースレジスタ( VBR )
ベクタアドレステーブル
リセット 一般例外 割り込み TLB ミス例外VBR+0X000 VBR+0X100 VBR+0X600 VBR+400
パワーオンリセット
マニュアルリセット
例外事象レジスタ
割り込み事象レジスタ
0x0000x020
①
CPU によるリセット時の初期化処理
0x000 例外コードを設定
タイマーリフレッ
シュ
② ベクタベースレジスタ 0 を設定0
特権モード割込み禁止
リセットベクタアドレステーブ
ル
③
ソフトウェアによる初期化処理
① 例外コードの解釈
例外コード例外事象レジスタ
解釈する
パワーオンリセット( 0x000 )なら以下を実行する
②バスステートコントローラ・キャッシュの初期化
BSC ・キャッシュの初期化
フラッシュ ROM
SDRAM
SRAM
LED
予約領域
外部メモリ0x0000_0000
0x0800_0000
0x1000_0000
0x1400_0000
リセット時はエリア 0 のみ使用可能
初期化する
メモリの種類バス幅
など
ワークエリア
フラッシュ ROM
SDRAM
SRAM
LED
予約領域
外部メモリ0x0000_0000
0x0800_0000
0x1000_0000
0x1400_0000
29 ビット
P0
P1
P2
P3
P4
特権モード
実効アドレス空間
U0
ユーザーモード
実効アドレス空間0x0000_0000
0x8000_0000
0xA000_0000
0xC000_0000
0xE000_0000
0xFFFF_FFFF
32 ビット4G空間
0x0000_0000
0x7C00_0000
キャッシング可能
キャッシング可能
キャッシング可能
キャッシング可能
キャッシュの初期化キャッシュを有効にする
セクションの初期化
ROM
プログラム領域
定数領域
初期化データ領域
RAM
未初期化データ領域
初期化データ領域
コピー
0で初期化
メインプログラム
割り込みを許可する
初期化のまとめ
例外事象レジスタ
ベクタベースレジスタ
例外コード 0x000
0
特権モード例外ブロック
CPU プログラム
例外コード解釈
リセットベクタテーブル
0+0xA000_000
リセットベクタテーブル0x000
BSC ・キャッシュの初期化セクションの初期化
ベクタテーブルの設定例外ブロックなどの解除
メインプログラムへ
プログラム概要( sample.c )
1秒間隔で点滅を繰り返す消灯→点灯→消灯→点灯・・ 点灯:0~9までをカウントアップ
メイン関数Timer関数
TMU (タイマユニット) INTC (割り込みコントローラ)
クロック数を決める
CPU クロック、バスクロック、周辺モジュールクロックを決定する。
CPU:バスクロック:周辺モジュール =
1 : 1/3 : 1/6
CPU=200MHzバス =66.6MHz
周辺モジュール =33.3MHz
CPU クロック: 200MHz
TMU (タイマユニット)決められた時間をカウントダウンするカウントクロックを設定するPφ=33.3MHz (周辺クロック数)として
Pφ/16
今回 TMU は1ミリ秒をカウントするので
Y:カウント数 480 ×Y= 1,000,000ns
1ms のカウント数= 2,083
1クロックは約480ナノ秒
割り込みの動作
1ms カウント
TMU
CPU割り込み
例外コードをセット 割り込みサブルーチン
ベクタテーブル
0x400
割り込みサブルーチン
スタック汎用レジスタ
Timer関数
割り込みルーチン
RTE
タイマースタート
Sample.c の流れ( Timer関数を呼び出してから)
メイン関数Timer関数
1秒間をカウントする
1ms を 1000回カウント
Flag=TRUE
Flag=TRUE のとき消灯 点灯( 1~ 9)
1秒間カウントしたら→ TRUE それ以外 → FALSE
7 セグメント LED
DOT数値
D3 D2 D1 D0
0x1400_0000 ・ ・
D3 D2 D1 D0
・ ・ 0 ~ 9
点灯
A ~ F
消灯
1
点灯
0
消灯