Khi nào nên sử dụng bộ tải khởi động Arduino


7

Tôi cần phải làm một con robot trong vòng một tháng cho một cuộc thi. Tôi đã từng sử dụng Arduinos cho các dự án của mình, nhưng tốt nghiệp chỉ cần flash mã với avrdude cho các bộ vi điều khiển AVR độc lập.

Tôi đã suy nghĩ, chỉ vì tôi không sử dụng phần cứng Arduino nữa, có lý do gì để không đốt bộ tải khởi động Arduino cho bộ vi điều khiển của tôi cho một số dự án không? Có kịch bản nào (như nhiệm vụ hiện tại của tôi) trong đó thực hiện sẽ có lợi thế không?

Viết mã cho Arduino dễ dàng hơn một chút và có một số thư viện mã nguồn mở. Tôi chắc chắn có những ưu điểm chính (và nhược điểm) khác mà tôi không biết, nhưng muốn biết.

Về cơ bản, theo kịch bản nào sẽ là một ý tưởng tốt để ghi một bộ tải khởi động Arduino vào bộ điều khiển vi mô của tôi.


2
Bạn dường như đang nhầm lẫn bộ tải khởi động Arduino và các thư viện thời gian chạy Arduino, hoặc nếu không hỏi hai câu hỏi riêng biệt chạy cùng nhau. Chúng là hai phần mềm hoàn toàn riêng biệt và bạn có thể sử dụng một phần mềm mà không cần phần mềm kia. Đối với bộ tải khởi động, nó có thể khá hữu ích trừ khi nó không phù hợp, bạn không thể chịu đựng được sự chậm trễ khởi động hoặc bạn cần phải khóa mọi thứ.
Chris Stratton

@ChrisStratton Tôi thấy. Tôi có thể nhầm lẫn hai điều đó, nhưng đó không phải là bản chất của câu hỏi của tôi. Về cơ bản, tôi muốn biết khi nào / tại sao tôi nên xem xét sử dụng bộ tải khởi động Arduino trái ngược với cách tôi hiện đang sử dụng bộ vi điều khiển của mình. Nói cách khác, ngoại trừ ba lý do bạn đưa ra, tại sao ai đó không muốn sử dụng bộ tải khởi động Arduino? Tôi thấy rất nhiều dự án AVR nơi mọi người không sử dụng nó và không bị ràng buộc bởi ba ràng buộc đó (kích thước, độ trễ, tính lâu dài). Cảm ơn.
capcom

Câu trả lời:


10

Câu trả lời cơ bản là một số người không muốn mua hoặc làm lập trình viên. Họ chỉ cần một cổng nối tiếp để lập trình IC bằng bộ tải khởi động. Nó rẻ hơn.

Hoặc đôi khi bạn muốn có thể nâng cấp mã của mình trên trường mà không cần sử dụng lập trình viên đắt tiền của mình. Sau đó, một bộ nạp khởi động là tốt.

Nhưng nếu bạn nghĩ về việc sử dụng hệ thống của bạn và không tìm thấy nhu cầu về bộ tải khởi động, thì không có lý do gì để giữ nó. Nó mất không gian flash cho không có gì.

Bộ tải khởi động Arduino chỉ là một bộ tải khởi động: thứ gì đó cho phép chip tự lập trình với dữ liệu mới khi khởi động. Không có gì khác. Do đó, có hay không không ảnh hưởng đến hiệu suất mã của bạn (ngoại trừ không gian flash có sẵn hoặc độ trễ khởi động).

Do đó, trả lời câu hỏi của bạn:

  • Nếu bạn không có lập trình viên -> hãy giữ bootlaoder
  • Nếu bạn có một lập trình viên -> tùy thuộc vào bạn, điều đó phụ thuộc vào việc bạn có muốn nâng cấp mà không cần lập trình viên hay không.

Tôi hiểu rồi. Tôi đoán tôi đã không thực sự hiểu bootloader là gì trong bối cảnh câu hỏi của tôi. Mặc dù tôi vẫn không hiểu làm thế nào nó có thể lập trình MCU qua nối tiếp. Có phải đó chỉ là chức năng chính của bộ tải khởi động Arduino? Nó nhận được dữ liệu qua một liên kết nối tiếp và nhấp nháy nội bộ? Tôi có thể hoàn toàn tắt ở đây. Ngoài ra, tôi có một lập trình viên. Tôi sử dụng USBasp, vì vậy không có gì lạ mắt, nhưng vẫn hoạt động hoàn hảo.
capcom

Bộ tải khởi động được đặt tại điểm bắt đầu thực hiện MCU của bạn. Nó chạy ngay từ đầu. Mục đích của nó là phát hiện nếu ai đó muốn liên lạc với nó trên cổng nối tiếp. Nếu không, nó gọi phần mềm của bạn. Nếu có, nó sử dụng tính năng tự lập trình flash của MCU để lập trình lại flash của nó (ngoại trừ chính nó !!) với dữ liệu bạn cung cấp cho anh ta thông qua cổng nối tiếp.
Blup1980

@capcom: đó không chỉ là chức năng chính của bộ tải khởi động, nó là chức năng DUY NHẤT! Vì vậy, như Blup1980 nói, nếu bạn không cần bộ tải khởi động cho chức năng đó, không có lý do nào để tiếp tục sử dụng nó.
Wouter van Ooijen

Thật sự cảm ơn. Và để hiểu rõ hơn, tôi có thể sử dụng các thư viện mà mọi người viết cho Arduinos trực tiếp trên MCU của tôi không?
capcom

@WoutervanOoijen Cảm ơn bạn đã phản hồi rất rõ ràng.
capcom

7

Điều này có vẻ hơi khó hiểu, nhưng nếu bạn thấy mình không cần bộ tải khởi động Arduino (vì bạn không cần phải khởi động lại AtmegaXXX của mình qua mạch liên kết nối tiếp) thì bạn không cần bộ tải khởi động. Đó là tất cả một bootloader làm cho bạn.

Nói chung, tôi thấy rằng việc giữ bộ tải khởi động Arduino trên bộ vi điều khiển Atmega của tôi giúp chúng linh hoạt hơn trong lĩnh vực này. Nhưng của tôi không được sử dụng cho các robot tách ra; chúng được sử dụng trong các bộ điều khiển thiết bị và cơ sở, thường là ở cuối các liên kết RS-232 dài. Tôi có thể ngồi ở máy tính chính của mình và tải phần sụn mới cho họ theo ý thích của mình, và cảm giác giống như tôi đang tải phần sụn lên đầu dò sao Hỏa. Tôi sẽ không muốn nó theo bất kỳ cách nào khác.

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.