PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Tiny Bootloader (http://www.picvietnam.com/forum/forumdisplay.php?f=67)
-   -   Cơ bản về bootloader & tiny bootloader (http://www.picvietnam.com/forum/showthread.php?t=130)

ntdung 03-09-2005 09:51 PM

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. :(

falleaf 13-10-2005 05:47 PM

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.

http://www.etc.ugal.ro/cchiculita/so...bootloader.png

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.

falleaf 13-10-2005 06:12 PM

Phần cứng của tiny bootloader các bạn làm theo sơ đồ sau:

http://www.etc.ugal.ro/cchiculita/software/max232.png

http://www.etc.ugal.ro/cchiculita/software/resetpic.gif

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 05-12-2005 03:32 AM

http://i3.photobucket.com/albums/y64...ootloader1.jpg

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 05-12-2005 03:37 AM

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.

4MD 25-02-2006 08:20 PM

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.

tinhthanthep 28-02-2006 08:31 AM

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ì?

batbatdieu 28-02-2006 09:32 PM

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 ,

voduychau 09-03-2006 10:27 AM

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

namqn 09-03-2006 05:33 PM

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,

namqn 09-03-2006 05:38 PM

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?

voduychau 10-03-2006 07:58 PM

à 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....

namqn 10-03-2006 11:09 PM

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,

phamthaihoa 21-03-2006 06:51 PM

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 :(

batbatdieu 22-03-2006 06:50 PM

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

namqn 22-03-2006 07:32 PM

Trích:

Nguyên văn bởi batbatdieu
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

Bạn có thể kiểm tra giả thiết về bước 3 của bạn bằng cách thử dùng file .hex mà tôi đã cung cấp trong luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=333
Nếu đúng là bước 3 bạn làm không tốt thì tôi sẽ bàn tiếp về việc viết code trong C30 cho tiny bootloader.

Thân,

hanspkt 16-11-2006 03:54 PM

Các anh cho em hỏi thêm điều này: sao tiny bootloader em làm và nó đã hoạt động rồi, nó báo có tìm thấy pic6f877a rồi và nhấn nút writeflash thì cũng ghi chương trình được rồi (hoạt động đúng yêu cầu) nhưng các lần sau thì lại báo lỗi không tìm thấy chip (mặc dù em có nhấn nút reset nhiều lần) và cũng không ghi chương trình mới được (nhấn writeflash), xin các anh chỉ cho em cách khắc phục.
(em dùng tinybld191)
cám ơn nhiều!

namqn 16-11-2006 06:32 PM

Nếu Tiny Bootloader được viết không cẩn thận, nó chỉ có khả năng nạp chương trình vào chip một lần duy nhất. Điều đang diễn ra là đoạn code của bootloader trong những lần hoạt động tiếp theo của chip không thể thực thi được. Có nhiều nguyên nhân dẫn đến hiện tượng này, do đó bạn cần cho biết thêm thông tin thì mới giúp bạn được (nếu bạn tự biên dịch bootloader thì cho biết phần mã nguồn của bootloader, nếu không phải là trường hợp đó thì bạn cho biết mã nguồn của chương trình ứng dụng).

Thân,

hanspkt 23-11-2006 03:30 PM

em đã tìm ra nguyên nhân rồi, cám ơn anh nhiều

namqn 19-12-2006 10:49 PM

Trích:

Nguyên văn bởi anhoa1608 (Post 6441)
Anh Falleaf ơi, giúp em với....
Nếu dùng CSSC hoặc BASIC( của Oshonsoft) để viết thì đoạn lệnh đầu tiên của 1 chương trình để biên dịch và nạp đựoc bằng bootloader la gì...Cho em 1 đoạn mã mẫu đi.
Cảm ơn nhiều

Với CCS C thì không cần làm gì hết, C compiler tự thêm các lệnh cần thiết ở phần đầu của Flash. Còn với Basic compiler của Oshonsoft thì có thể cần thêm một số lệnh ở phía đầu, ví dụ như sau:
Code:

ASM:        org 0x00
ASM:        clrf 0x03
ASM:        movlw 0x00  'Create a long jump
ASM:        movwf 0x0A  'compatible with
Goto l1  'the bootloader
l1:

Sau l1 là chương trình của bạn.

Thân,

anhquangngai 21-12-2006 05:18 PM

Cho em hỏi về TinyBootloader
 
1 Attachment(s)
bác nào cho em hỏi em đang làm mạch Tinybootloader để nạp cho con PIC6F877A nhưng khi em kiểm tra thì nó báo lỗi là ko tìm ra PIC
phần cứng thì em kiểm tra rồi ---> Ok
phần firmware (file kèm theo) thì em làm như trên forum đã hướng dẫn nhưng khi kiểm tra thì nó báo lỗi
Bác nào có firmware mà đã nạp OK rồi thì gởi lên forum cho em với (cả file ÁM và HEX nữa)
các bác cứu em với!!!

hanspkt 23-12-2006 12:57 PM

bạn kiểm tra phần kết nối chân reset lại thử xem. Mình cũng bị lỗi tương tự, cứ nghĩ dây cổng com mình mua là đã kết nối đủ các chân nhưng sau khi đo lại thì mới biết chân reset chưa được kết nối. Không biết là dây bị đứt hay là nó không nối hay sao ấy.

anhquangngai 23-12-2006 05:44 PM

cảm ơn bạn mình đã kiểm tra rồi, mình cũng đã kết nối nhưng nó vẫn ko chịu nạp (?)
có bác nào có mạch đã chạy rồi thì kiểm tra thử phần firmware của mình thử chạy ko?
Xin cảmv ơn!

anhquangngai 23-12-2006 05:58 PM

mạch của mình giống như mạch của bác ntc hướng dẫn

giaosucan 27-12-2006 10:54 PM

tui cung dung bootloader nap kha tot ,nhung ko hiu sao dang nap dc may lan thi chip nong ran ,sau do ko nhan dc chip nua :-?

namqn 28-12-2006 08:58 PM

Trích:

Nguyên văn bởi giaosucan (Post 6600)
tui cung dung bootloader nap kha tot ,nhung ko hiu sao dang nap dc may lan thi chip nong ran ,sau do ko nhan dc chip nua :-?

Có khả năng chip bị ngắn mạch nguồn (do I/O kết nối không chuẩn, do chạm chập của đường mạch, ...) và đã hỏng. Kiểm tra bằng các mạch nạp thông thường xem có nhận dạng được chip hay không.

Thân,

khangcodt 29-01-2007 09:53 PM

Chào bác falleaf, bác namqn và các huynh đài PIC bang.

Đệ cũng đang nghiên cứu về PIC và đặc biệt là Bootloader. Hiện tại đệ đang "mò mẫm" cách dùng Bootloader của CCSC nhưng chưa thành công. Có bậc huynh đài nào rành xin chỉ giáo giúp với. Cám ơn trước luôn.!!!
Thấy trong bộ phần mềm CCSC có các EXAMPLE và DRIVER như ex_bootloader.c, ex_bootload.c, loader.c , bootloader.h, bootloader.c ...etc, đệ đã chỉnh sửa ex_bootloader.c để tạo một application đơn giản (nhấp nháy chân RB0 của P16f877) và cho dịch bằng MPLAB. Tuy dịch và mô phỏng (bằng Proteus) nhưng chẳng biết làm thế nào để dùng với Bootloader. Dùng TinyBld19 của bác F bày cho cũng không nhận được gì hết. (Các bác thông cảm, vẫn còn hơi 'silly' một tẹo)

Bác cao thủ nào sành điệu về món này xin chỉ bảo giùm. Nếu có thời gian rảnh thì Pốt cụ thể (càng tỉ mỉ càng tốt... Hì hì.!!!) các vấn đề như ráp mạch như thế nào, dùng Bld19 hay phần mềm nào, nạp chương trình nào... Tóm lại là từ A đến Z.
Mong sớm hồi âm từ các bác.
Thanks for thousand times.!!!
__________________________
PS: May be contact with me at Email: khangcodt@yahoo.com

namqn 30-01-2007 05:18 AM

Trích:

Nguyên văn bởi khangcodt (Post 7113)
Chào bác falleaf, bác namqn và các huynh đài PIC bang.

Đệ cũng đang nghiên cứu về PIC và đặc biệt là Bootloader. Hiện tại đệ đang "mò mẫm" cách dùng Bootloader của CCSC nhưng chưa thành công. Có bậc huynh đài nào rành xin chỉ giáo giúp với. Cám ơn trước luôn.!!!
Thấy trong bộ phần mềm CCSC có các EXAMPLE và DRIVER như ex_bootloader.c, ex_bootload.c, loader.c , bootloader.h, bootloader.c ...etc, đệ đã chỉnh sửa ex_bootloader.c để tạo một application đơn giản (nhấp nháy chân RB0 của P16f877) và cho dịch bằng MPLAB. Tuy dịch và mô phỏng (bằng Proteus) nhưng chẳng biết làm thế nào để dùng với Bootloader. Dùng TinyBld19 của bác F bày cho cũng không nhận được gì hết. (Các bác thông cảm, vẫn còn hơi 'silly' một tẹo)

Bác cao thủ nào sành điệu về món này xin chỉ bảo giùm. Nếu có thời gian rảnh thì Pốt cụ thể (càng tỉ mỉ càng tốt... Hì hì.!!!) các vấn đề như ráp mạch như thế nào, dùng Bld19 hay phần mềm nào, nạp chương trình nào... Tóm lại là từ A đến Z.
Mong sớm hồi âm từ các bác.
Thanks for thousand times.!!!

Nên dùng Tiny Bootloader, vì kích thước nhỏ gọn. Phần cứng thì đã có sơ đồ của F ngay trong luồng này, ở trang 1. Bootloader sẽ được nạp vào chip bằng 1 mạch nạp bình thường chỉ 1 lần đầu tiên, sau đó sẽ dùng phần mềm tương thích với firmware (bootloader) trong chip để nạp những chương trình ứng dụng. Nếu dùng bootloader của CCS C thì tất nhiên phải dùng phần mềm giao tiếp trên PC của nó, gần như chắc chắn là firmware của CCS C không làm việc với phần mềm giao tiếp của Tiny Bootloader.

Bạn có thể cho biết chip cụ thể, tôi sẽ dịch cho bạn một firmware với cấu hình mà bạn muốn, sau đó bạn nạp firmware đó vào chip bằng một mạch nạp bình thường nào đó.

Như tôi đã có lần trả lời, CCS C tương thích với các bootloader, do đó không cần thao tác gì thêm đối với chương trình ứng dụng.

Bạn cũng nên phân biệt bootloader và chương trình ứng dụng, không nhất thiết phải ghép code của bootloader và trình ứng dụng với nhau.

Thân,

khangcodt 04-02-2007 09:29 PM

Trước hết xin cảm ơn bác namqn đã dành thời gian "tiếp" em.

Điều đầu tiên mà em muốn nói là em bắt đầu thấy 'hơi bị ngại' làm việc với Asm. Trước khi tìm hiểu về PIC, em đã sử dụng họ 8051 (AT89C52) có thể nói là khá thạo, nhưng hoàn toàn bằng Asm. Từ khi sử dụng CCSC của MC PIC, em thấy công việc lập trình mà đặc biệt là gỡ rối chương trình trở nên dễ dàng hơn rất nhiều. Nếu dùng Asm thì việc gỡ rối rất phức tạp và đau đầu. Vả lại, trong CCSC có rất nhiều những hàm dựng sẵn (Built-In function) sử dụng rất hữu ích (riêng điều này hình như trong C của AT89 không có, còn với Asm thì phải tự mình làm lấy). Thêm vào đó, khi cụ thể hóa một giải thuật có độ phức tạp cao thì việc sử dụng ngôn ngữ bậc cao rõ ràng ưu thế hơn nhiều so với bậc thấp. (Nói phét vậy thôi chứ em cũng chưa làm chương trình nào quá phức tạp).
Theo em hiểu như bác nói thì chỉ cần làm một Bootloader bình thường (nạp firmware vào chip, gắn vào mạch cứng của bác F rồi giao tiếp với TinyBld...), sau đó có thể dùng CCSC để xây dựng App, không cần khai báo gì thêm, dịch ra file HEX rồi lấy file đó nạp vào chíp qua Tinybld.(chíp em đang dùng là P16F887A).

Còn nếu em hiểu không đúng thì em xin trình bày một số vấn đề sau để nếu có thể bác cố vấn cho em luôn.

Em đọc trong direction của các ví dụ liên quan đến Bootloader trong phần EXAMPLE, thấy giao tiếp giữa PIC với PC sử dụng chương trình SIOW.exe (trong thư mục của CCSC). Nhưng một điều rất đáng tiếc là trong Help của CCSC lại không hề nói sử dụng như thế nào, và bản thân chương trình SIOW.exe thì không có Help.

Nếu bác giúp em được vụ này thì không những em mà cả các đệ tử của PIC bang cũng được nhờ rất nhiều.

Xin đa tạ.!!!
_________________
PS: Maybe contact with me at Email: khangcodt@yahoo.com

namqn 04-02-2007 11:01 PM

Trích:

Nguyên văn bởi khangcodt (Post 7217)
...
Theo em hiểu như bác nói thì chỉ cần làm một Bootloader bình thường (nạp firmware vào chip, gắn vào mạch cứng của bác F rồi giao tiếp với TinyBld...), sau đó có thể dùng CCSC để xây dựng App, không cần khai báo gì thêm, dịch ra file HEX rồi lấy file đó nạp vào chíp qua Tinybld.(chíp em đang dùng là P16F887A).

Còn nếu em hiểu không đúng thì em xin trình bày một số vấn đề sau để nếu có thể bác cố vấn cho em luôn.

...

Bạn đã hiểu đúng ý của tôi rồi đấy, chỉ cần có bootloader thích hợp cho chip và tương thích với Tiny Bootloader thì có thể nạp chip bằng Tiny Bootloader. Có lẽ bạn đang muốn nói tới PIC16F877A (vì Microchip không có PIC16F887A, nhưng có chip PIC16F887)? Với các chương trình dịch cho ngôn ngữ cấp cao thì thanh ghi PCLATH của dòng PIC16 đã được xử lý theo cách tương thích với các bootloader rồi.

Thân,

khangcodt 05-02-2007 12:12 PM

Cảm ơn bác vì những thông tin và sự trả lời rất nhanh chóng.

Nhưng em thắc mắc một điều là tại sao Microchip lại không có P16F887A. Chính em nghiên cứu con này bằng Datasheet viết về 16F87XA của Microchip (download của Microchip). Bản thân những con của em cũng là 16F87XA theo đúng logo và seri của Microchip.

Bác thử xem lại xem Tinybld có sử dụng cho 16F877A (nói chung là 16F87XA) được không?

Cảm ơn bác.!!!
_______________________
PS: Maybe contact with me at Email: khangcodt@yahoo.com

namqn 05-02-2007 06:25 PM

Trích:

Nguyên văn bởi khangcodt (Post 7228)
Cảm ơn bác vì những thông tin và sự trả lời rất nhanh chóng.

Nhưng em thắc mắc một điều là tại sao Microchip lại không có P16F887A. Chính em nghiên cứu con này bằng Datasheet viết về 16F87XA của Microchip (download của Microchip). Bản thân những con của em cũng là 16F87XA theo đúng logo và seri của Microchip.

Bác thử xem lại xem Tinybld có sử dụng cho 16F877A (nói chung là 16F87XA) được không?

Cảm ơn bác.!!!

Vì PIC16F877 cần có sự cải tiến nên phiên bản sau này được đặt tên là PIC16F877A. Còn PIC16F887 ra đời khi những cải tiến đã được thực hiện, nên không có phiên bản 887A cho chip này. Chỉ có một vài dòng chip có các phiên bản ...A, đó là những dòng chip đầu tiên ở các bước ngoặt công nghệ của Microchip.

PIC16F87xA chạy tốt với Tiny Bootloader.

Thân,

khangcodt 05-02-2007 08:13 PM

Cảm ơn bác namqn rất nhiều

bigtitan 26-04-2007 03:43 PM

Em hỏi câu hơi ngớ ngẩn tí:theo như các pác đã nói trên vậy túm lại 1 câu gọn nhất là tiny bootloader là 1 phần cứng nhỏ cho phép ta vừa nạp vừa test được PIC mà không cần tháo ra cắm vào gì phải không ạ.Chỉ cần hết nối với PIC,PC;nạp và chạy thôi(đã thiết lập các thông số trước rồi).Chỉ vậy thôi phải không ??
Rổi còn phần cứng chỉ đơn giản như hình mà bác F đã đưa lên!!
Xin hết

namqn 26-04-2007 06:16 PM

Trích:

Nguyên văn bởi bigtitan (Post 8410)
Em hỏi câu hơi ngớ ngẩn tí:theo như các pác đã nói trên vậy túm lại 1 câu gọn nhất là tiny bootloader là 1 phần cứng nhỏ cho phép ta vừa nạp vừa test được PIC mà không cần tháo ra cắm vào gì phải không ạ.Chỉ cần hết nối với PIC,PC;nạp và chạy thôi(đã thiết lập các thông số trước rồi).Chỉ vậy thôi phải không ??
Rổi còn phần cứng chỉ đơn giản như hình mà bác F đã đưa lên!!
Xin hết

Như tôi đã nói (ở đâu đấy, có thể ngay trong luồng này), để dùng bootloader thì chúng ta cần có 2 phần: phần cứng cho phép giao tiếp qua RS-232 (có thể đặc biệt hơn một chút như thiết kế của Tiny Bootloader, hay chỉ bình thường là một giao tiếp RS-232) đi kèm với firmware trong PIC, và phần mềm để truyền tập tin .hex chứa chương trình ứng dụng từ host PC đến PIC.

Phần cứng đó có thể là mạch thử nghiệm, mạch phát triển, hay mạch điều khiển thực của bạn. Vì firmware hơi thông minh một chút (nó chạy trên PIC mà), nên phần mềm chạy trên host PC cũng phải thông minh như nó (chính xác hơn là hiểu những gì firmware hiểu) để có thể giao tiếp với nhau.

Đảm bảo được những yêu cầu đó thì có thể nói như bạn: chỉ cần kết nối mạch với host PC, dùng phần mềm giao tiếp để chuyển chương trình ứng dụng cần nạp vào PIC, và sau đó là chạy thử chương trình ứng dụng.

Thân,

lamdangkhoa 06-05-2007 03:38 PM

Trích:

Nguyên văn bởi namqn (Post 2051)
Bạn có thể kiểm tra giả thiết về bước 3 của bạn bằng cách thử dùng file .hex mà tôi đã cung cấp trong luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=333
Nếu đúng là bước 3 bạn làm không tốt thì tôi sẽ bàn tiếp về việc viết code trong C30 cho tiny bootloader.

Thân,


HICCC!!!
LINK DIE RÙI ANH OI!!

namqn 06-05-2007 09:11 PM

Trích:

Nguyên văn bởi lamdangkhoa (Post 8534)
HICCC!!!
LINK DIE RÙI ANH OI!!

Bạn muốn nói link nào? Link để download tập tin ví dụ của dsPIC tutorial 1?

Thân,

omlun 08-05-2007 08:55 PM

Trích:

Nguyên văn bởi namqn (Post 2051)
Bạn có thể kiểm tra giả thiết về bước 3 của bạn bằng cách thử dùng file .hex mà tôi đã cung cấp trong luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=333
Nếu đúng là bước 3 bạn làm không tốt thì tôi sẽ bàn tiếp về việc viết code trong C30 cho tiny bootloader.

Thân,

link bi die!!

namqn 08-05-2007 09:04 PM

Các bài viết trong box đó sẽ bị ẩn đối với những người chưa đăng nhập. Bạn đăng nhập thì sẽ mở được bài viết bằng link đó. Đôi khi bạn phải đăng nhập lại vì một lý do nào đó. Trước khi thông báo lỗi kiểu như vậy bạn hãy kiểm tra lại xem bạn đang còn log in hay đã log out rồi. Tôi vừa kiểm tra link đó xong, nếu tôi chưa đăng nhập thì cũng nhận được thông báo lỗi, nhưng đăng nhập xong thì đọc được bài viết bình thường. Nó chỉ là cái link đến dsPIC tutorial 1 nằm trong box 'dsPIC'.

Thân,

omlun 08-05-2007 09:10 PM

hiccc em ko biết tại sao nữa! đã đăng nhập rùi nhưng click vào link
http://www.picvietnam.com/forum//showthread.php?t=333
hay những link tương tự điều bị báo lỗi:

Invalid Ðề tài specified. If you followed a valid link, please notify the administrator


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam