Các kiến thức, kinh nghiệm khi tìm hiểu về vi điều khiển avr. Cách lập trình, nạp code và những ứng dụng đơn giản cho avr.

Download

BootLoader

4 comments

Bootloader Là Gì?


Bootloader là một chương trình nhỏ nằm trên vùng nhớ của bộ nhớ không bị mất dữ liệu khi mất điện (Flash, Program memory), chương trình này thường có một hay một vài nhiệm vụ xác định. Đối với vi điều khiển AVR, bootloader sẽ nằm ở bộ nhớ chương trình (Program memory) bắt đầu từ địa chỉ được xác định bởi BOOTSZ[1:0]. Đối với atmega8 thì giá trị của fuse bit BOOTSZ[1:0] sẽ quy định địa chỉ của vùng bootloader và vùng nhớ chương trình thực thi như sau:
BOOTSZ1
BOOTSZ0
Kích thước bootloader
Địa chỉ bắt đầu boot
Vùng nhớ chương trình thực thi
Vùng nhớ boot
1
1
128 words
0xF80
0x000 - 0xF7F
0xF80 - 0xFFF
1
0
256 words
0xF00
0x000 - 0xEFF
0xF00 - 0xFFF
0
1
512 words
0xE00
0x000 - 0xDFF
0xE00 - 0xFFF
0
0
1024 words
0xC00
0x000 - 0xBFF
0xC00 - 0xFFF

Hình minh họa cho kích thước bootlloader được điều chỉnh bởi BOOTSZ

Vậy nếu BOOTSZ0 =  và BOOTSZ1 = 0 thì địa chỉ bắt đầu bootloader là 0xC00 kết thúc tại 0xFFF và vùng còn lại từ 0x000 đến 0xBFF sẽ chứa chương trình thực thi bình thường.
Có đến 2 vùng nhớ mà vi điều khiển có thể chạy được vì vậy phải có một thiết lập để vi điều khiển biết được sẽ thực thi code ở vùng nào khi khởi động. Việc thiết lập này được thực hiện qua fuse bit BOOTRST (bài fuse bit). Khi bit BOOTRST = 0 vi điều khiển sẽ thực thi code ở phần bootloader và khi BOOTRST = 1 chương trình sẽ chạy bình thường tại địa chỉ bắt đầu 0x000.

 Nạp Code Bằng Bootloader

Ứng dụng phổ biến của bootloader là nạp code cho vi điều khiển mà không cần đến mạch nạp. Hoạt động của nó như sau:
v Bootloader giao tiếp với máy tính thông qua một chuẩn giao tiếp nào đó, thông qua UART-RS232 hay USB chẳng hạn.
v Trên máy tính, thực hiện chuyển dữ liệu cần nạp cho vi điều khiển (file hex, file bin) thông qua những chuẩn giao tiếp trên.
v Chương trình bootloader nhận được dữ liệu này và tiến hành ghi dữ liệu vừa nhận được vào vùng nhớ chương trình thực thi.         
v Sau khi ghi xong thì bootloader nhảy đến địa chỉ đầu tiên (0x0000) của vùng nhớ chương trình thực thi để thực hiện code vừa nạp được.

           
AVR có rất nhiều bootloader được phát triển và sử dụng rộng rãi, phổ biến và được dùng nhiều nhất có thể kể đến là bootloader của Ardunio, Ardunio là một hướng tiếp cận khác khi đã rành rẽ những thứ cơ bản của AVR, học vi điều khiển từ Ardunio cũng có cái hay tuy nhiên tự tìm hiểu từ những thứ cơ bản nhất cũng là một thú vị.
            Ở đây tôi có một bootloader mà tôi đang sử dụng là bootloader dùng USB-HID để giao tiếp với máy tính, và một bootloader cũ hơn là bootloader dùng UART-RS232 để giao tiếp.

4 comments :

  1. nếu nạp bằng mạch nạp rồi có thể nạp lại bằng BootLoader không anh

    ReplyDelete
    Replies
    1. Được em, bootloader dùng để nạp code cho tiện hơn.

      Delete
    2. Dou đi 1 vòng rồi thấy bài này của bác Tài :D

      Delete
  2. Play Online Casino Games for Real Money (2021)
    › › Online Casino Games › › Online kadangpintar Casino 1xbet korean Games Play the best online casino games and play for real money in 2021. Top febcasino Live Dealer Games and No Download Casinos. Start Playing Today!

    ReplyDelete