私はここで正しいと思われるものを見つけましたが、機能していません:
** *ブートローダー Vector.c:** * ** * *
ISR(AS1_InterruptTx) { asm { pshh ldhx #$DFD4 pshx jmp DO_ISR } } .......アドレスが異なる他のベクトルについても同様............
................................................................... ...............
void DO_ISR() { asm { pulx ldhx ,x
cphx #$FFFF
beq DI1
jsr ,x
DI1:プルティ } }
** * ** * ** * ***アプリケーション内 Vector.c * ** * ** * ** * ** * ** * **
私が変更され:
ISR(AS1_InterruptTx)
{
…………
…………
}
に:
ボイド AS1_InterruptTx() {
..........
..........
}
それとは別に、ベクターをブートローダーのデフォルトの場所、つまり 0xFFC4 に保持し、アプリケーション コードのベクター テーブルを 0xDFC4 にリダイレクトしました。
NVPROT_INIT の値は 0xDE であり、NVOPT_INIT の値は 0x7E です。これはアプリケーション コード (リダイレクト用の NVOPT = 0x3E) と競合しますが、保護されているため、このレジスタに上書きすることはできません。ただし、割り込みが発生すると、割り込みは 0xFFC4 にあるベクター テーブルに送られ、さらに 0xDFC4 に送信されます。
これは、この問題に対処する良い方法だと思われますか?