/ / Cách cài đặt bộ tải khởi động Arduino

Cách cài đặt bộ tải khởi động Arduino

Cài đặt bộ tải khởi động là bước đầu tiên để đưa các dự án Arduino của bạn vào cuộc sống. Đây là một phần mềm giúp bạn thường xuyên tải lên các bản phác thảo Arduino một cách dễ dàng lên bảng mà không cần thiết bị lập trình đặc biệt.


Mặc dù điều này nghe có vẻ giống khoa học tên lửa, nhưng nó thực sự đơn giản hơn bạn nghĩ—ngay cả đối với người mới bắt đầu. Chúng tôi sẽ chỉ cho bạn cách dễ dàng cài đặt (hoặc cài đặt lại) bộ tải khởi động trên bo mạch Arduino của bạn chỉ bằng một vài bước đơn giản.

Nhưng trước tiên, chính xác bộ tải khởi động trên bo mạch Arduino là gì?


Bộ tải khởi động là gì?

Bộ tải khởi động Arduino là một chương trình nhỏ được lưu trữ trong bộ nhớ cố định của bo mạch, chương trình này được thực thi mỗi khi bo mạch được bật nguồn, tải lên mã mới hoặc được đặt lại. Bất cứ khi nào chương trình bộ tải khởi động được thực thi, nó sẽ khởi tạo phần cứng của bo mạch và sau đó tải bản phác thảo hoặc chương trình chính được lưu trữ trong bộ nhớ flash của bo mạch.

Điều đáng chú ý là tất cả các bo mạch Arduino đều được cung cấp bộ tải khởi động được cài đặt sẵn từ nhà sản xuất của chúng. Đôi khi, bạn có thể tìm thấy các bo mạch có bộ tải khởi động bị lỗi. Tuy nhiên, điều này hiếm khi xảy ra.

Tại sao nên sử dụng Bootloader?

Có một số tình huống sử dụng bộ tải khởi động Arduino có thể hữu ích. Ví dụ: nếu bạn là người mới bắt đầu sử dụng nền tảng Arduino, việc sử dụng bộ tải khởi động có thể giúp tải các chương trình mới lên bảng của bạn dễ dàng và nhanh hơn. Điều này là do bạn không cần sử dụng các thiết bị lập trình bên ngoài, chẳng hạn như bộ lập trình hoặc bộ chuyển đổi USB-to-serial, để tải mã của bạn lên.

Nếu bạn đang làm việc trên một dự án yêu cầu cập nhật mã thường xuyên, bạn sẽ thấy nó rất hữu ích. Trong trường hợp này, sử dụng bộ tải khởi động có thể giúp bạn tiết kiệm thời gian và công sức, vì bạn có thể chỉ cần tải mã mới lên bảng mà không cần phải sử dụng các thiết bị lập trình bên ngoài.

Ngoài ra, nếu bạn đang làm việc trong một dự án yêu cầu Arduino phải ở trạng thái cụ thể khi bật nguồn, chẳng hạn như chạy một chương trình cụ thể, thì việc sử dụng bộ tải khởi động có thể hữu ích. Bộ tải khởi động cho phép bạn đặt trạng thái ban đầu của bo mạch để nó sẽ tự động chạy chương trình mong muốn khi được bật nguồn.

Cuối cùng, nó cung cấp một cách để khôi phục Arduino nếu bản phác thảo chính bị hỏng hoặc không chạy được.

Tại sao Bootloader của tôi bị thiếu?

Hình ảnh Lỗi với các số 1 và 0 màu xanh lá cây.

Có thể có bốn lý do tại sao bo mạch của bạn có thể cần một bộ tải khởi động mới:

  1. Không có bộ tải khởi động được cài đặt sẵn: Khá phổ biến khi có nhiều dự án độc lập ATMEGA328P trong đó bạn hàn chip của mình lên PCB và tình cờ làm hỏng chip. Do đó, có thể bạn đã thay thế bo mạch bằng chip mà không cần cài đặt bộ tải khởi động trước.
  2. Đã thay bộ nạp khởi động: Bạn có thể đã thay thế bộ tải khởi động của mình bằng bộ tải khởi động của bên thứ ba đã sửa đổi và có thể bị hỏng.
  3. bộ tải khởi động bị hỏng: Đây là kịch bản ít có khả năng xảy ra nhất. Tuy nhiên, trong một số trường hợp, bộ nhớ flash Arduino có thể bị hỏng.
  4. Bộ nhớ mở rộng: Nếu bạn đã thay thế (flash) toàn bộ bộ tải khởi động bằng ứng dụng của mình để tận hưởng 2K bộ nhớ chương trình còn lại, thì bộ tải khởi động của bạn chắc chắn bị thiếu.

Đây là những gì bạn cần làm.

Cài đặt/Cài đặt lại Arduino Bootloader

Bộ vi điều khiển thường được lập trình trước khi hàn vào PCB. Điều này thường được thực hiện bằng cách sử dụng Lập trình trong hệ thống (ISP), chẳng hạn như Lập trình nối tiếp trong mạch (ICSP), cho phép bộ vi điều khiển được lập trình bằng cách sử dụng một bộ lập trình bên ngoài. Nhiều nhà sản xuất vi điều khiển, chẳng hạn như Atmel và Microchip, cung cấp tiêu đề ISP trên bo mạch của họ cho mục đích này.

Sử dụng bảng Arduino khác

Để flash bộ tải khởi động trên bộ vi điều khiển ATmega328, bạn cần sử dụng tiêu đề ICSP trên bo mạch trước khi bạn có thể cài đặt bộ tải khởi động bằng cách sử dụng bo mạch khác với tư cách là lập trình viên ISP.

Khởi chạy Arduino IDE, điều hướng đến ArduinoISP như được hiển thị bên dưới và tải mã ví dụ lên bảng mà bạn định sử dụng với tư cách là lập trình viên. (Làm theo hướng dẫn bằng video để kết nối phần cứng).

Ảnh chụp màn hình Arduino IDE điều hướng Tệp>>Ví dụ>>ArduinoISP>>ArduinoISP” data-img-url=”https://static1.smartreviewazimages.com/wordpress/wp-content/uploads/2022/12/arduino-ide-isp-example.jpg”/> </picture> </figure>
</p></div>
<p><!-- No repeatable ad for zone: character count repeatable. --><!-- Repeatable debug data: {

Mã sẽ giống như thế này để bạn biết mình đang đi đúng hướng.

Mã ví dụ Arduino-IDE cho ISP

Từ Công cụ tab, đi đến lập trình viên sau đó bấm vào Arduino là ISP như hình bên dưới.

Ảnh chụp màn hình Công cụ điều hướng Arduino-IDE>>Programmer>>Arduino as ISP” data-img-url=”https://static1.smartreviewazimages.com/wordpress/wp-content/uploads/2022/12/arduino-ide-programmer.jpg”/> </picture> </figure>
</p></div>
<p><!-- No repeatable ad for zone: character count repeatable. --><!-- Repeatable debug data: {

Cuối cùng, từ Công cụ tab một lần nữa, bấm vào Ghi Bootloader như được hiển thị.

Ảnh chụp màn hình Arduino-IDE điều hướng qua Tools>>Burn Bootloader” data-img-url=”https://static1.smartreviewazimages.com/wordpress/wp-content/uploads/2022/12/arduino-ide-burning-the-bootloader.jpg”/> </picture> </figure>
</p></div>
<p><!-- No repeatable ad for zone: character count repeatable. --><!-- Repeatable debug data: {

Sau khi quá trình hoàn tất, bảng mục tiêu hiện đã sẵn sàng để được lập trình.

Sử dụng một lập trình viên chuyên dụng

Có nhiều thiết bị lập trình AVR có sẵn cho kiểu cài đặt này. Một lựa chọn tốt mà bạn có thể thử là AVR Pocket Programmer (chỉ dành cho Windows) dựa trên USBtiny của Dick Streefland và USBtinyISP của Limor Fried. Nó cung cấp một cách đơn giản hơn để lập trình các bộ vi điều khiển AVR, giống như các bộ vi điều khiển được tìm thấy trên bo mạch Arduino. Ngoài thực tế là nó được cung cấp bởi kết nối USB, đây là lựa chọn tốt nhất vì nó tương thích với nhiều ngôn ngữ lập trình và phần mềm, khiến nó trở thành một công cụ linh hoạt cho bất kỳ người dùng Arduino nào.

Bạn cũng có thể thử các tùy chọn khác như bộ lập trình Atmel-ICE chính thức dành cho bộ vi điều khiển ARM—đặc biệt nếu bạn không sử dụng Windows.

Kết nối bảng Arduino với lập trình viên và flash bộ nạp khởi động. Tham khảo video hướng dẫn dưới đây.

Quá trình này phải đơn giản và không mất quá 20 giây.

Ghi chú: Bảng mục tiêu phải được bật đúng cách trước khi thử phương pháp này. Nếu không, bạn sẽ không thể flash .hex tập tin vào mục tiêu của bạn.

Đối với người dùng thành thạo, có một cách phức tạp hơn để cài đặt bộ tải khởi động bằng dòng lệnh. Không cần thiết phải đi đến giai đoạn này, nhưng nó cho bạn khả năng sửa đổi hoặc biên dịch lại mã để có được trải nghiệm tùy chỉnh hơn.

Bước đầu tiên trong quy trình là định cấu hình các bit cầu chì, là một phần của chip AVR và kiểm soát các cài đặt, chẳng hạn như việc sử dụng tinh thể bên ngoài. Sử dụng lệnh sau để đặt các bit cầu chì của bạn:

 avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m 

Sau khi các bit cầu chì đã được định cấu hình, bước tiếp theo là chuyển tệp .hex đã biên dịch sang bảng đích và đặt các bit khóa. Điều này sẽ cho phép bạn chạy chương trình trên bảng. Đảm bảo bạn đang ở trong cùng thư mục với optiboot_atmega328.hex trước khi nhập lệnh này:

 avrdude -b 19200 -c usbtiny -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m 

Ghi chú: Các lệnh này dành cho Arduino Uno. Bạn sẽ cần cấu trúc lại các bit cầu chì cho bảng của mình được tìm thấy trong board.txt tệp và điều chỉnh các tham số số bộ phận của AVRDUDE để chúng hoạt động.

Bạn sẽ làm gì với Arduino tiếp theo?

Bộ tải khởi động Arduino là thứ giúp lập trình dễ dàng, ngay cả đối với người mới bắt đầu. Bây giờ bạn có thể hy vọng tải các bản phác thảo tùy chỉnh của riêng mình lên Arduino và khôi phục bộ tải khởi động cho các dự án Arduino DIY trong tương lai.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *