ハードフォールトハンドラーに少し組み立てがあります。アセンブリは基本的に、現在のスタック ポインターをパラメーターとして (R0 で) 渡すことを目的としています。みたいですね...
__asm(" mov r0, sp\n"
" bl SavePC\n"
" bx lr");
これは、SavePC が同じ c ファイルにある場合にうまく機能します。ただし、SavePC が別の c ファイルに配置されている場合、うまくいきません。私はそのように機能をインポートしようとしました...
__asm("IMPORT SavePC\n"
" mov r0, sp\n"
" bl SavePC\n"
" bx lr");
...しかし、私は何か間違ったことをしているに違いありません。コンパイラは次のように報告します...
Error[Og005]: Unknown symbol in inline assembly: "IMPORT"
Error[Og005]: Unknown symbol in inline assembly: "SavePC"
Error[Og006]: Syntax error in inline assembly: "Error[54]: Expression can not be forward"
Error[Og005]: Unknown symbol in inline assembly: "SavePC"
Error while running C/C++ Compiler
アセンブリを含む c ファイルには、SavePC プロトタイプを含むヘッダー ファイルが含まれています...
extern void SavePC(unsigned long);
提案?