43
SH-4 上上上上上上 上上上上上上上上上 上上上上上上上上上上 上上上上 5497041 上上上

SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

Embed Size (px)

DESCRIPTION

SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作. 5497041 金子恵. 目次 . 1 組込みシステム     2 動機            3 目標            4 ターゲットマシン     5 クロス開発環境の構築 6 プログラムの概要. 1. 組込みシステム (embedded system). ●  各種の機械や機器に組み込まれて、    その制御を行うコンピュータシステム. ●  ある目的に専門化されたコンピュータシステム. 例      自動車        家電製品 AV 機器 - PowerPoint PPT Presentation

Citation preview

Page 1: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

SH-4 上で動作する組込みプログラムの

クロス開発環境構築とその試作

5497041

金子恵

Page 2: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

目次 1 組込みシステム    

2 動機           3 目標           4 ターゲットマシン    

5 クロス開発環境の構築6 プログラムの概要

  

Page 3: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

1. 組込みシステム(embedded system)

●  各種の機械や機器に組み込まれて、   その制御を行うコンピュータシステム

●  ある目的に専門化されたコンピュータシステム

例      自動車       家電製品        AV 機器       携帯電話など        

Page 4: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

  自動車内の組込みシステム    

パワートレイン系(駆動系)     エンジン制御  トランスミッション制御シャシー系(走行系)     ブレーキ制御  姿勢制御     サスペンション制御ボディー系    ドアロック・ウィンドウ制御     照明・シート制御情報・エンターテイメント系    カーオーディオ・カーナビゲーション情報ー制御複合システム    情報系のシステムから得た情報を制御に活用

Page 5: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

汎用コンピューターシステム             

特別な用途のために設計されたのではない

多くの組込みシステムを含んでいる      (モデム・キーボード・マウスなど)

プラント制御システム   パソコンベースのハードウェアが用いられる場合も多い 

携帯電話機    JAVA をサポートしている物も販売されている

Page 6: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

  多種多様な組込みシステム       

システム規模の面においても、要求事項の面においても、多種多様な組込みシステムが存在する。全ての組込みシステムに適用できる技術は多くない。

例  機器の製造個数が多い場合     システム1つの製造コストがトータルコストに大きい影響をもつ

  機器の製造個数が少ない場合     開発コストを小さくする必要がある     

Page 7: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

組込みシステムの特性①  専用化されたシステム     ・組込みソフトウェアは機器に固定されている                →ソフトウェアが入れ替えられることは希である。       ・ハードウェアや  OS はアプリケーションが用いる必要最低限の        機能のみを備えていればよい                →最適化設計が出来る

②  厳しいリソース制約       ・コストダウン要請       ・動作条件の制約       ・低消費電力       ・小型化・軽量化

← 製造個数が多い物← 自動車など(温度条件・ノイズ条件)

← 携帯機器 ← 人工衛星・非接触 IC カード

③  リアルタイム性

④  高い信頼性

Page 8: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

組込みソフトウェアの特性

①  ハードウェアに密着したプログラミング

②  開発環境とターゲットマシンの分離

③  多様なハードウェアと多様な OS          PowerPC 系   i86 系   SH シリーズ   V800 シリーズ など         OS9    μITRON    WindowsCE   など

Page 9: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

組込みシステムのまとめ

①  最低でも1つのプロセッサとソフトウェアを含んでいる。

②  ソフトウェアをもつために、       ・実行コードを保存する領域  (ROM)       ・実行時のデータ処理のため一時的な保存領域                          (RAM)

③  入力・出力をもっている

プロセッサ

メモリ

入力 出力

Page 10: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

 2 動機   

家電製品や AV 機器などのコンシューマ機器の分野では、世界的な有力メーカーの多くが日本企業である。

この意味で、組込みシステムは、日本が世界に先駆けて研究に取り組むべき分野であり、日本が先進性・独自性を発揮できる分野でもあるので、その基礎を学ぶことは将来仕事をする上でとても大切なことであると思った。

Page 11: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

3 目標  

組込みシステムのソフトウェアを開発するためのクロス開発環境を構築し、その上で作成したプログラムをターゲットマシン上で動かす。

Page 12: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

4 ターゲットマシン  

デバッガ

ROM ライター

SH7750

メモリ

CPU ボード PARTNER-J

exeGCC評価版

日立純正 C/C++コンパイラ評価版

CQ RISC評価キット /SH4

Page 13: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

CPUボードと PARTNER-J

Page 14: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作
Page 15: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

マイクロプロセッサ(プロセッサコア)

汎用システム

組込みシステム

← 高速化に重点

← 高速化に加え、低消費電力や  コード効率も重視

Page 16: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

SH7750(日立 SuperH RISC engine SH7750)

  ●  日立製作所の SuperH シリーズのマイクロプロセッサ          ( 32 ビット RISC プロセッサ)

SH-1   SH-2    SH-3    SH-4

● コード効率を高めるために、16ビット固定長命令を採用      RISC 系のプロセッサは一般的に32ビット固定長

●   デジタルスチルカメラ・カーナビゲーション・ PDA などの   マルチメディア分野をはじめとして多く採用されている

Page 17: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

SH-1  SH-2    SH-3   SH-4

・組込み用途としての ラインアップを充実・処理能力があり、 低消費電力で様々な 機能をオンチップ化 チップが小さい       →低価格

・ SH-2E 自動車

・キャッシュ・メモリ管理機構 を追加・コンピュータとしての機能 アップを実現

・ SH-3  モバイルコンピュータ「パワーザウルス」「カシオペア」

Page 18: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

SH-4 91命令

SH-3 68命令

SH-2 62命令

SH-1 56命令

グラフィック演算命令(ベクトル・内積)セガのドリームキャストに採用された。

メモリ以外の周辺モジュールのオンチップ化

命令セット

Page 19: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

SH7750 ( LSI) について

CPU

MMU

CPG INTC SCI RTC TMU

BSC

DMAC

メモリ

メモリやモジュールの

データなどの受け渡し

クロックの発生割り込みの制御 通信制御 カウント

仮想記憶

Page 20: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

メモリマップ物理アドレス エリア 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ビット

Page 21: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

5 クロス開発環境の構築

クロス開発環境とは…?

Windows UNIX

C言語

コンパイルする

実行コード

コピー

Windows の実行コード

実行できない!

なぜか??   そのマシン特有の機械語を生成している     他のマシンでは実行できない!!

Page 22: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

今回のターゲットマシンで考えると

パソコン SH-4

C言語

コンパイルSH-4 の

実行コードSH-4 の

実行コード

実行できる!

パソコン上でそのパソコン特有の機械語とは異なる、ターゲットマシンの機械語を生成するようなコンパイル環境

Page 23: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

環境構築のために用意したもの

・ GCC

・ binutils アセンブラ・リンカ・ユーティリティー

Cコンパイラー

・ GDB デバッガ

・ newlib 組込み用途に使える標準ライブラリ

これらは、 UNIX 系の OS 上で動作する

FSF(Free Software Foundation) という団体の GNU プロジェクトが開発しているフリーソフトウェアのコンパイラ             

Page 24: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

今回の環境  

FreeBSD

binutils

GCC

GDB

newlibconfigure --target=sh-coff

Windows

PARTNER-J

プリンター

ケー

ブル

 

LAN

CPU ボード

ROM 化に使うリモートデバッグ時に使う

RS232-C

Page 25: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

ROM 化するまでの流れ

FreeBSD Windows

PARTNER-J

CPU ボード

LAN

C言語コンパイル

オブジェクト

ROMGDBの stubGBD と通信して

リモートデバッグ

オブジェクト

RAMオブジェクト

GDB

リモートデバッグ

S レコード・バイナリレコード

プログラム ROM化

Page 26: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

6 プログラムの概要

• 発光ダイオードを点滅させる• 初期化の流れ• メインプログラムの概要

Page 27: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

初期化の流れ

パワーオンリセット

CPU による初期化処理

プログラムによる初期化処理

メインプログラム

Page 28: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

処理モード

特権モード ユーザーモード

リセット

復帰命令( RTE命令)

例外発生割り込み発生

Page 29: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

CPU 内の重要なレジスタ(32ビット)

① 汎用レジスタ

R0R1

・・

R15

15メモリ

R0 の値+メモリの値

   10   15

R0+R1

25

② ベクタベースレジスタ( VBR )

Page 30: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

ベクタアドレステーブル

リセット 一般例外 割り込み TLB ミス例外VBR+0X000 VBR+0X100 VBR+0X600 VBR+400

パワーオンリセット

マニュアルリセット

例外事象レジスタ

割り込み事象レジスタ

0x0000x020

CPU によるリセット時の初期化処理

0x000 例外コードを設定

タイマーリフレッ

シュ

② ベクタベースレジスタ 0 を設定0

Page 31: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

特権モード割込み禁止

リセットベクタアドレステーブ

Page 32: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

ソフトウェアによる初期化処理

① 例外コードの解釈

例外コード例外事象レジスタ

解釈する

パワーオンリセット( 0x000 )なら以下を実行する

②バスステートコントローラ・キャッシュの初期化

Page 33: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

BSC ・キャッシュの初期化

フラッシュ ROM

SDRAM

SRAM

LED

予約領域

外部メモリ0x0000_0000

0x0800_0000

0x1000_0000

0x1400_0000

リセット時はエリア 0 のみ使用可能

初期化する

メモリの種類バス幅    

 など 

ワークエリア

Page 34: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

フラッシュ 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

キャッシング可能

キャッシング可能

キャッシング可能

キャッシング可能

キャッシュの初期化キャッシュを有効にする

Page 35: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

セクションの初期化

ROM

プログラム領域

定数領域

初期化データ領域

RAM

未初期化データ領域

初期化データ領域

コピー

0で初期化

Page 36: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

メインプログラム

割り込みを許可する

Page 37: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

初期化のまとめ

例外事象レジスタ

ベクタベースレジスタ

例外コード  0x000

0

特権モード例外ブロック

CPU プログラム

例外コード解釈

リセットベクタテーブル

0+0xA000_000

リセットベクタテーブル0x000

BSC ・キャッシュの初期化セクションの初期化

ベクタテーブルの設定例外ブロックなどの解除

メインプログラムへ

Page 38: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

プログラム概要( sample.c )

1秒間隔で点滅を繰り返す消灯→点灯→消灯→点灯・・  点灯:0~9までをカウントアップ

メイン関数Timer関数

TMU (タイマユニット)     INTC (割り込みコントローラ)

Page 39: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

クロック数を決める

CPU クロック、バスクロック、周辺モジュールクロックを決定する。

CPU:バスクロック:周辺モジュール =

1 : 1/3 : 1/6

CPU=200MHzバス =66.6MHz

周辺モジュール =33.3MHz

CPU クロック: 200MHz

Page 40: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

TMU (タイマユニット)決められた時間をカウントダウンするカウントクロックを設定するPφ=33.3MHz (周辺クロック数)として

Pφ/16

今回  TMU は1ミリ秒をカウントするので

Y:カウント数 480 ×Y= 1,000,000ns

1ms のカウント数= 2,083

1クロックは約480ナノ秒

Page 41: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

割り込みの動作

1ms カウント

TMU

CPU割り込み

例外コードをセット 割り込みサブルーチン

ベクタテーブル

0x400

割り込みサブルーチン

スタック汎用レジスタ

Timer関数

割り込みルーチン

RTE

タイマースタート

Page 42: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

Sample.c の流れ( Timer関数を呼び出してから)

メイン関数Timer関数

1秒間をカウントする

1ms を 1000回カウント

Flag=TRUE

Flag=TRUE のとき消灯 点灯( 1~ 9)

1秒間カウントしたら→ TRUE それ以外 → FALSE

Page 43: SH-4 上で動作する 組込みプログラムの クロス開発環境構築と その試作

7 セグメント LED

DOT数値

D3 D2 D1 D0

0x1400_0000 ・ ・

D3 D2 D1 D0

・ ・ 0 ~ 9

点灯

A ~ F

消灯

点灯

消灯