|
現: 2020-12-26 (土) 15:07:34 yuji  |
| + | #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
Counter: 1757,
today: 1,
yesterday: 1
Copyright©2008 Yuji Ueno All Rights Reserved.