Không thể để bộ tải khởi động hoạt động trên PCB tùy chỉnh với AT32UC3L


12

Tôi đã thiết kế PCB cho một khách hàng gần đây, mọi thứ đều ổn với phần cứng và phần mềm (ứng dụng đang hoạt động như mong muốn). Bây giờ chúng tôi đang phải đối mặt với sự cần thiết phải cập nhật chương trình bên trong vi điều khiển, nhưng vì các PCB này được cài đặt ở những nơi khác nhau trên thế giới, sẽ rất hoàn hảo để cài đặt bộ tải khởi động và sử dụng cùng một UART như ứng dụng đã sử dụng.

Mô tả bảng

  • AT32UC3L032
  • Một UART đã được sử dụng để liên lạc giữa bo mạch và PC
  • Cặp đôi I / O cho ứng dụng
  • Cặp đèn LED nhà nước

PINS và cấu hình có liên quan

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

Công cụ được sử dụng

  • Windows XP
  • Xưởng Atmel 6.1
  • Lập trình viên

Sau nhiều giờ tìm kiếm, tôi đã tìm thấy DFU Khung phần mềm Atmel, được cung cấp trong ASF 3.14.0.834. Điều đó có vẻ hứa hẹn, tôi đã có thể cài đặt nó trên bảng của mình bằng các công cụ được cung cấp:

  • AVR32Studio 2.6.0
  • chương trình_at32uc3l-uart-isp-1.0.1.cmd (tập lệnh được cung cấp với ASF)
  • Lật 3.4.7 (lô)

Lúc đầu, tôi đã sử dụng .bin.datcung cấp ASF, được cài đặt bằng tập lệnh. Hiện đang cố gắng tải lên ứng dụng bằng lệnh batchisp:

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

Nhưng luôn luôn nhận được:

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

Tôi đã thử nghiệm với máy hiện sóng RX và TX từ UART, dữ liệu sẽ được đưa lên nhưng PC đang nhận được sóng vuông 27kHz (không thể là dữ liệu từ UART vì không có bit stop hay bất cứ thứ gì, tần số có lẽ không giống nhau đối với 115200bps).

Sau khi nghiên cứu thêm, tôi đã cấu hình Word1Word2trong tệp at32uc3l-uart-isp_cfg-1.0.1.datđể nhận các giá trị sau:

  • Word1: 0xE11E0024
  • Word2: 0x494F81AA

Để sử dụng pin PA01làm tùy chọn để nhập vào ISP.

Ngoài ra, đã tải nguồn DFU trong Atmel Studio 6.1 và nhận thấy họ không sử dụng cùng một cấu hình cổng nối tiếp, vì vậy đã thay đổi giống như ứng dụng của tôi. Cũng đã thêm một số đèn LED chuyển đổi bên trong chính của DFU.

Sau khi cập nhật bộ tải khởi động trong bảng, không có đèn LED thay đổi, cùng thời gian chờ, cùng một sóng vuông.

Tui bỏ lỡ điều gì vậy?



1
Được đăng dưới dạng vé tới Atmel, sẽ thấy ai thực sự có thể giúp tôi: D
Alexandre Lavoie

Những chân nào bạn đang sử dụng (PAxx / PBxx). Tôi không nhớ chính xác, nhưng để vào bộ nạp khởi động, bạn phải kéo một chốt cao hoặc thấp (tùy thuộc vào hai từ cấu hình). Bạn có thể xác nhận bạn đang nhấn một nút hoặc tương tự?
Tom L.

@TomL., Sử dụng PA01 (được thêm vào câu hỏi). Đã thử với cả kết quả cao / thấp ... giống nhau. Ngay cả khi pin này được sử dụng với JTAG, không nên gây ra vấn đề.
Alexandre Lavoie

Và những chân bạn đang sử dụng cho UART?
Tom L.

1
Hừm, vậy không có gì bất thường ở đây. Bạn có thể kiểm tra mã trampoline và nếu ứng dụng được liên kết chính xác với địa chỉ bắt đầu flash (bạn sẽ thấy điều này trong tệp .map của trình liên kết). Bạn có thể gửi đối số liên kết của bạn?
Tom L.

Câu trả lời:


1

Có thể thử sử dụng một lập trình viên AVR và Arduino IDE nếu điều đó là có thể. Tôi biết nó hoạt động tốt với các vi điều khiển loạt AT.


0

Sử dụng JTAG mà không có mã trampoline thích hợp sẽ ghi đè lên BOOTLOADER được vận chuyển bởi ATMEL. Vì vậy, sau lần lập trình đầu tiên với JTAG, rất có thể bạn đã xóa BOOTLOADER mãi mãi.

Ngoài ra, các cầu chì phải được đặt để cho phép bộ nạp khởi động hoạt động mà các cài đặt mặc định của lập trình viên JTAG thường làm hỏng.

Để sửa lỗi này, bạn cần lập trình lại BOOTLOADER (được lấy từ chip chưa được lập trình) thành chip bởi JTAG và đặt cầu chì chính xác.

Tôi đã ngừng sử dụng JTAG từ lâu vì BOOTLOADER + FLIP thoải mái hơn và nhanh hơn nhiều. Đảm bảo rằng bạn đang sử dụng hex thay vì bin / elf và điều kiện BOOTLOADER vẫn đúng sau khi điều kiện đặt lại kết thúc.

Đây là cách tôi sử dụng FLIP trên RS232:

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

Trường hợp avr32-objcopytừ thư mục bin của AVRStudio và Batchisptừ FLIP. Bạn chỉ cần thay đổi tên tệp và ID chip AVR và COM để phù hợp với dự án của bạn.

Trong trường hợp bạn cần, bạn cũng có thể sử dụng 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

Tấm bạt lò xo phải được kích hoạt trong trình liên kết (thuộc tính dự án) đây là cách cấu hình của tôi trông như thế nào:

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

Tôi vẫn đang sử dụng AVR32 Studio 2.7.0 vì các phiên bản mới hơn là cứt ngựa nên trong đó cấu hình có thể khác.

[Edit1] thông tin bổ sung

đối với UC3L0 , AVR32_PIN_PA20một số đồng hồ chung RC (nên là 32KHz nhưng nó thay đổi từ chip sang chip khá nhiều mà không cần hiệu chuẩn với bộ định trước) từ chip cho đến khi mục đích của nó được thay đổi thành GPIO hoặc bất cứ điều gì khác vì vậy đồng hồ ~ 27KHz không liên quan gì USART . Btw đồng hồ đó được cung cấp bởi 3,3V và tạo ra ngay cả khi lõi chip 1,98V được chiên tốt ....

Điều kiện Bootloader đã AVR32_PIN_PA11được đặt thành 0 trước khi Đặt lại bản phát hành (trừ khi bạn triển khai các điều kiện / lệnh DFU của riêng bạn vào phần sụn của bạn) Vì vậy, một khả năng là tạo một RC mà bạn tiêu tan về trạng thái THẤP và đặt lại trước khi sạc lại ... hoặc sử dụng một số cổng FLIP / FLOP hoặc jumper ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.