• 検索結果がありません。

NECエレクトロニクス 78K0/Kx2 マイコンシリーズ スタートアップガイド C言語編

N/A
N/A
Protected

Academic year: 2021

シェア "NECエレクトロニクス 78K0/Kx2 マイコンシリーズ スタートアップガイド C言語編"

Copied!
54
0
0

読み込み中.... (全文を見る)

全文

(1)

C言語編

2009年4月10日発行日

REV.2.00

(2)

安全上のご注意

このたびは、弊社製品をご使用いただき、誠にありがとうございます。本項では、誤った取り扱いによる事故を 未然に防ぐための安全上の注意事項を説明しています。弊社製品をご使用になる前に必ずお読みください。

警告

この表記を無視して誤った取り扱いをすると、死亡や重傷など、人体への重大な障害をもたらす恐れのある内容について示しています。

注意

この表記を無視して誤った取り扱いをすると、軽傷または中程度の障害をもたらす恐れのある内容について示しています。また、本品や本品に接続している機器に損 傷を与える可能性がある事項についても示しています。

警告

プラグをコンセント から抜く ▶発煙、異臭への対処 煙がでている、へんな臭いがするなどの異常がありましたら使用を直ちに中止してく ださい。そのまま使用すると、火災、感電、故障の原因となります。 すぐに電源ケーブルのプラグをコンセントから抜き、煙などの異常が出なくなるのを 確認し、販売店などに修理をご依頼ください。 ▶水分の多いところ、水がかかる場所では、本製品は使用しないで下さい 風呂場や台所など水分の多いところ、水がかかる場所では、本製品は使用しないで下 さい。 火災、感電、故障の原因となります。 禁止 ▶電源ケーブルの取り扱いに注意してください 電源ケーブルを傷つけ、破損、加工、無理な曲げ、引っ張り、ねじり、束ねたりしな いでください。また、重い物を乗せたり、加熱したりすると電源ケーブルが破損し、 火災、感電、故障の原因となります。 禁止 ▶医療、軍事、航空宇宙、列車、運送、原子力などの制御設備へは使用しないでくだ さい 医療機器、軍事機器、航空宇宙機器、運送、原子力などの制御設備などの人命に関わ るシステムへの使用は意図しておりません。 接触禁止 ▶雷が鳴りはじめたら製品に触れないでください 近くに雷が発生したときは、製品本体に触れないでください。また、電源プラグをコ ンセントから抜いてご使用をお控えください。雷によっては、火災、感電、故障の原 因となることがあります。

注意

電源プラグの 差し込み ▶電源プラグは確実にコンセントに差し込んでください 差し込みが不完全ですと火災、感電、過熱の原因になります。 分解禁止 ▶分解・改造しないでください 分解、改造しないでください。怪我、感電、故障の原因となります。本製品の分解、 改造による怪我や事故について、当社は責任を負いかねます。 水場禁止

(3)

禁止 ▶以下のような場所では使用しないでください 本製品を以下のような場所で使用すると、動作不良、故障の原因となります。 ・振動や衝撃が加わる場所 ・直射日光のあたる場所 ・湿気やホコリが多い場所 ・温度差の激しい場所 ・熱を発生するもの(暖房器具など)の近く ・ 強い磁力、電波が発生するもの(磁石、ディスプレイ、スピーカー、ラジオ、無線機など) の近く ・湿気の多い場所

子供注意

▶子供の手の届かない場所に置いてください 本製品に装着されている電子部品など子供が飲み込まないように注意してください。 ▶通信ケーブルの抜き差しは、電源OFFにして行ってください 本品への通信ケーブル類は活線挿抜しないでください。ケーブルの抜き差しは、必ず本製 品または相手製品の電源がOFF状態にて行ってください。故障の原因になることがあり ます。 安全設計 ▶安全設計をしてください 本製品を、高度な信頼性を必要とするシステムに使用する場合は、冗長設計、誤動作防止 設計など充分な安全設計を必ず行ってください。本製品の故障、障害により生じるいかな る損害、事故について当社は責任を負いかねます。 保管注意 ▶長期間使用しない場合の保管について 長期間使用しない場合は、帯電防止袋などに入れ、ホコリなどが入らないようにしてくだ さい。ホコリが入ると接触不良などの原因になります。 ホコリ注意 ▶製品の清掃について 製品にホコリなどが付着すると放熱特性が低下し、故障の原因になりますので、下記の「▶ お手入れについて」に従って清掃してください。 薬品注意 ▶お手入れについて 汚れはやわらかい布によるからぶきをしてください。水、洗剤、ベンジン、シンナーなど の使用は避けてください。基板の洗浄には、サンハヤト製電子機器用洗浄剤をお使いくだ さい。 使用注意 ▶故障、破損時の処理について 本製品が故障もしくは破損した場合は、速やかに使用を中止して販売店などに修理依頼し てください。そのまま使用しますと火災、感電、怪我の原因になるおそれがあります。 廃棄注意 ▶本製品の廃棄について 本製品の廃棄は、各自治体の廃棄ルールに従ってください。詳しくは各自治体にお問い合 わせください。 活線挿抜禁止

(4)

本資料についてのご注意

本資料について

• 本資料は、電子工作や電子回路、パーソナルコンピュータの操作について一般的な知識をお持ちの方を対 象にしています。 • 本資料を元に操作するには、株式会社 NEC エレクトロニクス社製 78K0/Kx2 シリーズマイコンについて の知識や開発環境などが必要です。 • Microsoft®、Windows® は米国 Microsoft 社の米国およびその他の国における登録商標です。 • その他、記載されている製品名は各社の商標または登録商標です。

本資料のご利用にあたって

• この取扱説明書に掲載している内容は、お客様が用途に応じた適切な製品をご購入頂くことを目的として います。その使用により当社及び第三者の知的財産権その他の権利に対する保証、又は実施権の許諾を意 味するものではありません。また、権利の侵害に関して当社は責任を負いません。 • 本資料に記載した情報を流用する場合は、お客様のシステム全体で充分評価し適用可能かご判断願います。 当社では適用可能判断についての責任は負いません。 • 本資料に記載してある内容は、一般的な電子機器(学習教材、事務機器、計測機器、パーソナル機器、コ ンピュータ機器など)に使用されることを目的としています。高い品質や信頼性が要求され、故障や誤作 動が直接人命を脅かしたり人体に危害を及ぼす恐れのある、医療、軍事、航空宇宙、原子力制御、運輸、 移動体、各種安全装置などの機器への使用は意図も保証もしておりません。 • この取扱説明書の一部、又は全部を当社の承諾なしで、いかなる形でも転載又は複製されることは堅くお 断りします。 • 全ての情報は本資料発行時点のものであり、当社は予告なしに本資料に記載した内容を変更することがあ ります。 • この資料の内容は慎重に制作しておりますが、万一記述誤りによってお客様に損害が生じても当社はその 責任を負いません。 • 本資料に関してのお問合せ、その他お気付きの点がございましたら、当社までお問合せください。 • 本資料に関する最新の情報はサンハヤト株式会社ホームページ(http://www.sunhayato.co.jp/)に掲載し ております。

(5)

このマニュアルについて

本スタートアップガイドでは、サンハヤト 78K0/Kx2 マイコンシリーズのプログラム開発を、NEC エレクトロ ニクス社のツールを使用して行った場合の手順、設定方法などを説明したものです。各ツールの詳細な使用方法や 注意事項につきましては、NEC エレクトロニクス社発行のマニュアルを参照してください。

■該当するサンハヤト78K0/Kx2マイコンシリーズ製品

● ターゲットマイコン :78K0/Kx2 マイコン μ PD78F0537D ● 学習/評価ボード :ReferSTAR 78K/Kx2(CT-781)

■開発に必要なもの

● 以下の条件を満たすホストパーソナルコンピュータ(以下ホスト PC)

PC 本体 Pentium Ⅲ 500MHz 以上を搭載した IBM PC/AT 互換機 OS 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」のバージョン情報で確認できます。)

■このマニュアルで紹介している各社サイト、ツールについて

本スタートアップガイドで紹介している各社サイトやツールは、本スタートアップガイド発行時のものを掲載し ております。各社サイトの構成やツールのファイル名などは、変更されている場合がありますのでご了承ください。

(6)

目次

このマニュアルについて ……… 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

(7)

改訂履歴 ……… 54

コラム目次

マイコンのシリーズ名について ……… 5 仮想 COM ポートドライバについて ……… 12 マイコンの SFR のシンボル名について ……… 36 シンボルに割り当てられたアドレスの確認 ……… 43 78K0/Kx2 マイコンのリンク・ディレクティブ ……… 44

(8)

1. 開発の流れ

1.1 開発環境

サンハヤト 78K0/Kx2 シリーズマイコン製品でプログラムを開発する場合、以下の NEC エレクトロニクス社製 の開発ツール、設定ファイルを使用します。ここで紹介している各ソフトウェアは無償で提供されています。 ■ ■ 統合開発環境:PM■plus Windows 上での統合開発環境です。 エディタ、コンパイラ、デバッガなどの開発ツールを連携して効率的な開発が行えます。 ■ ■ コンパイラ:CC78K0 78K0 シリーズマイコン用の組み込み制御用プログラムを C 言語で記述するために開発された、汎用性,移 植性の高い C コンパイラです。 ■ ■ アセンブラ:RA78K0 アセンブラソースプログラムから78K0シリーズマイコンで実行することができる実行コードを生成します。 ■ ■ フラッシュ・プログラム・ソフトウェア:WriteEZ3 ホスト PC より 78K0/Kx2 マイコン内蔵のフラッシュメモリの書き換えを行います。 ■ ■ デバイス・ファイル コンパイル時に必要な品種依存データファイルです。 ■ ■ パラメータ・ファイル フラッシュ・プログラム・ソフトウェア WriteEZ3 で書き込む際に必要な品種依存データファイルです。 <開発ツールの制限について> ① RA78K0 に含まれるリンカで生成できるオブジェクトサイズは、32KB までです。(メモリバンクのある製品 は、バンクエリアを使用できません)。 ② メモリ・ディレクティブで RAM 領域を変更すると、まれにエラーになる場合があります。 以下のドライバは FTDI 社 Web サイトより無償で提供されているものです。 ■ ■ FTDI 社■仮想 COM ポートドライバ

USB- シリアル変換 IC(FT232BM)をホスト PC の仮想 COM ポートで使用するためのドライバソフトウェ アです。

(9)

開発フロー(イメージ図)を以下に示します。 Cソースファイル アセンブラソースファイル テキストエディタ リンカ アセンブラ ロードモジュールファイル HEX形式 オブジェクトモジュールファイル

.ASM

.LMF

.HEX

フラッシュ・プログラム・ソフトウェア: WriteEZ3 コンパイラ:CC78K0

統合開発環境:PM plus

アセンブラ:RA78K0 パラメータ・ファイル

.C

s0s*.REL

実機で評価 ホストPC 標準スタートアップルーチン (オブジェクトモジュールファイル) デバイス・ファイル オブジェクトコンバータ

(10)

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 開発ツールのダウンロード

(11)

■フラッシュ・プログラム・ソフトウェア「WriteEZ3」

NEC エレクトロニクス社 Web サイトの「マイコン用簡易書き込み回路,簡易プログラミング・ソフト(自作ラ イタ)」のページ http://www.necel.com/micro/ja/promotion/write-ez/flashprog.html にアクセスしてください。ペー ジ表中の「WriteEZ3」のリンクをクリックしてダウンロードしてください。 クリック 図2-2 WriteEZ3のダウンロード

(12)

2.2 インストールの手順

「アセンブラ:RA78K0」(統合開発環境:PM plus も同時にインストールされます)→「コンパイラ:CC78K0」→「フ ラッシュ・プログラム・ソフトウェア:WriteEZ3」→「デバイス・ファイル」→「パラメータ・ファイル」→「仮 想 COM ポートドライバ」の順でインストールします。各インストーラファイル、解凍ファイルをダブルクリック してください。ダブルクリックした際に「セキュリティの警告」ウィンドウが出る場合がありますが、「実行」をクリッ クしてください。 図2-3 インストーラの実行

仮想COMポートドライバについて

ReferSTAR 78K/Kx2 に は FTDI 社 の USB- シ リアル変換 IC が搭載されており、対応する仮想 COM ポートドライバがインストールされているホ スト PC と仮想的なシリアル通信を行うことができ ます。 仮 想 的 な シ リ ア ル 通 信 と は こ の 場 合、 実 際 は USB ケーブルで接続して USB 通信を行っています が、マイコン - アプリケーション間ではあたかもシ アプリケーション (ハイパーターミナル) COM ポート ポートドライバ仮想COM ポートUSB USB通信 USBケーブル 仮想的なシリアル通信 USB-シリアル 変換IC ターゲット マイコン

(13)

1■RA78K0 のインストール

インストーラファイル「ra78k0_w401_j.exe」を ダブルクリックし、「セキュリティの警告」が出 た場合は「実行」をクリックしてください。ファ イルが解凍されるとインストーラが起動します。 インストールするツールは、全てのチェックボッ クスにチェックを入れてください。(アセンブラ、 統合開発環境本体とドキュメント) インストール先はデフォルトのままにしておくこ とをお勧めします。 「インストール」をクリックしてください。 インストール開始の確認メッセージが出ますの で、「OK」をクリックしてください。 「使用許諾契約」の内容を確認したら、「はい」を クリックしてください。 プロダクト ID を入力して「次へ」をクリックし てください。(プロダクト ID は NEC エレクトロ ニクス社よりツールをダウンロードした際に登録 した E-mail アドレス宛に送られてきます) プロダクト ID の入力後、ホスト PC の環境によっ ては環境変数を AUTOEXEC.BAT に追加するか の確認ウィンドウが表示されます。問題がなけれ ば「AUTOEXEC.BAT ファイルを変更する」に チェックを入れることをお勧めします。 「OK」をクリックしてください。 インストール画面の「終了」をクリックして閉じ てください。

(14)

2■CC78K0 のインストール

インストーラファイル「cc78k0_w400_j.exe」をダ ブルクリックし、「セキュリティの警告」が出た場 合は「実行」をクリックしてください。ファイル が解凍されるとインストーラが起動します。 インストールするツールは、全てのチェックボッ クスにチェックを入れてください。(コンパイラ本 体とドキュメント) インストール先はデフォルトのままにしておくこ とをお勧めします。 「インストール」をクリックしてください。 インストール開始の確認メッセージが出ますので、 「OK」をクリックしてください。 「使用許諾契約」の内容を確認したら、「はい」を クリックしてください。 プロダクト ID を入力して「次へ」をクリックして ください。(プロダクト ID は NEC エレクトロニク ス社よりツールをダウンロードした際に登録した E-mail アドレス宛に送られてきます) 「OK」をクリックしてください。 インストールが終了したらインストール画面の「終 了」をクリックして閉じてください。

(15)

3■WriteEZ3 のインストール

WriteEZ3 は イ ン ス ト ー ラ は あ り ま せ ん。 「WriteEZ3.zip」 は 自 己 解 凍 フ ァ イ ル で は あ り ま せ ん の で 解 凍 ソ フ ト な ど で 解 凍 し て く だ さ い。解凍したフォルダ内のファイル「WriteEZ3. exe」 が 実 行 フ ァ イ ル と な り ま す。 こ こ で は、 C:¥NECTOOLS32 以下にフォルダを解凍したこと とします。 実 行 フ ァ イ ル「WriteEZ3.exe」 を 統 合 開 発 環 境 PM plus のメニューに登録することができます。 (2.3 章参照)

4■デバイス・ファイルのインストール

デバイス・ファイルはインストーラはありません。 「df780547_v221.zip」は自己解凍ファイルではあり ませんので解凍ソフトなどで解凍してください。 デバイスファイルは、プログラムのビルドの際に、 各ツールより参照されます。 ここでは C:¥NECTOOLS32 以下にあらかじめ作っ ておいた「device_file_Kx2」というフォルダに解 凍したこととします。 解凍したデバイス・ファイルを各ツールに関連付 けを行うため、インストールを行います。 Windows のスタートメニューより、「すべてのプ ログラム」→「NEC Electronics Tools」→「デバ イスファイル インストーラ」をクリックしてくだ さい。

「デバイスファイル インストーラ」が起動します。 「インストール」をクリックしてください。

(16)

「インストールウィザード」が開きますので、「参照」 をクリックしてください。解凍したフォルダ以下 のデバイスファイル「NECSETUP.INI」を指定し、 それぞれ「開く」、「次へ」をクリックしてください。 「NECSETUP.INI」ファイル を選択して「開く」をクリック 「ソフトウェア使用許諾契約」の内容を確認したら、 「同意する」をクリックしてください。 インストールするファイルの確認があります。全 てのチェックボックスにチェックを入れて「次へ」 をクリックしてください。 インストール先は変更せずに「次へ」をクリック してください。インストールするファイルとイン ストール先を確認して「次へ」をクリックしてく ださい。 インストールが完了したら「完了」をクリックし、 「デバイスファイル インストーラ」を終了してく ださい。

(17)

5■パラメータ・ファイルの解凍

パ ラ メ ー タ・ フ ァ イ ル「prm78f0547_v107」 は 「WriteEZ3」でプログラムを書き込む際に参照しま す。インストーラはありません。自己解凍ファイル です。ダブルクリックし、「セキュリティの警告」 が出た場合は「実行」をクリックしてください。 ここでは C:¥NECTOOLS32 以下にあらかじめ作っ ておいた「parameter_file」というフォルダを解凍 先フォルダに指定することとします。解凍すると、 指定したフォルダ以下に「PRM78F0547_V107」と いうフォルダが作成され、そのフォルダ以下にパラ メータファイルを展開します。 解凍が終了したら「OK」をクリックしてください。

6■仮想 COM ドライバのインストール

ReferSTAR 78K/Kx2 とホスト PC 間を USB ケー ブルで接続してください。電源を投入する必要はあ りません。(初回の接続時のみインストールします) ホストPC ReferSTAR 78K/Kx2(CT-781) 「新しいハードウェアの検索ウィザードの開始」ウィ ンドウが開きます。ウィザードにしたがってインス トールを行ってください。 インストール手順の詳細は「Refer STAR 78K(CT-780)スタートアップガイド」を参照してください。

(18)

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 : 外部ツールの登録ウィンドウ

(19)

「外部ツールの指定」ウィンドウが開きます。「参照」ボタンをクリックしてください。 図2-7 PM plus : 「外部ツールの指定」ウィンドウ 「WriteEZ3.exe」ファイルを選択し、「開く」をクリックしてください。 図2-8 PM plus : 外部ツール実行ファイルの参照 ファイル名など外部ツールの情報が指定されていることを確認して「OK」をクリックしてください。 図2-9 PM plus : 外部ツール設定後

(20)

「外部ツールの登録」ウィンドウに戻ります。「OK」をクリックしてください。 図2-10 PM plus : 外部ツール指定後の「外部ツールの登録」ウィンドウ WriteEZ3 が PM plus に登録されたことを確認します。 「ツール」→「外部ツールの起動」に「WriteEZ3」が登録されているのを確認してください。「WriteEZ3」をク リックすると起動します。 図2-11 PM plus : WirteEZ3を起動する WriteEZ3のメインウィンドウが開きます。続いてWriteEZ3上でパラメータ・ファイルの設定を行ってください。

(21)

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」をクリックしてください。

(22)

パラメータファイルの設定内容がメインウィンドウの右側に表示されます。 パラメータ・ファイルの設定 図2-14 WriteEZ3 : パラメータ・ファイルの設定確認 「WriteEZ3」と「PM plus」をそれぞれ終了してください。 「×」をクリックして終了 図2-15 「PM plus」と「WriteEZ3」の終了

(23)

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 を使用して行います。 LED2 (P01) LED1 (P00) 図 3-1 評価ボード上のLED 各 LED の回路構成は以下のようになります。出力ポートより "L" 出力で点灯します。 +5V LED “L”出力で点灯 マイコン 出力ポート 図3-2 LED回路(イメージ図)

■作成するファイル

LED 点滅のプログラムでは、以下のファイルを作成します。 表3-1 作成するファイル ファイル名 内容 option.asm オプションバイトの設定をします initial.c スタートアップ処理から呼び出される初期化設定関数 hdwinit でマイコンの初期化設定を行います main.c メイン関数 main でタイマ 00 により 200m 秒を計測し、5 回カウントして 1 秒おきに LED を点滅させます lk78k0.dr スタック領域の領域確保をします(リンカ時に読み込むリンク・ディレクティブ・ファイルです)

(24)

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 : 起動 ワークスペース、プロジェクトを新規作成します。「ファイル」メニューの「ワークスペースの新規作成」をクリッ クして、各設定をしてください。 ワークスペースには1つしかプロジェクトを 作成しないので同じ名前とします あらかじめ用意したワークスペースの フォルダを指定します マイクロコントローラ名は「78K0」、 デバイス名は「μPD78F0537」を設定してください

(25)

このプロジェクトで使用できるツール類が表示されます。「詳細設定」ボタンをクリックして各ツールを使用で きるように設定します。詳細設定をした場合は「保存」ボタンをクリックして設定を保存しておくと、次回の新規 作成から保存した設定を選択することができます。 ツールは、「CC78K0」と「RA78K0」のバージョン番号にチェックを入れてください。「SK78K0」と「BS78K0」 は機能を使用しませんがチェックは入れたままとします。 CC78K0とRA78K0のバージョン番号にチェックを入れます SK78K0とBS78K0は使用しませんが、デフォルトのままチェックありとします 詳細設定のあとは「保存」ボタンを クリックして設定を保存します

(26)

ソースファイルはここでは追加しないこととします。(「option.asm」などの設定ファイルをあらかじめプロジェ クトフォルダにコピーしている場合は、ファイルを選択して「追加」ボタンをクリックすることでプロジェクトに 登録できます。) 図3-6 PM plus : ソースファイルの設定 使用ツールの指定(図 3-5)の設定でデバッガを登録している場合、使用できるデバッガが表示されます。 今回はデバッガをインストールしていないので「次へ」ボタンをクリックしてください。 図3-7 PM plus : デバッガの選択

(27)

最後に今までの設定が表示されます。訂正したい場合は、「戻る」ボタンで戻って再設定することができます。 設定内容が正しければ「完了」ボタンをクリックしてください。 図3-8 PM plus : 設定の確認 「完了」をクリックするとワークスペースとプロジェクトが開きます。 現在のビルド・モード アウトプット・ウィンドウ 現在のプロジェクト プロジェクト・ウィンドウ 図3-9 PM plus : ワークスペース、プロジェクトの表示

(28)

■ ● 現在のプロジェクト 現在選択されているプロジェクト名とプロジェクト・グループを示します。1 つのワークスペースに複数の プロジェクトがある場合、プルダウンメニューより選択することができます。 ■ ● 現在のビルド・モード ビルドの際の各フェーズ(コンパイラ、アセンブラ、リンカなど)のオプションをデバッグ用とリリース 用に分けておくことができます。デフォルトで、「Debug Build」ではオブジェクトモジュールファイルと アセンブラソースモジュールファイルにデバッグ情報が出力され(コンパイラオプション -g2)、「Release Build」ではデバッグ情報が出力されません。 ■ ● アウトプット・ウィンドウ コマンドの実行結果を表示します。 ■ ● プロジェクト・ウィンドウ 現在選択されているプロジェクトに登録されているソースファイル類が表示されます。ソースファイル類が 登録されている場合は、プロジェクト・グループ→プロジェクト→各ファイル群→ファイル内の関数 の順 にツリーになって表示されます。 各ファイル、あるいは関数をダブルクリックするとエディタ・ウィンドウが開き、編集することができます。

(29)

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 となります。

(30)

以下に cstart.asm の内容(一部省略)を示します。

cstart.asm

(標準スタートアップルーチン オブジェクトモジュールファイル s0.rel のアセンブラソースファイル) 各ライブラリの シンボルのパブリック宣言や変数の設定 ROM 化処理で使用するセグメント、レーベルの定義 各ライブラリのための設定 saddr(ショート・ダイレクト・アドレシング のコンパイラ予約領域のゼロクリア) 静的変数の初期化(ゼロクリア、初期値コピー)

リセットベクタにスタートアップルーチンの先頭アドレスを設定します これ以降はライブラリ・コード用セグメントとします 使用するレジスタバンクの指定を行います スタックポインタを設定します シンボル @STBEG はリンカに -s オプションを付けた 場合に生成されるスタック領域の最終アドレス +1 を表します ;---; 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 _@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

CALL !_hdwinit ;---; clear saddr ;---; ROM data copy

;---; call main function

;---CALL !_main ;main();

BR $$

_@cend:

;---; define segment and label used by ROMable processing

;---hdwinit 関数を実行します hdwinit 関数はユーザーが作成する必要があります(hdwinit 関数が存在しない場合は何もしません) main 関数を実行します main 関数はユーザーが作成する必要があります (main 関数が存在しない場合は何もしません) 無限ループになります 1 つ目の $ = 相対アドレスを表します 2 つ目の $ = この命令の割り当てられているアドレス(複数の 場合は先頭アドレス)を表します

(31)

① ① リセットベクタの設定 リセットベクタにスタートアップルーチンの開始アドレス(シンボル:@cstart)を設定しています。リセッ ト解除後はスタートアップルーチンの先頭アドレスから実行されます。 ① ② セグメントの設定 スタートアップルーチンは“ROM”という名称のメモリ領域のライブラリ・コード用セグメント(@@ LCODE)に配置します。 ① ③ レジスタバンクの指定 レジスタバンク RB0 を以降の処理のワークレジスタとして指定します。 ① ④ スタックポインタの設定 リンカオプション -s により生成されたシンボル“_@STBEG”の示すアドレスをスタックポインタに設定し ます。(PM plus ではプロジェクト作成後にビルドする際、デフォルトでリンカオプション -s(スタック解 決用シンボルの生成)がつきます。) -s オプションは、指定したメモリ領域の中で(PM plus のデフォルトでの設定は省略しており“RAM”と いう名称のメモリ領域(内蔵 RAM の全領域が含まれます)となります)セグメントが配置されていない領 域のうち、最大の空き領域を探します。見つかった最大の空き領域の先頭アドレスを値として持つパブリッ ク・シンボル“_@STEND”と、最終アドレス + 1 を値として持つパブリック・シンボル“_@STBEG”を 生成します。 ① ⑤ hdwinit 関数の実行 hdwinit 関数を実行します。hdwinit 関数はユーザーが作成する関数です。マイコンの SFR(周辺機能)な どの初期設定用として作成されることを想定しています。 ① ⑥ 静的変数の初期化 C プログラム中のグローバル変数および Static 変数の初期化を行います。C プログラム中で初期値を与えら れている静的変数は ROM に配置されている初期値をコピーします。C プログラム中で初期値を与えられて いない静的変数は 0 クリアします。 ① ⑦ main 関数の実行、無限ループ

main 関数を実行します。main 関数はユーザーが作成する関数です。main 関数から抜けた場合は無限ルー プとなります。

(32)

3.4 ソースファイルの作成と編集

以下の手順でソースファイルを作成してください。C 言語プログラム、アセンブラ言語プログラムの各ファイル は、作成後にプロジェクトに登録する必要があります。 ① ① ファイルの新規作成と保存 PM plus の新規作成アイコン をクリックするか、「ファイル」メニューより「新規作成」をクリックして ください。新しいファイルがエディタによって開きます。 保存は保存アイコン をクリックするか、「ファイル」メニューより「名前を付けて保存」をクリックし、ファ イル名を指定して保存してください。アセンブラ言語のプログラムは拡張子「.asm」、C 言語のプログラム は拡張子「.c」を付けてください。 新規作成アイコン、保存アイコン

(33)

① ② ファイルのプロジェクトへの登録 作成したファイルや、あらかじめコピーしておいたファイルはプロジェクトに登録する必要があります。 「ProjectWindow」の「ソース・ファイル」を右クリックして「ソース・ファイルの追加」をクリックして 作成したソースファイルを登録します。 +をクリックすると登録されたファイル名、関数が表示されます 図3-12 PM plus : プロジェクトへの登録

(34)

■option.asm

78K0/Kx2 マイコンは、リセット解除後にフラッシュメモリの 0080H-0084H を読み出して、マイコン動作の基 本となる機能の初期設定を行います。この初期値を格納する領域を「オプション・バイト領域」といいます。オプ ション・バイト領域の参照の後にリセットベクタに設定されたアドレスからプログラムを実行します。 以下に各アドレスに設定される内容を示します。 ① ① 0080H ・低速内蔵発振器の動作 →「ソフトウェアにより停止可能」に設定します ・ウォッチドッグタイマのオーバーフロー時間の設定 →「オーバーフロー時間= 3.88ms」に設定します(ウォッチドッグタイマは停止設定のため関係ない) ・ウォッチドッグタイマのカウンタの動作の設定 →「ウォッチドッグタイマ動作=停止」に設定します ・ウォッチドッグタイマのウインドウ・オープン期間の設定 →「ウィンドウ・オープン時間= 25%」に設定します(ウォッチドッグタイマは停止設定のため関係ない) ① ② 0081H ・POC モードの選択 →「1.59V POC モード(デフォルト)」に設定します ① ③ 0082H-0083H ・予約領域(必ず 00H を設定してください) ① ④ 0084H ・オンチップデバッグ動作制御 →「オンチップデバッグ動作=動作禁止」に設定します

option.asm

(オプション・バイトの設定) OPT_SET CSEG AT 80H OPTION: DB 00000000B ; オプション・バイトの設定 ; |||||||| ; |||||||+--- 低速内蔵発振器はソフトウェアで停止可能 ; ||||+++--- ウォッチドッグタイマのオーバーフロー時間は 3.88ms ; |||+--- ウォッチドッグタイマのカウンタ動作禁止 ; |++--- ウォッチドッグタイマのウインドウオープン時間は 25% ; +---0 固定(予約領域) DB 00000000B ;POC モードの選択設定 ; |||||||| ; |||||||+---1.59V POC モード(デフォルト) ; +++++++---0 固定(予約領域) DB 00000000B ;00H 固定(予約領域) DB 00000000B ;00H 固定(予約領域) ONC_SET CSEG AT 84H ONCHIP: DB 00000000B ; オンチップデバッグ動作制御 ; |||||||| ; ||||||++--- 動作禁止 ; ++++++---0 固定(予約領域)

(35)

■initial.c

標準のスタートアップルーチンに合わせて、hdwinit 関数を作成します。ここではファイル名は initial.c とします。 hdwinit 関数ではメモリサイズの切り替え、クロック、ポート、タイマの設定を行います。 ① ① メモリサイズの切り替え 使用するマイコンに合わせて「メモリ・サイズ切り替えレジスタ(IMS)」と「内部拡張 RAM サイズ切り替 えレジスタ(IXS)」を設定します。使用するマイコンの ROM 容量と内部拡張 RAM 容量にしたがって設定 してください。(必ず IMS を設定したあとに、IXS を設定してください。) ① ② クロックの設定 メインシステムクロックを高速システムクロック回路の X1(外付けセラミック発振子)をプリスケーラに よる分周なし(20MHz)にする設定を行います。(78K0/Kx2 マイコンは、リセット解除後は高速内蔵発振 回路(8MHz TYP.)がメインシステムクロックとなります。) また、サブシステムクロックは XT1(外付け水晶発振子(32.768KHz))を使用する設定とします。 ① ③ ポートの設定 LED に接続するポートのレジスタに初期値を設定し、方向レジスタに出力ポートとする設定をします。 入出力ポートを出力に設定する前に、必ずポートのレジスタには所定の値を設定し、出力に設定したときに 不定な値がマイコンから出力されないようにします。 ① ④ タイマの設定 タイマは、16 ビットタイマ 00 を使って 200m 秒を計測することとします。タイマのソースクロックは、シ ステムクロックを 256 分周(78.125KHz:1 分周 =0.0000128 秒)したものを供給し、15625 回カウントして 200m 秒を計測することとします(0.2 ÷ 0.0000128 = 15625)。 また、タイマ割り込み機能は使用しないで、割り込み要求フラグを検知することで計測します。 タイマを開始する設定は、全ての初期設定の一番最後にします。(メインプログラム中で行ってもかまいま せん。)

(36)

initial.c

(初期化処理)-1 * ファイル名 :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

TMC003 TMC002 TMC001 OVF00 7 6 5 4 3 2 1 0 TMC00 略号 アドレス:FFBAH リセット時:00H R/W

(37)

initial.c

(初期化処理)-2 * 関数名 :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 をコンペアレジスタとして使用する */

(38)

■main.c

標準のスタートアップルーチンに合わせて、main 関数を作成します。main 関数では、タイマ 00 の割り込み要 求フラグ(TMIF000)を検知し、200m 秒を 5 回カウントして 1 秒ごとにポートの値を反転します。

main.c

(メイン関数)-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

(39)

main.c

(メイン関数)-2 * 関数名 :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 の出力を反転 */ }

(40)

■lk78k0.dr(リンク・ディレクティブ・ファイル)

PM plus でプロジェクトを作成し、C 言語のプログラムファイルを登録すると、デフォルトで RA78K0 アセン ブラ(リンカ)の -s オプション(スタック解決用シンボル作成)が設定されます。このオプションは、指定され た領域内でセグメントが配置されていない最大の RAM の空き領域をスタック領域とし、先頭アドレスのシンボル と最終アドレスのシンボルを生成します。 デフォルトの -s オプションの設定では、領域は省略されているので“RAM”という名称のメモリ領域(内蔵 RAM の全領域が含まれます)となり、プログラムで使用する変数の量によってスタック領域が変動することにな るので、定量のスタックを確保するための設定をしておきます。 スタック領域のための領域の名前は任意ですが、ここでは「STACK」とし 256 バイト確保することとします。 ※ デバッガをご利用になられる場合は、デバッガ用の領域を別途確保する必要があります。詳細は「NEC エレクトロニクス社製 オンチップ・デバッグ・エミュレータ MINICUBE2」の情報をご確認ください。 (ReferSTAR78K ではオンチップ・デバッグは未対応のためご注意ください) ① ① リンク・ディレクティブ・ファイルの作成とリンカオプションによる指定 リンク時にセグメント再配置の指定をするファイル「リンク・ディレクティブ・ファイル」を指定することで、 任意の名前で領域を確保することができます。リンク・ディレクティブ・ファイルのファイル名は任意です が、拡張子「.dr」を付けてください。 以下にリンク・ディレクティブファイルの記述例とリンカへの指定方法を示します。

lk78k0.dr

(リンク・ディレクティブの設定)

memory RAM : (0FC00H,300H) ;RAM は SFR 領域 (FEE0h-FFFFh) も含む FFFFh まで確保する必要があります memory STACK : (0FB00H,100H) ; スタック領域として 256Byte を確保

デフォルトでは、FFFFH∼FB00Hが“RAM”という領域に設定されています 内蔵RAMに他の領域を設定する場合は“RAM”領域も改めて設定しなおす必要があります リスト3-7 : リンク・ディレクティブ・ファイルの設定 以下に割り当てあられるメモリ領域を示します。 SFR(256Byte) 汎用レジスタ スタック領域 STACK(256Byte) RAM(768Byte) 内蔵RAM FFFFH FF00H FEFFH FC00H 0000H 003FH 0040H 007FH 0080H 0084H 0085H 7FFFH 8000H BFFFH FBFFH FB00H 内蔵フラッシュメモリ プログラム領域 プログラム領域 (メモリバンク0∼5) オプション・バイト領域 CALLTテーブル領域 ベクターテーブル領域

(41)

PM plus の「ツール」メニューより「リンカオプションの設定」をクリックして「リンカオプションの設定」ウィ ンドウの「その他」タブをクリックします。「ディレクティブ・ファイル」欄の右の「参照」ボタンをクリッ クして作成したリンク・ディレクティブ・ファイルを指定してください。

(42)

① ② -s オプションの領域指定の追加 プロジェクトにデフォルトで設定されている -s オプションに、リンク・ディレクティブ・ファイルで確保し た領域「STACK」の指定を追加します。 「リンカオプションの設定」ウィンドウの「その他」の設定の、「スタック解決用シンボルの生成 [-s]」横の「領 域名」欄に「STACK」を設定してください。 ※ RA78K0 リンカの仕様により、スタック解決用シンボルには偶数アドレスが設定されます。スタック領域 を奇数から開始するように FB01H ~ FC00H と設定した場合、@STEND は FB02H、@STBEG は FC00H (FC00H+1 = FC01H とならない)となります。シンボルの確認については P46 のコラム「シンボルに割り 当てられたアドレスの確認」を参照してください。 コマンドラインオプション欄に 反映されます 図3-15 PM plus : -sオプション領域の指定

(43)

3.5 プロジェクトのビルド

作成したファイルがプロジェクトに登録されていることを確認してビルドをします。「ビルド」アイコンをクリッ クしてください。 「リビルド」は全てのソースファイルを コンパイル、アセンブル、リンクします 登録したソースファイル 「ビルド」は変更のあったソースファイル のみをコンパイル、アセンブル、リンクします 図3-16 PM plus : プロジェクトのビルド

シンボルに割り当てられたアドレスの確認

ビルド(オブジェクト・コンバータ)で生成されたシンボル・テーブル・ファイル「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

a.sym

(生成されたシンボル・テーブル・ファイル) ※一部抜粋

(44)

78K0/Kx2マイコンのリンク・ディレクティブ

リンク・ディレクティブとは、プログラムのメモリ配置において、デフォルトの設定からの変更の指示(ディレクティブ)をリ ンカに与えることをいいます。 RA78K0 リンカは、アセンブラ、コンパイラが生成するセグメント(コンパイラではセクションと呼びます)を、メモリ領域情 報とセグメント・タイプにしたがってメモリに配置しています。 メモリ領域はデフォルトで FFFFH ~ FB00H が「RAM」、BFFFH ~ 0000H が「ROM」という名称になります。セグメント・ タイプはデフォルトで以下のようになります。(下図参照) FFFFH FEFFH FE20H FF00H E000H FB00H 7FFFH 8000H BFFFH C000H 0000H F7FFH saddr 領域 フラッシュメモリ (32KByte) ROM BANK0∼5 IXRAM フラッシュメモリ バンク0∼5 (16KByte×6) 内部拡張RAM (6KByte) SFR 内部高速RAM (1KByte) RAM デフォルトの メモリ領域名 78K0/Kx2マイコン (μPD78F0537)のメモリ リンカの管理するメモリ領域、セグメント・タイプ

saddr領域 : short direct addressing領域 BSEG : ビット・セグメント DSEG : データセグメント CSEG : コードセグメント デフォルトの セグメント・タイプ アセンブラが生成する セグメント コンパイラが生成する セクション CSEG DSEG BSEG ?DSEG ?CSEG DSEGIX CSEGIX @@INIT @@DATA リンカが各セグメント、セクション の割り当てられているメモリ領域、 セグメント・タイプにしたがって 配置する メモリ・ディレクティブ、セグメント配置ディレクティブ リンク・ディレクティブには、メモリ・ディレクティブ、セグメント配置ディレクティブがあります。各ディレクティブを記述 するファイルは拡張子に「.dr」を付け、リンカオプション「-d」でファイル名を指定します。 <メモリ・ディレクティブ> メモリ・ディレクティブとは、メモリ領域の変更を指示するディレクティブです。デフォルトの「ROM」、「RAM」領域に加えて、 新しい領域を確保する場合は、新しい領域を引いた「ROM」、「RAM」領域を改めて設定する必要があります。アセンブラ、コン パイラが生成する各セグメントは、デフォルトで「ROM」、「RAM」メモリ領域内の、該当するセグメント・タイプが設定されて いるアドレスに配置されるからです。新しく設定したメモリ領域にセグメントを配置したい場合は、セグメント配置ディレクティ ブで設定する必要があります。セグメント配置ディレクティブを設定しない場合は、セグメントはなにも配置されません。 <セグメント配置ディレクティブ> セグメント配置ディレクティブとは、セグメントの配置情報の変更を指示するディレクティブです。デフォルトでは、アセンブ ラ、コンパイラが生成するセグメント(コンパイラの場合はセクション)は、「ROM」、「RAM」メモリ領域内の各セグメント・

(45)

アセンブラ、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

option.asm による設定

lk78k0.dr による設定

(46)

4. プログラムをうごかそう

プログラムを動作させる場合は、フラッシュ・プログラム・ソフトウェア「WriteEZ3」で評価ボードに書き込 みます。 ReferSTAR 78K/Kx2 とホスト PC を USB ケーブルで接続し、電源を投入してください。設定スイッチを下図 のように設定してリセットスイッチを押してください。 ホストPC

ReferSTAR 78K/Kx2(CT-781) FLASH WRITER側に設定

FLASH WRITER UART USB

図4-1 評価ボードの設定(プログラムの書き込み)

PM plus よりフラッシュ・プログラム・ソフトウェア「WriteEZ3」を起動してください。

(47)

WriteEZ3 が起動したら、COM ポート、書き込むファイルの設定を行います。 COM ポートの設定は、WriteEZ3 インストール後最初の書き込み時と、ホスト PC での割り当てが変更され た場合に必要です。(一般にホスト PC の前回と異なる USB コネクタと ReferSTAR 78K/Kx2 を接続した場合に COM ポートの割り当てが変更されます。) 書き込むファイルは、ファイルが更新されるたびに設定が必要です。 ボタンか、「Device」メニューより「Setup」をクリックしてください。 図4-3 WriteEZ3 : Setup

(48)

■ ● COM ポートの設定■ 現在割り当てられている COM ポートを調べて設定します。以下の手順で現在ホスト PC に割り当てられて いる COM ポートを確認してください。(ホスト PC と ReferSTAR 78K/Kx2 が接続されている状態で行っ てください。) ① Windows の「マイ コンピュータ」を右クリックし、「プロパティ」をクリックしてください。 ② 「システムのプロパティ」ウィンドウの「ハードウェア」タブをクリックし、「デバイスマネージャ」をクリッ クします。 ③ 一覧より「ポート(COM と LPT)」の「+」マークをクリックすると、現在仮想 COM ドライバに割り当 てられている COM ポートの番号が確認できます。(下図の場合は COM5 となります。)

COMポート番号 クリック クリック クリック クリック 右クリック

(49)

WriteEZ3 の Setup 画面で確認した COM ポート番号を設定します。「Host Connection」の「Port」で割り 当てられている COM ポートを設定してください。 選択 図4-5 WriteEZ3 : COMポート番号の設定 ■ ● 書き込むファイルの設定 書き込むファイルを設定します。「Load」ボタン か、「File」メニューの「Load」をクリックし、プロジェ クトフォルダ以下の HEX 形式オブジェクトファイル「a.hex」を指定します。(PM puls の「オブジェクト モジュールコンバータの設定」で指定したファイル名となります。何も指定しない場合は「a.hex」です。)

(50)

設定内容はメインウィンドウの右側に表示されます。 書き込むファイルの設定※ ※書き込むファイルはビルドするたびに再設定する必要があります。 COMポート番号の設定 ここをクリックしても書き込むファイルの指定ができます 図4-7 WriteEZ3 : 設定内容の表示

(51)

ReferSTAR 78K/Kx2 に電源が入っていることを確認して、Autoprocedure ボタン か、「Device」メニュー の「Autoprocedure(EPV)」をクリックしてください。消去(Erase)→書き込み(Program)→ベリファイ(Verify) の順で行われます。 ここをクリックしても書き込みが開始されます 書き込み終了 ベリファイ成功 図4-8 WriteEZ3 : プログラムの書き込み 評価ボード上のスイッチを以下のように設定し、リセットスイッチを押してください。2 つの LED が交互に点 滅するのを確認してください。 ホストPC

FLASH WRITER UART USB

参照

関連したドキュメント

その後、時計の MODE ボタン(C)を約 2 秒間 押し続けて時刻モードにしてから、時計の CONNECT ボタン(D)を約 2 秒間押し続けて

本学級の児童は,89%の児童が「外国 語活動が好きだ」と回答しており,多く

問題集については P28 をご参照ください。 (P28 以外は発行されておりませんので、ご了承く ださい。)

本人が作成してください。なお、記載内容は指定の枠内に必ず収めてください。ま

サンプル 入力列 A、B、C、D のいずれかに指定した値「東京」が含まれている場合、「含む判定」フラグに True を

① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.

該当お船積みの Invoice company のみが閲覧可能と なります。Booking 時に Invoice company をご指定くだ さい。ご指定ない場合は、自動的に Booking Party =

この P 1 P 2 を抵抗板の動きにより測定し、その動きをマグネットを通して指針の動きにし、流