私のプロジェクト アプリケーションでは、外部 ddr3 メモリ (arm cortex-M3) から FreeRtos を実行しています。この関数コードが実行されていない後、コードは VportstartFirstTask() まで実行されました。以下は、アプリケーションで使用した VportstartFirsttask です。
void vPortStartFirstTask(void)
{
/ Use the NVIC offset register to locate the stack. /
__asm volatile(ldr r0, =0xE000ED08
ldr r0, [r0]
ldr r0, [r0]
/ Set the msp back to the start of the stack. /
msr msp, r0
/ Call SVC to start the first task. /
cpsie i
svc 0
nop
)
}`
他のリンカー ファイルを使用して同じプロジェクトを実行すると、正常に動作します。オンチップメモリから実行され、正常に動作します。
外部メモリから実行しているとき、問題に直面しています。
ベクターテーブルをSRAMまたはその他の場所に再配置する方法を教えてください。
前もって感謝します。