View Single Post
Old 08-02-2008, 07:54 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 iniesta View Post
Xin chúc các thành viên picvietnam một năm mới mạnh khỏe và hạnh phúc !

Trở lại vấn đề trên, tớ xin cảm ơn bạn namqn đã trả lời tớ một cách rõ ràng và chi tiết. Tuy nhiên tớ có 1 vài điều nữa cần làm rõ :

1) Trong file info đi kèm với thư mục tiny bootloader, có đoạn tác giả viết :
" ... Q: How to work with another PIC that it's not listed in icdpictypes.inc? A: You'll have to trick the PC application. Search among the list in icdpictypes.inc for a model that is similar to your PIC, and has THE SAME amount of Flash; replace the entry with your model, but keep the ID and max_flash unchanged. "
Như vậy nghĩa là mình hoàn toàn có thể dùng firmware tiny bootloader của dsPIC30F4012 để nạp cho dsPIC30F4011 ( Bởi 2 loại dsPIC này rất giống nhau và có cùng dung lượng bộ nhớ Flash ) ? Nếu dùng được thì có cần chú ý thêm gì không ?

2) Tớ vẫn chưa hiểu lắm về việc reset trong quá trình nạp bằng tiny bootloader. Theo tớ hiểu thì có 3 loại reset :
Một là reset bằng tay dùng nút bấm.
Hai là reset bằng phần cứng dùng chân RTS của cổng COM của PC.
Ba là reset bằng phần mềm bằng một " list of codes to send first. "
Ở loại reset thứ nhất, do chương trình ứng dụng của tớ cần liên tục gửi dữ liệu từ dsPIC lên PC nên các bước nạp sẽ là : bấm nút reset -> click WriteFlash -> thả nút reset ra. Vậy là xong ?
Ở 2 loại sau thì việc reset được thực hiện tự động ? Quá trình nạp chỉ cần 1 thao tác duy nhất là click WriteFlash ?
Ở loại thứ hai, giả sử như tớ muốn dùng chân RTS của cổng COM của PC vào 1 mục đích khác, vd như là dùng làm tín hiệu bắt tay để điều khiển luồng dữ liệu gửi từ dsPIC lên PC, thì tớ phải làm sao ?
Ở loại thứ ba, codes mà mình gửi xuống là gì cũng được ? các bạn có thể cho tớ 1 ví dụ ?
1) Tôi cũng đã theo tinh thần đó mà viết các firmware cho các PIC, dsPIC khác. Như post trên của tôi đã nói, tôi thử nghiệm với dsPIC30F4012, và kết luận cho dsPIC30F4011, nghĩa là với Tiny Bootloader thì 4011 và 4012 chẳng có gì khác nhau (phần mềm trên host PC của Tiny Bootloader sẽ nhận diện chip là 4011/4012). Bạn không cần làm thêm gì cả.

2) Ở cách reset thứ nhất (bằng tay, dùng nút nhấn), bạn nhấn nút reset rồi buông ra để chip chạy đoạn chương trình của bootloader, khi đó firmware của bootloader sẽ trao đổi thông tin với phần mềm trên host PC để thực hiện việc nạp chương trình. Sau khi nạp xong, bootloader (firmware) sẽ giao quyền điều khiển cho chương trình ứng dụng vừa được nạp vào.

Ở loại thứ hai, phần cứng của bạn đã được nối vào mạch reset của PIC/dsPIC, do đó bạn không nên dùng nó cho mục đích khác, trừ khi bạn sửa lại phần cứng để khi chương trình ứng dụng chạy thì nó có thể vô hiệu hóa động tác reset bằng chân RTS của cổng COM. Khi đó, thông thường bạn tốn thêm 1 chân của PIC/dsPIC, mà việc hiện thực có thể cần một vài kỹ xảo. Nếu bạn muốn thực hiện nó thì tôi có thể nêu ý tưởng (bản thân tôi không thích làm như vậy): khi bootloader chạy thì một chân của PIC/dsPIC sẽ cho phép chân RTS của cổng COM tác động lên mạch reset của PIC, nhưng khi chương trình ứng dụng chạy thì chân đó của PIC/dsPIC sẽ không cho phép chân RTS của cổng COM tác động lên mạch reset của PIC nữa.

Ở loại thứ ba, bạn tự quy định danh sách code đó, và sửa lại firmware một cách tương ứng. Khi đó, nếu firmware nhận được chuỗi code như vậy thì nó sẽ thực hiện reset mềm PIC/dsPIC (bằng lệnh RESET trong tập lệnh của PIC/dsPIC).

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