組み込みプロセッサ DSP の利用例 KORG シンセサイザー RADIAS ONKYO YAMAHA AVアンプ NEC W-CDMA 基地局各社携帯電話 (NTT DoCoMo FOMAなど ) Palm PDA Tungsten T 任天堂 GAMEBOY ADVANCE 任天堂ニンテンドー DS Apple ipod Apple PDA Newton Psion PDA Series5 Corega PLANEX ブロードバンドルータ SEGA ドリームキャスト産総研認定ベンチャーヒューマノイドロボット HRP-2m Choromet HITACHI WinCE 端末 PERSONA IOデータ NAS LAN-iCN2 LANDISK アイコム マイクロ総合研究所ブロードバンドルータ SANYO カーナビ NV-HD870DT Clarion 業務用車両向け汎用車載端末 CA-7000 パソコン 以外のコンピュータシステムも沢山ある TI TMS320VC5502(C55x) TI TMS320DA7xx(C67x) TI TMS320TCI6487(C64x) TI ARM OMAP/OMAP2 (TI DSP+ARM) TI ARM OMAP1510(C55x+ARM9) ARM ARM7 ARM ARM9+ARM7 ARM ARM7 ARM ARM7 ARM ARM7 ARM ARM9 Renesas SH-4 Renesas SH-4 Renesas SH-4 Renesas SH-4 Renesas SH-4 Renesas SH-4 Renesas SH-4 青文字が DSP(Digital Signal Processor) プロセッサの一形態
応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) Windows A6809K.exe 目的コンピュータハードウェア 09brd( まるきゅうぼーど ) テキストエディタ TeraTerm sim09brd.exe アセンブラ ハードウェア仕様記述 (UML C 言語 ) ビヘイビア ( 動作 ) 記述 (HDL C 言語 ) monitorcr.asm dump.asm sort.asm 課題のプログラム リンカ Windows 搭載 PC ライブラリ MPU Computer HW Mem クロス開発 I/O 応用 SW MPU Computer HW Mem I/O 目的作成物 09brd ( まるきゅうぼーど ) MPU : 6809 クロス開発用 ComputerHW 目的 ComputerHW
09brd( まるきゅうぼーど ) の概要 (1/2) MPU I/O Computer HW Mem I/O 装置 シリアルポートコネクタ Driver IC MAX232 リセットボタン 水晶発信器 ( クロック信号発生器 ) MPU IC HD68B09P CPU( プロセッサ ) 特徴 単純な構成 UI 装置がない 補助記憶装置がない 電源コネクタ ( 電源 On/Off) ACIA IC MC68B50P ROM IC 27256 RAM IC 67256 主記憶装置 注 ACIA: Asynchronous Communications Interface Adapter
MPU I/O Computer HW Mem アドレスバス (16-bit) データバス (8-bit) 09brd( まるきゅうぼーど ) の概要 (2/2) MPU 6809 ACIA 6850 ROM 27256 RAM 67256 主記憶装置 0000 ~ 0010 ~ ~ ~ ~ FFF0 ~ 2-byte ( アドレス ) 0000 0001 ~ FFFF 16-bit 1-byte ( データ ) ~ 8-bit ( アドレス ) ( データ ) 16-byte ~ 1-byte ( データ ) 表現の違い
応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) Windows A6809K.exe アセンブラ A6809K.exe テキストエディタ TeraTerm sim09brd.exe アセンブラ ハードウェア仕様記述 (UML C 言語 ) ビヘイビア ( 動作 ) 記述 (HDL C 言語 ) monitorcr.asm dump.asm sort.asm 課題のプログラム リンカ Windows 搭載 PC ライブラリ MPU Computer HW Mem クロス開発 I/O 応用 SW MPU Computer HW Mem I/O 目的作成物 09brd ( まるきゅうぼーど ) MPU : 6809 注 A6809K.exe は 講義用 Web ページから取得 クロス開発用 ComputerHW 目的 ComputerHW
応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) 応用ソフトウェア A6809K.exe クロスアセンブラ ( クロス開発用アセンブラ ) ソフトウェア開発環境と A6809K.exe アセンブラ クロスアセンブラ リンカ 本科目のソフトウェア開発 (1) アセンブリ言語レベル以下で行う (2) クロス開発である (3) リンカを用いない 応用 SW 6809 の ライブラリ 目的作成物 クロス開発 09brd 応用 SW 派生する特徴 目的作成物 目的コードのファイル形式が単純 モジュール化設計 モジュール再利用開発が出来ない
A6809K.exe が処理する入出力ファイルの種類.asm ファイル : アセンブリ言語プログラムソースファイル ファイルとしての格納場所 目的作成物 応用ソフトウェア 応用 SW 入力側 (1 種類 ) アセンブラ境界 出力側 (3 種類 ) 補助記憶装置 HDD アセンブラ A6809K.exe.lstファイル.romファイル 6809 の.rom ファイル : 本演習では利用しない.lst ファイル : アセンブル結果のリストファイル ( 学習のヒント ).obj ファイル : 目的作成物 目的コード ( 実行コード ) のファイル A6809K.exe が処理する入出力ファイルは全 4 種類であるが 本演習では.rom ファイルは利用しないので 実質 3 種類のファイルの形式を知ればよい
A6809K.exe が処理する入出力ファイルの形式 (1).asm ファイル : アセンブリ言語プログラムソースファイル ファイルとしての格納場所 目的作成物 応用ソフトウェア 応用 SW 入力側 アセンブラ境界 出力側 補助記憶装置 HDD アセンブラ A6809K.exe.lstファイル.romファイル 6809 の.rom ファイル : 本演習では利用しない.asm ファイルの形式 : テキストファイルで 以下が各行の基本形式 詳細はのちほど コメント行形式 * 任意文字列ラベル無 1 行形式 アセンブリオペコード アセンブリオペランド [: アセンブリオペコード アセンブリオペランド] ラベル付 1 行形式ラベル アセンブリオペコード アセンブリオペランド [: アセンブリオペコード アセンブリオペランド] ラベル付 2 行形式ラベル アセンブリオペコード アセンブリオペランド [: アセンブリオペコード アセンブリオペランド ] 注 [ ] 部分は省略可 は空白 1 つ以上 その他の用語はのちほど 説明を省く
A6809K.exe が処理する入出力ファイルの形式 (2) ファイルとしての格納場所 目的作成物 応用ソフトウェア 応用 SW 入力側 アセンブラ境界 出力側 補助記憶装置 HDD アセンブラ A6809K.exe.lstファイル.romファイル 6809 の.lst ファイル : アセンブル結果のリストファイル ( 学習のヒント ).lst ファイルの形式 : テキストファイルで 以下が各行の形式 通し番号 ( 数値 1 ) アドレス 機械語命令 ( 数値 2).asm ファイルの 1 行 注 は空白 1 つ以上 は空白 1 つ数値 1: 各機械語命令の先頭バイトの 先頭アドレスからの変位バイト数数値 2: 各.asm ファイルの 1 行の.asm ファイル中の行番号.asm ファイルの 1 行は 改行または : での区切りによる
A6809K.exe が処理する入出力ファイルの形式 (3) ファイルとしての格納場所 目的作成物 応用ソフトウェア 応用 SW 入力側 アセンブラ境界 出力側 補助記憶装置 HDD アセンブラ A6809K.exe.lstファイル.romファイル 6809 の @1000[hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh] @1010[hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh] @hhhh[hhhhhhhhhhhhhh] E アドレス終端記号.obj ファイル : 目的作成物 目的コード ( 実行コード ) のファイル.obj ファイルの形式 : テキストファイル (?!) で 以下が全体の形式 末行は 16 バイトに満たないことがある ( 多くの場合 ) hhは任意の2 桁の16 進数 [ ] 内は機械語命令列 h2つで1バイト 一行に最大 16バイト 注 記号 h は以降も使う
応用ソフトウェア (1) コマンドプロンプトを起動し A6809K.exe アセンブラ Z: >cd CAE クロスアセンブラ ( クロス開発のアセンブラ ) 応用 SW 6809 の Z: CAE>a6809k.exe (3) クロスアセンブラ A6809K.exe を実行 MC6809 cross assembler start, made by Y. Yoshioka. 2007.8.28 ROM writer format: ASKII/2A (74256 only) Please input.asm file name = foo.asm **** pass 1 start **** **** pass 2 start **** ** Error count=0 **, end addr=bar > Generated "foo.lst" file. > Generated "foo.rom" file. > Generated "foo.obj" file. ** Assembler completed. 注 2 クロスアセンブラ A6809K.exe の使い方 (2)Change Directory 目的作成物 注 1.asm : アセンブリ言語プログラムソースファイル (4) アセンブルしたいアセンブリ言語プログラムファイル名を入力 (5) 左のように Error count=0.lst/.rom/.obj の3つのファイルを生成 メッセージ Assembler completed. が出力 となれば正常にアセンブル終了 それ以外の場合は エラー等を修正し 再アセンブルする.obj : 目的作成物 目的コード ( 実行コード ) のファイル.lst : アセンブル結果のリストファイル ( 学習のヒント ).rom : 本演習では用いないので無視する ( わざわざファイル削除する必要はない )
09brd 用のソースファイル monitorcr.asm 応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) Windows A6809K.exe テキストエディタ TeraTerm sim09brd.exe アセンブラ ハードウェア仕様記述 (UML C 言語 ) ビヘイビア ( 動作 ) 記述 (HDL C 言語 ) monitorcr.asm dump.asm sort.asm 課題のプログラム リンカ Windows 搭載 PC ライブラリ MPU Computer HW Mem クロス開発 I/O 応用 SW MPU Computer HW Mem I/O 目的作成物 09brd ( まるきゅうぼーど ) MPU : 6809 注 monitorcr.asm は 講義用 Web ページから取得 クロス開発用 ComputerHW 目的 ComputerHW
monitorcr.asm と monitorcr.obj 09brdの ( 簡易 ) モニタ のアセンブリ言語プログラムソースファイル応用ソフトウェア monitorcr.asm 応用 SW 目的作成物 アセンブラ A6809K.exe 6809 の monitorcr.obj ROM には別途格納済み 皆さんには配布していない ( 簡易 ) モニタ monitorcr.obj の役割内容提供コマンド 09brdのメモリ内容をダンプする dコマンド 09brdのメモリ内容を編集する mコマンド 09brdのメモリに実行コードを転送する sコマンド転送した実行コードを実行する gコマンド
練習 09brdの ( 簡易 ) モニタ のアセンブリ言語プログラムソースファイル応用ソフトウェア monitorcr.asm 1 応用 SW 目的作成物 2 アセンブラ A6809K.exe.lst ファイル ( monitorcr.lst) 3 6809 の 3 monitorcr.obj ROM には別途格納済み 皆さんには配布していない 1 monitorcr.asm をテキストエディタで開いてみる 2 monitorcr.asm をアセンブルする 3 生成された monitorcr.obj monitorcr.lst をテキストエディタで開いてみる
応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) Windows A6809K.exe TeraTerm(for Windows) テキストエディタ TeraTerm sim09brd.exe アセンブラ ハードウェア仕様記述 (UML C 言語 ) ビヘイビア ( 動作 ) 記述 (HDL C 言語 ) monitorcr.asm dump.asm sort.asm 課題のプログラム リンカ Windows 搭載 PC ライブラリ MPU Computer HW Mem クロス開発 I/O 応用 SW MPU Computer HW Mem I/O 目的作成物 09brd ( まるきゅうぼーど ) MPU : 6809 クロス開発用 ComputerHW 目的 ComputerHW
補助記憶装置 UI 装置 ファイルとしての格納場所 HDD 応用ソフトウェア 09brd の操作と TeraTerm の役割 09brd に Q1 モニタコマンドを伝えるには? Q2 目的生成物を送るには? シリアルポートコネクタ 課題のプログラム アセンブラ A6809K.exe TeraTerm 目的作成物 シリアルポートコネクタ 応用 SW 6809 の monitorcr.obj ROM に格納済み On シリアルポートへのデータ送信 キーボードからの入力をシリアルポートに送る ファイルの内容をシリアルポートに送る シリアルポートからのデータ受信 シリアルポートに送られてきた情報を表示する 09brd に UI 装置と補助記憶装置 ( 読み出しのみ ) を提供する
TeraTerm の起動と設定 シリアルの COM1 を選択 改行コード > 送信 :CR+LF ローカルエコー :On 09brd のリセットボタンを押す 上記の設定に メッセージと プロンプト $ が表示されれば 設定完了 モニタが起動
TeraTerm と monitorcr.obj A1 TeraTerm 準備完了 モニタ monitorcr.obj のコマンドを 09brd へ伝えられる コマンドと書式 d[ addr] s g addr その後 obj 形式の入力 m addr hh hh hh hh は任意の 2 桁の 16 進数 個数は最大 16 個 機能 [addr から ]256 バイトのメモリダンプ obj 形式データをメモリへ転送 addr からプログラムを実行 addr からデータ hh を個数分書き込む 注 は空白 ( スペースキー )1 つ addr は任意のメモリアドレス A2. s コマンドを使用する 目的生成物 (.obj ファイル ) を 09brd へ送る s その後 obj 形式の入力 方法 1.obj ファイルの内容をキーボートから直接入力 方法 2 2.obj ファイルのあるディレクトリへ s 方法 3 1 3 送りたい.obj ファイルを選択 4.obj ファイルのアイコンを TeraTerm 上にドラッグ & ドロップ
09brd TeraTerm の利用終了 シリアルポートコネクタ シリアルポートコネクタ ROM に格納済み Off monitorcr.obj UI 装置 TeraTerm (1) TeraTerm を終了する (2) 09brd の AC アダプタを抜く (3) 09brd と演習室 PC とから シリアルケーブルを外す 09brd 上の IC の発熱に注意すること
シリアルポートコネクタ 練習 1 09brd と演習室 PC とを シリアルケーブルで接続し 09brd の AC アダプタを差し込む シリアルポートコネクタ monitorcr.obj ROM に格納済み On UI 装置 TeraTerm 2 TeraTerm を シリアルの COM1 を選択して起動し 端末設定 ( 送信改行コード ローカルエコー ) とシリアルポート設定を行う 3 モニタを起動し 09brd の利用を開始可とする 4 d コマンドを実行してみる 09brd のリセットボタンを押す d d 1000 など メッセージと プロンプト $ が表示されれば 設定完了 モニタが起動
応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) Windows A6809K.exe テキストエディタ TeraTerm sim09brd.exe アセンブラ sim09brd.exe ハードウェア仕様記述 (UML C 言語 ) ビヘイビア ( 動作 ) 記述 (HDL C 言語 ) monitorcr.asm dump.asm sort.asm 課題のプログラム リンカ Windows 搭載 PC ライブラリ MPU クロス開発 Computer HW Mem I/O 応用 SW MPU Computer HW Mem I/O 目的作成物 09brd ( まるきゅうぼーど ) MPU : 6809 注 sim09brd.exe は 講義用 Web ページから取得 クロス開発用 ComputerHW 目的 ComputerHW
補助記憶装置 UI 装置 HDD sim09brd.exe の役割と起動 シリアルポートコネクタ シリアルポートコネクタ sim09brd.exe 上図のような環境を演習室 PC 上でシミュレートするソフトウェア 全員使える (1) monitorcr.obj を sim09brd.exe と同じディレクトリに用意しておく (2a) コマンドプロンプトを起動 Change Directory sim09brd.exeを実行 Z: >cd CAE Z: CAE>sim09brd.exe *** Communications monitor *** Made by Y. Yoshioka (2004.01.13) $ (2b)sim09brd.exe をダブルクリック *** Communications monitor *** Made by Y. Yoshioka (2004.01.13) $ メッセージ プロンプト $ が表示され モニタ起動
sim09brd.exe の操作 09brdのモニタコマンド類似のものコマンドと書式機能 d[ addr] s g addr その後 obj 形式の入力 m addr hh hh hh [addrから]256バイトのメモリダンプ obj 形式データをメモリへ転送 addrからプログラムを実行 addrからデータhhを個数分書き込む hh は任意の 2 桁の 16 進数 個数は最大 16 個 注 は空白 ( スペースキー )1 つ addr は任意のメモリアドレス sコマンドについて sim09brdではteratermと同様にはできない sim09brd TeraTerm ただし キーボードからの直接入力はできる sim09brd のみに装備されているモニタコマンド コマンドと書式 機能 代わりに? ヘルプ Q R C シミュレータ終了 リセットボタンの替わり 0x1000~0x7FFF のメモリ内容を消去 S foo.obj foo.obj ファイルの内容をメモリへ転送
練習 1 monitorcr.obj と sim09brd.exe とを 同じディレクトリ CAE に置く 2 次のいずれかの方法で sim09brd.exeを実行する (a) コマンドプロンプトを起動後 以下のようにコマンド入力 Z: >cd CAE Z: CAE>sim09brd.exe *** Communications monitor *** Made by Y. Yoshioka (2004.01.13) $ (b)sim09brd.exe をダブルクリック *** Communications monitor *** Made by Y. Yoshioka (2004.01.13) $ 3d コマンドを実行してみる d d 1000 4? R C コマンドを実行してみる 5Q コマンドで sim09brd.exe を終了する など 注 は空白 ( スペースキー )1 つ
練習 以前の練習で扱った モニタプログラムについて 1 monitorcr.lst monitorcr.obj をテキストエディタで開き monitorcr.obj はメモリのどこからどこに転送されるのか確認する ( 転送先の先頭を addrb 末尾を addre とする ) 2 09brd または sim09brd で addrb 以降の 256 バイトを見て テキストエディタ上の monitorcr.obj の内容と比べてみる 3 09brd または sim09brd で addre 以前の 256 バイトを見て テキストエディタ上の monitorcr.obj の内容と比べてみる
応用ソフトウェア ハードウェア設計ツール 命令セットアーキテクチャ ( : Instruction Set Architecture) Windows A6809K.exe サンプルプログラム dump.asm と sort.asm テキストエディタ TeraTerm sim09brd.exe アセンブラ ハードウェア仕様記述 (UML C 言語 ) ビヘイビア ( 動作 ) 記述 (HDL C 言語 ) monitorcr.asm dump.asm sort.asm 課題のプログラム リンカ Windows 搭載 PC ライブラリ MPU クロス開発 Computer HW Mem I/O 応用 SW MPU Computer HW Mem I/O 目的作成物 09brd ( まるきゅうぼーど ) MPU : 6809 注 dump.asm と sort.asm は 講義用 Web ページから取得 クロス開発用 ComputerHW 目的 ComputerHW
練習 2 つのサンプルプログラム dump.asm( メモリダンププログラム ) sort.asm( データソートプログラム ) それぞれについて 1.asm ファイルをテキストエディタで開く 2 アセンブルする 3 生成された.lst.obj をテキストエディタで開く 4.obj はメモリのどこからどこに転送されるのか確認する ( 転送先の先頭を addrb 末尾を addre とする ) 5 09brd または sim09brd で.obj を以下の手順で実行してみる (a).obj 転送前の addrb~addre の内容を見る (b).obj を転送する (c).obj 転送後 ( 実行前 ) の addrb~addre の内容を見る (d).obj を実行する (e).obj 実行後の addrb~addre の内容を見る 6.asm または.lst を読んで理解し 実行結果を考察する
練習 サンプルプログラム sort.obj について 前の練習で調べた sort.obj の転送先の先頭および末尾のアドレスをそれぞれ addrb addre と置く 09brd または sim09brd で sort.obj を以下の手順で実行してみる (a).obj 転送前の addrb~addre の内容を見る (b).obj を転送する (c).obj 転送後 ( 実行前 ) の addrb~addre の内容を見る (d).obj を実行する (e).obj 実行後の addrb~addre の内容を見る (f) m コマンドを実行する 例 m 1070 34 a3 e0 08 21 14 89 5c 27 62 25 42 20 41 9d ただし は空白 ( スペースキー )1 つ (g).obj 実行前の addrb~addre の内容を見る (h).obj を実行する (i).obj 実行後の addrb~addre の内容を見る