#pragma sectionは,CA78K0とCC-RLとでセクション名が異なるため,セクション名の変換処理が必要になります。ただし,セクションによってはCC-RL側に対応するセクションが存在しないケースもあるため,変換が不可能なセクションも存在します。また,変換は可能であっても機能が少し異なるものもあります。CcnvCA78K0ではいくつかのセクションの変換時に標準エラー出力にメッセージを出力します。詳細はセクション名対応表を参照してください。
CA78K0の書式は以下の通りです。
#pragma section セクション名 変更後セクション名 [AT 開始アドレス]
|
CC-RLの書式は以下の通りです。
#pragma section [{text|const|data|bss}] [変更後セクション名]
|
- | 「AT 開始アドレス」に相当する機能がCC-RLには存在しないため,「AT 開始アドレス」がある場合は削除し,メッセージを出力します。CC-RLでのセクションの配置は,-startオプションにて指定してください。-startオプションの詳細については,CC-RLのユーザーズ・マニュアルを参照してください。 |
- | 「変更後セクション名」は変換せずそのまま出力します。変更後セクション名にCC-RLでは使用不可能な文字(’?’など)を使っている場合は,CC-RLではコンパイル・エラーとなります。変換後に文字列を変更してください。 |
- | CC-RLの#pragma sectionにおけるセクション名は「変更後セクション名+”_n”」または「変更後セクション名+”_f”」,saddr領域用のセクション名は「変更後セクション名+”_s”」となります。詳細はCC-RLのユーザーズ・マニュアルを参照してください。 |
- | CC-RL側に対応するセクションがないため変換できない場合は,メッセージを出力し,変換しません。CC-RLではワーニングを出力し,#pragma指令を無視します。後述のセクション名対応表に従い,Cソースを修正してください。 |
[例]
パターン1
(正常に置換)
|
変換前
|
#pragma section @@CODE MY_CODE
|
変換後
|
#pragma section text MY_CODE
|
パターン2
(ATの削除)
|
変換前
|
#pragma section @@CODE MY_CODE AT 0x2000
|
変換後
|
#pragma section text MY_CODE
|
パターン3
(置換後コンパイル・エラー)
|
変換前
|
#pragma section @@CODE ??CODE AT 0x2000
|
変換後
|
#pragma section text ??CODE
|
対応
|
変換しますが,コンパイル時にエラーとなります。
セクション名を変更してください。
|
パターン4
(置換不可能)
|
変換前
|
#pragma section @@CALF MY_BASE
|
変換後
|
#pragma section @@CALF MY_BASE
|
対応
|
CC-RLに対応するセクションがないため,変換せず出力します。
セクション名対応表に従い,修正してください。
|
|
|
|
|
|
@@CODE
@ECODE
|
コード部用セグメント
|
text
|
対応したセクション種別に変更します。
|
不要です。
CC-RLでのセクション名は「変更後セクション名+”_n”」 または「変更後セクション名+”_f”」となります。
|
@@LCODE
@LECODE
|
ライブラリ・コード用
セグメント
|
text
|
変換しません。
|
#pragmaを削除してください。
CC-RLでのライブラリの配置は,リンク・オプション-ROmで指定してください。
|
@@CNST
@ECNST
|
ROMデータ用
セグメント
|
const
|
対応したセクション種別に変更します。
|
不要です。
CC-RLでのセクション名は「変更後セクション名+”_n”」となります。
|
@@R_INIT
@ER_INIT
|
初期化データ用
セグメント
|
data
|
対応したセクション種別に変更します。
|
不要です。
CC-RLでのセクション名は「変更後セクション名+”_n”」となります。
|
@@R_INIS
@ER_INIS
|
初期化データ用
セグメント
(sreg変数)
|
data
|
対応したセクション種別に変更します。
|
不要です。
CC-RLでのセクション名は「変更後セクション名+”_s”」となります。
|
@@CALF
|
callf関数用
セグメント
|
なし
|
メッセージを出力し,変換しません。
|
#pragmaを削除してください。
CC-RLには対応する機能がありません。処理の見直しが必要です。
|
@@CALT
|
callt関数テーブル用
セグメント
|
なし
|
メッセージを出力し,変換しません。
|
#pragmaを削除してください。
CC-RLではセクション名を変更できません。
|
@@VECTnn
@EVECTnn
|
ベクタ・テーブル用
セグメント
|
なし
|
変換しません。
|
#pragmaを削除してください。
CC-RLではセクション名を変更できません。
|
@EXTxx
|
フラッシュ領域
分岐テーブル用
セグメント
|
なし
|
変換しません。
|
#pragmaを削除してください。
CC-RLには対応する機能がありません。処理の見直しが必要です。
|
@@INIT
@EINIT
|
データ領域用セグメント
(初期値あり)
|
なし
|
メッセージを出力し,変換しません。
|
#pragmaを削除してください。
ROMからRAMへマップするセクションは,リンク・オプション-ROmで指定してください。
|
@@INIS
@EINIS
|
データ領域用セグメント
(sreg変数,初期値あり)
|
なし
|
メッセージを出力し,変換しません。
|
#pragmaを削除してください。
ROMからRAMへマップするセクションは,リンク・オプション-ROmで指定してください。
|
@@DATA
@EDATA
|
データ領域用セグメント
(初期値なし)
|
bss
|
対応したセクション種別に変更します。
|
不要です。
CC-RLでのセクション名は「変更後セクション名+”_n”」となります。
|
@@DATS
@EDATS
|
データ領域用セグメント
(sreg変数,初期値なし)
|
bss
|
対応したセクション種別に変更します。
|
不要です。
CC-RLでのセクション名は「変更後セクション名+”_s”」となります。
|
@@BITS
@EBITS
|
boolean,bit型変数用
セグメント
|
なし
|
メッセージを出力し,変換しません。
|
#pragmaを削除してください。
CC-RLでは_Bool型として,他のデータと同じセクションに配置されます。
|
@@BANK0, …,
@@BANK15
|
バンク関数用
セグメント
|
なし
|
メッセージを出力し,変換しません。
|
#pragmaを削除してください。
CC-RLには対応する機能がありません。処理の見直しが必要です。
|