ターゲットを RL78/G10、ツールは
CS+ for CC V5.00.00 [05 Dec 2016] 製品情報 バージョン情報 統合開発環境 フレームワーク V7.00.00.05 [25 Nov 2016] 統合開発環境のメイン・ウインドウ部です。 デバッグ・ツール共通インタフェース V5.00.00.01 [27 Oct 2016] デバッグ・ツールを利用するための共通のインタフェースを統合したライブラリです。 デバイス情報共通インタフェース V7.00.00.05 [25 Nov 2016] デバイス固有情報を取得するための共通ライブラリです。 RH850ビルド・ツールCC-RH用プラグイン V1.07.00.00 [01 Nov 2016] RH850用CC-RHコンパイラを利用するためのビルド・ツール・プラグインです。 RL78ビルド・ツールCC-RL用プラグイン V1.04.00.00 [01 Nov 2016] RL78用CC-RLコンパイラを利用するためのビルド・ツール・プラグインです。 CC-RL V1.04.00 ビルド・ツールです。 BuildToolCCRLCore V1.06.00.02 [17 Nov 2016] RXビルド・ツールCC-RX用プラグイン V5.00.00.00 [01 Nov 2016] RX用CC-RXコンパイラを利用するためのビルド・ツール・プラグインです。 RH850ビルド・ツールGHS CCRH850用プラグイン V1.01.00.01 [11 Nov 2016] RH850用GHS CCRH850コンパイラを利用するためのビルド・ツール・プラグインです。 デバッガ・コレクション・プラグイン V5.00.00.02 [02 Nov 2016] RH850, RX, RL78 エミュレータ/シミュレータを利用するためのデバッグ・ツール・プラグインです。 Device V5.00.00.02 [02 Nov 2016] DeviceRl78 V5.00.00.01 [27 Oct 2016] ConfigurationRl78Simulator V5.00.00.01 [27 Oct 2016] EngineManager V5.00.00.04 [25 Nov 2016] EngineManagerExec V5.00.00.05 [01 Dec 2016] RL78 Asm/Disasm V5.00.00.01 [27 Oct 2016] DBEvaluatorManager V5.00.00.01 [27 Oct 2016] LoadModuleManager V5.00.00.01 [27 Oct 2016] RH850用コード生成 V1.00.00.04 [23 Aug 2016] デバイスドライバを自動生成および端子配置を表示するプラグインです。(RH850用) コード生成プラグイン V3.05.00.01 [11 Nov 2016] デバイスドライバを自動生成するプラグインです。(V850, 78K0, 78K0R, RL78/G12, G13, G14, G1A, I1A, L12, F12, F13, F14用) コード生成/端子図プラグイン V1.07.00.02 [23 Nov 2016] デバイスドライバを自動生成および端子配置を表示するプラグインです。(RX, コー ド生成プラグインに記載のないRL78用) RL78/G10コードライブラリ V1.04.04.01 [11 Nov 2016] RL78/G10コード生成プラグインのためのコードライブラリです。 デバッグ・コンソール・プラグイン V3.00.00.13 [01 Aug 2014] 標準I/Oをサポートするデバッグ・コンソール・プラグインです。 Quick and Effective tool solution - QE V1.02.00.02 [01 Nov 2016] アプリケーション開発に便利なツールをセットにしたプラグインです。 端子配置プラグイン V1.54.01.01 [31 Jul 2014] デバイスの端子配置を行うプラグインです。 プログラム解析プラグイン V4.07.00.03 [21 Nov 2016] プログラムの解析を行うプラグインです。 IronPythonコンソール・プラグイン V1.32.00.01 [11 Nov 2016] IronPythonのコマンドとCS+拡張機能が使用できるコンソールです。 エディタ・パネル V1.10.00.01 [30 Jun 2016] エディタ・パネルのプラグインです。 スタック見積もりR_UART0_Sendツール V1.05.00.02 [30 Jul 2014] スタック使用量をツリー形式で表示するツールです。 アップデート・マネージャ・プラグイン V2.02.00.05 [17 Jul 2014] CS+ アップデート・マネージャと連携するプラグインです。
を試用ライセンスで使用しています。
CS+ のコード生成ツールが生成する、UART0 へ送信するデータを登録する関数 R_UART0_Send() の r_cg_sau.h の中での関数プロトタイプ宣言が
MD_STATUS R_UART0_Send(uint8_t * const tx_buf, uint16_t tx_num);
となっており、引数の tx_buf の指し示すバイト列の型が uint8_t であるため、ミラー領域を通じてアクセスできる ROM 上の定数データを送信しようとした場合
void hoge(void) { static const uint8_t hoge[] = {'H', 'O', 'G', 'E'}; R_UART0_Send(hoge, sizeof(hoge)); }
以下のような警告が出力されてしまいます。
hoge.c(123):W0520167:"const uint8_t __near *" 型の引数は型 "uint8_t *const __near" の引数と整合しません。
これを避けるためには以下のように
void hoge(void) { static const uint8_t hoge[] = {'H', 'O', 'G', 'E'}; R_UART0_Send((uint8_t*)hoge, sizeof(hoge)); }
const uint8_t へのアドレスを uint8_t* へキャストするという、C++ で言うところの const_cast をする羽目となってしまいます。
R_UART0_Send() の実装を見る限りこの関数の引数の仕様は
MD_STATUS R_UART0_Send(const uint8_t * const tx_buf, uint16_t tx_num);
で良い筈であり、機能的にも問題ない筈です。無用な警告やキャストを避けるために以上の点は修正していただきたいです。