割り込みを有効にし、各システムスティック割り込みがいくつかの関数を呼び出す LPC1857 用の作業プログラムを作成しました。LPC1857で完璧に動作します。LPC1850 で同じプログラムを実行しようとすると、プログラムの実行が 0xFFFFFFFE にジャンプし、割り込みが発生するたびに停止します。SysstickHandler で呼び出される関数は呼び出されません。プログラムがハンドラーの間違ったアドレスを取得しているように見えますが、それがどのようになるのかわかりません。その場合、LR は 0xFFFFFFF9 を指します。どちらのアドレスも予約済みです。
LPC1850 のリンカ ファイル (いくつかの無関係なポートの初期化以外の LPC1857 プロジェクトとの唯一の違い) を変更すると、次のようになります。
ENTRY(_start)
INPUT(& &)
MEMORY
{
FLASH (rx) : ORIGIN = 0x1C000000, LENGTH = 16M
SRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
}
SECTIONS
.text :
{
_text = .;
KEEP(*(.isr_vector))
*startup.o(.text)
*(.text*)
*(.glue_7t) *(.glue_7)
*(.rodata*)
_text_end = .;
} > SRAM
.bss :
{
_bss = .;
*(.bss*)
*(COMMON)
_bss_end = .;
. = ALIGN(4);
} > SRAM
.data : AT (ADDR(.text) + SIZEOF(.text))
{
_data = .;
*(vtable)
*(.data*)
_data_end = .;
} > SRAM
. = ALIGN(4);
.ARM.extab : {
*(.ARM.extab*)
} > SRAM
. = ALIGN(4);
__exidx_start = ABSOLUTE(.);
.ARM.exidx : {
*(.ARM.exidx*)
} > SRAM
__exidx_end = ABSOLUTE(.);
.stack :
{
_stack_top = . + SIZEOF(.stack);
} > SRAM
}
私が何を見逃しているか分かりますか?追加情報が必要な場合は、お知らせください。前もって感謝します!!