1

私のプロジェクト アプリケーションでは、外部 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またはその他の場所に再配置する方法を教えてください。

前もって感謝します。

4

0 に答える 0