関数を固定アドレスに配置してみた
目指しているのは、ユーザ・プログラム(HEXファイル)をFlashメモリに書き込んで、ユーザが定義した関数を呼び出すことです。
HEXファイルを読み取り、Flashメモリに書き込むところまで出来ました。
あとは、書き込んだFlashメモリ上のアドレスを関数コールして、リターン出来れば・・・
本当に上手くできるのか?その実現性は未だ不明です。(^_^;)
関数呼び出しのテストをやりやすくするため、予め用意したtest_func()を呼び出してみることにしました。その関数を固定アドレスに配置できれば都合が良いのですが、どうすれば関数を固定アドレスに配置できるのか?
取り敢えずの思い付きを試してみると・・・
void test_func(void) @ 0x900
{
unsigned char loop;
while( break_flag )
{
loop++;
}
loop = 0;
}
ビンゴ~
簡単に実現出来てしまいました。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
後で、『XC8 C Compiler User's Guide』を調べてみると、 5.8.4 Changing The Default Function Allocationの項に”absolute function”として説明されていました。
『知識は後から着いてくる』(<==基本的な開発ポリシー)