Có những lựa chọn thay thế nào cho bộ tải khởi động Optiboot?


11

Gần như tất cả các bo mạch Arduino hiện đại đều sử dụng bộ tải khởi động Optiboot . So với ATmegaboot được sử dụng trước đây, nó nhỏ hơn về mặt flash (khoảng 1,5KB) và tốc độ tải lên nhanh hơn (115,2k so với 57,6k) và bắt đầu bản phác thảo của bạn nhanh hơn (độ trễ trong khi chờ đợi sau khi thiết lập lại ngắn hơn).

Có sự thay thế nào cho bộ tải khởi động Optiboot không? Cụ thể, có bộ tải khởi động nhỏ hơn (về mặt flash) không? Họ có những khác biệt gì?

Câu trả lời:


8

Optiboot là về bộ tải khởi động nhỏ nhất có sẵn.

Tuy nhiên, có một bộ điều khiển khởi động mạnh mẽ hơn (với bảng điều khiển sẵn có để kiểm tra phần cứng, kiểm tra nội dung RAM và Flash, v.v.) với giao thức truyền thông stk500v2 phát triển và mạnh mẽ hơn giữa avrdude và bộ tải khởi động AVR.

Tôi đã sử dụng nó trên ATmega2560 và trên ATmega1284p. Nó hoạt động cho cả MCU bộ đếm chương trình 3 byte và 2 byte.

Tôi có phiên bản Bộ tải khởi động STK500v2 trên Sourceforge .

Bộ tải khởi động này dựa trên bộ tải khởi động Peter Fleury STK500v2, được cập nhật bởi Mark Sproul. Tôi đã thực hiện các chỉnh sửa để hỗ trợ nó với bảng Goldilocks (bảng ATmega1284p).

Tính năng chính là sử dụng giao thức STK500v2 để tải hình ảnh Flash lên Arduino. Giao thức này mạnh hơn và cho khả năng lỗi tốt hơn giao thức avr109 . Ngoài ra, giao thức avr109 được gọi là "Arduino" trong thế giới Arduino, bởi vì nó bật DTR (để đặt lại bo mạch và tự động nhập bộ nạp khởi động), và giao thức STK500v2 được gọi là "Đấu dây" trong thế giới Arduino, vì giống nhau lý do.

Bộ tải khởi động Fleury / Sproul STK500v2 được thiết kế để hoạt động với ATmega2560 có thanh ghi chương trình 3 byte, vì kích thước Flash lớn hơn. Nhưng, nó cũng hỗ trợ bảng 2 byte bình thường (mọi thứ khác thực sự).

Đối với các bo mạch có nhiều Flash (như Goldilocks 1284p), có một màn hình phần cứng có thể được sử dụng để truy vấn Flash, SRAM và phần cứng; bạn có thể kiểm tra các kết nối mà không cần mã bổ sung và kiểm tra nội dung thực tế của Flash và EEPROM. Vì 1284p hỗ trợ 2 USART, tôi đã thêm khả năng gỡ lỗi trên USART1 , để quá trình tải lên qua USART0 không bị xáo trộn.


Đây dường như là một phần của FreeRTOS, bộ tải khởi động đó hoàn toàn độc lập với FreeRTOS?
jfpoilpret

1
Nó hoàn toàn độc lập. Bộ nạp khởi động được sử dụng để ghi flash với bất cứ thứ gì. FreeRTOS xuất hiện sau khi main () được bắt đầu. Tôi chỉ giữ nó trong cùng một kho lưu trữ. Tôi đã không viết nó, chỉ sửa đổi cho mục đích của tôi.
feilipu

Điều này có vẻ thú vị; Sẽ rất hữu ích nếu bạn có thể tổng hợp các tính năng quan trọng của bộ tải khởi động trong câu trả lời của mình: kích thước trong Flash, tải lên tốc độ tối đa, bo mạch Arduino có thể hoạt động và một số chi tiết khác về kiểm tra phần cứng).
jfpoilpret

Đó là (dựa trên) bộ tải khởi động Peter Fleury STK500v2, được cập nhật bởi Mark Sproul. Tôi đã thực hiện các chỉnh sửa để hỗ trợ nó với bảng Goldilocks (bảng ATmega1284p). Tính năng chính là sử dụng giao thức STK500v2 để tải hình ảnh flash lên Arduino. Giao thức này mạnh hơn và cho khả năng lỗi tốt hơn giao thức avr109. Ngoài ra, giao thức avr109 được gọi là "Arduino" trong thế giới Arduino, bởi vì nó bật DTR (để đặt lại bo mạch và tự động nhập bộ nạp khởi động), và giao thức STK500v2 được gọi là "Đấu dây" trong thế giới Arduino, vì giống nhau lý do.
feilipu

1
Cảm ơn thông tin, tôi đã cập nhật bài viết của bạn vì tôi nghĩ thông tin này sẽ trực tiếp là một phần trong câu trả lời của bạn. Hãy thêm thông tin nếu bạn thấy phù hợp!
jfpoilpret

3

TinySafeBoot là một sự thay thế cho các thiết bị ATtiny và ATmega.

  • Tương thích với nhiều ATtinys và ATmegas (xem bên dưới)

  • Đọc / ghi quyền truy cập vào Flash và EEPROM.

  • Tất cả các IO có sẵn để liên lạc nối tiếp

  • Một dây, cũng có nhiều AVR trên một dòng

  • Autobauding, giao thức gồ ghề.

  • Được kích hoạt bằng Đặt lại + Mật khẩu (tùy chọn)

  • Mật khẩu và thời gian chờ người dùng thay đổi bất cứ lúc nào.

  • "Xóa khẩn cấp" để khắc phục Mật khẩu bị mất - giết tất cả dữ liệu nhưng vẫn giữ nguyên bộ tải khởi động.

  • ATtinys: ~ 550 byte,

  • ATmegas: <512 byte (!)

  • TSB cho ATtiny có thể tự cập nhật.

  • Sourcecode là Phần mềm miễn phí (GPL)


có ai biết TSB so sánh với Optiboot như thế nào không? Bản cập nhật cuối cùng có vẻ ít nhất 2 năm trước ...
johny tại sao

1

Có sự thay thế nào cho bộ tải khởi động Optiboot không?

Ơ ... không hẳn. Thực sự có một sửa đổi [không chính thức] cho Optiboot để làm cho nó nhanh hơn khi tải lên .

Để cài đặt các biến thể tốc độ baud cao

  • Đảm bảo Arduino IDE không chạy
  • Tải xuống kho lưu trữ 7-Zip bằng liên kết trên
  • Giải nén ba tập tin vào thư mục sau: {Arduino Installation Root}\hardware\arduino\bootloaders\optiboot\
  • Mở tệp bảng.txt nằm trong thư mục sau: {Arduino Installation Root}\hardware\arduino\

Tìm phần này bên trong nó:

uno.name=Arduino Uno
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
uno.build.variant=standard

Thêm phần sau đây

uno_uf.name=Arduino Uno / Upload Fast
uno_uf.upload.protocol=arduino
uno_uf.upload.maximum_size=32256
uno_uf.upload.speed=250000
uno_uf.bootloader.low_fuses=0xff
uno_uf.bootloader.high_fuses=0xde
uno_uf.bootloader.extended_fuses=0x05
uno_uf.bootloader.path=optiboot
uno_uf.bootloader.file=optiboot_atmega328_250000.hex
uno_uf.bootloader.unlock_bits=0x3F
uno_uf.bootloader.lock_bits=0x0F
uno_uf.build.mcu=atmega328p
uno_uf.build.f_cpu=16000000L
uno_uf.build.core=arduino
uno_uf.build.variant=standard
  • Thay đổi hai giá trị được tô sáng thành tốc độ truyền mà bạn dự định sử dụng: 250000, 500000 hoặc 1000000 Lưu và đóng tệp bảng.txt
  • Sử dụng lập trình viên ISP yêu thích của bạn, cài đặt bộ tải khởi động mới. Đừng quên: Đảm bảo chọn Arduino Uno / Upload Fast board (Công cụ / Bảng) , Nếu thích hợp, đảm bảo Cổng nối tiếp của lập trình viên của bạn được chọn (Công cụ / Cổng nối tiếp) , Đảm bảo chọn lập trình viên (Công cụ / Lập trình viên ) , Sau khi cài đặt bộ tải khởi động, hãy thay đổi Cổng nối tiếp thành cổng nối tiếp của Arduino Uno của bạn .

Trên văn bản sửa đổi một chút để tương thích với trang web. Bài gốc


Bên cạnh đó, và bộ tải khởi động ATmegaboot, bạn thực sự không thể tìm thấy bất kỳ sự thay thế nào. Tôi sẽ tưởng tượng rằng nếu Arduino tải nó trên tất cả các Unos từng được sản xuất, thì nó được tối ưu hóa khá tốt. Bản hack ở trên tăng tốc thời gian tải lên, nhưng nó không làm giảm kích thước của bộ tải khởi động. Bạn cũng có thể loại bỏ thời gian chờ trên bộ nạp khởi động để nó khởi động nhanh hơn.

Nếu bạn lo lắng về việc tối đa hóa flash, hãy xem: Làm thế nào để thu nhỏ một bản phác thảocâu trả lời này [trên Tôi có thể làm gì nếu hết bộ nhớ Flash hoặc SRAM? ].

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.