[英]time() ok when debugging (JTAG), not-ok when running on-chip. How to time with an embedded proc?
[英]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.