簡體   English   中英

使用jtag編程sam4e時如何防止啟動區域

[英]how to prevent boot region when program the sam4e using jtag

我正在使用at91sam4e16e並正在使用引導程序。 引導區域定義為0x400000,應用程序區域定義為0x420000起。

我已將Bootloader代碼下載到該區域,並使用0x420000鏈接地址編譯了應用程序代碼。 現在我想使用Jtag將該應用程序下載到0x420000,但是當我下載它時,所有內存都將被擦除,僅剩下應用程序。

在AVR中,我可以在調試器選項中阻止引導區; 如何在sam4e中做同樣的事情?

問候,shreyas。

轉到項目選項。

Debugger -> Images您可以下載額外的圖像。

請注意,我僅在啟用了“ Debug info only -option的情況下使用此功能,但是我將Bootloader與我的應用程序捆綁在一起,因此情況有些不同。 (您可以在引導程序Linker -> Input選項卡中捆綁引導程序。)

我還遇到一個問題,因為應用程序不在正常的起始位置,所以我必須初始化程序計數器,並手動堆棧指針寄存器。 您可以通過在Debugger -> Setup定義一個宏文件來實現。

宏文件可能如下所示(請注意,這是針對不同的MCU的,因此您可能具有不同的寄存器/地址):

execUserReset() 
{
    // Set the stack pointer
    MSP = *(int*)0x00008000; 
    // Set the program counter
    PC = *(int*)0x00008004; 
}

使用調試器重置時,此宏文件會跳過引導程序,但是您也可以使宏文件在重置時通過使用不同的地址進入引導程序。

編輯:捆綁引導程序:

自從我這樣做已經有一段時間了,所以希望我能記住一切。

您需要將Bootloader .bin文件添加到Linker -> Input -> Raw binary image 還定義符號bootloader.bootloader部分。 (我認為即使您使用絕對放置,也需要指定對齊方式。)

在上方的“ Keep symbols:框中添加您的bootloader符號。 這應確保始終包含引導加載程序。

在鏈接器文件中,添加行

place at address mem:0x00000000 { section .bootloader };

將引導加載程序放置在特定地址(更改地址以匹配您的引導加載程序地址)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM