タイトル 初歩の組み込みプログラム.

Slides:



Advertisements
Similar presentations
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB : 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎 :
Advertisements

Linuxを組み込んだマイコンによる 遠隔監視システムの開発
わんくま名古屋勉強会 自己紹介 名前 あんどちん(安藤敏彦) 所在地 千葉県 職業 プログラマ(主に組込系) 覚えたい言語 英語.
マイコン入門実践教育プロセス説明 第4システム部 ES443 塩島秀樹.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
情報工学基礎(改訂版) 岡崎裕之.
Verilog HDL 12月21日(月).
テープ(メモリ)と状態で何をするか決める
コンパイラ 第9回 コード生成 ― スタックマシン ―
2012年度 計算機システム演習 第4回 白幡 晃一.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
App. A アセンブラ、リンカ、 SPIMシミュレータ
計算機システムⅡ 命令セットアーキテクチャ
ロジック回路学習ボード MLCTB-BASE 説明書 NAND 7400 NOT 7404 AND 7408 OR 7432
わんくま名古屋勉強会 自己紹介 名前 あんどちん(安藤敏彦) 所在地 千葉県 職業 プログラマ(主に組込系) 覚えたい言語 英語.
プログラムはなぜ動くのか.
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
「ソフトウェアのしくみ」.
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
第7回 2006/6/12.
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
TAL : Typed Assembly Language について
HandleIOにふれる ヒント プログラムは別途配布しています。 Copyright, 2010 © Scarly Hardware.
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
勉強会その1    2016/4/ 分35秒 コンピュータアーキテクチャとは? コンピュータの構成 命令の実行.
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
タイトル 初歩の組み込みプログラム.
情報リテラシー2014 part 5/5 (亀田担当分最終回)
条件分岐と繰り返し.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
Ibaraki Univ. Dept of Electrical & Electronic Eng.
わんくま名古屋勉強会 自己紹介 名前 あんどちん(安藤敏彦) 所在地 千葉県 職業 プログラマ(主に組込系) 覚えたい言語 英語.
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
サブルーチン呼び出しの メカニズム.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
ディジタル回路の設計と CADによるシステム設計
TA 高田正法 B10 CPUを作る   実験の前に TA 高田正法
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
R8C/Tinyマイコンの基礎.
電動3輪車製作実習装置 2軸駆動電動車両の製作実習装置 KENTAC 5310B 概要 製品構成 仕 様 ■概要 ①電動3輪車 車体本体
2003/04/14(Mon) 15:00- 早稲田大学マイクロマウスクラブ(WMMC) 4年 原 耕司
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
コンピュータアーキテクチャ 第 10 回.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータアーキテクチャ 第 2 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 3 回.
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

タイトル 初歩の組み込みプログラム

わんくま名古屋勉強会 自己紹介 名前 あんどちん(安藤敏彦) 所在地 千葉県 職業 プログラマ(主に組込系) 覚えたい言語 英語

機器の制御を行うためのプログラム ターゲットの種類は様々 主に使われるOS 開発言語は主にC/アセンブラ(C++/Javaも) 組み込みプログラムとは 機器の制御を行うためのプログラム ターゲットの種類は様々 CPUは4bit~64bit等様々 メモリのサイズも数KB~100MB超まで様々 主に使われるOS 無し ITRON (T-Kernel) Linux Windows CE 開発言語は主にC/アセンブラ(C++/Javaも)

組込みの魅力 光る・回る・音がする モータなど実際に目の前で物が動く LEDなどが実際に目の前で光る PCM再生など実際に音が出る

ハードのことが分かるようになる その結果 躊躇なくPCの改造ができる ZaurusのMD->CF 組み込みやってて良かったこと ハードのことが分かるようになる 躊躇なくPCの改造ができる その結果 ZaurusのMD->CF EeePCのSSD->CF/大容量SSD

制約が大きい 未だにRAM/ROMが数KBなどという開発もある。 タイミングがシビア 組込みが難しいと思われる要素 場合によってはアセンブラが必須となる タイミングがシビア μ秒単位の制御を行う必要がある場合もある

開発言語 アセンブラ C/C++ Java 開発方法 小規模開発ではフルアセンブラもある 大規模開発でもブートストラップ部分はアセンブラ 主流開発言語 大規模開発ではデバイスドライバ・ミドルウェアなど Java 携帯電話のアプリケーションなど

開発対象により開発環境は色々 エディタ+コンパイラ+デバッガ(ICE) Eclipse Visual Studio (eMbedded VC) Hew (Renesas) MULTI (ADAC) eBinder (eSOL)

AKI H8-3052 + AKI-USB 秋月電子通商から販売されているH8/3052CPUを実装した基板とUSBボード 今回のセッションで使用する環境 AKI H8-3052 + AKI-USB 秋月電子通商から販売されているH8/3052CPUを実装した基板とUSBボード CPU H8/3052 (25MHz) RAM 8KB (+128K) ROM 512KB

概要 16bit×16本のレジスタセット 62種類の命令セット 8種類のアドレッシングモード H8/3052のCPUコア・H8/300Hの概要 概要 16bit×16本のレジスタセット 8bit×16/32bit×8としても使用可 62種類の命令セット 8種類のアドレッシングモード

H8/3052のメモリマップ H8/3052 モード6のメモリマップ リセット時、リセットベクタのアドレスを読み出し、PCへセットする

エンディアン リトルエンディアン 12 34 56 78 78 56 34 12 12 34 56 78 エンディアンの違い 最下位バイトから最小のアドレスに格納される 最上位バイトから最小のアドレスに格納される 12 34 56 78 リトルエンディアン ビッグエンディアン 78 56 34 12 12 34 56 78

レジスタ構成 H8/3052のCPUコア・H8/300Hの概要 汎用レジスタ コントロールレジスタ ER0 E0 R0H R0L ER1 ER7(SP) E7 R7H R7L コントロールレジスタ PC CCR I UI H U N Z V C

アセンブラでの表記 命令セット 命令 ソース,デスティネーション 機能 命令 データ転送 MOV POP PUSH MOVFPE MOVTPE 算術演算 ADD CMP SUB ADDX SUBX ADDS SUBS INC DEC MULXU MULXS DIVXU DIVXS NEG EXTU EXTS 論理演算 AND OR XOR NOT シフト SHAL SHAR SHLL SHLR ROTXL ROTXR ROTL ROTR ビット操作 BSET BCLR BNOT BTST BLD BILD BST BIST BAND BIAND BOR BIOR BXOR BIXOR 分岐 Bcc BSR JMP JSR RTS システム制御 TRAPA RTE SLEEP LDC STC ANDC ORC XORC NOP ブロック転送 EEPMOV アセンブラでの表記 命令 ソース,デスティネーション 例) MOV R0, R1

アドレッシングモード 記号 アドレッシングモード Rn レジスタ直接 @ERn レジスタ間接 @(d:16,ERn)/@(d:24,ERn) ディスプレースメント(16/24ビット)付レジスタ間接 @ERn+/@-ERn ポストインクリメント/プリデクリメントレジスタ間接 @aa:8/@aa:16/@aa:24 絶対アドレス(8/16/24ビット) #xx:8/#xx:16/#xx:32 イミディエイト(8/16/32ビット) @(d:8,PC)/@(d:16,PC) プログラムカウンタ相対(8/16ビット) @@aa:8 メモリ間接

インストラクションマップ・1ワード目上位バイト 1 2 3 4 5 6 7 8 9 A B C D E F NOP EX01 STC LDC ORC XORC ANDC ADD EX0A EX0B MOV ADDX EX0F EX10 EX11 EX12 EX13 OR XOR AND EX17 SUB EX1A EX1B CMP SUBX EX1F MOVB BRA BRN BHI BLS BCC BCS BNE BEQ BVC BVS BPL BMI BGE BLT BGT BLE MLXU DVXU RTS BSR RTE TRPA EX58 JMP JSR BSET BNOT BCLR BTST BST / BIST BOR BIOR BXOR/ BIXOR BAND BIAND BLD BILD EX79 EX7A EEPM X7C0 X7D0 X7EX X7FX

インストラクション長 1 2 3 4 5 6 7 8 9 A B C D E F *

バスタイミング 内部メモリアクセスの場合

開発環境の構築 開発環境(gcc)の作成 binutils/gccをダウンロード/展開 (http://www.gnu.org/software/binutils/ http://gcc.gnu.org/) binutilsの作成(binutils2.16迄) configure --target=h8300-hms --prefix=[installed directory] gccの作成(gcc3.x迄) configure --target=h8300-hms --prefix=[installed directory] --wigh-gnu-as --with-gnu-ld --enable-languages=c

ポート設定 PA 方向 アサイン 7 NC 6 5 4 3 IN SW3 2 SW2 1 SW1 SW0 PB 方向 アサイン 7 OUT SW0 PB 方向 アサイン 7 OUT LCD-E 6 NC 5 4 LCD-RS 3 LCD-DB7/LED3 2 LCD-DB6/LED2 1 LCD-DB5/LED1 LCD-DB4/LED0

入力ポート スイッチはPA0~PA3に接続されている

出力ポート LEDがPB0~PB3に接続されている

IOポートのレジスタ構成 ポートの初期化 レジスタ名称 R/W 機能 データディレクションレジスタ W ポートの入出力方向設定 データレジスタ ポート入出力

スタートアップの作成 リセットベクタを設定する .data/.bssを初期化 mainを呼び出す

Main以降の処理 ポートA0~A3を入力にする ポートB0~B3を出力にする ポートAから入力 ポートBへ出力

ソフトで制御するより圧倒的に簡単で低コスト ハードのみで実現すると ソフトで制御するより圧倒的に簡単で低コスト