2011-10-17 3 views
2

eBayからARM Cortex-M3 LPC1768 mini boardsのいずれかをピックアップしました。それは基本的にブレークアウトボードです。USBブートローダを使用しているときにARMユーザーアプリケーションの開始アドレスを設定する方法は?

しかし、どのドキュメントに付属しているかに基づいて、NXPの LPC1700 secondary USB bootloader (AN10866)アプリケーションノートで説明されているのと同様のUSBブートローダがあると判断しました。

ドキュメント(アプリケーションノートとボードのドキュメント)の両方は、ユーザプログラムがその開始アドレスが0x2000でなるように構築されるべきであることを示しています。 USBブートローダーはすでに0x0にあり、8Kを占有しているためです。

Keil uVisionでこれを行う方法については、両方のドキュメントにもスクリーンショット(アプリケーションノート14ページ参照)が表示されていますが、GNUツールチェーン(Yagarto + Eclipse + OpenOCD)を使用する予定です。

の開始アドレスを0x2000と指定するには、GNUツールチェーンを使用してコンパイルするときに、USBブートローダで正しく動作するようにしますか?

答えて

6

は私が腕に基づく例がたくさんあります。

https://github.com/dwelch67

検索したり、独自のリンカスクリプトを作成します。あなたが望むかもしれない

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

/

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

またはそのようなもので.DATAが必要になります。どこに、その0x2000での例えば、このようなものをROMの変更のためのORIGIN = 0x00000000のを言っている場合があります。あなたのプログラムとブートコードとそのすべてに依存します。

すでに0x00000000のために構築する作業システムを持っている場合は、使用し、それのコピーを作成し、0x2000番地に変更し、そのリンカスクリプトを指定されたlinkerscriptを見つけます。

+0

あなたはそのボードが好きなことを教えてください。 –

+0

ありがとう、これは正しい道のりで私を得た; NXPのセカンダリブートローダで動作する「hello world」の例が見つかりました:http://code.google.com/p/cortex-m3-tutorials/downloads/detail?name=LEDBlinky-forNEXP_SecondaryUSBLoader.rar – Craig

関連する問題