HEW4のウィザードで作成したプロジェクトで生成されるセグメント anchor.png

C/C++ Compilerが生成するもの(C/C++)と,HEWウィザードが生成するもの(HEW)がある。

RO/RAMセグメント名説明
ROMPResetPRG(HEW) resetprg.c にて #pragma sectionで生成されるプログラムコード
PIntPRG(HEW) intprg.c にて #pragma sectionで生成されるプログラムコード
P(C/C++) : プログラムコード
C(C/C++) : 定数
C$DSEG(HEW) dbsct.c の #pragma $DSECにて生成される定数
C$BSEG(HEW) dbsct.c の #pragma $BSECにて生成される定数
D(C/C++) 初期化データ
RAMB(C/C++) 未初期化データ
R(C/C++) ROM 化支援で多重化された初期化データ
S(HEW) stacksct.h の #pragma stacksize にて生成されるスタック領域
  • HEWウィザードが生成するセグメントは,HEWのフレームワークに沿って生成,利用されるもの。
  • HEWは,割り込みハンドラのダミー関数作成,ベクタテーブルの生成と登録をintprg.cで行っている。これらを自分で行う場合は,intprg.cを削除し,xIntPRGセクションも削除する。(intprg.cにある__interrupt(vect=N)の記述は,ベクタテーブル生成とベクタテーブルへの登録をLOCATEによるROMアドレス直接指定を使って生成する)。
  • HEWは,リセット起動した後のセクションの初期化は,resetprg.cのPowerON_Reset()関数の中で_INITSCT()関数を呼び出して実行する。_INITSCT()関数にセクション情報を与えるデータベースがdbsct.c。C$DSEGとC$BSEGセクションは,dbsct.cで作成される定数セクション。セクションの初期化を自分で行う場合は,dbsct.c,C$DSEGとC$BSEGセクション,resetprg.cのPowerON_Reset()関数の_INITSCT()関数呼び出しは不要になる。
  • resetprg.cのPowerON_Reset()関数は,__entry(vect=0)によりROMの000000H番地にPowerON_Reset()関数のアドレスを配置するコードが生成される。これはセクションではなくLOCATE命令で直接的に行われるため,配置を変更することはできない。(モニタを使って仮想ベクタテーブルを用いる場合は,__entry(vect=n)の記述は使用しない。
Page Top

デフォルトで設定される主なセクション anchor.png

セクション名説明配置する場所
Pプログラムのコードフラッシュメモリ
C定数値。const int x = 10;と書いたときのxなど。フラッシュメモリ
D変数の初期値。int y = 30;と書いたときの30など。なお,yは別途RAMに置かれる。フラッシュメモリ
B初期値の設定がないグローバル変数の領域。int z;と書いたときのzなど。RAM
R初期値の設定があるグローバル変数のRAM領域。int y=30;と書いたときのyなど。なお,30はDセクションに記録。RAM
Sスタック領域。ローカル変数や,関数の呼び出し履歴などを記録するRAM上のエリア。RAM
Page Top

RESET時に呼ばれる関数 anchor.png

void PowerON_Reset_PC(void)
{
   int *p,*x;
   set_vbr((void *)((_UBYTE *)&INT_Vectors - INT_OFFSET));
   _INITSCT();  ROMからRAMにコピーするところ
   // 中略
   main();
   sleep();
}

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

Front page   Freeze Diff Backup Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 1046, today: 2, yesterday: 0
Last-modified: 2020-12-26 (Sat) 16:07:34 (JST) (816d) by yuji