16
2018 Microchip Technology Inc. DS00002721A_JP-p.1 AN2721 デュアルコアの概要 dsPIC33CファミリはMicrochip社初のデュアルコア デバイス です。 dsPIC33C ファミリは高性能16 ビットMCUアーキテク チャを採用し、豊富なデジタルシグナル プロセッサ(DSP) 能を提供します。 マスタコアとスレーブコアは互いに独立して動作できます。 また、アプリケーション開発時も別々にプログラム、デバッ グできます。両方のプロセッサ ( マスタコアとスレーブコア) サブシステムにはそれぞれ専用の割り込みコントローラ、ク ロック ジェネレータ、デバッグサポート、ポートロジック、 I/O MUXPPS を備えています。本ファミリのデバイスはシン グルダイ上に別々の2 つのdsPIC ® DSCがあるのと同じです。 本書の内容はシングルコアの dsPIC デバイスコード開発知識 を前提としています。本書では Microchip MPLAB ® X IDE 使ったデュアルコア環境のコード開発とデバッグについて説 明します。本書では各種デバッグ機能を紹介すると共に、そ れらのデバッグモードに移行するためのツールの使い方につ いて説明します。 1にデュアルコアの実装方法、各コアが備える周辺モジュー ル、RAM、プログラムメモリ等を示します。 1: デュアルコア アーキテクチャ 著者: Naveen Raj Microchip Technology Inc. PAD OWNERSHIP MUX Peripheral Pin Select I 2 C SPI UART SCCP QEI etc. PWM ADC CMP Peripheral Bus Memory Bus Master dsPIC ® Core PLL + Clock Generator PWM ADC CMP I 2 C SPI UART SCCP QEI etc. Peripheral Pin Select Peripheral Pin Select PGA Memory Bus Peripheral Bus Mailboxes M S FIFO M S FIFO PLL + Clock Generator Slave dsPIC Core Data RAM DMA Flash FRC OSC, etc. PRAM DMA Data RAM デュアルコアの使い方

Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721デュアルコアの使い方

デュアルコアの概要

dsPIC33CファミリはMicrochip社初のデュアルコア デバイス

です。dsPIC33Cファミリは高性能16ビットMCUアーキテク

チャを採用し、豊富なデジタルシグナル プロセッサ (DSP)機能を提供します。

マスタコアとスレーブコアは互いに独立して動作できます。

また、アプリケーション開発時も別々にプログラム、デバッ

グできます。両方のプロセッサ (マスタコアとスレーブコア )

サブシステムにはそれぞれ専用の割り込みコントローラ、ク

ロック ジェネレータ、デバッグサポート、ポートロジック、

I/O MUX、PPSを備えています。本ファミリのデバイスはシン

グルダイ上に別々の2つのdsPIC® DSCがあるのと同じです。

本書の内容はシングルコアのdsPICデバイスコード開発知識

を前提としています。本書では Microchip MPLAB® X IDE を

使ったデュアルコア環境のコード開発とデバッグについて説

明します。本書では各種デバッグ機能を紹介すると共に、そ

れらのデバッグモードに移行するためのツールの使い方につ

いて説明します。

図 1にデュアルコアの実装方法、各コアが備える周辺モジュー

ル、RAM、プログラムメモリ等を示します。

図1: デュアルコア アーキテクチャ

著者 : Naveen RajMicrochip Technology Inc.

PAD OWNERSHIP MUX

Perip

hera

l Pin

Sel

ect

I2C

SPI

UART

SCCP

QEI

etc.

PWM

ADC

CMP

Perip

hera

l Bus

Memory Bus

MasterdsPIC® Core

PLL + ClockGenerator

PWM

ADC

CMP

I2CSPI

UART

SCCP

QEI

etc.

Peripheral Pin SelectPeripheral Pin Select

PGA

Memory Bus

Peripheral Bus

Mailboxes

M SFIFOM SFIFO

PLL + ClockGenerator

SlavedsPIC Core

DataRAM DMA Flash

FRCOSC,etc.

PRAM DMA DataRAM

2018 Microchip Technology Inc. DS00002721A_JP-p.1

Page 2: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

プログラムメモリ

マスタコアとスレーブコアはそれぞれ専用のプログラムメモ

リを備えています。dsPIC33CH の実装では、マスタ プログ

ラムメモリはフラッシュ、スレーブ プログラムメモリはPRAMです。アプリケーションでは、マスタコアとスレーブコアの

コードは 1 つの hex ファイルとして保存されます。この hexファイルはマスタフラッシュに格納します。

POR時、マスタはフラッシュからスレーブPRAMにスレーブ

コードを転送します。電源喪失時、スレーブPRAMの内容は

失われるためマスタは電源投入のたびにマスタフラッシュ

からスレーブPRAMにスレーブコードを転送する必要があり

ます。リセット時のコアの挙動はコンフィグレーション ビッ

トS1MSREとS1SSREで決まります。詳細はデバイスのデー

タシートを参照してください。

スレーブコードをフラッシュからPRAMに転送するプロセス

はソフトウェアで実行します。従って、転送開始時期はマス

タコアが制御します。マスタコアによるスレーブへのコード

転送後、スレーブコアを有効にするタイミングも制御します。

これもマスタ ソフトウェアの一部であるため、マスタ ソフ

トウェアがスレーブコアを有効にする時期 (SLVEN = 1)を決

定できます。

図2: マスタコアからのスレーブコアへのコードの転送

Note: 本書では、マスタとスレーブはそれぞれマス

タコアとスレーブコアを指しています。

Master Programmed with One Hex File (Includes

Master and Slave Code)

POR Event and Configuration Bits are

Loaded

Master Starts Executing Code

After Initializing Master, Loads Slave PRAM

After the Code Transfer to PRAM, Master will

Enable the Slave

Slave Starts Executing Code (Both Master and Slave Core Running)

Slave Code

Slave PRAM

Master Code

Master Code to TransferSlave Code to PRAM

Slave Code

Master Flash

Single Hex File(Master + Slave)

DS00002721A_JP-p.2 2018 Microchip Technology Inc.

Page 3: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

データRAMマスタコアとスレーブコアはそれぞれ専用のデータRAMを備

えています。RAM のサイズはデバイスによって異なります。

各コアのRAMサイズは、各デバイスのデータシートを確認し

てください。

オシレータ

オシレータには 2 つのコアで共有しているモジュールと別々

のモジュールがあります。FRC、BFRC(バックアップFRC)、LPRC、プライマリ オシレータは2つのコアで共有しています。

図3: デュアルコアのオシレータ リソースの割り当て

各コアはそれぞれ専用のクロック マルチプレクサ、分周器、

PLL、APLLモジュールを備えています。クロック選択には複

数の方法があり、マスタコアとスレーブコアは必要に応じて

異なるクロック源、異なる周波数で動作できます。

コンフィグレーション ビット

コンフィグレーション ビットはマスタフラッシュの一部です。

マスタコアとスレーブコアのコンフィグレーション ビットは

両方ともマスタフラッシュに格納されています。従ってPOR時、コンフィグレーション ビットはマスタフラッシュから読

み込みます。

MSIモジュール

マスタスレーブ インターフェイス(MSI)はデュアルコア アー

キテクチャの肝要な部分です。マスタコアとスレーブコアは

MSI モジュールを使ってコア間でデータを転送します。MSIモジュールはDMAと連係できるため、コア間のデータ転送で

CPUの介入は最小限で済みます。

また、MSI モジュールには他方のコアへの割り込みおよびリ

セット状態の監視に使える機能もあります。スレーブコアを

有効にするマスタコアの機能もMSIの一部です。

I/OポートとPPSI/Oポートはマスタコアとスレーブコアで共有されています。

I/Oポートの入力機能はマスタコアとスレーブコアの両方で使

われます。出力は、ピンの所有権をマスタコアまたはスレー

ブコアに渡して制御します。出力ピンの所有権はコンフィグ

レーション ビットで制御します。コンフィグレーション ビッ

トを正しく割り当てる事で、I/Oポートの出力を割り当てるコ

アを完全に制御できます。

マスタコアとスレーブコアはそれぞれ専用のペリフェラル

ピンセレクト (PPS) モジュールを備えており、それらのモ

ジュールに割り当てるピンはマスタコアとスレーブコアがそ

れぞれソフトウェアで制御します。

BFRC8 MHz

FRC8 MHz

POSC

LPRC32 kHz

Master Core ClockSelection and

PLL/DIVSubsystem

Slave Core ClockSelection and

PLL/DIVSubsystem

TUN<5:0>

OSCO

OSCI

BFRCCLK

FRCCLK

POSCCLK

LPRCCLK

Master FCY

Master FP

Master FOSC

Master VCO OutputsMaster APLL and

Master REFCLKOAVCO Outputs

Slave FCY

Slave FP

Slave FOSC

Slave VCO OutputsSlave APLL and

Slave REFCLKOAVCO Outputs

LPRCCLKPOSCCLK

FRCCLKBFRCCLK

2018 Microchip Technology Inc. DS00002721A_JP-p.3

Page 4: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

デュアルコアのプログラミングとデバッグ

デュアルコアは、コード開発時にデバイスのプログラミング

とデバッグに便利な機能をいくつか備えています。このセク

ションでは各種プログラミング モードとデバッグについて説

明します。

デバッグとプログラミングには以下のモードがあります。

1. マスタコアのみのモード : プログラミングとデバッグ

2. スレーブコアのみのモード : プログラミングとデバッグ

3. デュアルデバッグ : 両コアを同時にデバッグする

4. ノーマルモード : マスタコアがスレーブコアをプログラ

ムする(最終量産コード )

これらの動作モードをサポートしているため、開発フェイズ

を柔軟に進められます。一番の利点は、コアごとに開発を進

められる事です。従って、マスタ プロジェクトとスレーブ プロジェクトで独立したチームを持てます(表 1)。

表1: デバッグ/プログラミングの動作モード

モード マスタコア スレーブコアMCLRピン PGC/PGDピン

ツール数マスタ スレーブ マスタ スレーブ

マスタコア

のみ (1)プログラミング /

デバッグ

N/A MCLR N/A PGC1/PGD1、PGC2/PGD2、

PGC3/PGD3のいずれか

N/A 1

スレーブコア

のみ (1)スタブのプログ

ラミング (2)プログラミング /

デバッグ

MCLR MCLR PGC1/PGD1、PGC2/PGD2、

PGC3/PGD3のいずれか

PGC1/PGD1、PGC2/PGD2、

PGC3/PGD3のいずれか

1

デュアル

デバッグ

デバッグ デバッグ MCLR S1MCLR1、S1MCLR2、

S1MCLR3のいずれか

PGC1/PGD1、PGC2/PGD2、

PGC3/PGD3のいずれか

S1PGC1/S1PGD1、S1PGC2/S1PGD2、

S1PGC3/S1PGD3のいずれか (3)

2

ノーマル

モード

プログラミング /デバッグ (4)

プログラミング

のみ

MCLR PGC1/PGD1、PGC2/PGD2、

PGC3/PGD3のいずれか

1

Note 1: プログラミングまたはデバッグ。

2: マスタスタブは小さなコードでもマスタ プロジェクト全体でもかまいません。マスタコアでスタブが必要な主な理由はコンフィグ

レーション ビットをプログラムするためです。スレーブコアとマスタコアのコンフィグレーション ビットはマスタフラッシュに格納

します。

3: S1MCLRxおよびS1PGCx/S1PGDxピンはマスタコアとスレーブコアを同時にデバッグする場合 (デュアルデバッグ モード )にのみ使い

ます。

4: 最終量産モードでは、スレーブのhexコードはマスタフラッシュに格納し、マスタコードがスレーブコードを書き込みます。マスタは

スレーブをプログラムしてからスレーブコアを有効にします。

DS00002721A_JP-p.4 2018 Microchip Technology Inc.

Page 5: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

マスタコアのみのモード

マスタコアのみのプログラミングとデバッグ

このモードはシングルコアのdsPICデバイスのプログラミン

グと同じです。スレーブコードを無視してプロジェクトを作

成、デバッグできます。I/O ポートの所有権とその他マスタ

コードの実行に必要なコンフィグレーション ビットを割り当

てます。マスタコアのみのモードの実行にはスレーブ プロ

ジェクトまたはスレーブコードは不要です。

デバイスは (ICSP™) MCLR ピンを使ってプログラムし、

PGCx/PGDxピンはコンフィグレーション ビットを使って選

択します。

同じファミリのデバイス、例えばdsPIC33CH128MP508を選

択して新しいプロジェクトを作成します。このプロジェクト

は、他のMicrochip 社製シングルコア デバイスと同じように

コンパイル、プログラミング、デバッグできます。

スレーブのみのモード

これらのモードはデュアルコア機能を使います。これらのモー

ドではマスタコアをプログラムする必要があります。マスタ

コードは完全なマスタコードでも、"while(1)"を持つ小さ

なマスタコード (マスタスタブ )でもかまいません。

マスタコードまたはマスタスタブは、マスタコアを小さなコー

ドでプログラムする事が目的であり、これにスレーブコアを

有効にするためのコードが含めます。スレーブコアはコード

SLVEN = 1で有効にします。また、スレーブコアを有効に

するために必要なロック解除シーケンスもあります。詳細は

各デバイスのデータシートを参照してください。

XC16はロック解除シーケンスを含む関数を備えています。

スレーブコアを有効にするには、

"#include <libpic30.h>"をインクルードし、関数

"_start_slave();"を使う事を推奨します。

また、コンフィグレーション ビットはマスタフラッシュに保

存されるため、マスタスタブはマスタコアとスレーブコアの

コンフィグレーション ビットも格納します。

図4: スレーブのみのプログラミング/デバッグ

Master StubProgrammed in Master

Flash first

Then Program or Debugthe Slave Directlyin Slave PRAM

dsPIC33CH128MP508 or dsPIC33CH128MP508S1

Master Stub (Flash)

dsPIC33CH128MP508

Slave Code (PRAM)

dsPIC33CH128MP508S1

2018 Microchip Technology Inc. DS00002721A_JP-p.5

Page 6: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

スレーブのみのプログラミング

シングルコア デバイスのようにマスタ プロジェクトを作成

し、以下の手順を実行します。

1. マスタデバイスを選択してマスタスタブのプロジェクト

を作成します。

2. [Slave]フォルダに移動し、右クリックして [Project Property]ウィンドウを開きます。

3. [Debug]のチェックを外します (スレーブコアはデバッグ

しないため )。 4. マスタスタブ コードでマスタコードをプログラムします。

スレーブ プロジェクトの作成

マスタ プロジェクトをプログラムしたらスレーブのプロジェ

クトを新しく始めます。次に以下の手順を実行します。

1. スレーブデバイスを選択します ( スレーブ プロジェクト

はマスタ プロジェクトのスレーブデバイスとします )。例えば、選択しているマスタ プロジェクトが

dsPIC33CH128MP508 の場合、選択するスレーブ プロ

ジェクトは dsPIC33CH128MP508S1 です。マスタスタ

ブ プロジェクトがdsPIC33CH64MP508の場合、選択す

るスレーブ プロジェクトは dsPIC33CH64MP508S1 で

す。

例えば、以下に示すように新しいスレーブ プロジェク

トのSlaveOnlyPが選択されている場合、スレーブを右

クリックしてスレーブを [Main Project]に設定します。

2. スレーブのプログラミングを直接開始します。

Note: マスタスタブはスレーブ プロジェクトの前に

プログラムする必要があります。マスタスタ

ブの前にスレーブをプログラムしないでくだ

さい。

マスタとスレーブは同じ ICSP™ピン (PGCx/PGDx)を使ってプログラムできます。

DS00002721A_JP-p.6 2018 Microchip Technology Inc.

Page 7: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

スレーブのみのデバッグ

このモードでは、「スレーブのみのプログラミング」で説明

したように最初にマスタスタブをプログラムする必要があり

ます。主な違いは [Debug]チェックボックスの選択です。

マスタスタブの [Slave]フォルダに移動し、右クリックして以

下のウィンドウを表示します。

ウィンドウが表示されたら、[Debug] チェックボックスをク

リックしてデバッグビットを有効にします。これでスレーブ

コアをデバッグできる状態になります。

マスタコードには以下の2つの方法があります。

• SLVEN = 1 ("_start_slave();")でスレーブを有効

にする。これでスレーブコアは有効になります。

• コンフィグレーション ビットS1ISOLAT (S1ISOLAT = ON)を使ってスレーブをマスタコードから分離する。こ

れにより、スレーブはマスタコードから 分離されるため、 SLVEN = 1でも0でも有効にできます。S1ISOLATビット

はスレーブデバッグ中のみ使えます。

スレーブ プロジェクトの作成

マスタスタブ プロジェクトをプログラムできたら、スレーブ

コアのプロジェクトを開始します。スレーブデバイスを選択

します。スレーブ プロジェクトはマスタ プロジェクトのス

レーブデバイスです。

マスタスタブ プロジェクトのプログラミングと同じICSPピン

(MCLRとPGCx/PGDx)をスレーブ プロジェクトのプログラ

ミングにも使います。プロジェクトによっては、マスタとス

レーブコアの切り換えに ICSP/MCLR ピンをツールで使い

ます。

プロジェクトを作成してスレーブコードをコンパイルしたら、

他のプロジェクトのように[Debug] ボタンをクリックし

てデバッグできます。

2018 Microchip Technology Inc. DS00002721A_JP-p.7

Page 8: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

デュアルデバッグ モード

このモードではマスタコアとスレーブコアの両方がデバッグ

モードで動作します。マスタとスレーブは同時にデバッグさ

れ、2つのデバッグツールが必要です (図 5)。

S1MCLRx/S1PGCx/S1PGDx はスレーブ プロジェクトをデ

バッグするためにデュアルデバッグ モードでのみ使います。

図5: デュアルデバッグ

Dual Core

Master Connectsto MCLR andPGCx/PGDx

Slave Connectsto S1MCLRx andS1PGCx/S1PGDx

Target Board

Dual CoreDevice

Power

DS00002721A_JP-p.8 2018 Microchip Technology Inc.

Page 9: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

マスタとスレーブを同時にデバッグする方法は2つあります。

• 1つのMPLAB X IDEウィンドウを使う

• マスタとスレーブで別々の、合計2つのMPLAB X IDEウィンドウを使う

1つのウィンドウによるデュアルデバッグ

以下の手順でマスタ プロジェクトを作成します。

1. [Slaves]サブフォルダを右クリックします。

2. スレーブの [Debug] チェックボックスを選択し、デバッ

グビットを有効にします。

3. スレーブとマスタのどちらもメイン プロジェクトに設

定されていない事を確認します。マスタまたはスレーブ プロジェクトがメイン プロジェクトに選択されている

場合、該当するプロジェクトを右クリックして [Unset as the Main Project]をクリックします。

4. マスタ プロジェクトをハイライトします。

5. [Debug] ボタンを押してマスタ プロジェクトを

デバッグします。

6. マスタのデバッグを開始したら、[Windows]、[Debugging]の順に移動して [Sessions]を選択します。

[Sessions]ウィンドウが表示され、マスタが [Running]表示となります。

7. スレーブコアにスレーブ プロジェクトを作成し、その

スレーブ プロジェクトをクリックしてハイライトします。

8. プロジェクトのプロパティを選択し、スレーブをデバッ

グするための2つ目のツールを選択します(以下の例でマ

スタコア用は ICD 3、スレーブコア用はREAL ICE™)。

9. 適用して、[Debug] ボタンをクリックします。

10. スレーブコアのデバッグが始まったら、[Windows]、[Debugging]の順に移動して [Sessions]をクリックし

ます。

これで [Sessions]ウィンドウが開き、以下に示すように

マスタコアとスレーブコアが[Running]と表示されます。

11. マスタまたはスレーブのセッションをダブルクリック

して、上部のウィンドウをハイライトします。その

セッションで使える全てのツールボタンがハイライト

されます。

Note: マスタコードにはスレーブの実行を有効にす

るコードがあるはずです (SLVEN = 1)。ない場

合、S1ISOLATビットをONにします。

2018 Microchip Technology Inc. DS00002721A_JP-p.9

Page 10: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

複数のMPLAB X IDEウィンドウによるデュアル

デバッグ

ハードウェアの接続は、先に説明したウィンドウが 1 つの場

合と同じです。唯一の違いは、マスタコアとスレーブコアを

それぞれ別のMPLAB X IDEウィンドウに表示する点です。

図6: 複数のMPLAB® X IDEウィンドウ

Master Connectsto MCLR andPGCx/PGDx

Slave Connectsto S1MCLRx andS1PGCx/S1PGDx

Power

Target Board

Dual CoreDevice

DS00002721A_JP-p.10 2018 Microchip Technology Inc.

Page 11: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

以下の手順で、2つのMPLAB X IDEウィンドウでデュアルデ

バッグ プロジェクトを作成します。

1. マスタコアのデバッグ プロジェクトを作成します。

スレーブコアのデバッグを有効にします。

2. MPLAB X IDEアイコンを右クリックして [Properties]を選択します。

3. [Target location]に移動し、"...\mplab_ide_.exe"の後に

‘< - -userdir> <スレーブ プロジェクトのパス>’を追加

します。これで、スレーブ プロジェクトを作成するパ

スを指定しました。

4. MPLAB アイコンをダブルクリックし、新しいスレーブ

プロジェクトを作成します。スレーブ プロジェクト用

の新しいMPLAB X IDEウィンドウが表示されます。2つ目のデバッグ ツールを使ってスレーブコアをデバッグ

します。

デュアルデバッグ モードのブレークポイント

デュアルコアのデバッグモードの重要な特長の 1 つに、クロ

スコア ブレークポイントとクロスコア割り込みの作成があり

ます。デュアルコア デバイスはクロスコア ブレークポイン

トに関連する機能を複数備えています。

ブレークポイントでユーザは以下を選択できます。

• もう一方のコアを停止させる

• もう一方のコアに割り込む

• もう一方のコアを停止させて割り込む

以下の手順を実行してクロスコア ブレークポイントを設定し

ます。

1. [Debug]メニューを選択し、[New Breakpoint]をクリッ

クします。

2. [New Breakpoint]ウィンドウが開きます。

3. ブレークポイントのタイプで [Address]を選択し、ブレー

クポイントを設定するプロジェクトを選択します。マス

タ プロジェクトとスレーブ プロジェクトのどちらを停

止するかはここで設定できます。

4. コードを停止させるアドレスを選択します。この例では

マスタ プロジェクトをアドレス"0x360"で停止するよう

に設定し、クロスコア オプションを設定します。

メイン プロジェクトはマスタデバッグのため、停止または割

り込むクロスコアはスレーブです。

[Cross Core Options]で表示される以下のいずれかを選択し

ます。

• Break other cores: マスタがアドレス0x360に達すると

スレーブも停止します。

• Interrupt other cores: マスタコードが0x360に達して停

止すると、スレーブは割り込み (MSTBRKIF)を受信しま

す。

• Break and interrupt the other core: マスタがアドレス

0x360に達して停止するとスレーブも停止します

(MSTBRKIF割り込みフラグもセット )。

例えば [Break other cores]を選択した場合、マスタが0x360で停止するとスレーブも停止します。

0x360

2018 Microchip Technology Inc. DS00002721A_JP-p.11

Page 12: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

ノーマルモード (マスタコアでスレーブ

コアをプログラムする ― 最終量産コード )このノーマルモードが最終量産コードです。スレーブコード

はマスタコアに格納します。起動中、マスタコアはスレーブ

コアにコードを転送する必要があります。

スレーブ プロジェクトはマスタ プロジェクトにリンクされ

ており、マスタ プロジェクトをビルドするとスレーブ プロ

ジェクトも同時にビルドされます。スレーブコードはその後、

マスタコードと一緒にマスタフラッシュに格納されます。マ

スタコードの実行中、マスタはスレーブコードをマスタフラッ

シュからスレーブPRAMに転送します (図 7)。

図7: ノーマルモード (マスタとスレーブで1つのHEXファイル)

Slave Code

Slave PRAM

Master Code

Master Code to TransferSlave Code to PRAM

Slave Code

Master Programmed with One Hex File

Master Flash

Slave Starts Executing Code

Master Starts Executing Code

After Initialization, the MasterLoads the Slave PRAM

After Loading the Slave PRAM,Slave is Enabled (SLVEN = 1)

POR Event and ConfigurationBits are Loaded

DS00002721A_JP-p.12 2018 Microchip Technology Inc.

Page 13: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

ノーマルモード プロジェクトの作成

1. マスタ プロジェクト (Master) とスレーブ プロジェクト

(Slav)を作成します。 2. Masterの下の [Slaves]フォルダを右クリックします。

3. 以下に示すようにスレーブ プロジェクトを追加します。

4. スレーブ プロジェクトをマスタ プロジェクトに追加し

たら、右クリックして [Properties]を開きます。スレー

ブコードを追加してマスタ プロジェクトに並べると、ア

クティブなプロジェクトは1つだけになります。マスタ

プロジェクトをコンパイルするとスレーブ プロジェク

トもコンパイルされます。

プロジェクトをビルドされるたびに、マスタまたはス

レーブのソースコードに変更があるとコンパイルされて

hexファイルが作成されます。デバイスをプログラムし

た時に生成されてマスタフラッシュに格納される hexファイルは1つだけです。

スレーブイメージ オプション

スレーブイメージの位置

スレーブ プロジェクトをマスタ プロジェクトにリンクする

際、MPLAB X IDEではスレーブイメージのアドレスを選択す

る事もできます。これはスレーブコードをマスタフラッシュ

の特定のアドレスに格納する必要がある場合にのみ行います。

アドレスを空白のままにすると、スレーブイメージを格納す

るアドレスはコンパイラが判断します。

以下にスレーブイメージを0x1000に割り当てる例を示します。

0x1000と設定すると、スレーブイメージはマスタコアの

0x1000に格納されます (可能な場合 )。

Note: MPLAB X IDEプロジェクトのプロパティで、

[Debug]のチェックは外しておきます。このプ

ロジェクトではマスタ プロジェクトをビルド

するとスレーブとマスタがビルドされます。

マスタフラッシュにプログラムするhexファ

イルは1つだけです。

この動作モードでは、マスタはデバッグモー

ドで実行できますが、スレーブはデバッグ

モードで実行できません。マスタコアが停止

した場合、またはシングルステップで実行し

ている場合、スレーブコアはスレーブコード

が転送されており有効である限り実行を継続

します。

2018 Microchip Technology Inc. DS00002721A_JP-p.13

Page 14: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

AN2721

複数のスレーブイメージ

マスタフラッシュに複数のスレーブイメージを格納

する

必要な場合、スレーブイメージの位置を設定できる機能を使っ

て複数のスレーブコード イメージを格納できます。これによ

り、必要なスレーブイメージを書き込んでスレーブコードを

切り換えられます。

[Slave]フォルダにはスレーブ プロジェクトの複数のイメージ

を追加できます。例えば、以下に示すように 2 つのスレーブ

プロジェクトがあるとします。

マスタ プロジェクトをビルドする時に両方のスレーブ プロ

ジェクトをビルドできます。

スレーブに書き込むプロジェクト イメージはマスタ プロジェ

クトで選択できます。

condition1に基づいてマスタはスレーブPRAMに書き込みます

(SlavまたはSlav1イメージ )。

#include "Slav.h"#include "Slav1.h"int main(void) {if (condition1){_program_slave(1,0,Slav); // load image Slav}else{_program_slave(1,0,Slav1); // load image Slav1}_start_slave();

while(1)}

DS00002721A_JP-p.14 2018 Microchip Technology Inc.

Page 15: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

Microchip社製デバイスのコード保護機能に関して以下の点にご注意ください。• Microchip社製品は、該当するMicrochip社データシートに記載の仕様を満たしています。

• Microchip社では、通常の条件ならびに仕様に従って使用した場合、Microchip社製品のセキュリティ レベルは、現在市場に流通して

いる同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

Microchip社データシートにある動作仕様書以外の方法でMicrochip社製品を使用する事になります。このような行為は知的所有権の

侵害に該当する可能性が非常に高いと言えます。

• Microchip社は、コードの保全性に懸念を抱いているお客様と連携し、対応策に取り組んでいきます。

• Microchip社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護機能と

は、Microchip社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip社のコード保護

機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著作物に不正なアクセス

を受けた場合は、デジタル ミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利があります。

本書に記載されているデバイス アプリケーション等に関する情報

は、ユーザの便宜のためにのみ提供されているものであり、更新

によって無効とされる事があります。お客様のアプリケーション

が仕様を満たす事を保証する責任は、お客様にあります。Microchip社は、明示的、暗黙的、書面、口頭、法定のいずれであるかを問

わず、本書に記載されている情報に関して、状態、品質、性能、

商品性、特定目的への適合性をはじめとする、いかなる類の表明

も保証も行いません。Microchip 社は、本書の情報およびその使

用に起因する一切の責任を否認します。Microchip 社の明示的な

書面による承認なしに、生命維持装置あるいは生命安全用途に

Microchip 社の製品を使用する事は全て購入者のリスクとし、ま

た購入者はこれによって発生したあらゆる損害、クレーム、訴訟、

費用に関して、Microchip 社は擁護され、免責され、損害をうけ

ない事に同意するものとします。特に明記しない場合、暗黙的あ

るいは明示的を問わず、Microchip 社が知的財産権を保有してい

るライセンスは一切譲渡されません。

AMBA、Arm、Arm7、Arm7TDMI、Arm9、Arm11、Artisan、big.LITTLE、Cordio、CoreLink、CoreSight、Cortex、DesignStart、DynamIQ、Jazelle、Keil、Mali、Mbed、Mbed Enabled、NEON、

POP、RealView、SecurCore、Socrates、Thumb、TrustZone、ULINK、ULINK2、ULINK-ME、ULINK-PLUS、ULINKpro、µVision、Versatileは、米国およびその他の国におけるArm Limited(または

その子会社)の商標または登録商標です。

2018 Microchip Technology Inc.

Microchip社では、ChandlerとTempe(アリゾナ州 )、Gresham(オレゴン州 )の本部、設計部とウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009認証を取得しています。Microchip社の品質システムプロセスと手順は、PIC® MCUとdsPIC® DSC、KEELOQ®コード ホッピング デバイス、シリアルEEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関するMicrochip社の品質システムは ISO 9001:2000認証を取得しています。

QUALITYMANAGEMENTSYSTEMCERTIFIEDBYDNV

== ISO/TS16949==

商標Microchip社の名称とロゴ、Microchipロゴ、AnyRate、AVR、

AVRロゴ、AVR Freaks、BitCloud、chipKIT、chipKITロゴ、

CryptoMemory、CryptoRF、dsPIC、FlashFlex、flexPWR、

Heldo、JukeBlox、KeeLoq、Kleer、LANCheck、LINK MD、

maXStylus、maXTouch、MediaLB、megaAVR、MOST、MOSTロゴ、MPLAB、OptoLyzer、PIC、picoPower、PICSTART、PIC32ロゴ、Prochip Designer、QTouch、SAM-BA、SpyNIC、

SST、SSTロゴ、SuperFlash、tinyAVR、UNI/O、XMEGAは米

国およびその他の国におけるMicrochip Technology Incorporatedの登録商標です。

ClockWorks、The Embedded Control Solutions Company、EtherSynch、Hyper Speed Control、HyperLight Load、IntelliMOS、mTouch、Precision Edge、Quiet-WIREは米国にお

けるMicrochip Technology Incorporated社の登録商標です。

Adjacent Key Suppression、AKS、Analog-for-the-Digital Age、Any Capacitor、AnyIn、AnyOut、BodyCom、CodeGuard、CryptoAuthentication、CryptoAutomotive、CryptoCompanion、CryptoController、dsPICDEM、dsPICDEM.net、Dynamic Average Matching、DAM、ECAN、EtherGREEN、In-Circuit Serial Programming、ICSP、INICnet、Inter-Chip Connectivity、JitterBlocker、KleerNet、KleerNetロゴ、memBrain、Mindi、MiWi、motorBench、MPASM、MPF、MPLAB Certifiedロゴ、

MPLIB、MPLINK、MultiTRAK、NetDetach、Omniscient Code Generation、PICDEM、PICDEM.net、PICkit、PICtail、PowerSmart、PureSilicon、QMatrix、REAL ICE、Ripple Blocker、SAM-ICE、Serial Quad I/O、SMART-I.S.、SQI、SuperSwitcher、SuperSwitcher II、Total Endurance、TSHARC、

USBCheck、VariSense、ViewSpan、WiperLock、Wireless DNA、ZENAは米国とその他の国におけるMicrochip Technology Incorporatedの商標です。

SQTPは、米国におけるMicrochip Technology Incorporatedのサービスマークです。

Silicon Storage Technologyは、米国以外の国におけるMicrochip Technology Inc.の登録商標です。

GestICは、米国以外の国におけるMicrochip Technology Inc.の子

会社であるMicrochip Technology Germany II GmbH & Co. KGの

登録商標です。

その他本書に記載されている商標は各社に帰属します。

© 2018, Microchip Technology Incorporated, All Rights Reserved.

ISBN: 978-1-5224-3808-3

DS00002721A_JP-p.15

Page 16: Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/00002721A_JP.pdfSlave Code (PRAM) dsPIC33CH128MP508S1 AN2721 DS00002721A_JP-p.6 2018 Microchip Technology Inc. スレーブのみのプログラミング

DS00002721A_JP-p.16 2018 Microchip Technology Inc.

北米

本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455

オースティン、TXTel: 512-257-3370

ボストンWestborough, MA Tel: 774-760-0087 Fax: 774-760-0088

シカゴ

Itasca、IL Tel: 630-285-0071 Fax: 630-285-0075

ダラスAddison, TX Tel: 972-818-7423 Fax: 972-818-2924

デトロイトNovi, MI Tel: 248-848-4000

ヒューストン、TX Tel: 281-894-5983

インディアナポリスNoblesville, IN Tel: 317-773-8323Fax: 317-773-5453Tel: 317-536-2380

ロサンゼルスMission Viejo, CA Tel: 949-462-9523Fax: 949-462-9608Tel: 951-273-7800

ローリー、NC Tel: 919-844-7510

ニューヨーク、NY Tel: 631-435-6000

サンノゼ、CA Tel: 408-735-9110Tel: 408-436-4270

カナダ - トロントTel: 905-695-1980 Fax: 905-695-2078

アジア太平洋

オーストラリア - シドニーTel: 61-2-9868-6733

中国 - 北京Tel: 86-10-8569-7000

中国 - 成都Tel: 86-28-8665-5511

中国 - 重慶Tel: 86-23-8980-9588

中国 - 東莞Tel: 86-769-8702-9880

中国 - 広州Tel: 86-20-8755-8029

中国 - 杭州Tel: 86-571-8792-8115

中国 - 香港SARTel: 852-2943-5100

中国 - 南京Tel: 86-25-8473-2460

中国 - 青島Tel: 86-532-8502-7355

中国 - 上海Tel: 86-21-3326-8000

中国 - 瀋陽Tel: 86-24-2334-2829

中国 - 深?Tel: 86-755-8864-2200

中国 - 蘇州Tel: 86-186-6233-1526

中国 - 武漢Tel: 86-27-5980-5300

中国 - 西安Tel: 86-29-8833-7252

中国 - 厦門Tel: 86-592-2388138

中国 - 珠海Tel: 86-756-3210040

アジア太平洋

インド - バンガロールTel: 91-80-3090-4444

インド - ニューデリーTel: 91-11-4160-8631

インド - プネTel: 91-20-4121-0141

日本 - 大阪Tel: 81-6-6152-7160

日本 - 東京Tel: 81-3-6880- 3770

韓国 - 大邱Tel: 82-53-744-4301

韓国 - ソウルTel: 82-2-554-7200

マレーシア - クアラルンプールTel: 60-3-7651-7906

マレーシア - ペナンTel: 60-4-227-8870

フィリピン - マニラTel: 63-2-634-9065

シンガポールTel: 65-6334-8870

台湾 - 新竹Tel: 886-3-577-8366

台湾 - 高雄Tel: 886-7-213-7830

台湾 - 台北Tel: 886-2-2508-8600

タイ - バンコクTel: 66-2-694-1351

ベトナム - ホーチミンTel: 84-28-5448-2100

ヨーロッパ

オーストリア - ヴェルスTel: 43-7242-2244-39Fax: 43-7242-2244-393

デンマーク - コペンハーゲンTel: 45-4450-2828 Fax: 45-4485-2829

フィンランド - エスポーTel: 358-9-4520-820

フランス - パリTel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79

ドイツ - ガーヒンクTel: 49-8931-9700

ドイツ - ハーンTel: 49-2129-3766400

ドイツ - ハイルブロンTel: 49-7131-67-3636

ドイツ - カールスルーエTel: 49-721-625370

ドイツ - ミュンヘンTel: 49-89-627-144-0 Fax: 49-89-627-144-44

ドイツ - ローゼンハイムTel: 49-8031-354-560

イスラエル - ラーナナ Tel: 972-9-744-7705

イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781

イタリア - パドヴァTel: 39-049-7625286

オランダ - ドリューネンTel: 31-416-690399 Fax: 31-416-690340

ノルウェー - トロンハイムTel: 47-7289-7561

ポーランド - ワルシャワTel: 48-22-3325737

ルーマニア - ブカレストTel: 40-21-407-87-50

スペイン - マドリッドTel: 34-91-708-08-90Fax: 34-91-708-08-91

スウェーデン - ヨーテボリTel: 46-31-704-60-40

スウェーデン - ストックホルムTel: 46-8-5090-4654

イギリス - ウォーキンガムTel: 44-118-921-5800Fax: 44-118-921-5820

各国の営業所とサービス

2017/10/25