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 Bài Trong Ngày 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 03-09-2005, 09:51 PM   #1
ntdung
Nhập môn đệ tử
 
Tham gia ngày: Sep 2005
Bài gửi: 1
:
Cơ bản về bootloader & tiny bootloader

Chào tất cả mọi người!
Tôi là một người mới tham gia diễn đàn này. Tôi rất muốn tìm hiểu một số khái niệm căn bản, VD như BOOTLOADER, SECTOR, DEVICE ID....
Rất mong nhận được sự hướng dẫn của tất cả mọi người.
Mong tin.
ntdung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-10-2005, 05:47 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Hướng dẫn về tiny bootloader

Đây là bootloader cho các vi điều khiển Microchip PIC

* Nó là bootloader có kích thước nhỏ nhất, ít hơn 100 word bộ nhớ chương trình
* Nó là bootloader duy nhất hỗ trợ tất cả các dòng PIC: 16F, 18F, dsPIC (những dòng có hỗ trợ chế độ self-programming - tự nạp lại).

Đặc điểm của firmware:

* Kích thước chỉ có khoảng 100word (cho tất cả các dòng 16F, 18F, dsPIC, thực ra là nó ít hơn 100 word);
* Có thể ghi vào flash, eeprom, và có thể ghi vào các bytes cài đăt (configuration bytes) của dòng 18F
* Khi reset, đợi 1 giây để nhận chương trình nạp, nếu không nhận được thì chuyển qua chạy chương trình
* File .asm của bootloader rất dễ để chỉnh sửa lại, cho phù hợp với từng loại chip, từng tốc độ truyền nhận.


Đặc điểm của phần mềm trên máy tính


* Có thể tải chương trình vào flash (trong phiên bản này của bootloader, cho phép cài đặt các byte cài đặt (configuration bytes) và có thể thay đổi dễ dàng theo từng loại PIC)
* Làm việc với tất cả các dòng PIC đã nêu trên; tự động nhận ra nội dung file HEX và dòng PIC
* Ghi nhớ cài đặt cuối (thuận tiện cho người dùng khi thao tác với một loại PIC)
* Trong trường hợp lỗi, nó sẽ truyền một tín hiệu ngược lại cho máy tính để tái đồng bộ giữa máy tính và PIC;
* Chế độ giao tiếp có thể được thay đổi, có thể dùng bất kỳ cổng COM nào với tốc độ baud nào

Khái niệm chung về bootloader


Một bootloader là một chương trình nằm trong vi điều khiển, và giao tiếp với máy tính (thông qua giao tiếp nối tiếp). Bootloader nhận một chương trình (đã được dịch ra thành file HEX) từ máy tính và ghi nó vào bộ nhớ flash của vi điều khiển thông qua một phần mềm trên máy tính, sau đó chạy chương trình đó trên vi điều khiển. Bootloader chỉ có thể được dùng với những vi điều khiển nào cho phép ghi vào bộ nhớ flash thông qua phần mềm trên máy tính. Bản thân bootloader phải được ghi vào trong bộ nhớ flash bằng một mạch nạp khác. Để bootloader hoạt động, sau khi nhấn reset, một lệnh "goto bootloader" phải nằm ở địa chỉ đầu tiên của chương trình vi điều khiển. Có 2 loại bootloader, một số loại đôi khi cần người dùng đặt lại địa chỉ các dòng lệnh đầu, một số khác thì tự bản thân nó đặt những dòng lệnh đầu của người dùng vào một địa chỉ khác khi mà bootloader đã nằm sẵn ở đó, và quay trở lại chương trình của người dùng khi kết thúc đoạn chương trình bootloader.



Trong trường hợp này, tiny bootloader tự động đem các vị trí đầu của chương trình người viết, và đặt ở phía dưới cùng với chương trình bootloader (thực ra đoạn chương trình này chỉ tối đa có 4 dòng lệnh). Các bạn lưu ý rằng địa chỉ 0x0004 đã là địa chỉ bắt đầu ngắt. Chính vì vậy, nếu các bạn lập trình từ vị trí 0x0000 thì cũng chỉ viết được tối đa 4 dòng lệnh, sau đó phải nhảy đến chương trình chính.

Như vậy, tiny bootloader sẽ thực hiện thao tác, cắt 4 dòng đầu tiên từ 0x0000 đến 0x0003 của các bạn, thay bằng dòng lệnh GOTO BOOTLOADER. Và nó tự động đặt 4 dòng lệnh của các bạn nằm ngay phía trên chương trình bootloader (xem hình trên).Sau đó, chạy chương trình tinybootloader phía bên dưới. Rồi nó quay lên chạy 4 dòng lệnh của các bạn.

Kết thúc 4 dòng này, nó lại trở về vị trí chương trình chạy bình thường của các bạn ở bên trên.

Trong bài viết sau, tôi sẽ đề cập tới việc cài đặt và sử dụng tiny bootloader.

Thú thực với các bạn rằng, tôi dùng tiny bootloader từ lâu, nhưng một năm trở lại đây, thấy tính năng của nó quá tốt, cũng ngỡ ngàng. Nó nạp được cho cả dsPIC luôn rồi thì không vấn đề gì mà không dùng nó.

Nội việc viết đoạn chương trình giao tiếp RS232 mà tôi nghĩ lúc nào cũng cần thiết, thôi thì dùng bootloader luôn cho tiện.

2 đoạn cuối là nhận xét cá nhân, các bạn không cần quan tâm chi tiết.

Chúc vui.

thay đổi nội dung bởi: falleaf, 13-10-2005 lúc 05:55 PM.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-10-2005, 06:12 PM   #3
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Phần cứng của tiny bootloader các bạn làm theo sơ đồ sau:





Phần mềm, các bạn có thể down load tại đây:

http://www.etc.ugal.ro/cchiculita/so.../tinybld19.zip

Đây là phiên bản tinybld19
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-12-2005, 03:32 AM   #4
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf


Trên đây là danh sách những chip đã được kiểm tra là nạp được với tiny bootloader.

Những chip được đánh dấu màu xanh đậm là những chip đã được tác giả test và dùng thường xuyên. Những chip màu xanh là những chip đã được test và verify. Còn những chip màu xanh tối là những chip đã được phản hồi là nạp được.

Riêng cá nhân tôi, đã sử dụng tiny bootloader nạp cho các dòng PIC sau:

16F876, 16F876A, 16F88, 16F877, 16F877A

Tất cả đều hoạt động tốt, và chưa bị một lỗi nào, ngoại trừ quên bấm nút reset. Nhưng nay, phiên bản mới này đã cho phép reset bằng chương trình, vì thế, tôi tin rằng phiên bản mới này sẽ không gây bất kỳ trở ngại nào cho người dùng.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-12-2005, 03:37 AM   #5
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Các bạn lưu ý nút reset bằng phần mềm, nếu đường dây các bạn nối quá dài, cần nối một con điện trở kéo lên 1K và một diode (trong hình màu xanh mờ). Nhưng điện trở 4K7 nối vào chân MCLR và VDD thực chất khi thiết kế mạch reset bằng tay các bạn đã có rồi. Chính vì vậy không cần thêm vào.

Còn lại tất cả mạch đều đơn giản giống như mạch giao tiếp RS232 bình thường. Các bạn vẫn có thể dùng bootloader để giao tiếp RS232 rất tốt, không cần làm bất kỳ điều gì khác.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-02-2006, 08:20 PM   #6
4MD
Nhập môn đệ tử
 
4MD's Avatar
 
Tham gia ngày: Jun 2005
Bài gửi: 6
:
Em đã test và chạy tốt cho dsPIC4012, bản này còn có thêm tính năng kiểm tra: Check PIC hay hơn so với các phiên bản trước đó. -> Bản tinybootloader này rất tuyệt.

thay đổi nội dung bởi: 4MD, 25-02-2006 lúc 08:23 PM.
4MD vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-02-2006, 08:31 AM   #7
tinhthanthep
Đệ tử 6 túi
 
tinhthanthep's Avatar
 
Tham gia ngày: Jun 2005
Bài gửi: 141
:
Từ trước tới giờ tớ dùng MPLAP để viết chương trình rồi dùng winpic800 để nạp vào chip. Có thấy chỗ nào động đến khái niệm bootloader đâu? Các bác giải thích xem sao lại không gặp khái niệm này thế, và nó là gì?
tinhthanthep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-02-2006, 09:32 PM   #8
batbatdieu
Đệ tử 4 túi
 
Tham gia ngày: May 2005
Bài gửi: 83
:
Trích:
Nguyên văn bởi 4MD
Em đã test và chạy tốt cho dsPIC4012, bản này còn có thêm tính năng kiểm tra: Check PIC hay hơn so với các phiên bản trước đó. -> Bản tinybootloader này rất tuyệt.
Bạn đã thử với 4011 chưa , mình cũng thử nhưng chỉ ghi đc 1 lần rùi đơ luôn ,
batbatdieu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2006, 10:27 AM   #9
voduychau
Đệ tử 2 túi
 
Tham gia ngày: Mar 2006
Bài gửi: 36
:
tui đang dùng 89c51,mạch nạp gồm có 1 con master nạp sẵn chương trình giao tiếp máy tính gọi là firmware,nay lại có khái niệm bootloader nữa,vậy cái này có giống như cái firmware của 89 ko?ko cần nó có được ko?
Đối với người biết rồi thì câu này hỏi hơi bị ..ngu 1 tí,nhưng tui mới học,mong giúp đỡ cho
__________________
goodbye!!
voduychau vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2006, 05:33 PM   #10
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 voduychau
tui đang dùng 89c51,mạch nạp gồm có 1 con master nạp sẵn chương trình giao tiếp máy tính gọi là firmware,nay lại có khái niệm bootloader nữa,vậy cái này có giống như cái firmware của 89 ko?ko cần nó có được ko?
Đối với người biết rồi thì câu này hỏi hơi bị ..ngu 1 tí,nhưng tui mới học,mong giúp đỡ cho
Bootloader là một khái niệm khác, nghĩa là bản thân chip cần được lập trình sẽ chạy một chương trình nhỏ và tự nạp chương trình mới vào bộ nhớ của nó, sau đó nó sẽ tự động thực thi chương trình vừa được nạp. Không phải chỉ có chip của Microchip mới có bootloader, một số vi điều khiển tương thích 8051 của Analog Devices, Dallas, Philips, và cả Atmel cũng có bootloader, nhưng đó là những bootloader của nhà sản xuất, được mã hóa cứng trong chip, còn bootloader của Microchip là do người dùng tự phát triển.

Bootloader cũng là một dạng firmware, nhưng chạy trên target chip, thay vì chạy trên một master chip, do vậy bạn không cần phải có mạch nạp nếu bạn đã có bootloader. Lẽ đương nhiên không có bootloader thì bạn vẫn dùng tốt được vi điều khiển, nhưng bạn đã được giải thích những thuận lợi của bootloader trong luồng này rồi đó.

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

thay đổi nội dung bởi: namqn, 21-03-2006 lúc 07:28 PM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2006, 05:38 PM   #11
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 batbatdieu
Bạn đã thử với 4011 chưa , mình cũng thử nhưng chỉ ghi đc 1 lần rùi đơ luôn ,
Tôi vừa thử nghiệm Tiny Bootloader với các dsPIC từ 201x đến 401x, tất cả đều chạy tốt, không có chuyện chỉ ghi được một lần duy nhất. Bạn có thể cho biết bạn đã làm như thế nào không?
__________________
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 10-03-2006, 07:58 PM   #12
voduychau
Đệ tử 2 túi
 
Tham gia ngày: Mar 2006
Bài gửi: 36
:
à há,như vậy là chỉ cần làm 1 cái mạch tẹo teo như thế rồi cắm vào computer là nó nạp,ko cần master gì ráo,vụ này rất hay.
89c51 có botloader ko vậy? nếu ko có thì có thể dùng mạch nạp mater/slave rồi nạp cái botloader cho nó ko?
hic hic,càng học càng phát sinh....
__________________
goodbye!!
voduychau vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-03-2006, 11:09 PM   #13
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 voduychau
89c51 có botloader ko vậy? nếu ko có thì có thể dùng mạch nạp mater/slave rồi nạp cái botloader cho nó ko?
Điều quan trọng là chip phải có khả năng tự nạp chương trình thì mới có thể tạo bootloader cho nó. 89C51 của Atmel không có khả năng này, nên không thể viết bootloader cho 89C51 được. Tuy nhiên, Atmel có một số chip tương thích 8051, chẳng hạn như AT89C5115 có khả năng tự nạp chương trình (bạn vào trang web của Atmel và dùng link sau:
http://www.atmel.com/dyn/products/pa...&Direction=ASC
để xem bảng lựa chọn các chip theo kiến trúc 8051, chú ý cột "Self Program Memory".) Atmel cũng cung cấp sẵn phần mềm chạy trên máy tính để kết nối với bootloader (họ gọi là Serial Loader) có sẵn trong chip.

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 21-03-2006, 06:51 PM   #14
phamthaihoa
Đệ tử 3 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 56
:
Trích:
Nguyên văn bởi namqn
Tôi vừa thử nghiệm Tiny Bootloader với các dsPIC từ 201x đến 401x, tất cả đều chạy tốt, không có chuyện chỉ ghi được một lần duy nhất. Bạn có thể cho biết bạn đã làm như thế nào không?
Ơ, lạ nhỉ, em nạp cho 4013, nó không chạy.

Tiny Bootloader có nhược điểm là nó cần lệnh goto trong 4 word đầu tiên của file hex. Vì vậy nó không làm việc với một số trình dịch. Đáng tiếc nhất trong đó có hai phiên bản mới nhất của HTPIC là HTPICC9.50 PL3 và HTPICC18 9.50.
Nhưng với phiên bản 8.05PL2 và 8.35PL3 lại chạy rất tốt.
Em hỏi trên forum của bọn HTPIC thì mod trả lời, em làm theo cũng chẳng chạy. Trên diễn đàn Microchipc.com có một chú người nhật đưa ra giải pháp khác phục nhưng chỉ chạy với bản 9.50Lite còn bản "xịn" thì không chạy
phamthaihoa vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2006, 06:50 PM   #15
batbatdieu
Đệ tử 4 túi
 
Tham gia ngày: May 2005
Bài gửi: 83
:
Trích:
Nguyên văn bởi namqn
Tôi vừa thử nghiệm Tiny Bootloader với các dsPIC từ 201x đến 401x, tất cả đều chạy tốt, không có chuyện chỉ ghi được một lần duy nhất. Bạn có thể cho biết bạn đã làm như thế nào không?
Trích:
1 - You can use one of the provided .hex files or
2 - Modify tinybld.asm and assemble it using MPASM IDE (or Mpasmwin.exe)
Modify "xtal", "baud", "_??_OSC" to what you need; assemble it (for example with .\MPLAB\MCHIP_Tools\Mpasmwin.exe); write the HEX it with a PIC programmer; put the PIC on you board and connect it to the PC serial port.
3 - Requirements for your program:
The program must meet this requirement: it must have in the first 4 words of memory a GOTO to the start of the main program. (this is what the majority of the bootloaders require). So in assembler it should look something like this:PIC16F PIC16F PIC18F
org 0
;clrf STATUS
clrf PCLATH
goto Main org 0
;clrf STATUS
pagesel Main
goto Main org 0
goto Main

If you use a compiler, search the help for a directive that allows coexistence with a bootloader;
Tôi đã làm theo bước 2 , modify lại file tinybld_ds4012.s rồi dịch và nạp vào 4011 , kết quả là tiny bootloader nhận đc là dspic4011/4012 . Nhưng sau khi nạp chương trình thì tiny bootloader ko nhận ra dspic đc nữa , tôi buộc phải nạp lại bootloader.
Có lẽ do bước 3 tôi đã làm sai , anh có thể cho 1 chương trình mẫu tham khảo đc ko , tôi dùng C30
batbatdieu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Microchip Bootloader falleaf Bootloaders - Programmers - Debuggers - Emulators 2 20-05-2017 11:43 AM
Pvn Tiny Bootloader ntc Tiny Bootloader 52 31-10-2012 01:27 PM
xin bootloader của pic18f4331 hoangminh1234 Tiny Bootloader 30 24-12-2011 02:38 PM
Tiny bootloaders falleaf Tiny Bootloader 15 01-02-2010 03:13 PM
Xin file hex bootloader của PIC16F84A hanhluckyly Tiny Bootloader 1 18-10-2006 09:36 PM


Múi giờ GMT. Hiện tại là 06:14 AM.


Đượ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