現: 2020-12-26 (土) 15:07:34 yuji ソース
Line 1: Line 1:
 +#contents
 +*HEW4のウィザードで作成したプロジェクトで生成されるセグメント [#g612331a]
 +C/C++ Compilerが生成するもの(C/C++)と,HEWウィザードが生成するもの(HEW)がある。
 +
 +|RO/RAM|セグメント名|説明|h
 +|ROM|PResetPRG|(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++) 初期化データ|
 +|RAM|B|(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)の記述は使用しない。~
 +
 +*デフォルトで設定される主なセクション [#d1f5734a]
 +|セクション名|説明|配置する場所|h
 +|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|
 +
 +*RESET時に呼ばれる関数 [#a98af2fd]
 + void PowerON_Reset_PC(void)
 + {
 +   int *p,*x;
 +   set_vbr((void *)((_UBYTE *)&INT_Vectors - INT_OFFSET));
 +   _INITSCT();  ROMからRAMにコピーするところ
 +   // 中略
 +   main();
 +   sleep();
 + }
  

  • 開発/HEW のバックアップ差分(No. All)
    • 現: 2020-12-26 (土) 15:07:34 yuji

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1340, today: 1, yesterday: 0