2011-10-17 64 views
2

剛剛從eBay購買了其中一款ARM Cortex-M3 LPC1768 mini boards。這基本上是一個突破板。如何在使用USB引導程序時設置ARM用戶應用程序的起始地址?

但是,基於它附帶的一些小文檔,我確定它有一個類似於恩智浦的應用筆記 LPC1700 secondary USB bootloader (AN10866)描述的USB引導加載程序。

兩個文檔(應用筆記和電路板文檔)表明,用戶程序將被建成使得它們起始地址爲0x2000因爲USB Bootloader已經在0x0並佔用了8K

這兩個文檔還顯示如何在Keil uVision中執行此操作的屏幕截圖(請參閱應用筆記的第14頁),但是我打算使用GNU工具鏈(Yagarto + Eclipse + OpenOCD)。

在使用GNU工具鏈進行編譯時,如何指定的起始地址0x2000,以便它可以在USB引導加載程序中正常工作?

回答

6

我有很多的基於ARM的例子:

https://github.com/dwelch67

查找或創建自己的鏈接腳本。它可能會說ORIGIN = 00000000的ROM變化,要爲0x2000,像這樣的例子:

MEMORY 
{ 
    rom : ORIGIN = 0x00002000, LENGTH = 0x6000 
    ram : ORIGIN = 0x40000000, LENGTH = 0x2000 
} 
SECTIONS 
{ 
    .text : { *(.text*) } > rom 
    .bss : { *(.bss*) } > ram 
} 

你可能想/需要

.data : { *(.data*) } > ram AT >rom 

或類似的東西一個。數據。取決於你的程序和啓動代碼等等。

如果您已經有一個爲0x00000000構建的工作系統,請找到正在使用的linkerscript並複製它,並將其更改爲0x2000並指定該鏈接器腳本。

+0

讓我知道你是如何喜歡那個董事會,我可能會自己一個/很少。 –

+0

謝謝,這讓我走上了正確的道路;找到了一個可與恩智浦二次啓動引導器配合使用的「hello world」示例:http://code.google.com/p/cortex-m3-tutorials/downloads/detail?name=LEDBlinky-forNEXP_SecondaryUSBLoader.rar – Craig

相關問題