RL78コンパイラ用のVectorcastとIARを使い始めました。 RL78マイクロコントローラ向けのIARコンパイラを使用して、ベクターキャストで環境を構築したいと考えています。RL78用IARコンパイラを使ったベクトルキャスト
RL78のIAR組み込みワークベンチでテストに使用されたコードが正常にコンパイルされました。
モジュールのベクタキャストで環境を構築する際に、以下のエラーに直面しています。
エラー:
40_MCAL\Memory\FDL\fdl_types.h", line 133: error: division by zero enum { R_FDLT02_ASSERT_LINE_133 = 1/(! !(sizeof(fdl_u16)==2)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 137: error: division by zero enum { R_FDLT02_ASSERT_LINE_137 = 1/(! !(sizeof(fdl_command_t)==1)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 138: error: division by zero enum { R_FDLT02_ASSERT_LINE_138 = 1/(! !(sizeof(fdl_status_t)==1)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 141: error: division by zero enum { R_FDLT02_ASSERT_LINE_141 = 1/(! !(sizeof(fdl_request_t)==8)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 142: error: division by zero enum { R_FDLT02_ASSERT_LINE_142 = 1/(! !(sizeof(fdl_descriptor_t)==10)) }; ^ 5 errors detected in the compilation of "Flash.c".
とソースコードは以下の通りです:
# define R_FDLT02_ASSERT_CONCAT_(a, b) a##b
#define R_FDLT02_ASSERT_CONCAT(a, b) R_FDLT02_ASSERT_CONCAT_(a, b)
#define R_FDLT02_STATIC_ASSERT(e) enum { R_FDLT02_ASSERT_CONCAT
(R_FDLT02_ASSERT_LINE_, __LINE__) = 1/(!!(e)) }
/* assertion if unsigned data type size is not correct, please evaluate compiler settings for integer types */
R_FDLT02_STATIC_ASSERT(sizeof(fdl_u08)==1);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_u16)==2);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_u32)==4);
/* assertion if enumeration type size is not correct, please evaluate compiler settings for enumeration types */
R_FDLT02_STATIC_ASSERT(sizeof(fdl_command_t)==1);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_status_t)==1);
/* assertion if structure type size is not correct, please evaluate compiler settings for structure types */
R_FDLT02_STATIC_ASSERT(sizeof(fdl_request_t)==8);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_descriptor_t)==10);
エラーを生成するコードを共有する方がはるかに簡単です。 – norok2
これらは静的なアサーションのようです。彼らの仕事は、間違って動作するコードを誤ってコンパイルしないようにすることです。おそらく、このライブラリ(?)をコンパイラシステムに移植する必要があります。 – user694733
/*符号なしデータ型のサイズが正しくない場合は、整数型のコンパイラ設定を評価してください*/tdl_u08は1バイトである必要がありますが、システム上では明らかにそうではありません。 Ditto for u16 2、およびu32 4.これを解決しようとしたコンパイラ設定は何ですか? – Ross