Trong vài năm qua, vi điều khiển đã trở thành 1 phần thiết yếu ớt trong cuộc sống thường ngày hàng ngày của chúng ta. Chúng ta có thể không dìm thấy, tuy thế nó đã thực hiện một trong những nhiệm vụ tối giản để nâng cấp cuộc sống hàng ngày của chúng ta. Từ chip 8-bit dễ dàng và đơn giản điều khiển bóng đèn thông minh cho đến bộ xử lý bộc lộ kỹ thuật số 32-bit (DSP) vào TV với hộp lời giải tín hiệu số, giúp chúng ta có thêm phương tiện giải trí và phương tiện đi lại kỹ thuật số. Nếu không có vi điều khiển, cuộc sống thường ngày của bọn họ không chỉ nhát phần vui chơi mà còn mất đi năng lực kiểm soát. Cùng với nhu cầu gia tăng làm tăng sự phát triển của các thành phầm dựa bên trên vi điều khiển, hàng tỷ đơn vị vi điều khiển và tinh chỉnh đã được chào bán mỗi năm.

Bạn đang xem: Bootloader arduino là gì

 

Bây giờ câu hỏi đặt ra là, điều gì sẽ xảy ra khi hàng tỷ thành phầm dựa trên vi điều khiển được phân phối và bán, với việc nâng cấp firmware thay đổi ưu tiên sản phẩm đầu? Mỗi lắp thêm đã chào bán có rất cần phải trả lại nhà cung ứng mỗi khi mong muốn nâng cấp cho firmware không? Câu trả lời rõ ràng cho thắc mắc này là không! Và đó là một một trong những lý do đặc biệt nhất vì sao một hệ thống dựa bên trên vi tinh chỉnh có bootloader bên trên bo mạch.

 

Bootloader là gì

Bootloader là một ứng dụng bao gồm mục tiêu đó là nâng cấp cho hoặc sửa thay đổi phần mềm hệ thống mà không bắt buộc sự can thiệp của các công cụ tăng cấp chương trình các đại lý chuyên dụng. Bootloader tất cả thể có tương đối nhiều chức năng, dẫu vậy nó đa số được thực hiện để cai quản ứng dụng. Nó cũng rất có thể sử dụng những giao thức khác biệt như UART, CAN, I2C, I2S, Ethernet hoặc USB để cấu hình thiết lập giao tiếp và bắt đầu nâng cấp firmware. Một ví dụ điển hình nổi bật là bootloader trong bo Arduino, được thông số kỹ thuật để flash ứng dụng ứng dụng trong bộ nhớ lưu trữ flash của cpu ATMega.

 

Tìm hiểu khối hệ thống bootloader

*

Bootloader có nhiều kích cỡ và có thể được biệt lập theo một số loại tác vụ mà nó thực thi. Mã phân nhánh khi khởi động ra quyết định thực thi mã bootloader giỏi mã ứng dụng bằng phương pháp kiểm tra một chân GPIO lúc khởi động. Vào một hệ thống phức tạp hơn, bootloader tự thiết lập vào bộ nhớ lưu trữ cùng cùng với mã ứng dụng, sau đó nó kiểm tra những tham số thuở đầu và tính toàn diện của hệ thống. Sau thời điểm hoàn tất, nó sẽ quay trở lại quá trình thực thi mã ứng dụng. Đây là vì sao tại sao những bootloader chứa mã phân nhánh.

 

Ngay cả khi ứng dụng đang chạy, nó được thiết kế với đến mức có thể yêu cầu tăng cấp firmware, kế tiếp nó sẽ triển khai các thao tác lau chùi hệ thống đề xuất thiết. Nó vẫn reset chip bằng phương pháp đặt những giá trị vẫn biết vào thanh ghi watchdog. Quanh đó ra, áp dụng đưa ra toàn bộ các hướng dẫn quan trọng cho mã phân nhánh để lấy thiết bị vào chế độ bootloader.


*

 

Khi bootloader tải vào bộ nhớ, nó sẽ bước đầu khởi chế tạo ra hướng dẫn cơ phiên bản và những thiết bị nước ngoài vi để sẵn sàng cho việc upgrade firmware. Những thiết bị nước ngoài vi thường xuyên là đồng hồ đeo tay hệ thống, ngắt và những kênh liên lạc, và bộ lập lịch. đa số thứ này có thể chấp nhận được bootloader gật đầu hướng dẫn từ bên phía ngoài và nó ban đầu quá trình nâng cấp; sau khi hoàn tất, nó sẽ reset chip và khi khởi rượu cồn lại, nó sẽ chuyển sang cơ chế hoạt rượu cồn bình thường.

Xem thêm: Strenuous Là Gì ?, Từ Điển Anh 'Strenuous' Là Gì

 

Lập trình cỗ nhớ

Chúng ta sẽ khám phá một chút kỹ năng và kiến thức về cấu trúc bộ lưu trữ và phương pháp lập trình của nó. Để có tác dụng điều này, họ sẽ mang một lấy ví dụ như về vi tinh chỉnh và điều khiển AVR, cơ mà trước đó, hãy làm rõ một số thuật ngữ cụ thể mà chúng ta có thể biết hoặc rất có thể không biết. Mọi nhiều loại vi điều khiển đều phải có sẵn một bộ nhớ lưu trữ không biến hóa được dùng để lưu trữ chương trình. Bộ nhớ được sử dụng phổ biến nhất được gọi là bộ nhớ flash. Nó được tạo thành các phần nhỏ hơn khác nhau. Phần nhỏ dại nhất được gọi là một trang. Các trang được kết hợp và tạo cho một cấu trúc bộ lưu trữ được gọi là 1 trong khu vực. Các khu vực được bố trí để chế tác thành các kết cấu lớn rộng được gọi là những khối. Mỗi cỗ vi tinh chỉnh và điều khiển đều không giống nhau về cách thao tác các khối này. Nhưng hầu hết các cỗ vi tinh chỉnh sẽ cho phép bạn ghi một byte độc nhất vô nhị tại 1 thời điểm.

 

Bootloader trong AVR:

 

AVR đi kèm với một bộ nhớ được chia thành hai phần, 1 phần ứng dụng, một trong những phần bootloader. Phần ứng dụng chứa mã dành cho ứng dụng và phần bootloader gồm thể đựng được nhiều bootloader khác nhau. Vào AVR, phần này rất có thể được cấu hình bằng phương pháp thiết lập những cầu chì. Bạn có thể đặt không gian bộ hấp thụ khởi động cần thiết theo yêu ước của họ hoặc đặt nó được sử dụng cho mã ứng dụng. 

 

Khi AVR bước vào bootloader. Đầu tiên, nó xóa bộ nhớ lưu trữ trang với lấy câu chữ trang mới từ UART, tiếp đến sẽ bao phủ đầy cỗ đệm trang. Sau khi viết xong, nó sẽ ngóng thêm trang tự UART; nếu như một trang mới tất cả sẵn, quá trình bước đầu lại một lần nữa; ví như không, chương trình sẽ vào phần RWW (Read While Write) và chấm dứt hoạt động. Đây là phiên phiên bản đơn giản hóa của vận động bootloader.