AT32UC3L ile önyükleyici özel PCB üzerinde çalışamıyor


12

Son zamanlarda bir istemci için bir PCB tasarladım, her şey donanım ve yazılım ile iyi durumda (uygulama olması gerektiği gibi çalışıyor). Şimdi mikrodenetleyici içindeki programı güncelleme ihtiyacıyla karşı karşıyayız, ancak bu PCB'ler dünyanın farklı yerlerine kurulduğundan, bir önyükleyici yüklemek ve uygulama tarafından kullanılanla aynı UART'ı kullanmak mükemmel olurdu.

Yönetim Kurulu açıklaması

  • AT32UC3L032
  • Bir UART zaten kart ve PC arasında iletişim kurmak için kullanıldı
  • Uygulama için birkaç I / O'
  • Birkaç durum LED'i

İlgili PIN'ler ve yapılandırma

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

Kullanılan aletler

  • Windows XP
  • Atmel Studio 6.1
  • AVRONE programcısı

Saatlerce arama yaptıktan sonra, ASF 3.14.0.834'te sağlanan Atmel Software Framework DFU'yu buldum. Bu umut verici görünüyordu, sağlanan araçları kullanarak tahtaya yükleyebildim:

  • AVR32Studio 2.6.0
  • program_at32uc3l-uart-isp-1.0.1.cmd (ASF ile birlikte sağlanan komut dosyası)
  • 3.4.7 Flip (toplu iş)

İlk başta, kullanılan .binve .datkomut dosyası kullanarak yüklü, ASF ile sağlanır. Şimdi batchisp komutunu kullanarak uygulamayı yüklemeye çalışıyorum:

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

Ama her zaman:

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

Ben UART osiloskop RX ve TX ile test ettik, veri tahtaya gidiyor ama PC 27 kHz kare dalga alıyor (durma biti veya herhangi bir şey olmadığı için UART veri olamaz, ayrıca frekans muhtemelen aynı değildir 115200bps).

Daha fazla araştırmadan sonra, bu değerleri almak için dosya Word1ve yapılandırmayı yaptım :Word2at32uc3l-uart-isp_cfg-1.0.1.dat

  • Kelime1: 0xE11E0024
  • Word2: 0x494F81AA

İSS'ye PA01girmek için raptiyeyi seçenek olarak kullanmak için.

Ayrıca, Atmel Studio 6.1'de DFU kaynağını yükledi ve aynı seri bağlantı noktası yapılandırmasını kullanmadıklarını fark ettim, bu yüzden uygulamamla aynı şekilde değişti. Ayrıca DFU'nun ana içine bazı LED'ler arasında geçiş yaptı.

Karttaki önyükleyiciyi güncelledikten sonra hiçbir LED değişmez, aynı zaman aşımı, aynı kare dalga.

Bir şey mi kaçırıyorum?



1
Atmel'e bir bilet olarak gönderildi, bana gerçekten kimin yardım edebileceğini görecek: D
Alexandre Lavoie

Hangi pimleri kullanıyorsunuz (PAxx / PBxx). Tam olarak hatırlamıyorum, ancak bootloader'a girmek için yüksek veya düşük bir pim çekmeniz gerekiyor (iki konfigürasyon kelimesine bağlı olarak). Bir düğmeye veya benzeri bir düğmeye bastığınızı doğrulayabilir misiniz?
Tom L.

@TomL., PA01 kullanılarak (söz konusu eklendi). Hem yüksek hem de düşük ... aynı sonuçla denedim. Bu pin JTAG ile kullanılsa bile soruna neden olmamalıdır.
Alexandre Lavoie

Ve UART için hangi pinleri kullanıyorsunuz?
Tom L.

1
Hm tamam, bu yüzden burada alışılmadık bir şey yok. Trambolin kodunu kontrol edebilir ve uygulamanın flash başlangıç ​​adresine doğru bir şekilde bağlanmış olup olmadığını kontrol edebilir misiniz (bunu linker .map dosyasında görmelisiniz). Bağlayıcı argümanlarınızı gönderebilir misiniz?
Tom L.

Yanıtlar:


1

Mümkünse bir AVR programcısı ve Arduino IDE kullanmayı deneyin. AT serisi mikrodenetleyicilerle iyi çalıştığını biliyorum.


0

Uygun trambolin kodu olmadan JTAG kullanılması, ATMEL tarafından gönderilen BOOTLOADER'ın üzerine yazacaktır. Yani JTAG ile ilk programlamadan sonra büyük olasılıkla BOOTLOADER'ı iyice sildiniz.

Ayrıca, sigortalar, önyükleyicinin hangi varsayılan JTAG programcı ayarlarının sıkıldığını çalıştıracak şekilde ayarlanmalıdır.

Bunu onarmak için, BOOTLOADER'ı (programlanmamış henüz çipten alınmış) JTAG tarafından çip içine programlamanız ve sigortaları doğru şekilde ayarlamanız gerekir.

BOOTLOADER + FLIP çok daha rahat ve hızlı olduğu için JTAG'ı uzun zaman önce bıraktım. Sıfırlama koşulu sona erdikten sonra bin / elf yerine hex kullandığınızdan ve BOOTLOADER koşulunun hala geçerli olduğundan emin olun.

RS232'de FLIP'i şu şekilde kullanıyorum:

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

Nerede avr32-objcopyAVRStudio bin klasöründen ve BatchispFLIP değil. Sadece projenizle eşleşen dosya adlarını ve AVR çip kimliğini ve COM'u değiştirmeniz gerekir.

İhtiyacınız olursa USB de kullanabilirsiniz:

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

Trambolin bağlayıcıda (proje özellikleri) etkinleştirilmelidir, mayın yapılandırması şöyle görünür:

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

AVR32 Studio 2.7.0'ı kullanıyorum , çünkü yeni sürümler at bokudur , bu yüzden içlerinde yapılandırma farklı olabilir.

[Edit1] ek bilgi

için UC3L0AVR32_PIN_PA20 bazı olduğunu RC jenerik saat (32KHz olmalı ama prescalers ile kalibrasyon olmadan çipe çip oldukça çok değişir) amacı ile değiştirilene kadar çipten GPIO ya da öylesine başka bir şey ~ 27KHz saat ile ilgisi yoktur USART . Btw bu saat 3.3V tarafından desteklenmektedir ve çip 1.98V çekirdek iyi kızarmış olsa bile üretir ....

Bootloader koşulu AVR32_PIN_PA11Sıfırlama sürümünden önce sıfıra ayarlanmıştır (kendi DFU koşullarınızı / komutlarınızı ürün yazılımınıza uygulamadığınız sürece ) Bu nedenle bir olasılık, DÜŞÜK duruma geçtiğiniz ve yeniden şarj etmeden önce sıfırladığınız bir RC yapmaktır ... veya bazı FLIP / FLOP geçidi veya atlama kablosu kullanın ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.