AT32UC3LでカスタムPCBでブートローダーを動作させることができません


12

私は最近、クライアント用のPCBを設計しました。ハードウェアとソフトウェアはすべて問題ありません(アプリケーションは想定どおりに動作しています)。現在、マイクロコントローラー内のプログラムを更新する必要に直面していますが、これらのPCBは世界中のさまざまな場所にインストールされているため、ブートローダーをインストールし、アプリケーションで使用されるのと同じUARTを使用するのが最適です。

ボードの説明

  • AT32UC3L032
  • ボードとPC間の通信にすでに使用されている1つのUART
  • アプリケーションのI / Oのカップル
  • 状態LEDのカップル

関連するPINと構成

PA01 # Used for entering ISP with high level

PA20 # Used for application and ISP UART
PA21 # Used for application and ISP UART

#define COM_USART               (&AVR32_USART2)
#define COM_USART_RX_PIN        AVR32_USART2_RXD_0_0_PIN
#define COM_USART_RX_FUNCTION   AVR32_USART2_RXD_0_0_FUNCTION
#define COM_USART_TX_PIN        AVR32_USART2_TXD_0_0_PIN
#define COM_USART_TX_FUNCTION   AVR32_USART2_TXD_0_0_FUNCTION
#define COM_USART_IRQ           AVR32_USART2_IRQ
#define COM_USART_BAUDRATE      115200

使用したツール

  • Windows XP
  • Atmel Studio 6.1
  • AVRONEプログラマー

何時間も検索した後、ASF 3.14.0.834で提供されているAtmel Software Framework DFUを見つけました。有望そうに見えましたが、付属のツールを使用してボードにインストールすることができました。

  • AVR32Studio 2.6.0
  • program_at32uc3l-uart-isp-1.0.1.cmd(ASFで提供されるスクリプト)
  • フリップ3.4.7(batchisp)

最初は、スクリプトを使用してインストールされたASF を使用.binおよび.dat提供しました。batchispコマンドを使用してアプリケーションをアップロードしようとしています:

batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify

しかし、常に取得:

Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL    Timeout error.

UARTのオシロスコープRXおよびTXでテストしました。データはボードに送信されますが、PCは27kHzの方形波を受信します(ストップビットなどがないため、UARTからのデータは受信できません。また、周波数はおそらく同じではありません115200bps)。

さらに調査した後、これらの値を取得するように構成Word1Word2、ファイルに格納at32uc3l-uart-isp_cfg-1.0.1.datしました。

  • Word1:0xE11E0024
  • Word2:0x494F81AA

PA01ISPに入力するオプションとしてピンを使用するには。

また、Atmel Studio 6.1でDFUのソースをロードし、同じシリアルポート構成を使用していないことに気づいたため、私のアプリケーションと同じように変更しました。また、DFUのメイン内にいくつかのLEDトグルを追加しました。

ボードのブートローダーを更新した後、LEDは変更されず、同じタイムアウト、同じ矩形波になります。

何か不足していますか?



1
Atmelへのチケットとして掲示され、誰が本当に私を助けることができるかがわかります:D
アレクサンドルラヴォア14年

どのピンを使用していますか(PAxx / PBxx)。正確には覚えていませんが、ブートローダーに入るには、ピンを(2つの構成ワードに応じて)高くまたは低く引く必要があります。ボタンなどを押していることを確認できますか?
トムL. 14年

@ TomL。、PA01を使用(問題に追加)。高/低の両方で試してみました...同じ結果。このピンをJTAGで使用しても、問題は発生しません。
アレクサンドル・ラヴォア14年

また、UARTにはどのピンを使用していますか?
トムL. 14年

1
うーん、ここでは珍しいことはありません。トランポリンコードと、アプリケーションがフラッシュ開始アドレスに正しくリンクされているかどうかを確認できますか(リンカーの.mapファイルで確認できます)。リンカー引数を投稿できますか?
トムL. 14年

回答:


1

可能であれば、AVRプログラマとArduino IDEを使用してみてください。ATシリーズのマイクロコントローラでうまく機能することは知っています。


0

適切なトランポリンコードなしでJTAGを使用すると、ATMELが出荷したBOOTLOADERが上書きされます。そのため、JTAGを使用した最初のプログラミングの後、BOOTLOADERを完全に消去した可能性があります。

また、通常はJTAGプログラマのどのデフォルト設定がめちゃくちゃになるかをブートローダが動作できるように、ヒューズを設定する必要があります。

これを修復するには、JTAGによってBOOTLOADERを(プログラムされていないチップから取得した)チップにプログラムし直して、ヒューズを正しく設定する必要があります。

BOOTLOADER + FLIPの方がはるかに快適で高速なので、私はずっと前にJTAGの使用をやめました。bin / elfの代わりに16進数を使用していること、およびリセット条件が終了した後もBOOTLOADER条件が真であることを確認してください。

RS232でFLIPを使用する方法は次のとおりです。

avr32-objcopy -O ihex AT32UC3L064.elf AT32UC3L064.hex
Batchisp -device AT32UC3L064 -hardware RS232 -port COM1 -baudrate 115200 -operation onfail abort memory flash erase f blankcheck loadbuffer AT32UC3L064.hex program start reset 0

どこavr32-objcopyがAVRStudio binフォルダーからBatchispで、FLIPからです。プロジェクトに合わせてファイル名とAVRチップIDとCOMを変更するだけです。

必要な場合は、USBを使用することもできます。

avr32-objcopy -O ihex cpp_trampoline.elf AT32UC3A3256.hex
Batchisp -device AT32UC3A3256 -hardware USB -operation onfail abort memory flash erase f blankcheck loadbuffer AT32UC3A3256.hex program start reset 0

トランポリンは、リンカー(プロジェクトプロパティ)で有効にする必要があります。これは、私の構成がどのように見えるかです。

linker: -nostartfiles -Wl,--gc-sections -Wl,-e,_trampoline -mpart=uc3l032 -Wl,--gc-sections --direct-data --rodata-writable

新しいバージョンは馬の糞なので、私はまだAVR32 Studio 2.7.0を使用しています。

[Edit1]追加情報

以下のためUC3L0AVR32_PIN_PA20一部であるRCの一般的なクロック(32KHzのでなければなりませんが、それはプリスケーラ付きキャリブレーションなしのチップにチップから非常に多く異なります)、その目的に変更されるまで、チップからGPIOかそこら何か〜27KHzクロックはとは何の関係もありませんUSART。ところで、クロックは3.3Vで駆動され、チップ1.98Vコアが完全に揚げられても生成されます。

ブートローダーの状態はAVR32_PIN_PA11、リセットリリースの前にゼロに設定されています(ファームウェアに独自のDFU条件/コマンドを実装していない場合)。1つの可能性は、LOW状態に放散するRCを作成し、チャージバックする前にリセットすることです...または、いくつかのFLIP / FLOPゲートまたはジャンパーを使用して...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.