Bootloader vi điều khiển là gì

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

Hiện giờ thắc mắc đưa ra là, điều gì sẽ xẩy ra khi hàng tỷ sản phẩm dựa trên vi tinh chỉnh và điều khiển được sinh sản và bán, và việc nâng cấp firmware trở thành ưu tiên hàng đầu? Mỗi thiết bị đã bán có cần phải trả lại nhà sinh sản mọi khi có nhu cầu nâng cấp firmware không? Lời giải đáp rõ ràng cho thắc mắc này là không! Và đây là một trong những lý do quan trọng nhất vì sao một mạng lưới hệ thống dựa trên vi tinh chỉnh và điều khiển có bootloader trên bo mạch.

Bootloader là gì

Bootloader là một ứng dụng có mục tiêu đây là nâng cấp hoặc sửa đổi phần mềm mạng lưới hệ thống mà không cần sự can thiệp của những phương tiện nâng cấp Khóa học cơ sở chuyên được dùng. Bootloader có thể có nhiều chức năng, nhưng nó chủ yếu được sử dụng để quản lý ứng dụng. Nó cũng xuất hiện thể sử dụng các giao thức khác nhau như UART, CAN, I2C, I2S, Ethernet hoặc USB để thiết lập giao tiếp và khai mạc nâng cấp firmware. Một ví dụ tiêu biểu là bootloader trong bo Arduino, được cấu hình để flash phần mềm ứng dụng trong bộ nhớ flash của chip ATMega.

Tìm hiểu mạng lưới hệ thống bootloader

Bootloader có nhiều kích cỡ và có thể được phân biệt theo loại tác vụ mà nó thực thi. Mã phân nhánh khi phát động quyết định thực thi mã bootloader hay mã ứng dụng bằng phương pháp kiểm tra một chân GPIO khi phát động. Trong một mạng lưới hệ thống phức tạp hơn, bootloader tự tải vào bộ nhớ cùng với mã ứng dụng, sau đó nó kiểm tra các thông số thuở đầu và tính toàn vẹn của mạng lưới hệ thống. Sau khoản thời gian hoàn thành, nó sẽ quay trở lại quá trình thực thi mã ứng dụng. Đây là lý do vì sao nhiều bootloader chứa mã phân nhánh.

Ngay cả những lúc ứng dụng đang làm việc, nó được thiết kế nhiệm mức có thể yêu cầu nâng cấp firmware, sau đó nó sẽ thực hiện các thao tác thu dọn mạng lưới hệ thống cấp thiết. Nó sẽ reset chip bằng phương pháp đặt các giá trị đã biết vào thanh ghi watchdog. Ngoài ra, ứng dụng đưa ra tất cả những hướng dẫn cấp thiết cho mã phân nhánh để mang thiết bị vào cơ chế bootloader.

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

Lập trình bộ nhớ

Tất cả chúng ta sẽ tìm hiểu một tẹo tri thức về cấu trúc bộ nhớ và cách lập trình của nó. Để làm điều này, tất cả chúng ta sẽ lấy một ví dụ về vi tinh chỉnh và điều khiển AVR, nhưng trước đó, hãy làm rõ một số thuật ngữ cụ thể mà bạn cũng có thể biết hoặc có thể không biết. Mọi loại vi tinh chỉnh và điều khiển đều phải có sẵn một bộ nhớ không thay đổi được dùng để làm lưu trữ Khóa học. Bộ nhớ được sử dụng phổ quát nhất được gọi là bộ nhớ flash. Nó được chia thành các phần nhỏ hơn khác nhau. Phần nhỏ nhất được gọi là một trang. Các trang được phối hợp và tạo nên một cấu trúc bộ nhớ được gọi là một khu vực. Các khu vực được sắp xếp để tạo thành các cấu trúc to hơn được gọi là các khối. Mỗi bộ vi tinh chỉnh và điều khiển đều khác nhau về phong thái thao tác các khối này. Nhưng hồ hết các bộ vi tinh chỉnh và điều khiển sẽ được chấp nhận bạn ghi một byte duy nhất tại một thời khắc.

Bootloader trong AVR:

AVR đi kèm với một bộ nhớ được chia thành hai phần, một phần ứng dụng, một phần bootloader. Phần ứng dụng chứa mã dành riêng cho ứng dụng và phần bootloader có thể chứa nhiều bootloader khác nhau. Trong AVR, phần này còn có thể được cấu hình bằng phương pháp thiết lập các cầu chì. Tất cả chúng ta có thể đặt không gian bộ nạp phát động cấp thiết theo yêu cầu của tất cả chúng ta hoặc đặt nó được sử dụng cho mã ứng dụng.

Khi AVR đi vào bootloader. Trước tiên, nó xóa bộ nhớ trang và lấy nội dung trang mới từ UART, sau này sẽ lấp đầy bộ đệm trang. Sau khoản thời gian viết xong, nó sẽ đợi thêm trang từ UART; Nếu một trang mới có sẵn, quá trình khai mạc lại một lần nữa; nếu không, Khóa học sẽ vào phần RWW (Read While Write) và kết thúc hoạt động. Đây là phiên bản đơn giản hóa của hoạt động bootloader.

You May Also Like

About the Author: v1000