安全上のご注意 このたびは 弊社製品をご使用いただき 誠にありがとうございます 本項では 誤った取り扱いによる事故を 未然に防ぐための安全上の注意事項を説明しています 弊社製品をご使用になる前に必ずお読みください この表記を無視して誤った取り扱いをすると 死亡や重傷など 人体への重大な障害をもたらす恐れのある内容について示しています この表記を無視して誤った取り扱いをすると 軽傷または中程度の障害をもたらす恐れのある内容について示しています また 本品や本品に接続している機器に損傷を与える可能性がある事項についても示しています 発煙 異臭への対処煙がでている へんな臭いがするなどの異常がありましたら使用を直ちに中止してください そのまま使用すると 火災 感電 故障の原因となります すぐに電源ケーブルのプラグをコンセントから抜き 煙などの異常が出なくなるのを確認し 販売店などに修理をご依頼ください 水分の多いところ 水がかかる場所では 本製品は使用しないで下さい風呂場や台所など水分の多いところ 水がかかる場所では 本製品は使用しないで下さい 火災 感電 故障の原因となります 電源ケーブルの取り扱いに注意してください電源ケーブルを傷つけ 破損 加工 無理な曲げ 引っ張り ねじり 束ねたりしないでください また 重い物を乗せたり 加熱したりすると電源ケーブルが破損し 火災 感電 故障の原因となります 医療 軍事 航空宇宙 列車 運送 原子力などの制御設備へは使用しないでください医療機器 軍事機器 航空宇宙機器 運送 原子力などの制御設備などの人命に関わるシステムへの使用は意図しておりません 雷が鳴りはじめたら製品に触れないでください近くに雷が発生したときは 製品本体に触れないでください また 電源プラグをコンセントから抜いてご使用をお控えください 雷によっては 火災 感電 故障の原因となることがあります 電源プラグは確実にコンセントに差し込んでください差し込みが不完全ですと火災 感電 過熱の原因になります 分解 改造しないでください分解 改造しないでください 怪我 感電 故障の原因となります 本製品の分解 改造による怪我や事故について 当社は責任を負いかねます 濡れた手での操作は避けてください濡れた手で電源ケーブル プラグを抜き差ししないでください また 製品に触れないでください 感電の原因となることがあります
以下のような場所では使用しないでください本製品を以下のような場所で使用すると 動作不良 故障の原因となります 振動や衝撃が加わる場所 直射日光のあたる場所 湿気やホコリが多い場所 温度差の激しい場所 熱を発生するもの ( 暖房器具など ) の近く 強い磁力 電波が発生するもの ( 磁石 ディスプレイ スピーカー ラジオ 無線機など ) の近く 湿気の多い場所 子供の手の届かない場所に置いてください本製品に装着されている電子部品など子供が飲み込まないように注意してください 通信ケーブルの抜き差しは 電源 OFFにして行ってください本品への通信ケーブル類は活線挿抜しないでください ケーブルの抜き差しは 必ず本製品または相手製品の電源がOFF 状態にて行ってください 故障の原因になることがあります 安全設計をしてください本製品を 高度な信頼性を必要とするシステムに使用する場合は 冗長設計 誤動作防止設計など充分な安全設計を必ず行ってください 本製品の故障 障害により生じるいかなる損害 事故について当社は責任を負いかねます 長期間使用しない場合の保管について長期間使用しない場合は 帯電防止袋などに入れ ホコリなどが入らないようにしてください ホコリが入ると接触不良などの原因になります 製品の清掃について製品にホコリなどが付着すると放熱特性が低下し 故障の原因になりますので 下記の お手入れについて に従って清掃してください お手入れについて汚れはやわらかい布によるからぶきをしてください 水 洗剤 ベンジン シンナーなどの使用は避けてください 基板の洗浄には サンハヤト製電子機器用洗浄剤をお使いください 故障 破損時の処理について本製品が故障もしくは破損した場合は 速やかに使用を中止して販売店などに修理依頼してください そのまま使用しますと火災 感電 怪我の原因になるおそれがあります 本製品の廃棄について本製品の廃棄は 各自治体の廃棄ルールに従ってください 詳しくは各自治体にお問い合わせください 日本国内のみで使用してください本製品は日本国内の商用 AC100V 電源仕様です 海外では使用できません AC100V 以外では絶対に使用しないでください
本資料についてのご注意 本資料について 本資料は 電子工作や電子回路 パーソナルコンピュータの操作について一般的な知識をお持ちの方を対象にしています 本資料を元に操作するには 株式会社 NEC エレクトロニクス社製 78K0/Kx2 シリーズマイコンについての知識や開発環境などが必要です Microsoft Windows は米国 Microsoft 社の米国およびその他の国における登録商標です その他 記載されている製品名は各社の商標または登録商標です 本資料のご利用にあたって この取扱説明書に掲載している内容は お客様が用途に応じた適切な製品をご購入頂くことを目的としています その使用により当社及び第三者の知的財産権その他の権利に対する保証 又は実施権の許諾を意味するものではありません また 権利の侵害に関して当社は責任を負いません 本資料に記載した情報を流用する場合は お客様のシステム全体で充分評価し適用可能かご判断願います 当社では適用可能判断についての責任は負いません 本資料に記載してある内容は 一般的な電子機器 ( 学習教材 事務機器 計測機器 パーソナル機器 コンピュータ機器など ) に使用されることを目的としています 高い品質や信頼性が要求され 故障や誤作動が直接人命を脅かしたり人体に危害を及ぼす恐れのある 医療 軍事 航空宇宙 原子力制御 運輸 移動体 各種安全装置などの機器への使用は意図も保証もしておりません この取扱説明書の一部 又は全部を当社の承諾なしで いかなる形でも転載又は複製されることは堅くお断りします 全ての情報は本資料発行時点のものであり 当社は予告なしに本資料に記載した内容を変更することがあります この資料の内容は慎重に制作しておりますが 万一記述誤りによってお客様に損害が生じても当社はその責任を負いません 本資料に関してのお問合せ その他お気付きの点がございましたら 当社までお問合せください 本資料に関する最新の情報はサンハヤト株式会社ホームページ (http://www.sunhayato.co.jp/) に掲載しております
このマニュアルについて このマニュアルについて 本スタートアップガイドでは サンハヤト 78K0/Kx2 マイコンシリーズのプログラム開発を NEC エレクトロ ニクス社のツールを使用して行った場合の手順 設定方法などを説明したものです 各ツールの詳細な使用方法や注意事項につきましては NEC エレクトロニクス社発行のマニュアルを参照してください 該当するサンハヤト 78K0/Kx2 マイコンシリーズ製品 ターゲットマイコン :78K0/Kx2 マイコン μ PD78F0537D 学習 / 評価ボード :ReferSTAR 78K/Kx2(CT-781) 開発に必要なもの 以下の条件を満たすホストパーソナルコンピュータ ( 以下ホスト PC) PC 本体 OS メモリ Pentium Ⅲ 500MHz 以上を搭載した IBM PC/AT 互換機 Windows XP, Windows 2000 (Windows XP 推奨 ).NET Framework Version 2.0 のランタイムと関連ファイルがインストールされた環境が必要です 512MB 以上 入力デバイス マウス またはマウス相当のポインティングデバイス インターフェイス USB1.1 フルスピード あるいは 2.0 サンハヤト 78K0/Kx2 マイコンシリーズ製品 ( ターゲットマイコン+ 書き込みボード ) USB ケーブル このマニュアルで使用しているツール類 このスタートアップガイドでは 以下の OS ツールのバージョンで動作したものとして説明しています ホスト PC の OS Windows XP Professional 統合開発環境 PM plus V6.30 コンパイラ CC78K0 W4.00 アセンブラ RA78K0 W4.01 フラッシュ プログラム ソフトウェア WriteEZ3 V1.10 小ピン用デバイス ファイル df780547 V2.21 ( μ PD78F0537_64) 小ピン用パラメータ ファイル prm78f0547 V1.07 各ツールのバージョンは ヘルプ メニューのバージョン情報で確認することができます ( コンパイラ アセンブラ デバイス ファイルのバージョンは統合開発環境 PM plus のバージョン情報で確認できます ) このマニュアルで紹介している各社サイト ツールについて 本スタートアップガイドで紹介している各社サイトやツールは 本スタートアップガイド発行時のものを掲載しております 各社サイトの構成やツールのファイル名などは 変更されている場合がありますのでご了承ください マイコンのシリーズ名について ReferSTAR 78K/Kx2 に搭載している NEC エレクトロニクス社マイコンは ALL Flash マイコン の 78K0/Kx2 シリーズ ( 小ピン マイコン の上位製品 ) 78K0/KE2 (64 ピン ) の μ PD78F0537D (ROM 128K Byte RAM 7K Byte) です 本スタートアップガイドでは 78K0/Kx2 マイコン と呼んでいます 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 5
目次 目次 このマニュアルについて 5 該当するサンハヤト 78K0/Kx2 マイコンシリーズ製品 5 開発に必要なもの 5 このマニュアルで使用しているツール類 5 このマニュアルで紹介している各社サイト ツールについて 5 1. 開発の流れ 8 1.1 開発環境 8 2. 開発環境を整えよう 10 2.1 開発に必要なソフトウェアをダウンロードしよう 10 開発ツール 10 フラッシュ プログラム ソフトウェア WriteEZ3 11 2.2 インストールの手順 12 2.3 PM plus に WriteEZ3 を登録する 18 2.4 WriteEZ3 にパラメータ ファイルを設定する 21 3. プログラムをつくろう 23 3.1 LED 点滅プログラムの内容 23 作成するファイル 23 3.2 PM plus でワークスペース プロジェクトを生成する 24 3.3 プロジェクトのデフォルト設定 29 スタートアップルーチンについて 29 3.4 ソースファイルの作成と編集 32 option.asm 34 initial.c 35 main.c 38 lk78k0.dr( リンク ディレクティブ ファイル ) 40 3.5 プロジェクトのビルド 43 4. プログラムをうごかそう 46 5. トラブルシューティング 52 5.1 WriteEZ3 でプログラムが書き込めない 52 評価ボードがプログラム書き込みの設定になっていない 52 COM ポート番号が合っていない 52 5.2 仮想 COM ポート番号の確認 53 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 6
改訂履歴 54 目次 コラム目次 マイコンのシリーズ名について 5 仮想 COM ポートドライバについて 12 マイコンの SFR のシンボル名について 36 シンボルに割り当てられたアドレスの確認 43 78K0/Kx2 マイコンのリンク ディレクティブ 44 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 7
1. 開発の流れ 1. 開発の流れ 1.1 開発環境 サンハヤト 78K0/Kx2 シリーズマイコン製品でプログラムを開発する場合 以下の NEC エレクトロニクス社製 の開発ツール 設定ファイルを使用します ここで紹介している各ソフトウェアは無償で提供されています 統合開発環境 :PM plus Windows 上での統合開発環境です エディタ コンパイラ デバッガなどの開発ツールを連携して効率的な開発が行えます コンパイラ :CC78K0 78K0 シリーズマイコン用の組み込み制御用プログラムを C 言語で記述するために開発された 汎用性, 移植性の高い C コンパイラです アセンブラ :RA78K0 アセンブラソースプログラムから 78K0 シリーズマイコンで実行することができる実行コードを生成します フラッシュ プログラム ソフトウェア :WriteEZ3 ホスト PC より 78K0/Kx2 マイコン内蔵のフラッシュメモリの書き換えを行います デバイス ファイルコンパイル時に必要な品種依存データファイルです パラメータ ファイルフラッシュ プログラム ソフトウェア WriteEZ3 で書き込む際に必要な品種依存データファイルです < 開発ツールの制限について> 11 RA78K0 に含まれるリンカで生成できるオブジェクトサイズは 32KB までです ( メモリバンクのある製品は バンクエリアを使用できません ) 22 メモリ ディレクティブで RAM 領域を変更すると まれにエラーになる場合があります 以下のドライバは FTDI 社 Web サイトより無償で提供されているものです FTDI 社仮想 COM ポートドライバ USB- シリアル変換 IC(FT232BM) をホスト PC の仮想 COM ポートで使用するためのドライバソフトウェアです 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 8
1. 開発の流れ 開発フロー ( イメージ図 ) を以下に示します 図 1-1 78K0/Kx2 開発フロー ( イメージ図 ) 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 9
2. 開発環境を整えよう 2. 開発環境を整えよう 2.1 開発に必要なソフトウェアをダウンロードしよう 開発ツール NEC エレクトロニクス社 Web サイトの 78K0/Kx2 マイコン用フリー ツールのページ http://www.necel.com/ micro/ja/freesoft/78k0/kx2/index.html にアクセスしてください ダウンロードするツール一覧の PG-FPL3 用コントロール ソフト (NEC エレクトロニクス社製 PG-FPL3( 簡易 ) 用制御ソフトウェア ) と SM+ for 78K0/Kx2( システムシミュレータ ) 以外を全てチェックして 次へ をクリックしてください 以降 ユーザ情報入力のページに移りますので 画面上の指示に従って進めてください ユーザ情報で入力した E-mail アドレス宛てに プロダクト ID のメールが届きますので インストール時に入力してください 図 2-1 開発ツールのダウンロード 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 10
2. 開発環境を整えよう フラッシュ プログラム ソフトウェア WriteEZ3 NEC エレクトロニクス社 Web サイトの マイコン用簡易書き込み回路, 簡易プログラミング ソフト ( 自作ライタ ) のページ http://www.necel.com/micro/ja/promotion/write-ez/flashprog.html にアクセスしてください ページ表中の WriteEZ3 のリンクをクリックしてダウンロードしてください 図 2-2 WriteEZ3 のダウンロード 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 11
2. 開発環境を整えよう 2.2 インストールの手順 アセンブラ RA78K0 統合開発環境 PM plus も同時にインストールされます コンパイラ CC78K0 フ ラッシュ プログラム ソフトウェア WriteEZ3 デバイス ファイル パラメータ ファイル 仮 想 COM ポートドライバ の順でインストールします 各インストーラファイル 解凍ファイルをダブルクリック してください ダブルクリックした際に セキュリティの警告 ウィンドウが出る場合がありますが 実行 をクリッ クしてください 図2-3 インストーラの実行 仮想COMポートドライバについて ReferSTAR 78K/Kx2 に は FTDI 社 の USB- シ リ ア ル 変 換 IC が 搭 載 さ れ て お り 対 応 す る 仮 想 COM ポートドライバがインストールされているホ 仮想的なシリアル通信 アプリケーション (ハイパーターミナル スト PC と仮想的なシリアル通信を行うことができ COM ポート 仮想COM ポートドライバ USB ポート USB通信 USB-シリアル 変換IC ターゲット マイコン ます 仮 想 的 な シ リ ア ル 通 信 と は こ の 場 合 実 際 は USBケーブル USB ケーブルで接続して USB 通信を行っています が マイコン - アプリケーション間ではあたかもシ リアル通信を行っているような通信のしくみをいい ます 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 12 ホストPC ReferSTAR 78K/Kx2
2. 開発環境を整えよう 1 RA78K0 のインストール インストーラファイル ra78k0_w401_j.exe を ダブルクリックし セキュリティの警告 が出 た場合は 実行 をクリックしてください ファ イルが解凍されるとインストーラが起動します プロダクト ID を入力して 次へ をクリックし てください プロダクト ID は NEC エレクトロ ニクス社よりツールをダウンロードした際に登録 した E-mail アドレス宛に送られてきます インストールするツールは 全てのチェックボッ クスにチェックを入れてください アセンブラ 統合開発環境本体とドキュメント インストール先はデフォルトのままにしておくこ とをお勧めします インストール をクリックしてください プロダクト ID の入力後 ホスト PC の環境によっ ては環境変数を AUTOEXEC.BAT に追加するか の確認ウィンドウが表示されます 問題がなけれ ば AUTOEXEC.BAT ファイルを変更する に チェックを入れることをお勧めします OK をクリックしてください インストール開始の確認メッセージが出ますの で OK をクリックしてください インストール画面の 終了 をクリックして閉じ てください 使用許諾契約 の内容を確認したら はい を クリックしてください 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 13
2. 開発環境を整えよう 2 CC78K0 のインストール インストーラファイル cc78k0_w400_j.exe をダ ブルクリックし セキュリティの警告 が出た場 合は 実行 をクリックしてください ファイル が解凍されるとインストーラが起動します プロダクト ID を入力して 次へ をクリックして ください プロダクト ID は NEC エレクトロニク ス社よりツールをダウンロードした際に登録した E-mail アドレス宛に送られてきます インストールするツールは 全てのチェックボッ クスにチェックを入れてください コンパイラ本 体とドキュメント インストール先はデフォルトのままにしておくこ とをお勧めします インストール をクリックしてください OK をクリックしてください インストールが終了したらインストール画面の 終 了 をクリックして閉じてください インストール開始の確認メッセージが出ますので OK をクリックしてください 使用許諾契約 の内容を確認したら はい を クリックしてください 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 14
2. 開発環境を整えよう 3 WriteEZ3 のインストール WriteEZ3 は イ ン ス ト ー ラ は あ り ま せ ん 4 デバイス ファイルのインストール デバイス ファイルはインストーラはありません WriteEZ3.zip は 自 己 解 凍 フ ァ イ ル で は あ り df780547_v221.zip は自己解凍ファイルではあり ませんので解凍ソフトなどで解凍してくださ ませんので解凍ソフトなどで解凍してください い 解凍したフォルダ内のファイル WriteEZ3. デバイスファイルは プログラムのビルドの際に exe が 実 行 フ ァ イ ル と な り ま す こ こ で は 各ツールより参照されます C: NECTOOLS32 以下にフォルダを解凍したこと ここでは C: NECTOOLS32 以下にあらかじめ作っ とします ておいた device_file_kx2 というフォルダに解 凍したこととします 実 行 フ ァ イ ル WriteEZ3.exe を 統 合 開 発 環 境 PM plus のメニューに登録することができます 2.3 章参照 解凍したデバイス ファイルを各ツールに関連付 けを行うため インストールを行います Windows のスタートメニューより すべてのプ ログラム NEC Electronics Tools デバ イスファイル インストーラ をクリックしてくだ さい デバイスファイル インストーラ が起動します インストール をクリックしてください 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 15
2. 開発環境を整えよう インストールウィザード が開きますので 参照 インストール先は変更せずに 次へ をクリック をクリックしてください 解凍したフォルダ以下 してください インストールするファイルとイン のデバイスファイル NECSETUP.INI を指定し ストール先を確認して 次へ をクリックしてく それぞれ 開く 次へ をクリックしてください ださい NECSETUP.INI ファイル を選択して 開く をクリック ソフトウェア使用許諾契約 の内容を確認したら 同意する をクリックしてください インストールが完了したら 完了 をクリックし デバイスファイル インストーラ を終了してく ださい インストールするファイルの確認があります 全 てのチェックボックスにチェックを入れて 次へ をクリックしてください 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 16
2. 開発環境を整えよう 5 パラメータ ファイルの解凍 パラメータ ファイル prm78f0547_v107 は WriteEZ3 でプログラムを書き込む際に参照します インストーラはありません 自己解凍ファイルです ダブルクリックし セキュリティの警告 が出た場合は 実行 をクリックしてください ここでは C: NECTOOLS32 以下にあらかじめ作っておいた parameter_file というフォルダを解凍先フォルダに指定することとします 解凍すると 指定したフォルダ以下に PRM78F0547_V107 というフォルダが作成され そのフォルダ以下にパラメータファイルを展開します 解凍が終了したら OK をクリックしてください 6 仮想 COM ドライバのインストール ReferSTAR 78K/Kx2 とホスト PC 間を USB ケーブルで接続してください 電源を投入する必要はありません ( 初回の接続時のみインストールします ) スト PC Re er TAR 78K K CT 78 新しいハードウェアの検索ウィザードの開始 ウィンドウが開きます ウィザードにしたがってインストールを行ってください インストール手順の詳細は Refer STAR 78K(CT- 780) スタートアップガイド を参照してください 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 17
2. 開発環境を整えよう 2.3 PM plus に WriteEZ3 を登録する 統合開発環境 PM plus のメニューより フラッシュ プログラム ソフトウェア WriteEZ3 を起動できるように登録しておきます PM plus を起動してください Windows のスタートメニューより すべてのプログラム NEC Electronics Tools の PM+ V6.30 をクリックしてください ( V6.30 部分は PM plus のバージョンによって異なります ) 図 2-4 PM plus : 起動する メインウィンドウが開きます ツール メニューの 外部ツールの登録 をクリックしてください 図 2-5 PM plus : 外部ツールの登録 外部ツールの登録 ウィンドウが開きます 追加 ボタンをクリックしてください 図 2-6 PM plus : 外部ツールの登録ウィンドウ 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 18
外部ツールの指定 ウィンドウが開きます 参照 ボタンをクリックしてください 2. 開発環境を整えよう 図 2-7 PM plus : 外部ツールの指定 ウィンドウ WriteEZ3.exe ファイルを選択し 開く をクリックしてください 図 2-8 PM plus : 外部ツール実行ファイルの参照 ファイル名など外部ツールの情報が指定されていることを確認して OK をクリックしてください 図 2-9 PM plus : 外部ツール設定後 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 19
2. 開発環境を整えよう 外部ツールの登録 ウィンドウに戻ります OK をクリックしてください 図 2-10 PM plus : 外部ツール指定後の 外部ツールの登録 ウィンドウ WriteEZ3 が PM plus に登録されたことを確認します ツール 外部ツールの起動 に WriteEZ3 が登録されているのを確認してください WriteEZ3 をク リックすると起動します 図 2-11 PM plus : WirteEZ3 を起動する WriteEZ3 のメインウィンドウが開きます 続いて WriteEZ3 上でパラメータ ファイルの設定を行ってください 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 20
2. 開発環境を整えよう 2.4 WriteEZ3 にパラメータ ファイルを設定する パラメータ ファイルの設定は一度行うと 異なるパラメータ ファイルを設定しない限り有効です WriteEZ3 の ボタンか Device メニューより Setup をクリックしてください 図2-12 WriteEZ3 Setup Device Setup 画面の PRM File Read ボタンをクリックしてください 該当するパラメータ ファイル 78F0537D.prm を指定し 開く をクリックしてください また Host connection の Port に 2.2 章で インストールした仮想 COM ドライバの COM ポート番号を指定して OK をクリックしてください インストールした仮想COMドライバの COMポート番号を指定してください 図2-13 WriteEZ3 パラメータファイルの設定 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 21
2. 開発環境を整えよう パラメータファイルの設定内容がメインウィンドウの右側に表示されます 図 2-14 WriteEZ3 : パラメータ ファイルの設定確認 WriteEZ3 と PM plus をそれぞれ終了してください 図 2-15 PM plus と WriteEZ3 の終了 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 22
3. プログラムをつくろう 3. プログラムをつくろう この章では 統合開発環境 PM plus でプロジェクトを作成し プログラムをつくる方法を説明します 3.1 LED 点滅プログラムの内容 LED を点滅させる簡単なプログラムをつくってみましょう 評価ボード上の 2 つの LED を 1 秒間隔で交互に点滅させます LED1 が 78K0/Kx2 マイコンのポート 00(P00) LED2 がポート 01(P01) に接続されています リセット直後は LED1(P00) が点灯 LED2(P01) が消灯とします 1 秒計測は 78K0/Kx2 マイコンの 16 ビットタイマ 00 を使用して行います 図 3-1 評価ボード上の LED 各 LED の回路構成は以下のようになります 出力ポートより "L" 出力で点灯します +5V LED 図 3-2 LED 回路 ( イメージ図 ) 作成するファイル LED 点滅のプログラムでは 以下のファイルを作成します 表 3-1 作成するファイル ファイル名 内容 option.asm オプションバイトの設定をします initial.c スタートアップ処理から呼び出される初期化設定関数 hdwinit でマイコンの初期化設定を行います main.c メイン関数 main でタイマ 00 により 200m 秒を計測し 5 回カウントして 1 秒おきに LED を点滅させます lk78k0.dr スタック領域の領域確保をします ( リンカ時に読み込むリンク ディレクティブ ファイルです ) option.asm と lk78k0.dr は設定ファイルなので 新たにプロジェクトを作成する場合でも 1 度作成したファイルをプロジェクトフォルダにコピーしておけば新たに作成する必要はありません その場合は PM plus でプロジェクトに登録してください プロジェクトへの登録方法は 新規プロジェクトを作成するときに登録する方法 ( 図 3-6 参照 ) と プロジェクト作成後にプロジェクトウィンドウから設定する方法 ( 図 3-12 参照 ) があります ( lk78k0.dr はリンカのオプションで指定してください リンカのオプションの設定方法については lk78k0.dr ファイル ( 図 3-14 15) の項を参照してください ) 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 23
3. プログラムをつくろう 3.2 PM plus でワークスペース プロジェクトを生成する PM plus では C 言語ソースファイル群や コンパイラ アセンブラなどの各ツールのオプション設定などの情報をまとめてプロジェクトという単位で扱います また プロジェクトはワークスペースという作業スペースに登録されます ひとつのワークスペースに複数のプロジェクトを登録することもできます PM plus でワークスペース プロジェクトを作成する前に ワークスペース プロジェクト用のフォルダを作成しておく必要があります ここでは C: 78K0_PROGRAM 以下に LED_PICOPICO というフォルダを作成することとします Windows のスタートメニューより すべてのプログラム NEC Electronics Tools PM+ V6.30 をクリックしてください 図 3-3 PM plus : 起動 ワークスペース プロジェクトを新規作成します ファイル メニューの ワークスペースの新規作成 をクリックして 各設定をしてください ークス ースには つしかプロジェクトを作 しないので じ とし らかじめ用意した ークス ースのフ ル を 定し イクロコントローラ は 78K0 デバイス は PD78F0 37 を設定してください 図 3-4 PM plus : ワークスペースの新規作成 1 78K0/Kx2 マイコンシリーズスタートアップ C 言語 24
3. プログラムをつくろう このプロジェクトで使用できるツール類が表示されます 詳細設定 ボタンをクリックして各ツールを使用できるように設定します 詳細設定をした場合は 保存 ボタンをクリックして設定を保存しておくと 次回の新規作成から保存した設定を選択することができます ツールは CC78K0 と RA78K0 のバージョン番号にチェックを入れてください SK78K0 と BS78K0 は機能を使用しませんがチェックは入れたままとします 図 3-5 PM plus : ワークスペースの新規作成 2 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 25
3. プログラムをつくろう ソースファイルはここでは追加しないこととします ( option.asm などの設定ファイルをあらかじめプロジェクトフォルダにコピーしている場合は ファイルを選択して 追加 ボタンをクリックすることでプロジェクトに登録できます ) 図 3-6 PM plus : ソースファイルの設定 使用ツールの指定 ( 図 3-5) の設定でデバッガを登録している場合 使用できるデバッガが表示されます 今回はデバッガをインストールしていないので 次へ ボタンをクリックしてください 図 3-7 PM plus : デバッガの選択 78K0/Kx2 マイコンシリーズスタートアップ C 言語 26
3. プログラムをつくろう 最後に今までの設定が表示されます 訂正したい場合は 戻る ボタンで戻って再設定することができます 設定内容が正しければ 完了 ボタンをクリックしてください 図 3-8 PM plus : 設定の確認 完了 をクリックするとワークスペースとプロジェクトが開きます 図 3-9 PM plus : ワークスペース プロジェクトの表示 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 27
3. プログラムをつくろう 現在のプロジェクト現在選択されているプロジェクト名とプロジェクト グループを示します 1 つのワークスペースに複数のプロジェクトがある場合 プルダウンメニューより選択することができます 現在のビルド モードビルドの際の各フェーズ ( コンパイラ アセンブラ リンカなど ) のオプションをデバッグ用とリリース用に分けておくことができます デフォルトで Debug Build ではオブジェクトモジュールファイルとアセンブラソースモジュールファイルにデバッグ情報が出力され ( コンパイラオプション -g2) Release Build ではデバッグ情報が出力されません アウトプット ウィンドウコマンドの実行結果を表示します プロジェクト ウィンドウ現在選択されているプロジェクトに登録されているソースファイル類が表示されます ソースファイル類が登録されている場合は プロジェクト グループ プロジェクト 各ファイル群 ファイル内の関数の順にツリーになって表示されます 各ファイル あるいは関数をダブルクリックするとエディタ ウィンドウが開き 編集することができます 78K0/Kx2 マイコンシリーズスタートアップ C 言語 28
3. プログラムをつくろう 3.3 プロジェクトのデフォルト設定 スタートアップルーチンについて 使用するスタートアップルーチンの確認を行います 新規作成したプロジェクトではデフォルトの設定により コンパイラに付属の標準スタートアップルーチンのオブジェクトモジュールファイル s0l.rel (*.rel: アセンブラの出力ファイル ) がリンクされます このスタートアップルーチンは標準ライブラリのための初期化を行います 以下にコンパイラオプションのスタートアップルーチンの設定を示します ( プログラムで標準ライブラリを使用しない場合でも デフォルトのチェックは外さないで下さい ) 図 3-10 PM plus : コンパイラオプションの表示 標準スタートアップルーチンのオブジェクトモジュールファイル s0l.rel のソースファイルは コンパイラ CC78K0 のインストールフォルダ以下 ( デフォルトのインストールでルートドライブ : Program Files NEC Electronics Tools) の CC78K0 W4.00 src cc78k0 src cstart.asm となります コンパイラ付属の各ソースファイルの内容を参照する場合は 内容を変更しないでください 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 29
3. プログラムをつくろう 以下に cstart.asm の内容 ( 一部省略 ) を示します ;------------------------------------- ; W-1 cstart ; ; Version 4.00 01 Nov 2006 ;------------------------------------- NAME @cstart $INCLUDE (def.inc) $INCLUDE (macro.inc) ;----------------------------------------------------------------------------- ; declaration of symbol ; ; attention): change to EQU value 1 -> 0 if necessary ;----------------------------------------------------------------------------- @@VECT00 CSEG AT 0 DW _@cstart @@LCODE CSEG ;----------------------------------------------------------------------------- ; ROM data copy ;----------------------------------------------------------------------------- リセットベクタにスタートアップルーチンの先頭アドレスを設定します これ以降はライブラリ コード用セグメントとします _@cstart: ;----------------------------------------------------------------------------- ; setting the register bank RB0 as work register set ;----------------------------------------------------------------------------- SEL RB0 使用するレジスタバンクの指定を行います ;----------------------------------------------------------------------------- ; setting the stack pointer ; ; _@STBEG is created by linker with -S option. ;----------------------------------------------------------------------------- スタックポインタを設定します MOVW SP,#_@STBEG ;SP <- stack begin address シンボル @STBEG はリンカに -s オプションを付けた場合に生成されるスタック領域の最終アドレス +1 を表します CALL!_hdwinit ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; clear saddr ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; call main function ;----------------------------------------------------------------------------- CALL!_main ;main(); main 関数を実行します main 関数はユーザーが作成する必要があります (main 関数が存在しない場合は何もしません ) BR $$ _@cend: 無限ループになります ;----------------------------------------------------------------------------- 1 つ目の = 相対アドレスを表します 2 つ目の = この命 の割り当てられているアドレス ( 複数の ; define segment 場合は先頭アドレス and label used ) を表します by ROMable processing ;----------------------------------------------------------------------------- END hdwinit 関数を実行します hdwinit 関数はユーザーが作成する必要があります (hdwinit 関数が存在しない場合は何もしません ) リスト 3-1 スタートアップルーチン cstart.asm 78K0/Kx2 マイコンシリーズスタートアップ C 言語 30
3. プログラムをつくろう 11 リセットベクタの設定リセットベクタにスタートアップルーチンの開始アドレス ( シンボル :@cstart) を設定しています リセット解除後はスタートアップルーチンの先頭アドレスから実行されます 22 セグメントの設定スタートアップルーチンは ROM という名称のメモリ領域のライブラリ コード用セグメント (@@ LCODE) に配置します 33 レジスタバンクの指定レジスタバンク RB0 を以降の処理のワークレジスタとして指定します 44 スタックポインタの設定リンカオプション -s により生成されたシンボル _@STBEG の示すアドレスをスタックポインタに設定します (PM plus ではプロジェクト作成後にビルドする際 デフォルトでリンカオプション -s( スタック解決用シンボルの生成 ) がつきます ) -s オプションは 指定したメモリ領域の中で (PM plus のデフォルトでの設定は省略しており RAM という名称のメモリ領域 ( 内蔵 RAM の全領域が含まれます ) となります ) セグメントが配置されていない領域のうち 最大の空き領域を探します 見つかった最大の空き領域の先頭アドレスを値として持つパブリック シンボル _@STEND と 最終アドレス + 1 を値として持つパブリック シンボル _@STBEG を生成します 55 hdwinit 関数の実行 hdwinit 関数を実行します hdwinit 関数はユーザーが作成する関数です マイコンの SFR( 周辺機能 ) などの初期設定用として作成されることを想定しています 6 6 静的変数の初期化 C プログラム中のグローバル変数および Static 変数の初期化を行います C プログラム中で初期値を与えられている静的変数は ROM に配置されている初期値をコピーします C プログラム中で初期値を与えられていない静的変数は 0 クリアします 77 main 関数の実行 無限ループ main 関数を実行します main 関数はユーザーが作成する関数です main 関数から抜けた場合は無限ループとなります 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 31
3. プログラムをつくろう 3.4 ソースファイルの作成と編集 以下の手順でソースファイルを作成してください C 言語プログラム アセンブラ言語プログラムの各ファイル は 作成後にプロジェクトに登録する必要があります ①① ファイルの新規作成と保存 PM plus の新規作成アイコン をクリックするか ファイル メニューより 新規作成 をクリックして ください 新しいファイルがエディタによって開きます 保存は保存アイコン をクリックするか ファイル メニューより 名前を付けて保存 をクリックし ファ イル名を指定して保存してください アセンブラ言語のプログラムは拡張子.asm C 言語のプログラム は拡張子.c を付けてください 新規作成アイコン 保存アイコン 図3-11 PM plus ファイルの新規作成 名前を付けて保存 78K0/Kx2 マイコンシリーズ スタートアップ C 言語 32
3. プログラムをつくろう 22 ファイルのプロジェクトへの登録 作成したファイルや あらかじめコピーしておいたファイルはプロジェクトに登録する必要があります ProjectWindow の ソース ファイル を右クリックして ソース ファイルの追加 をクリックして作成したソースファイルを登録します 図 3-12 PM plus : プロジェクトへの登録 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 33
3. プログラムをつくろう option.asm 78K0/Kx2 マイコンは リセット解除後にフラッシュメモリの 0080H-0084H を読み出して マイコン動作の基本となる機能の初期設定を行います この初期値を格納する領域を オプション バイト領域 といいます オプション バイト領域の参照の後にリセットベクタに設定されたアドレスからプログラムを実行します 以下に各アドレスに設定される内容を示します 11 0080H 低速内蔵発振器の動作 ソフトウェアにより停止可能 に設定します ウォッチドッグタイマのオーバーフロー時間の設定 オーバーフロー時間 = 3.88ms に設定します( ウォッチドッグタイマは停止設定のため関係ない ) ウォッチドッグタイマのカウンタの動作の設定 ウォッチドッグタイマ動作 = 停止 に設定します ウォッチドッグタイマのウインドウ オープン期間の設定 ウィンドウ オープン時間 = 25% に設定します( ウォッチドッグタイマは停止設定のため関係ない ) 22 0081H POC モードの選択 1.59V POC モード ( デフォルト ) に設定します 33 0082H-0083H 予約領域( 必ず 00H を設定してください ) 44 0084H オンチップデバッグ動作制御 オンチップデバッグ動作 = 動作禁止 に設定します ti n asm1 OPT_SET CSEG AT 80H OPTION: DB 00000000B ; ; ; +--------- ; +++---------- 3.88ms ; +------------- ; ++-------------- 25% ; +----------------0 DB 00000000B ;POC ; ; +---------1.59V POC ; +++++++----------0 DB 00000000B DB 00000000B ;00H ;00H ONC_SET CSEG AT 84H ONCHIP: DB 00000000B ; ; ; ++--------- ; ++++++-----------0 END リスト 3-2 : オプション バイトの設定 option.asm 78K0/Kx2 マイコンシリーズスタートアップ C 言語 34
3. プログラムをつくろう initial.c 標準のスタートアップルーチンに合わせて hdwinit 関数を作成します ここではファイル名は initial.c とします hdwinit 関数ではメモリサイズの切り替え クロック ポート タイマの設定を行います 11 22 33 メモリサイズの切り替え使用するマイコンに合わせて メモリ サイズ切り替えレジスタ (IMS) と 内部拡張 RAM サイズ切り替えレジスタ (IXS) を設定します 使用するマイコンの ROM 容量と内部拡張 RAM 容量にしたがって設定してください ( 必ず IMS を設定したあとに IXS を設定してください ) クロックの設定メインシステムクロックを高速システムクロック回路の X1( 外付けセラミック発振子 ) をプリスケーラによる分周なし (20MHz) にする設定を行います (78K0/Kx2 マイコンは リセット解除後は高速内蔵発振回路 (8MHz TYP.) がメインシステムクロックとなります ) また サブシステムクロックは XT1( 外付け水晶発振子 (32.768KHz)) を使用する設定とします ポートの設定 LED に接続するポートのレジスタに初期値を設定し 方向レジスタに出力ポートとする設定をします 入出力ポートを出力に設定する前に 必ずポートのレジスタには所定の値を設定し 出力に設定したときに不定な値がマイコンから出力されないようにします 44 タイマの設定タイマは 16 ビットタイマ 00 を使って 200m 秒を計測することとします タイマのソースクロックは システムクロックを 256 分周 (78.125KHz:1 分周 =0.0000128 秒 ) したものを供給し 15625 回カウントして 200m 秒を計測することとします (0.2 0.0000128 = 15625) また タイマ割り込み機能は使用しないで 割り込み要求フラグを検知することで計測します タイマを開始する設定は 全ての初期設定の一番最後にします ( メインプログラム中で行ってもかまいません ) 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 35
3. プログラムをつくろう /*------------------------------------------------------------------------------ * initial.c * LED_PICOPICO * 78K0/KE2( PD78F0537) * ReferSTAR78K(CT-781) * ------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ (#pragma ) ------------------------------------------------------------------------------*/ #pragma SFR /* (SFR) */ /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ void clock_init(void); /* */ void port_init(void); /* */ void timer00_init(void); /* 00 */ /*------------------------------------------------------------------------------ * hdwinit * * * * ------------------------------------------------------------------------------*/ void hdwinit(void) { IMS = 0xCC; /* 128kByte */ IXS = 0x00; /* RAM 6kByte */ } clock_init(); /* */ port_init(); /* */ timer00_init(); /* 00 */ リスト 3-3 : 初期化設定ルーチン -1 マイコンの SFR のシンボル名について コンパイラ CC78K0 の拡張機能 #pragma SFR を設定することで 78K0S/Kx2 マイコンの各機能のレジスタなどのシンボル名をプログラム中に記述することができます PM plus のテキスト エディタでシンボル名を入力すると 文字色が SFR のシンボルを表す色になります ( デフォルトで青色 ) 各シンボル名は 78K0S/Kx2 ユーザーズマニュアル (NEC エレクトロニクス社発行 ) に記述されている略号と同じです 例 :16 ビット タイマ モード コントロール レジスタ 00(TMC00) のフォーマット図 0 0 0 0 78K0/Kx2 マイコンシリーズスタートアップ C 言語 36
3. プログラムをつくろう /*------------------------------------------------------------------------------ * clock_init * * * * ------------------------------------------------------------------------------*/ void clock_init(void) { unsigned char temp_ostc; /* */ OSTS = 0x05; /* 3.27ms fx=20mhz */ OSCCTL = 0x41; /* X1 10 20MHz */ MSTOP = 0; /* X1 */ do { /* */ temp_ostc = OSTC; /* OSTC */ temp_ostc &= 0x1F; /* Bit */ } while (temp_ostc!= 0x1F); /* */ MCM = 0x05; /* */ RSTOP = 1; /* */ /* */ OSCCTL = 0x10; /* XT1 */ XTSTART = 0; /* XT1 */ PCC &= ~0x17; /* CPU fxp */ LSRSTOP = 1; /* */ } /*------------------------------------------------------------------------------ * port_init * * * * ------------------------------------------------------------------------------*/ void port_init(void) { P0 = 0b00000010; /* P00,P01 */ PM0 = 0b11111100; /* P00,P01 */ } /*------------------------------------------------------------------------------ * timer00_init * 00 * * * ------------------------------------------------------------------------------*/ void timer00_init(void) { TMC00 = 0b00000000; /* 0 */ TMMK000 = 1; /* (1) */ TMIF000 = 0; /* 0 */ PRM00 = 0b00000010; /* 20MHz 256 */ } CRC00 = 0b00000000; /* CR000 */ TOC00 = 0b00000000; /* */ CR000 = 15625-1; /* */ /* 20MHz/256=78.125KHz 0.2s/0.0000128s=15625 0-1 */ TMC00 = 0b00001100; /* TM00 CR000 */ リスト 3-4 : 初期化設定ルーチン -2 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 37
3. プログラムをつくろう main.c 標準のスタートアップルーチンに合わせて main 関数を作成します main 関数では タイマ 00 の割り込み要求フラグ (TMIF000) を検知し 200m 秒を 5 回カウントして 1 秒ごとにポートの値を反転します /*------------------------------------------------------------------------------ * main.c * LED_PICOPICO * 78K0/KE2( PD78F0537) * ReferSTAR78K(CT-781) * LED 1 ------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ (#pragma ) ------------------------------------------------------------------------------*/ #pragma SFR /* (SFR) */ #pragma EI /* EI */ /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ #define LED1 (P0.0) /* 0 0 */ #define LED2 (P0.1) /* 0 1 */ #define TRUE (1) #define FALSE (0) /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ static char count_1sec(void); /* 00 1 */ static void led_blink(void); /* */ /*------------------------------------------------------------------------------ * main * 1 LED * * * ------------------------------------------------------------------------------*/ void main(void){ EI(); /* */ } while(1){ /* */ if (count_1sec() == TRUE){ /* 1 */ led_blink(); /* LED */ } } リスト 3-5 : メインルーチン -1 78K0/Kx2 マイコンシリーズスタートアップ C 言語 38
3. プログラムをつくろう /*------------------------------------------------------------------------------ * count_1sec * 00 1 TRUE * * TRUE,FALSE * ------------------------------------------------------------------------------*/ static char count_1sec(void){ static unsigned char counter_1sec = 0; /* 1 */ if (TMIF000 == 1){ /* 00 1 200ms */ TMIF000 = 0; /* 00 */ counter_1sec ++; /* 1 */ if (counter_1sec >= 5){ /* 1 5 200ms 5 1 */ counter_1sec = 0; /* 1 */ } } return (TRUE); /* 1 */ } return (FALSE); /* 1 */ /*------------------------------------------------------------------------------ * led_blink * LED * * * ------------------------------------------------------------------------------*/ static void led_blink(void){ } LED1 = ~LED1; /* LED1 */ LED2 = ~LED2; /* LED2 */ リスト 3-6 : メインルーチン -2 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 39
3. プログラムをつくろう lk78k0.dr( リンク ディレクティブ ファイル ) PM plus でプロジェクトを作成し C 言語のプログラムファイルを登録すると デフォルトで RA78K0 アセンブラ ( リンカ ) の -s オプション ( スタック解決用シンボル作成 ) が設定されます このオプションは 指定された領域内でセグメントが配置されていない最大の RAM の空き領域をスタック領域とし 先頭アドレスのシンボルと最終アドレスのシンボルを生成します デフォルトの -s オプションの設定では 領域は省略されているので RAM という名称のメモリ領域 ( 内蔵 RAM の全領域が含まれます ) となり プログラムで使用する変数の量によってスタック領域が変動することになるので 定量のスタックを確保するための設定をしておきます スタック領域のための領域の名前は任意ですが ここでは STACK とし 256 バイト確保することとします デバッガをご利用になられる場合は デバッガ用の領域を別途確保する必要があります 詳細は NEC エレクトロニクス社製オンチップ デバッグ エミュレータ MINICUBE2 の情報をご確認ください (ReferSTAR78K ではオンチップ デバッグは未対応のためご注意ください ) 11 リンク ディレクティブ ファイルの作成とリンカオプションによる指定 リンク時にセグメント再配置の指定をするファイル リンク ディレクティブ ファイル を指定することで 任意の名前で領域を確保することができます リンク ディレクティブ ファイルのファイル名は任意ですが 拡張子.dr を付けてください 以下にリンク ディレクティブファイルの記述例とリンカへの指定方法を示します 8 0 d 1 memory RAM : (0FC00H,300H) ;RAM SFR (FEE0h-FFFFh) FFFFh memory STACK : (0FB00H,100H) ; 256Byte リスト 3-7 : リンク ディレクティブ ファイルの設定 以下に割り当てあられるメモリ領域を示します FFFFH FF00H FEFFH H H H FC00H FBFFH FB00H H H H H H H H 図 3-13 割り当てられるメモリ領域 78K0/Kx2 マイコンシリーズスタートアップ C 言語 40
3. プログラムをつくろう PM plus の ツール メニューより リンカオプションの設定 をクリックして リンカオプションの設定 ウィンドウの その他 タブをクリックします ディレクティブ ファイル 欄の右の 参照 ボタンをクリックして作成したリンク ディレクティブ ファイルを指定してください 図 3-14 PM plus : リンク ディレクティブ ファイルの指定 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 41
3. プログラムをつくろう 22 -s オプションの領域指定の追加 プロジェクトにデフォルトで設定されている -s オプションに リンク ディレクティブ ファイルで確保した領域 STACK の指定を追加します リンカオプションの設定 ウィンドウの その他 の設定の スタック解決用シンボルの生成 [-s] 横の 領域名 欄に STACK を設定してください RA78K0 リンカの仕様により スタック解決用シンボルには偶数アドレスが設定されます スタック領域を奇数から開始するように FB01H ~ FC00H と設定した場合 @STEND は FB02H @STBEG は FC00H (FC00H+1 = FC01H とならない ) となります シンボルの確認については P46 のコラム シンボルに割り当てられたアドレスの確認 を参照してください 図 3-15 PM plus : -s オプション領域の指定 78K0/Kx2 マイコンシリーズスタートアップ C 言語 42
3. プログラムをつくろう 3.5 プロジェクトのビルド 作成したファイルがプロジェクトに登録されていることを確認してビルドをします ビルド アイコンをクリッ クしてください ビルド は変更のあったソースファイル のみをコンパイル アセンブル リンクします リビルド は全てのソースファイルを コンパイル アセンブル リンクします 登録したソースファイル 図3-16 PM plus プロジェクトのビルド シンボルに割り当てられたアドレスの確認 ビルド オブジェクト コンバータ で生成されたシンボル テーブル ファイル a.sym で 各シンボルに割り当てられた アドレスを確認することができます 以下は サンプルプログラムのシンボル テーブル ファイル 一部抜粋 です a.sym 生成されたシンボル テーブル ファイル 一部抜粋 #05 ;FF PUBLIC 020FC78_?DATA 020FC7A_?DATS 020FC7A_?INIS 020FC7A_?INIT 0100085_?R_INIS 0100088_?R_INIT 020FC56_@BRKADR 020FC46_@DIVR 020FC40_@FNCENT 020FC00_@FNCTBL 020FC4A_@LDIVR 020FC78_@MEMBTM 020FC58_@MEMTOP 020FC42_@SEED 000FC00_@STBEG 000FB00_@STEND リンカの -s オプションで生成されたシンボル _@STBEG に FC00H _@STEND に FB00H が 設定されている 78K0/Kx2 マイコンシリーズ スタートアップ C 言語編 43
3. プログラムをつくろう 78K0/Kx2 マイコンのリンク ディレクティブ リンク ディレクティブとは プログラムのメモリ配置において デフォルトの設定からの変更の指示 ( ディレクティブ ) をリンカに与えることをいいます RA78K0 リンカは アセンブラ コンパイラが生成するセグメント ( コンパイラではセクションと呼びます ) を メモリ領域情報とセグメント タイプにしたがってメモリに配置しています メモリ領域はデフォルトで FFFFH ~ FB00H が RAM BFFFH ~ 0000H が ROM という名称になります セグメント タイプはデフォルトで以下のようになります ( 下図参照 ) FFFFH FF00H FEFFH FE20H FB00H F7FFH E000H C000H BFFFH 8000H 7FFFH 0000H メモリ ディレクティブ セグメント配置ディレクティブリンク ディレクティブには メモリ ディレクティブ セグメント配置ディレクティブがあります 各ディレクティブを記述 するファイルは拡張子に.dr を付け リンカオプション -d でファイル名を指定します <メモリ ディレクティブ> メモリ ディレクティブとは メモリ領域の変更を指示するディレクティブです デフォルトの ROM RAM 領域に加えて 新しい領域を確保する場合は 新しい領域を引いた ROM RAM 領域を改めて設定する必要があります アセンブラ コンパイラが生成する各セグメントは デフォルトで ROM RAM メモリ領域内の 該当するセグメント タイプが設定されているアドレスに配置されるからです 新しく設定したメモリ領域にセグメントを配置したい場合は セグメント配置ディレクティブで設定する必要があります セグメント配置ディレクティブを設定しない場合は セグメントはなにも配置されません <セグメント配置ディレクティブ> セグメント配置ディレクティブとは セグメントの配置情報の変更を指示するディレクティブです デフォルトでは アセンブラ コンパイラが生成するセグメント ( コンパイラの場合はセクション ) は ROM RAM メモリ領域内の各セグメント タイプが設定されているアドレスに配置されます ( RAM メモリ領域では内蔵 RAM が該当する領域内の セグメント タイプが設定されているアドレスになります ) 78K0/Kx2 マイコンシリーズスタートアップ C 言語 44
3. プログラムをつくろう アセンブラ C 言語でのセグメント ( セクション ) に関する設定アセンブラ C 言語のソース ファイルで セグメント ( セクション ) の設定を記述することができます アセンブラで記述できる設定は 新しいセグメントの定義 セグメントの配置情報の変更です C 言語で記述できる設定は デフォルトのセクション名と配置先の変更です アセンブラではセグメント定義擬似命令 C 言語では拡張機能 #pragma section で記述します メモリ領域とセクションの配置状況ビルド ( リンカ ) で生成されるリンク リスト ファイル a.map でメモリ領域とセクションの配置状況を確認することができます *** Memory map *** SPACE=REGULAR MEMORY=ROM BASE ADDRESS=00000H SIZE=08000H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS @@VECT00 00000H 00002H CSEG AT @@VECT00 @cstart 00000H 00002H @@CALT 00002H 00000H CSEG @@CALT @cstart 00002H 00000H @@CALT initial 00002H 00000H @@CALT main 00002H 00000H @@CALF 00002H 00000H CSEG @@CALF @cstart 00002H 00000H @@CALF initial 00002H 00000H @@CALF main 00002H 00000H * gap * 00002H 0007EH OPT_SET 00080H 00004H CSEG AT OPT_SET option 00080H 00004H ONC_SET 00084H 00001H CSEG AT ONC_SET option 00084H 00001H @@R_INIS 00085H 00000H CSEG UNITP @@R_INIS @cstart 00085H 00000H @@R_INIS initial 00085H 00000H @@R_INIS main 00085H 00000H @@R_INIS @rom 00085H 00000H @@CNST 00085H 00000H CSEG UNITP @@CNST @cstart 00085H 00000H @@CNST initial 00085H 00000H @@CNST main 00085H 00000H * gap * 00085H 00001H @@R_INIT 00086H 00002H CSEG UNITP @@R_INIT @cstart 00086H 00000H @@R_INIT initial 00086H 00000H @@R_INIT main 00086H 00002H @@R_INIT @rom 00088H 00000H MEMORY=STACK BASE ADDRESS=0FB00H SIZE=00100H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS * gap * 0FB00H 00100H 78K0/Kx2 マイコンシリーズスタートアップ C 言語編 45
4. プログラムをうごかそう 4. プログラムをうごかそう プログラムを動作させる場合は フラッシュ プログラム ソフトウェア WriteEZ3 で評価ボードに書き込みます ReferSTAR 78K/Kx2 とホスト PC を USB ケーブルで接続し 電源を投入してください 設定スイッチを下図のように設定してリセットスイッチを押してください 図 4-1 評価ボードの設定 ( プログラムの書き込み ) PM plus よりフラッシュ プログラム ソフトウェア WriteEZ3 を起動してください 図 4-2 PM plus : WriteEZ3 の起動 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 46
4. プログラムをうごかそう WriteEZ3 が起動したら COM ポート 書き込むファイルの設定を行います COM ポートの設定は WriteEZ3 インストール後最初の書き込み時と ホスト PC での割り当てが変更された場合に必要です ( 一般にホスト PC の前回と異なる USB コネクタと ReferSTAR 78K/Kx2 を接続した場合に COM ポートの割り当てが変更されます ) 書き込むファイルは ファイルが更新されるたびに設定が必要です ボタンか Device メニューより Setup をクリックしてください 図 4-3 WriteEZ3 : Setup 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 47
4. プログラムをうごかそう COM ポートの設定 現在割り当てられている COM ポートを調べて設定します 以下の手順で現在ホスト PC に割り当てられて いる COM ポートを確認してください ホスト PC と ReferSTAR 78K/Kx2 が接続されている状態で行っ てください ① Windows の マイ コンピュータ を右クリックし プロパティ をクリックしてください ② システムのプロパティ ウィンドウの ハードウェア タブをクリックし デバイスマネージャ をクリッ クします ③ 一覧より ポート COM と LPT の マークをクリックすると 現在仮想 COM ドライバに割り当 てられている COM ポートの番号が確認できます 下図の場合は COM5 となります ① 右クリック クリック クリック ② クリック ③ クリック COMポート番号 図4-4 仮想COMポートの割り当ての確認 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 48
4. プログラムをうごかそう WriteEZ3 の Setup 画面で確認した COM ポート番号を設定します Host Connection の Port で割り当てられている COM ポートを設定してください 図 4-5 WriteEZ3 : COM ポート番号の設定 書き込むファイルの設定 書き込むファイルを設定します Load ボタンか File メニューの Load をクリックし プロジェクトフォルダ以下の HEX 形式オブジェクトファイル a.hex を指定します (PM puls の オブジェクトモジュールコンバータの設定 で指定したファイル名となります 何も指定しない場合は a.hex です ) 図 4-6 WriteEZ3 : ファイルの設定 プログラムのダウンロード中にホスト PC ターゲットシステムのパワーオフ リセットはしないでください 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 49
4. プログラムをうごかそう 設定内容はメインウィンドウの右側に表示されます 図 4-7 WriteEZ3 : 設定内容の表示 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 50
4. プログラムをうごかそう ReferSTAR 78K/Kx2 に電源が入っていることを確認して Autoprocedure ボタンか Device メニューの Autoprocedure(EPV) をクリックしてください 消去(Erase) 書き込み (Program) ベリファイ (Verify) の順で行われます 図 4-8 WriteEZ3 : プログラムの書き込み 評価ボード上のスイッチを以下のように設定し リセットスイッチを押してください 2 つの LED が交互に点 滅するのを確認してください 図 4-9 評価ボードの設定 ( プログラムの実行 ) 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 51
5. トラブルシューティング 5. トラブルシューティング 5.1 WriteEZ3 でプログラムが書き込めない 評価ボードがプログラム書き込みの設定になっていない プログラムを書き込む際は 評価ボード上の設定スイッチを FLASH WRITER 側へ設定してください 設定を変更した場合はかならず書き込みボード上のリセットスイッチを押して リセットしてください COM ポート番号が合っていない 接続時の初期設定画面で設定する COM ポート番号と ホスト PC で割り当てられている仮想 COM ポート番号が合っていない場合は 5.2 仮想 COM ポート番号の確認 を参考に仮想 COM ポート番号を確認し 正しい COM ポート番号を設定してください 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 52
5. トラブルシューティング 5.2 仮想 COM ポート番号の確認 以下の方法で仮想 COM ポート番号を確認してください ①① Windows の マイ コンピュータ を右クリックし プロパティ をクリックしてください ②② システムのプロパティ ウィンドウの ハードウェア タブをクリックし デバイスマネージャ をクリッ クします ③③ 一覧より ポート COM と LPT の マークをクリックすると 現在仮想 COM ドライバに割り当て られている COM ポートの番号が確認できます ① 右クリック クリック クリック ② クリック ③ クリック COMポート番号 図5-1 仮想COMポートの割り当ての確認 78K0/Kx2 マイコンシリーズ スタートアップガイド C 言語編 53
改訂履歴 改訂履歴 Rev. 発行日ページ改訂内容 1.00 2006/09/20 - 初版発行 1.10 2007/05/20 - Applilet から Applilet2 へのバージョンアップに伴う各修正 2.00 2009/04/10 - 開発ツールのバージョンアップに対応 Applilet2 による開発は アプリケーションノート にて対応 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 発行日 2009 年 4 月 10 日 Rev2.00 発行サンハヤト株式会社 170-0005 東京都豊島区南大塚 3 丁目 40 番 1 号 2009 Sunhayato Corp. All rights reserved. SG043236 78K0/Kx2 マイコンシリーズスタートアップガイド C 言語編 54