先回も述べたとおり、bootloaderを配置するメモリの大きさを大きくし、その分それ以降のメモリ配置をずらします。
私の場合は大きくしたメモリ量は0x100分です。
ユーザプログラムの変更も必要です。それはまた次回。
- リンカースクリプト BootModified.18f2550_g.lkr
bootloaderのお尻のアドレスをずらし、bootloaderの格納領域を大きくする。
元プログラムCODEPAGE NAME=BootPage START=0x20 END=0xFFF
変更後CODEPAGE NAME=BootPage START=0x20 END=0x10FF
- メインプログラム main.c
元プログラムベクターの再配置情報 _asm goto 0x1008 _endasm _asm goto 0x1018 _endasm ユーザプログラムへのジャンプ部 goto 0x1000 //If the user is not trying to enter the bootloader, .....
変更後ベクターの再配置情報 _asm goto 0x1108 _endasm _asm goto 0x1118 _endasm ユーザプログラムへのジャンプ部 goto 0x1100 //If the user is not trying to enter the bootloader, .....
- ブートローダ本体 BootPIC18NonJ.c
元プログラム
//ユーザプログラムの先頭アドレス #define ProgramMemStart 0x001000 //Beginning of application program memory ... ユーザプログラムを書きこむ際に消去するメモリのブロックサイズ 256バイト単位で設定 #define StartPageToErase 64 //The 4096 byte section from 0x000-0xFFF ...
変更後
//ユーザプログラムの先頭アドレス #define ProgramMemStart 0x001100 //Beginning of application program memory ... ユーザプログラムを書きこむ際に消去するメモリのブロックサイズ 0x100ずらすので、値は4増やす。 #define StartPageToErase 68 //The 4096 byte section from 0x000-0xFFF ...
0 件のコメント:
コメントを投稿