Tự lập trình


7

Theo bảng dữ liệu, ATMega168 chỉ có thể thực hiện các hướng dẫn tự lập trình khi chạy mã từ khối bộ tải khởi động.

Khi bộ nạp khởi động hoàn tất và ứng dụng khởi động, ứng dụng có thể nhảy trở lại vào một chương trình con trong khối bộ tải khởi động và ghi nó vào flash không?

Hoặc, có phải là một khi chương trình rời khỏi khối khởi động, nó không được phép tự lập trình lại cho đến sau khi thiết lập lại?


1
@Joby Taffey - bạn đã thử nghiệm bất kỳ điều nào dưới đây chưa?
J. Polfer

Không, tôi chưa thử nghiệm
Toby Jaffey

Câu trả lời:


6

tốt ... bạn luôn có thể thực hiện cài đặt lại phần mềm khai thác ala của bộ đếm thời gian theo dõi ... và đưa dữ liệu vào eeprom để liên lạc với mã bộ nạp khởi động của bạn như những gì bạn muốn nó làm ...

http://www.cs.mun.ca/~paul/cs4723/m vật liệu / atrrrav-libc-user-manual-1.6.5/FAQ.html#faq_softreset


Nhìn vào trang 272 của hướng dẫn ATMega168 (phần 6: Bước vào Chương trình bộ tải khởi động), dòng đầu tiên ghi:

Bước vào Trình tải khởi động diễn ra bằng một bước nhảy hoặc cuộc gọi từ chương trình ứng dụng. Điều này có thể được bắt đầu bởi một kích hoạt, chẳng hạn như một lệnh nhận được thông qua USART hoặc giao diện SPI.

Vì vậy, dường như tôi chắc chắn rằng bạn có thể và phải có thể gọi các hàm bootloader từ mã ứng dụng. Miễn là bạn đang thực thi mã nằm trong phần Bộ tải khởi động của bộ nhớ, các lệnh SPM có thể được thực thi và do đó bạn sẽ có thể tự lập trình bất cứ khi nào chương trình ứng dụng của bạn nhảy vào mã trình tải khởi động.


2

Bạn chỉ có thể nhảy đến khối bootloader và mọi thứ sẽ ổn. (chỉ cần nhớ di chuyển các vectơ ngắt là tốt)


1
Khi các bit khóa khởi động được đặt để ngăn việc đọc mã ứng dụng từ phần bộ tải khởi động - mã ứng dụng có thể nhảy đến bộ tải khởi động hay bạn chỉ có thể đến đó bằng cách buộc thiết lập lại?
Toby Jaffey

0

Bạn có thể nhảy vào bootloader và bắt đầu lập trình lại phần ứng dụng, nhưng đó có lẽ là một thiết kế tồi. Xem xét những gì xảy ra nếu một bản cập nhật thất bại hoặc bị gián đoạn: bây giờ khu vực ứng dụng của bạn đã bị hỏng và vì một nửa bộ tải khởi động của bạn hoạt động hiệu quả ở đó, nên có lẽ nó cũng bị hỏng. Vì vậy, bạn đã gạch thiết bị một cách hiệu quả.

Bạn muốn cấu trúc bộ nạp khởi động như một chương trình độc lập.

Xem Câu hỏi thường gặp này:

http://www.avrfreaks.net/forum/faq-c-wr-bootloader-faq?name=PNphpBB2&file=viewtopic&t=79206

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.