RX開発環境移行ガイド V850からRXへの移行(コンパイラ編)(CA850/CX→CC-RX)

Similar documents
RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

スライド 1

RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コンパイラオプション・アセンブラオプション)(CA78K0R→CC-RL)

Cコンパイラパッケージお知らせ

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

プログラミング実習I

スライド 1

PowerPoint プレゼンテーション

CS+ RL78コンパイラ CC-RL V リリースノート

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ

スライド 1

数値計算

スライド 1

PowerPoint Presentation

Microsoft PowerPoint - 13th.ppt [互換モード]

Microsoft PowerPoint - CproNt02.ppt [互換モード]

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

スライド 1

Microsoft Word - no02.doc

アプリケーションノート MT-R300 割り込みプログラムのデバッグ方法

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

RX210 グループ MTU2 を用いた相補 PWM モードの波形出力 要旨 本サンプルコードでは MTU2 を用いて相補 PWM モードの波形を出力する方法について説 明します 対象デバイス RX210 1 / 41

マイコンプログラミング講座

CS+ 統合開発環境 ユーザーズマニュアル CC-RL ビルド・ツール操作編

Microsoft PowerPoint - 計算機言語 第7回.ppt

VelilogHDL 回路を「言語」で記述する

CASL入門

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

02: 変数と標準入出力

Microsoft Word - Training10_プリプロセッサ.docx

02: 変数と標準入出力

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

UIOUSBCOM.DLLコマンドリファレンス

JavaプログラミングⅠ

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

演算増幅器

プログラミング基礎

情報処理演習 B8クラス

CubeSuite+版RXシリアルデバッガ取扱説明書

24th Embarcadero Developer Camp

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

PowerPoint プレゼンテーション

sinfI2005_VBA.doc

Microsoft PowerPoint - kougi7.ppt

スライド 1

講習No.1

PowerPoint プレゼンテーション

gengo1-2

02: 変数と標準入出力

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

CONTEC DIOプロバイダ ユーザーズガイド

スライド 1

Microsoft Word - Cプログラミング演習(12)

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

スライド 1

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

プログラミング基礎

memo

PowerPoint プレゼンテーション

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

ex04_2012.ppt

02: 変数と標準入出力

スライド 1

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

PowerPoint Presentation

R2.7 ポインタの型に気を付ける R2.7.1 (1) ポインタ型は 他のポインタ型及び整数型と相互に変換してはならない ただし データへのポインタ型における void* 型との相互変換は除く (2) ポインタ型は 他のポインタ型 及びポインタ型のデータ幅未満の整数型と相互に変換してはならない た

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev: PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を

02: 変数と標準入出力

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

JavaプログラミングⅠ

untitled

kantan_C_1_iro3.indd

Microsoft PowerPoint - CproNt05.ppt [互換モード]

プログラミング実習I

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コーディング)(CA78K0R→CC-RL)

Java講座

インテル(R) Visual Fortran コンパイラ 10.0

Microsoft Word - Cプログラミング演習(11)

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

スライド 1

Microsoft PowerPoint ppt

Microsoft Word - 3new.doc

ex05_2012.pptx

ex03_2012.ppt

PowerPoint プレゼンテーション

02: 変数と標準入出力

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

目次

Transcription:

RX 開発環境移行ガイド V850からRXへの移行 ( コンパイラ編 ) (CA850/CX CC-RX) 2017/04/20 R20UT2608JJ0101 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社

はじめに 本資料は V850 ファミリ用 C コンパイラ CA850 および CX のプロジェクトを RX ファミリ用 C コン パイラ CC-RX のプロジェクトへ移行する際の コンパイラに関する注意事項について記述してい ます 本資料では 統合開発環境 CS+ V850ファミリ用 CコンパイラおよびRXファミリ用 Cコンパイラ CC-RXを対象に説明しています 対象バージョンは以下の通りです CS+ V5.00.00 CX V1.31 CA V3.50 CC-RX V2.06.00 ページ 2

アジェンダ 言語仕様ページ 04 拡張機能 キーワードページ 08 組み込み関数ページ 15 マクロページ 17 ページ 3

言語仕様 V850 と RX の言語仕様の違い CA CX SH( 参考 ) RX 言語 C C C/C++ C/C++ 言語規格 C89 C90/C99( 一部 ) C89 C89/C99 エンディアン little little big little オプションで Big に対応 ビットフィールド LSB LSB MSB LSB オプションで MSB に対応 char 符号あり符号あり符号あり符号なしオプションで符号ありに対応 long long 4byte 8byte 8byte 8byte double 4byte 8byte 8byte 4byte オプションで倍精度に対応 bool - サポートサポートサポート enum 符号付 4 バイト整数符号付バイト整数符号付 4 バイト整数符号付 4 バイト整数 volatile アクセス サイズを保証 アクセス サイズを保証 アクセス サイズを保証 アクセスを保証 基本的に RX は CA CX の言語仕様を包含した仕様になっています CA CX 環境下で作成された C ソースは RX で流用が可能 *1 です *1 但し 拡張機能 組み込み関数等はサポート内容が異なりますので修正が必要です コンパイラユーザーズマニュアルをご参照の上 ご対応ください evenaccess の宣言を追加 ページ 4

言語仕様 RX コンパイラでのオプション対応 V850 と RX の言語仕様の違いに対するコンパイルオプション CS+ の CC-RX( ビルド ツール ) プロパティの共通オプションタブ内で設定 CX と異なる double 型のサイズ CA CX と異なる char 型の符号有無は オプション設定にて対応可能 エンディアン double 型のサイズ int 型変数の 2byte 化 char 型の符号指定 Bit field メンバの符号指定 Bit field メンバの割り付け ページ 5

言語仕様 enum CA CXとRXはともに符号付き4バイト整数で扱います 但し オプション設定により扱われ方が異なります CA CX -Xenum_type=stringを指定した場合 指定した型で処理します RX -auto_enumを指定した場合 列挙値が収まる最小型として処理します ページ 6

言語仕様 volatile CA CX と RX では volatile 宣言の扱われ方が異なります CA CX volatile 宣言した変数は その変数へのアクセスとその変数のサイズでアクセスすることを 保証します RX volatile 宣言した変数は その変数へのアクセスを保証します その変数のサイズでアクセスすることは保証しません 宣言した変数のサイズでアクセスするには evenaccess の記述を付加してください ページ 7

拡張機能 V850 と RX の拡張機能 (#pragma) キーワード セクションの切り替え指定 CA CX SH( 参考 ) RX section text section text section section 割り込み関数の作成 interrupt interrupt interrupt interrupt 関数のインライン展開を指定 inline inline inline inline アセンブリ記述関数のインライン展開 アセンブラ埋め込み機能 - - inline_asm inline_asm asm endasm asm endasm - - 構造体 共用体 / クラスのアライメント数を指定 pack([1 2 4 8]) pack([1 2 4 8]) pack unpack pack unpack 割り込み関数の作成 interrupt - - - 埋め込みアセンブル機能 asm asm - - セクションアドレス演算子 s e s e sectop secend sectop secend CA,CX の _S,_e はアセンブラソースのみで使用可能 RX でも基本機能はサポートしていますが オプションの設定方法は異なります 詳細は コンパイラユーザーズマニュアルを参照し変更してください ページ 8

拡張機能 V850 と RX の拡張機能 (#pragma) キーワード CA CX SH( 参考 ) RX 周辺 I/O レジスタ名有効化指定 ioreg ioreg - - RX は iodefine.h ファイルを使用 割り込み禁止関数指定 block_interrupt block_interrupt - - RXは 未サポート 割り込み禁止 / 許可の設定でご対応 ください スマート コレクション指定 - smart_correct - - RX は 未サポート ポジション インディペンデント アクセス固定アドレス アクセス - pic nopic - - RXは pic/pidはコンパイラオプ ションでサポート ページ 9

拡張機能セクション指定 #pragma section の使用は CA CX と RX では異なります CA 変数のセクション指定 : #pragma section セクション種別 作成するセクション名 begin #pragma section セクション種別 作成するセクション名 end 関数のセクション指定 : #pragma text 作成するセクション名 関数名 CX #pragma sectionセクション種別 作成するセクション名 #pragma section default RX #pragma section [< セクション種別 >] [ < 変更セクション名 >] #pragma section < セクション種別 >: { P C D B } RX 用のフォーマットに変更してください また セクション名は CA CX と RX では異なります 詳細は コンパイラユーザーズマニュアルをご参照ください ページ 10

拡張機能 RX コンパイラのセクション セクションは CA CX と RX では異なります RXのセクション一覧コンパイラユーザーズマニュアルにも記載していますのでご参照ください 注 1. section オプションでセクション名を切り替えることができます 注 2. セクション名切り替えの際に アライメント数が 4 のセクションを指定することで アライメントが 1 または 2 のセクション名も変更されます 注 3. <section> は C,D,B のセクション名称 <address> は絶対アドレス値 (16 進数 ) になります 注 4. 初期値 書き込み操作は <section> の属性に従います 注 5. section オプションでセクション名を変更することができます このとき 変更後の名前に C セクションを選択することも可能です 注 6. #pragma section でセクション名を変更することができます 注 7. instalign4 オプション instalign8 オプション #pragma instalign4 または #pragma instalign8 のいずれかを使用すると アライメント数は 4 または 8 になります 注 8. #pragma endian で endian オプションと異なる指定のエンディアンを指定した場合 #pragma endian big であれば _B を #pragma endian little であれば _L を セクション名の後ろに付加した専用のセクションを生成し 該当データを格納します 注 9. これらの関数を使用するためには 最小で 16 バイトのヒープ領域が必要です ページ 11

拡張機能割り込み関数 #pragma interruptの記述方法は CA CXとRXでは異なります CA 割り込み / 例外ハンドラの指定 : #pragma interrupt 割り込み要求名関数名配置方法 interrupt 関数定義, または関数宣言多重割り込み / 例外ハンドラを指定 : #pragma interrupt 割り込み要求名関数名配置方法 multi_interrupt 関数定義, または関数宣言 CX #pragma interrupt 割り込み要求名関数名配置方法オプション interruptは不要 多重割り込みは[ オプション ] で指定 RX #pragma interrupt [(]< 関数名 >[(< 割り込み仕様 >[, ])][, ][)] 割り込み仕様 : ベクタテーブル指定 vect= ベクタ番号 高速割り込み指定 fint 割り込み関数レジスタ制限指定 save 多重割り込み許可指定 enable ACC 保存指定 acc ACC 非保存指定 no_acc RX のスタートアップファイル <intprg.c> // IRQ0 void Excep_IRQ0(void){ } // IRQ1 void Excep_IRQ1(void){ } <vect.h> // IRQ0 #pragma interrupt (Excep_IRQ0(vect=64)) void Excep_IRQ0(void); // IRQ1 #pragma interrupt (Excep_IRQ1(vect=65)) void Excep_IRQ1(void); 尚 プロジェクトを作成した際に生成する intprg.c vect.h ファイルを使用すれば CPU の割り込み関数はすべて宣言してあります ページ 12

拡張機能アセンブリ埋め込み機能 RX では C/C++ ソースの関数内に直接アセンブリソースを記述する 拡張機能はサポートしていません アセンブリソース部分を関数化しご対応ください なお CA CXとRXは命令セットは異なりますのでアセンブリ記述自体を変更して頂く必要があります CA CX RX asm("nop"); func(); #pragma inline_asm func void func(void) { nop } ページ 13

拡張機能周辺 I/O レジスタ名有効化指定 RX では #pragma ioreg はサポートしていません 周辺レジスタへアクセスするには 提供している iodefine.h ファイルをご使用下さい <iodefine.h> struct st_tmr0 { union { } TCR; char union { unsigned char BYTE; struct { unsigned char CMIEB:1; unsigned char CMIEA:1; unsigned char OVIE:1; unsigned char CCLR:2; } BIT; wk0[1]; unsigned char BYTE; struct { unsigned char :4; unsigned char OSB:2; unsigned char OSA:2; } BIT; } TCSR; char wk1[1]; unsigned char TCORA; #define TMR0 (*(volatile struct st_tmr0 evenaccess *)0x88200) < レジスタへアクセスするファイル > #include iodefine.h void main(void) { TMR0.TCR.BYTE = 0x12; TMR0.TCSR.BIT.OSB = 0x01; TMR0.TCR.BIT.OVIE = 1; TMR0.TCORA = 0x12; } < 記述方法 > iodefine.h ファイル内の記述を使用して < モジュール名 >.< レジスタ名 >.< アクセスサイズ > < モジュール名 >.< レジスタ名 >.BIT.< ビット名 > < モジュール名 >.< レジスタ名 > で周辺モジュールのレジスタへアクセス可能 ページ 14

組み込み関数 V850 と RX の組み込み関数の違いは以下となっています 割り込み制御 CA CX SH( 参考 ) RX DI() EI() DI() EI() - setpsw_i() clrpsw_i() ノー オペレーション nop() nop() nop() nop() プロセッサの停止 halt() halt() - - 飽和加算 satadd() satadd() addv() ovf_addv() - 飽和減算 satsub() satsub() subv() unf_subv() - ハーフワード データのバイト スワップ bsh() bsh() swapb() - ワード データのバイト スワップ bsw() bsw() end_cnvl() - ワード データのハーフワード スワップ hsw() hsw() swapw() - バイト データの符号拡張 sxb() sxb() - - ハーフワード データの符号拡張 sxh() sxh() - - mul 命令を用いて 32 ビット 32 ビットの符号つき乗算結果の 64 ビットを変数に代入する命令 mulu 命令を用いて 32 ビット 32 ビットの符号なし乗算結果の 64 ビットを変数に代入する命令 - mul() dmuls_l() - - mulu() dmuls_h() - ページ 15

組み込み関数 mul32 命令を用いて乗算結果の上位 32 ビットを変数に代入する命令 mulu32 命令を用いて符号なし乗算結果の上位 32 ビットを変数に代入する命令 CA CX SH( 参考 ) RX mul32() mul32() dmulu_l() - mul32u() mul32u() dmulu_h() - 論理左シフト付きフラグ条件の設定 sasf() sasf() - - MSB 側からのビット (0) 検索 - sch0l() - - LSB 側からのビット (0) 検索 - sch0r() - - MSB 側からのビット (1) 検索 - sch1l() - - LSB 側からのビット (1) 検索 - sch1r() - - システム レジスタへのロード - ldsr() set_cr() set_psw() システム レジスタの内容のストア - stsr() get_cr() get_psw() 汎用レジスタへのロード - ldgr() - - 汎用レジスタの内容のストア - stgr() - - 比較と交換 - caxi() - - RX は CA CX とサポートしている組み込み関数が異なります ソースファイル内で使用している組み込み関数は RX 用に変更 またはアセンブラ記述での対応をしてください ページ 16

マクロ V850 と RX のマクロの違いは以下となっています CA CX SH( 参考 ) RX CA850 CA850 CX CX SH RX CPU マクロ *1 CPU マクロ *1 - - DATE TIME DATE TIME DATE TIME DATE TIME FILE LINE FILE LINE - FILE LINE DOUBLE_IS_32BITS DOUBLE_IS_32BITS - - DBL4 - DOUBLE_IS_64BITS - DBL8 CHAR_SIGNED CHAR_SIGNED - SCHAR CHAR_UNSIGNED CHAR_UNSIGNED - UCHAR レジスタ モード マクロ *2 - - *1 CPU マクロは ターゲット CPU を示すマクロで 10 進定数 1 デバイス ファイル中の 品種指定名 で示される文字列の先頭と末尾に を付けたものが定義されます *2 レジスタ モード マクロは ターゲット CPU を示すマクロで 10 進定数 1 レジスタ モードと定義されるマクロは次のとおりです 32 レジスタ モード : reg32 26 レジスタ モード : reg26 22 レジスタ モード : reg22 RX は CA CX とサポートしているマクロ名が異なります ソースファイル内でマクロを使用している場合は RX 用に変更してください ページ 17

ルネサスシステムデザイン株式会社