PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Bootloaders - Programmers - Debuggers - Emulators > Tiny Bootloader

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Tiny Bootloader Mọi vấn đề liên quan tinybootloader sẽ được tổng hợp ở đây.

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-01-2008, 08:05 PM   #1
nam03
Nhập môn đệ tử
 
Tham gia ngày: Feb 2006
Bài gửi: 7
:
Chào các bác,và các anh,đặc biệt là anh Nam. Cho em hỏi xin mấy tài liệu chỉ viết bootloader. Cảm ơn các anh em nhiều.

À em quên. Bootloader cho con PIC 18F67J10. Nói thế này cho cụ thể. Cảm ơn các anh em nhiều.

thay đổi nội dung bởi: namqn, 30-01-2008 lúc 11:58 PM.
nam03 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-01-2008, 12:09 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi nam03 View Post
Chào các bác,và các anh,đặc biệt là anh Nam. Cho em hỏi xin mấy tài liệu chỉ viết bootloader. Cảm ơn các anh em nhiều.

À em quên. Bootloader cho con PIC 18F67J10. Nói thế này cho cụ thể. Cảm ơn các anh em nhiều.
Bạn có thể đọc mục 6 trong datasheet của PIC18F67J10, thực ra quy trình là giống nhau cho các PIC18F, kể cả các chip PIC18FxxJxx. Bạn có thể tham khảo code của tôi trong tập tin nguồn của Tiny Bootloader (thư mục con 'other\picsource\other\nnq' của thư mục chứa Tiny Bootloader). Link để download Tiny Bootloader: http://www.etc.ugal.ro/cchiculita/so...lddownload.htm.

Với phiên bản mới (195) của Tiny Bootloader, bạn có thể tự thêm ID cho chip mới vào tập tin 'piccodes.ini' trong thư mục chứa Tiny Bootloader, sau đó có thể dùng ID này trong firmware của bạn. Chỉ cần chú ý làm mạch phần cứng cho ổn, và dùng kích thước của bộ đệm ghi là 64 byte (tập tin nguồn 'TinyB18F64.asm' của tôi dùng bộ đệm ghi 64 byte).

Bạn cứ viết thử rồi trao đổi thêm thì tốt hơn.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2008, 03:05 PM   #3
Hard
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Huế
Bài gửi: 26
:
Send a message via Yahoo to Hard
Hi,
Tui cũng đang thử viết riêng một BootLoader (BLD) dùng CCS nhưng không thực hiện được ý đồ vì có một lỗi xảy ra khi tui muốn định vị mã chương trình trong bộ nhớ. Các bác xem hình bên dưới rồi xem có cách nào giải quyết không.

Thân ái.
Hard vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2008, 09:06 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi Hard View Post
Hi,
Tui cũng đang thử viết riêng một BootLoader (BLD) dùng CCS nhưng không thực hiện được ý đồ vì có một lỗi xảy ra khi tui muốn định vị mã chương trình trong bộ nhớ. Các bác xem hình bên dưới rồi xem có cách nào giải quyết không.

Thân ái.
Để đặt vùng nhớ cho main() vào vị trí bạn mong muốn, bạn có thể dùng directive #build của CCS C. Bạn đọc tài liệu hướng dẫn của CCS C và tham khảo thêm forum của CCS C về cách viết bootloader (theo tôi được biết thì CCS C có ví dụ về bootloader).

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-05-2008, 12:08 PM   #5
Hard
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Huế
Bài gửi: 26
:
Send a message via Yahoo to Hard
Hi,
Cảm ơn bác namqn, tui đã dùng #build rồi nhưng khi đặt như vậy thì toàn bộ mã được đặt vào vùng đó mà không có lệnh nhảy đến vùng đó. Vì vậy khi reset thì chip không làm gì cả vì tại địa chỉ 0x0000 chẳng có lệnh gì cả. Ngay cả khi tui đưa vào dòng #build(reset = 0, interrupt = 0x0004) thì cũng chẳng có lệnh nhảy đến địa chỉ đặt đoạn code của hàm main ở địa chỉ 0x0000.
Trong CCS thì đã có ví dụ BLD nhưng đoạn mã này nó không nằm ở cuối vùng nhớ chương trình và khi viết chương trình ứng dụng thì phải khai báo lại địa chỉ reset và ngắt. Điều này không hay vì nếu ta dùng một file hex có sẵn (được dịch từ trình biên dịch khác) thì nó không chạy được.
Các bác còn cao kiến nào khác không?
Hard vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-05-2008, 01:57 AM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi Hard View Post
Hi,
Cảm ơn bác namqn, tui đã dùng #build rồi nhưng khi đặt như vậy thì toàn bộ mã được đặt vào vùng đó mà không có lệnh nhảy đến vùng đó. Vì vậy khi reset thì chip không làm gì cả vì tại địa chỉ 0x0000 chẳng có lệnh gì cả. Ngay cả khi tui đưa vào dòng #build(reset = 0, interrupt = 0x0004) thì cũng chẳng có lệnh nhảy đến địa chỉ đặt đoạn code của hàm main ở địa chỉ 0x0000.
Trong CCS thì đã có ví dụ BLD nhưng đoạn mã này nó không nằm ở cuối vùng nhớ chương trình và khi viết chương trình ứng dụng thì phải khai báo lại địa chỉ reset và ngắt. Điều này không hay vì nếu ta dùng một file hex có sẵn (được dịch từ trình biên dịch khác) thì nó không chạy được.
Các bác còn cao kiến nào khác không?
Tôi đã thử chương trình đơn giản như sau thì CCS C đã biên dịch tốt, đặt mã chương trình đúng vị trí mong muốn, và tại vị trí vector ngắt cũng xử lý thanh ghi PCLATH trước khi có lệnh nhảy đến main() . Vấn đề là code của bạn đã nêu ở post #3 có dòng 8 thừa, và có vùng nhớ trải qua nhiều hơn 1 trang bộ nhớ chương trình.
Code:
#include <16F77.h>
#fuses	HS,NOWDT,NOPROTECT

#org	0x1F00, 0x1FFF
void main() {

  set_tris_b(0);
  output_b(0);

  while(TRUE) {
  }

}
Nếu bạn vẫn cứ muốn dùng các #org (một cách không cần thiết) để dành chỗ cho chương trình ứng dụng thì có thể thêm các dòng sau vào phía trước main():
Code:
#org	0x0004, 0x07FF
#org	0x0800, 0x0FFF
#org	0x1000, 0x17FF
Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 09:05 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam