PVN Tiny Bootloader
Đây là kết quả sau một thời gian dài miệt mài về Tiny Bootloader.
Nhận thấy đây là một công cụ đắc lực cho việc phát triển vi điều khiển PIC, chúng tôi đã làm việc hết sức nghiêm túc để đưa ra cho các bạn sản phẩm tốt nhất trong khả năng của PICVIETNAM. Rất trùng hợp, mọi công việc đã được hoàn tất ngay vào ngày sinh nhật của PICVIETNAM, nên cũng có thể xem đây là món quà nho nhỏ PICVIETNAM mong muốn gửi tặng đến tất cả các thành viên, đến những ai đã quan tâm và dành những tình cảm tốt đẹp cho PICVIETNAM. Đó cũng là điều mà PICVIETNAM mong muốn nhận được trong ngày sinh nhật của mình, cũng như trong những ngày bình thường khác (đừng quên tham gia chúc mừng sinh nhật PICVIETNAM tối nay nhé :D). |
Sơ lược về quá trình tìm hiểu và phát triển công cụ Tiny Bootloader
Có thể nói là một khoảng thời gian tương đối dài. :D. Bắt đầu từ những thông tin cơ bản nhất, chúng tôi đã dần phát triển và nâng cấp công cụ này qua 3 phiên bản.
Phiên bản PVN Tiny Bootloader Version 1.0 : phiên bản dựa hoàn toàn trên mạch nguyên lí ban đầu của Tiny Bootloader. Phiên bản này tuy cho phép đưa chương trình mới vào vi điều khiển nhanh chóng và tin cậy, nhưng vẫn có một số hạn chế nhất định như phải nhấn nút reset bằng tay, chưa thực sự ổn định, ... Phiên bản PVN Tiny Bootloader Version 2.0 : có thêm một số cải tiến cho phép reset bằng chương trình, không cần phải nhấn nút reset, nâng cao độ ổn định và mang lại nhiều thuận tiện hơn cho người sử dụng. Chúng tôi sẽ phổ biến phiên bản này trong các bài viết tiếp theo. Phiên bản PVN Tiny Bootloader Veioon 3.0: đây là sản phẩm thương mại của PICVIETNAM dựa hoàn toàn trên những cải tiến của phiên bản PVN Tiny Bootloader Version 2.0, tuy nhiên nó được thiết kế nhỏ gọn và mang tính thẩm mỹ cao, cho phép bỏ toàn bộ mạch vào vỏ của cổng COM và được thiết kế theo chuẩn mới của PICVIETNAM. Xin gửi lời cảm ơn chân thành đến anh Đoàn Hiệp, anh Nguyễn Quang Nam, anh Doãn Minh Đăng, anh BinhAnh và các thành viên nhóm PIC tp HCM đã giúp em hoàn thành sản phẩm này. |
PVN Tiny Bootloader Version 2.0
TÓM TẮT NỘI DUNG: Báo cáo kết quả tìm hiểu mạch nạp Tiny Bootloader cho vi điều khiển PIC, bao gồm các nội dung: - Sơ lược về Tiny bootloader - Thiết kế và thi công Tiny Bootloader. - Chương trình viết cho vi điều khiển khi dùng Tiny Bootloader để nạp. - Test mạch Tiny Bootloader. - Một số phương pháp nhằm nâng cao tính ổn định của Tiny Bootloader. 1. Sơ lược về Tiny bootloader Tiny Bootloader là một chương trình được đưa trước vào vi điều khiển thông qua một mạch nạp. Chương trình này có nhiệm vụ giao tiếp với máy tính (thông qua một phần mềm điều khiển trên máy tính) để nhận chương trình mà người sử dụng muốn nạp vào vi điều khiển và ghi chương trình đó vào bộ nhớ chương trình của vi điều khiển. Như vậy Bootloader cho phép ta thay đổi chương trình trong vi điều khiển một cách dễ dàng thông qua máy tính. Firmware Tiny Bootloader cho vi điều khiển PIC có các đặc tính sau: - Dung lượng chương trình bootloader nhỏ (ít hơn 100K word bộ nhớ chương trình). - Sử dụng cho các dòng PIC16F, PIC18F và dsPIC (bao gồm các vi điều khiển có hỗ trợ chế độ tự nạp chương trình). Phiên bản mới nhất của chương trình Tiny Bootloader là phiên bản tinybld191 với các đặc tính: - Cho phép đưa chương trình của người sử dụng vào bộ nhớ flash của vi điều khiển. - Hỗ trợ cho các dòng PIC16F, PIC18F và dsPIC, có khả năng tự phát hiện loại vi điều khiển PIC người sử dụng muốn đưa chương trình vào. Có khả năng ghi nhớ các chế độ thiết lập của lần sử dụng sau cùng. - Trong trường hợp quá trình truyền nhận bị lỗi, chương trình sẽ được tự động truyền lại hoặc cho phép tự đồng bộ giữa vi điều khiển và máy tính. - Cho phép thiết lập tốc độ baud và các thiết lập khác cho việc giao tiếp giữa máy tính và vi điều khiển. Tiny Bootloader phiên bản mới “tinybld191” còn hỗ trợ thêm chế độ “Reset In Program” sử dụng chân RTS của cổng COM. Tuy nhiên chức năng Reset yêu cầu một mạch hỗ trợ khá phức tạp trên mạch ứng dụng. Ta có thể vẫn sử dụng chức năng tự động reset này mà không cần phần mạch hỗ trợ trên bằng cách cải tiến thêm một số điểm trong sơ đồ nguyên lí mạch nạp. Phần này sẽ được trình bày kĩ hơn khi đề cập đến sơ đố nguyên lí của Tiny Bootloader. Thực chất ta có thể xem bootloader dành cho vi điều khiển PIC là một chương trình assembly bình thường được xây dựng với nhiệm vụ chờ tín hiệu điều khiển từ chương trình của máy tính trong vòng 1 giây kể từ thời điểm vi điều khiển được reset. Nếu trong vòng một giây có tín hiệu từ máy tính gửi đến vi điều khiển, chương trình bootloader sẽ ra lệnh cho vi điều khiển cập nhật chương trình mới. Trong trường hợp không có tín hiệu nào nhận được, chương trình cũ vẫn tiếp tục được thực thi bình thường. Đây cũng là một đặc điểm quan trọng của bootloader dành cho vi điều khiển PIC. Ngoài ra chương trình asm của bootloader cũng có thể dễ dàng được chỉnh sửa cho phù hợp với tốc độ truyền nhận và mục đích của người sử dụng. |
2. Mạch Tiny bootloader
2.1. Chức năng của mạch Tiny bootloader dành cho vi điều khiển PIC Ta đã có sẵn các chương trình giao tiếp (của máy tính cũng như của vi điều khiển). Tuy nhiên để quá trình truyền nhận dữ liệu thực hiện được ta cần thiết kế thêm một mạch giao tiếp giữa máy tính và vi điều khiển thông qua một chuẩn giao tiếp nào đó. Đó cũng chính là nhiệm vụ của mạch Tiny bootloader. Thực chất có thể hiểu đây chỉ là một mạch giao tiếp đơn thuần. 2.2. Sơ đồ nguyên lí mạch Tiny bootloader Mạch nguyên lí trong hình 1 được sử dụng để giao tiếp giữa máy tính với vi điều khiển PIC thông qua chuẩn giao tiếp RS232. Tại ngõ vào của mạch Tiny bootloader ta sử dụng IC MAX232 để thực hiện việc chuyển đổi điện áp của tín hiệu ngõ ra cổng nối tiếp (cổng COM) của máy tính (+10V và –10V) sang điện áp của dạng tín hiệu thông thường (0V và 5V) theo chuẩn giao tiếp RS232. Ngõ ra của mạch sẽ là các tín hiệu TX và TX được nối vào các chân tương ứng của vi điều khiển PIC. Nguồn cung cấp (5V và GND) được lấy trực tiếp từ mạch ứng dụng của vi điều khiển PIC để đưa vào mạch Tiny bootloader, như vậy ta không cần thiết kế thêm nguồn cung cấp riêng cho mạch. Sơ đồ nguyên lí mạch Tiny Bootloader nguyên thủy (không có chức năng “Reset In Program”) sử dụng 3 chân GND, TX và TX của cổng COM được trình bày trong hình 1. http://i65.photobucket.com/albums/h2...NGUYENTHUY.jpg Hình 1 : Sơ đồ nguyên lí mạch Tiny Bootloader nguyên thủy. Để tận dụng tính năng “Reset In Program”, ta tiến hành cải tiến sơ đồ nguyên lí mạch ở hình 1 như sau: nối chân RTS của cổng COM với một ngõ vào của MAX232, và nối ngõ ra tương ứng của chân đó với chân MCLR* của vi điều khiển PIC. Khi Chương trình “tiny Bootloader” được cho phép hoạt động, chân RTS của cổng COM sẽ được kéo lên mức logic cao, và theo nguyên lí hoạt động của MAX232, mức logic của chân ngõ ra tương ứng với ngõ vào đó sẽ ngược với mức logic của ngõ vào, điều này có nghĩa chân MCLR* của PIC được đưa về mức logic 0 và vi điều khiển được reset. Sơ đồ nguyên lí cụ thể của mạch Tiny Bootloader cải tiến được trình bày trong hình 2. http://i65.photobucket.com/albums/h2...BLDCAITIEN.jpg Hình 2 : Sơ đồ nguyên lí mạch Tiny Bootloader cải tiến. Các hoạt động tiếp theo sau đó là hoạt động truyền nhận các word chương trình giữa máy tính và vi điều khiển. Hoạt động này là sự phối hợp giữa chương trình Tiny Bootloader trên máy tính và firmware Tiny Bootloader được nạp vào vi điều khiển trước đó. Máy tính có nhiệm vụ truyền dữ liệu cho vi điều khiển, còn chương trình firmware chịu trách nhiệm việc ghi dữ liệu đó lên bộ nhớ chương trình, tổ chức sắp xếp một cách hợp lí để chương trình nạp vào có thể hoạt động bình thường, đồng thời cho phép kích hoạt firmware Tiny Bootloader khi vi điều khiển được reset. |
3. Thi công mạch Tiny Bootloader.
Yêu cầu đặt ra cho mạch thi công bao gồm: - Bảo đảm thứ tự các chân ngõ ra theo đúng chuẩn qui định của PICVIETNAM. - Mạch đơn giản, gọn nhẹ, không cần sử dụng nguồn cung cấp riêng cho mạch Tiny Bootloader.. - Đạt yêu cầu về tính thẩm mỹ. - Có hộp bao bọc mạch Tiny Bootloader. - Hộp bao bọc sử dụng trong truờng hợp này là vỏ cổng LPT do các nguyên nhân: - Đáp ứng được kích thước của mạch PCB. - Đạt yêu cầu về thẩm mỹ. (Không phổ biến hình này vì không đúng chuẩn ICSP BLD của picvietnam) Hình 3: Sơ đồ mạch in Tiny Bootloader Version 2.0 Mạch in được thiết kế như hình trên cho phép ta bỏ lọt Tiny Bootloader vào vỏ nhựa của cổng song song (DB25). Như vậy việc thiết kế vỏ hộp cho Tiny Bootloader đã được giải quyết. Giải pháp này không quá phức tạp nhưng hiệu quả, vừa đem lại tính thẩm mỹ cho Tiny Bootloader, vừa bảo đảm tính an toàn trong quá trình sử dụng (tránh bị điện giật!). Chú ý chân NC (Not Connected) trong trường hợp này được thêm vào chỉ để cho đủ 6 chân do đăc điểm thị trường linh kiện không có loại jack 6. Việc thêm vào chân NC cho phép tạo nhiều thuận lợi trong quá trình thiết kế và thi công mạch, tạo sự thuận tiện trong quá trình sử dụng. Ngoài ra chân này không còn vai trò hay chức năng nào khác. Ngõ vào của mạch bao gồm các tín hiệu TX, TX và GND từ cổng COM và các chân VDD, VSS dùng để cấp nguồn cho Tiny Bootloader. Ngõ ra là các tín hiệu TX, RX từ cổng COM và tín hiệu từ chân R2OUT* của MAX232 được nối vào các chân tương ứng của vi điều khiển PIC. Phần mạch chính của Tiny Bootloader bao gồm IC MAX232 và các tụ DC có giá trị 1uF/50V. Các phần còn lại được kết nối thông qua các dây nối. Mô hình cụ thể của Tiny Bootloader như sau: Các khoảng cách nêu trên chỉ mang tính chất tham khảo. Phần cáp nối về cổng COM cho phép nối dài trên 1m (phần này điện áp truyền trên đường dây là +(-) 10 V nên cho phép truyền đi xa tốt hơn). Việc nối dài các đoạn cáp như vậy cho phép ta kết nối và sử dụng Tiny Bootloader thuận tiện hơn. Tuy nhiên ta chỉ nên kéo dài phần cáp kết nối từ cổng COM đến Tiny Bootloader. Việc tự thiết kế cáp nối vào cổng COM đính kèm vào Tiny Bootloader cho phép tạo nhiều thuận tiện hơn khi sử dụng Tiny Bootloader, tuy nhiên để sản phẩm đạt được yêu cầu về thẩm mỹ, cần trải qua công đoạn thiết kế kiểu mẫu cho mạch. Do đó để nối dài cổng COM, ta sử dụng cáp chuyên dụng, khi đó Tiny Bootloader chỉ còn là một sản phẩm gọn nhẹ như các hình được trình bày ở phần sau. |
Em lưu ý, phiên bản này là phiên bản version 2, mạch in này chúng ta không phổ biến nữa, anh tạm xoá bớt phần mạch in này của em đi. Khi nào có hình sản phẩm hoàn thiện theo đúng version 3, chuẩn box header 5x2, thì chúng ta mới post lên. Em đem qua chỗ anh Đăng để chụp hình lại.
Chúc vui. |
Cái hình mạch nguyên lý cải tiến, em post lại cái hình to lên cho mọi người xem, em làm nó có chút téo thế thì ai mà xem nổi?
Chúc vui. |
4. Thiết kế mạch ứng dụng tương thích với mạch Tiny bootloader
Để sử dụng được mạch Tiny Bootloader có sơ đồ nguyên lí được trình bày ở phần trên, thì ở phần mạch ứng dụng, ta phải thêm vào một jack kết nối giữa mạch ứng dụng và mạch Tiny Bootloader. Jack này bao gồm các đường VDD, VSS để cấp nguồn cho mạch Tiny Bootloader và các đường tín hiệu TX, RX, MCLR*. PICVIETNAM khuyến cáo việc thiết kế jack nối giữa Tiny Bootloader và mạch ứng dụng có thứ tự chân như hình 5. Thứ tự cụ thể như sau: - MCLR - VDD - VSS - TX - RX Đây cũng là chuẩn thiết kế các mạch ứng dụng của PICVIETNAM sử dụng mạch Tiny Bootloader. Tính hiệu quả của chuẩn này đã được PICVIETNAM kiểm định qua một quá trình chuẩn hóa và đưa vào ứng dụng trong thực tế. Việc thiết kế theo chuẩn như vậy mang lại nhiều thuận lợi cho quá trình thiết kế ứng dụng và sử dụng công cụ Tiny Bootloader. Mạch Tiny Bootloader có thể nói là một công cụ đắc lưc đã đựoc thiết kế cố định và sử dụng lâu dài, do đó nếu việc thiết kế jack nối trong các mạch ứng dụng không đồng nhất sẽ dẫn đến tình trạng một mạch ứng dụng không tương thích với Tiny Bootloader, như vậy công cụ Tiny Bootloader trong trường hợp này xem như không có tác dụng, và muốn sử dụng được công cụ Tiny Bootloader, cách duy nhất là phải thiết kế một mạch Tiny Bootloader khác tương thích với mạch ứng dụng đó. Điều này là bất hợp lí và mang lại nhiều trở ngại không mong muốn. http://i65.photobucket.com/albums/h2..._ntc/hinh5.jpg Hình 5: Sơ đồ nguyên lí mạch test Tiny Bootloader. Phần mạch giao tiếp với Tiny Bootloader được tô màu xám. |
5. Các thao tác khi sử dụng Tiny Bootloader
Ta đã có được mạch Tiny Bootloader và mạch ứng dụng tương thích với Tiny Bootloader. Từ “tương thích” được nhấn mạnh lại ở đây. Để nạp được chương trình vào vi điều khiển PIC dùng Tiny Bootloader, ta tiến hành lần lượt các bước sau: - Bước 1: Sử dụng mạch nạp để nạp chương trình Tiny Bootloader vào vi điều khiển trước. - Bước 2: Kết nối Tiny Bootloader với máy tính và kết nối cáp dữ liệu của Tiny Bootloader với mạch ứng dụng. Cấp nguồn cho mạch ứng dụng. - Bước 3: Khởi động chương trình tinybld19 và thiết lập các thông số cần thiết. - Bước 4: Đưa chương trình mới vào vi điều khiển. Sau đây là quá trình tiến hành cụ thể của các bước trên. Bước 1: Ta cần một mạch nạp cho vi điều khiển PIC16F877A (đây là vi điều khiển sử dụng cho mạch test) và nạp chương trình Tiny Bootloader vào vi điều khiển trước. Chương trình Tiny Bootloader được cung cấp trong phần mềm “tinybld191”, cụ thể là chương trình "…\TINYBLD\picsource\16f\tinybld16F.asm" và chỉnh sửa lại các thông số cần thiết trong chương trình. Sau đây là chương trình được chỉnh sửa (phần chỉnh sửa là phần đươc tô màu đỏ):Cần chú ý là trong mạch ứng dụng sử dụng loại thạch anh có tần số bao nhiêu thì phải điều chỉnh một cách thích hợp trong firmware của Tiny Bootloader. Ngoài ra có thể tìm thấy các firmware tương ứng cho ứng dụng trên các phương tiện thông tin khác, đặc biệt là Internet. Code:
;========================================================= Bước 2: chỉ cần kết nối đúng thứ tự các chân giữa Tiny Bootloader và mạch ứng dụng. Bước 3: khởi động chương trình Tiny Bootloader và thiết lập các thông số cần thiết (tốc độ baud, cổng giao tiếp, …) http://i65.photobucket.com/albums/h2..._ntc/hinh6.jpg Hình 6: Nhấn nút “Brouse” để đưa file hex cần nạp vào chương trình. http://i65.photobucket.com/albums/h2..._ntc/hinh7.jpg Hình 7: Vào thẻ “Option”, chon chế độ “Reset PIC using RTS line”. Bước 4: Nhấn nủt “Write Flash” để nạp chương trình đã chọn vào vi điều khiển http://i65.photobucket.com/albums/h2..._ntc/hinh8.jpg Hình 8: Bấm nút “Write Flash” để đưa chương trình vào vi điều khiển. |
Mệt quá. Tí viết tiếp.
|
6. Một số vấn đề thường gặp khi sử dụng Tiny Bootloader
Trên đây là các bước để test mạch Tiny Bootloader, đồng thời cũng là các thao tác cơ bản được tiến hành một cách tuần tự khi sử dụng Tiny Bootloader. Tuy nhiên khi sử dụng Tiny Bootloader trong thực tế, ta thường gặp phải một số vấn đề như sau: 6.1. Chương trình ứng dụng tương thích với firmware của Tiny Bootloader. Như ta đã biết, chương trình firmware có nhiệm vụ tạo một thời gian chờ tín hiệu cập nhật chương trình mới từ máy tính. Nếu phát hiện được tín hiệu trên, chương trình firmware sẽ làm nhiệm vụ nhận chương trình mới và ghi vào bộ nhớ chương trình, sau đó thực thi chương trình mới đó. Nếu sau khoảng thời gian chờ mà không phát hiện được tín hiệu trên, firmware Tiny Bootloader sẽ điều khiển bộ đếm chương trình nhảy đến vị trí chương trình cũ và bắt đầu thực thi chương trình cũ. Để làm được cả hai công việc đó, firmware Tiny Bootloader sẽ phải thực hiện một số thay đổi lên chương trình ứng dụng. Hình sau cho phép hình dung rõ hơn những thao tác đó. http://i65.photobucket.com/albums/h2...bootloader.png Firmware Tiny Bootloader sẽ cắt 4 word đầu tiên (từ địa chỉ 0000h đến 0003h) ở phần reset vector của chương trình ứng dụng và đặt nó ở ngay trên chương trình chính của Tiny Bootloader, thay vào đó là 4 word đầu tiên của firmware Tiny Bootloader để điều khiển bộ đếm chương trình nhảy đến vị trí chương trình chính của firmware Tiny Bootloader. Hình 9: Các thao tác làm thay đổi cấu trúc chương trình ứng dụng của Tiny Bootloader. Với việc cấu trúc lại chương trình như vậy, quá trình thực thi chương trình của vi điều khiển sẽ có chút thay đổi như trên hình vẽ. Khi được reset, bộ đếm chương trình của PIC sẽ nhảy đến vị trí của reset vector, ở đó các lệnh của firmware sẽ điều khiển bộ đếm chương trình nhảy đến vị trí có chương trình chính của firmware Tiny Bootloader. Khi chương trình này được thực thi xong, bộ đếm chương trình sẽ quay trở về vị trí 4 word đầu tiên của chương trình ứng dụng được đặt ngay trên chương trình chính của firmware Tiny Bootloader. Ngoại trừ các word đầu tiên đặt vào phần reset vector, phần còn lại của chương trình firmware được đặt ở phần cuối cùng của bộ nhớ chương trình. Khi muốn thực thi chương trình ứng dụng, bộ đếm chương trình phải nhảy trở lại vị trí của chương trình ứng dụng. Thông thường, thao tác nhảy này được thực hiện bởi lệnh “GOTO”. Tuy nhiên trong trường hợp này, khoảng cách nhảy là rất xa và vượt ra khỏi tầm nhảy của lệnh “GOTO”, cho nên việc cập nhật các bit cao cho bộ đếm chương trình phải được thực hiện (firmware Tiny Bootloader không thực hiện công việc này cho người sử dụng). Bộ đếm chương trình có dung lượng 13 bit và giá trị bộ đếm được chứa trong các thanh ghi PCH và PCL. Thanh ghi PCL chứa 8 bit thấp cho phép các thao tác trực tiếp như các thanh ghi bình thường. Thanh ghi PCH chứa 5 bit cao còn lại, việc thao tác trên thanh ghi này phải thao tác thông qua thanh ghi PCLATH. Như vậy, dựa vào vị trí bắt đầu của chương trình chính, ta phải đưa các giá trị thích hợp vào thanh ghi PCLATH để điều khiển bộ đếm chương trình nhảy đến vị trí đó. Thao tác này phải được thực hiện trong 4 word đầu tiên của chương trình ứng dụng. Sau đây là ví dụ cụ thể. Phần thay đổi so với các chương trình bình thường được tô màu đỏ trong đoạn chương trình sau: Code:
;===================================================================== Trong các ứng dụng phức tạp hơn không cho phép ta đặt chương trình chính ở các word đầu (ví dụ như chương trình ngắt quá dài, bảng dữ liệu đặt ở phần đầu chương trình quá lớn, các chương trình con được viết trước chương trình chính khá dài, …), cần xác định lại vị trí bắt đầu của chương trình chính để có các thao tác xử lí thích hợp với thanh ghi PCLATH. 6.2. Tính ổn định của Tiny Bootloader Nếu thiết kế và test mạch theo các trình tự đã nêu, ta có thể thấy được việc nạp chương trình thành công như trong hình 6. Việc sử dụng chức năng “Reset In Program” cho phép cải thiện đáng kể tính ổn định của Tiny Bootloader so với khi reset bằng tay. Tuy nhỉên trong quá trình tiến hành có thể gặp nhiều trở ngại, chẳng hạn như tính thiếu ổn định của Tiny Bootloader (lúc dectect được PIC, lúc không,…). Điều này đặt ra yêu cầu cải thiện thêm tính ổn định của Tiny Bootloader. Ta có thể khắc phục bằng 2 phương pháp: - Tăng thời gian “SearchDelay” của chương trình trên máy tính (thẻ Option): http://i65.photobucket.com/albums/h2...ntc/HINH10.jpg Hình 10: Tăng thời gian “SearchDelay” - Tăng thời gian delay trong firmware: sửa lệnh “movlw xtal/2000000+1” của firmware Tiny Bootloader nạp vào PIC thành lệnh “movlw xtal/1000000+1”. |
7. Kết luận
Tiny bootloader là chương trình dùng để giao tiếp với máy tính được nạp trước vào vi điều khiển nhằm mục đích cập nhật chương trình mới cho vi điều khiển từ máy tính. Mạch Tiny bootloader được mạch dùng để giao tiếp giữa máy tính và vi điều khiển thông qua chuẩn giao tiếp RS232. Ngoài tác dụng nạp chương trình mới cho vi điều khiển, mạch Tiny bootloader và chương trình của Tiny bootloader còn có thể được thay đổi và chỉnh sửa dễ dàng để sử dụng cho mục đích giao tiếp giữa máy tính và vi điều khiển PIC thông qua chuẩn giao tiếp RS232. Tiny bootloader là một trong số những công cụ mà nhà sản xuất hỗ trợ cho việc thay đổi chương trình trong vi điều khiển PIC mà không cần tháo vi điều khiển ra khỏi mạch. Điều này giúp ta linh động hơn và có nhiều hơn sự lựa chọn trong việc xây dựng và nâng cấp các ứng dụng sử dụng vi điều khiển PIC, đặc biệt là khi việc tháo hoặc gắn vi điều khiển ra khỏi mạch gặp nhiều khó khăn (chẳng hạn như khi ta sử dụng vi điều khiển PIC loại chip dán). Ưu điểm: - Thời gian nạp rất nhanh, thông thường là chưa đầy 1 giây. - Hỗ trợ nhiều dòng PIC. - Rất thuận tiện cho người sử dụng. - Độ tin cậy cao. - Tính an toàn được cải thiện đáng kể, tránh tình trạng làm chết vi điều khiển trong quá trình thao tác với các mạch nạp. - Tiết kiệm được nhiều thời gian và công sức, không phải thời gian tháo ráp vi điều khiển để nạp. Hạn chế: Có thể thấy là sự thuận lợi mà Tiny Bootloader mạng lại là rất rõ ràng. Tuy nhiên việc sử dụng Tiny Bootloader làm cho bộ nhớ chương trình tổn hao một số lượng word nhất định (trong trường hợp này là 100 K word). Mặc dù số lượng word tổn hao là nhỏ nhưng đôi khi mang lại một số điểm bất cập (chương trình ứng dụng viết cho vi điều khiển không cho phép dư ra 100 word chẳng hạn). Do đó tùy theo yêu cầu thực tế mà có sự lựa chọn phù hợp các phương pháp nạp chương trình trực tiếp trên mạch cho vi điều khiển. Một số trinh biên dịch chưa tương thích với tiny bootloader. Bên cạnh đó cần chú ý đến sự tương thích giữa mạch Tiny Bootloader và mạch ứng dụng để tránh gặp phải những trở ngại không đáng có. |
1 Attachment(s)
Đây là bản báo cáo đầy đủ.
Trong đó có thêm phần của anh Nam về kết quả thử nghiệm Tiny Bootloader đối với dsPIC. Các hình vẽ không đạt yêu cầu, mình sẽ chỉnh sửa lại sau. Một điểm cần lưu ý, là phiên bản này không còn phù hợp vói các chuẩn mới của PICVIETNAM. Các vấn đề đưa ra ở đây chỉ còn mang tính chất tham khảo, về sơ đồ nguyên lí, nguyên lí hoạt động về cách sử dụng Tiny Bootloader, ... và không khuyến khích việc làm tiny bootloader theo sơ đồ mạch in trong báo cáo. PVN Tiny Bootloader Version 3.0 hiện tại đã hoàn tất, và sẽ sớm thông báo kết quả trên diễn đàn. Đây sẽ là sản phẩm PVN Tiny Bootloader chính thức. |
6.3. Một số lỗi thường gặp khi sử dụng Tiny Bootloader
Trong quá trình sử dụng có thể đôi lúc Tiny Bootloader hoạt động không thực sự suôn sẻ mà gặp phải một số trục trặc. Các trường hợp này đều được chương trình trên máy tính báo lỗi. Sau đây là một số lỗi thường gặp và cách khắc phục: - Lỗi không tìm thấy PIC: đây là một lỗi rất hay gặp. Trong trường hợp này, ta cần kiểm tra lại tất cả các bước tiến hành với Tiny Bootloader để phát hiện lỗi và khăc phục (kết nối phần cứng có đúng chưa, chương trình Firmware đã được nạp hay chưa, các thông số thiết lập tương thích hay chưa,…) http://i65.photobucket.com/albums/h2...ntc/HINH11.jpg Hình 11: Lỗi “không tìm thấy PIC”. - Lỗi do chương trình nạp vào PIC không tương thích với vi điều khiển đang sử dụng. Trong trường hợp này cần kiểm tra lại chương trình cần nạp vào PIC có thực sự tương thich chưa. Ví dụ, không thể lấy chương trình viết cho PIC18F để nạp vào PIC16F. http://i65.photobucket.com/albums/h2...ntc/HINH12.jpg Hình 12: Lỗi do chương trình đưa vào PIC không tương thích. - Lỗi do thanh ghi PCLATH chưa được xử lí phù hợp trong chương trình ứng dụng: trong trường hợp này cần thêm vào các lệnh xử lí thanh ghi PCLATH vào chương trình ứng dụng đã được trình bày ở trên. Khi gặp lỗi này, chương trình ứng dụng vẫn được nạp vào vi điều khiển, nhưng quá trình thực thi sẽ không đúng. http://i65.photobucket.com/albums/h2...HINH13_sua.jpg Hình 13: Lỗi do thanh ghi PCLATH chưa được xử lí thích hợp. |
Các bác cho em hỏi "Chương trình Tiny Bootloader" cho con PIC18F458, có bác nào có cho em phát. Tìm search không ra.
|
Trích:
http://www.etc.ugal.ro/cchiculita/so...bootloader.htm Giải nén nó vào một thư mục nào đó, trong thư mục con picsource/other/nnq là source của chương trình bootloader cho các PIC18F đã được tôi gửi cho Claudiu Chiculita (tác giả yêu cầu tôi gửi để giúp cho các người dùng khác). Tôi tin là bạn có đủ khả năng để chỉnh lại một số thiết lập như hướng dẫn trong tập tin nguồn để có thể dịch được một bootloader cho PIC18F458. Chú ý: các tập tin nguồn của tôi gửi cho Claudiu có lỗi định dạng khi mở trên Windows, xem post #20 để lấy các tập tin nguồn gốc. Thân, |
Bác Namqn à, tôi dùng MPLAB dịch file TinyB18F.asm trong tinybootloader lấy trên web trên cho con 18F2320 mà ko được.
Tôi đã include 2 file .inc và file 18f2320.lkr vào mà nó vẫn báo lỗi sau: Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F2320 "TinyB18F.asm" /l"TinyB18F.lst" /e"TinyB18F.err" /o"TinyB18F.o" Warning[218] C:\NEW FOLDER\TINYB18F.ASM 1 : Expected DEC, OCT, HEX. Will use HEX Error[129] C:\NEW FOLDER\TINYB18F.ASM 2 : Expected (END) Halting build on first failure as requested. Tôi đã edit phần config để lấy file hex cho 18f2320 rồi. Mong bác sửa giúp. Many thanks |
1 Attachment(s)
Trích:
Bạn xem thử hình chụp cửa sổ MPLAB của tôi khi build Tiny Bootloader cho PIC18F dưới đây, tôi không hề phải thêm các tập tin .inc và .lkr. Thân, |
1 Attachment(s)
Bác Nam à, tôi về làm đúng như bác mà nó có thèm Success đâu.
Tôi gửi kèm file TinyB18F.asm tôi configure cho 18F2320 nhé. Nó vẫn báo lỗi thế. Tôi đã select device là 18F2320 luôn rồi. Many thanks! @admin: sao forum rất khó login, nhập đúng user và pass rồi, chào rồi mà vẫn phải login lại, đang post bài cũng phải login lại. |
1 Attachment(s)
Tôi đã phát hiện lỗi về định dạng của các tập tin nguồn cho các PIC18F mà tôi đã gửi cho Claudiu, chúng hiện được định dạng là Unix, UTF-8. Các tập tin này không thể hiển thị đúng khi mở trong Notepad.
Đó là lý do khiến MPLAB không thể biên dịch các tập tin nguồn này, như bạn killserver vừa phản hồi, mặc dù MPLAB vẫn hiển thị đúng trong cửa sổ soạn thảo. Rất cám ơn bạn về thông tin này, vì tôi đã không kiểm tra các tập tin đó trong phiên bản mới nhất của Tiny Bootloader trên trang web của Claudiu. Nếu các bạn phát hiện một lỗi biên dịch tương tự, hãy kiểm tra bằng cách mở tập tin nguồn đó trong Notepad, nếu chúng không được xuống dòng đúng thì có nghĩa là tập tin nguồn đó bị lỗi định dạng. Tôi gửi kèm theo các tập tin nguồn gốc trong máy của tôi. Thân, |
Cảm ơn bác, tôi cũng thấy như thế, khi mở bằng notepad thì nó đầy cả 1 trang mà ko có xuống dòng but lại ko nghĩ ra.
|
Bác Namqn à, bác có thể share cho em file hex bootloader của con dsPIC30F4011, UART1, PLLx8 và PLLx16 không.
Thanks bác trước. namqn: bạn chưa cho biết tần số đưa vào PLL (thạch anh ngoài hay internal RC?). |
Sorry bác Namqn, bác edit vào bài của em nên em ko thấy bài mới ko vào.
Em dùng thạch anh ngoài 7.3728MHz bác ạ. Thanks bác nhiều :D |
1 Attachment(s)
Chip dùng cấu hình sau:
Code:
config __FOSC, CSW_FSCM_OFF & XT_PLL8 Thân, |
Thanks bác Nam, em sẽ về thử và reply lại cho bác. :D
|
Botloaders cho CCS
trong chương trình MPLAP thì sửa lại là:
Code:
CLRF STATUS ; đây là phần xử lí thanh ghi PCLATH |
Các trình biên dịch cấp cao thường tự động thêm vào những lệnh xử lý thanh ghi PCLATH cho dòng PIC cấp thấp, do đó không cần phải làm gì để có thể sử dụng với bootloader, trừ việc phải giới hạn không gian bộ nhớ của chương trình ứng dụng (không được dùng 100 word nằm phía cuối vùng Flash).
Thân, |
Xin được chỉ giáo. Có bác nào có chương trình tini bootloader cho con PIC16F628 không, chỉ cho mình biết với.
|
Trích:
Thân, |
Kiểm tra chức năng Self-Programming của con chip, con nào có chức năng này thì mới dùng được bootloader.
Chúc vui |
Chính ơi, bài số 5 của cậu có một chút vấn đề nhỏ nhưng quan trọng, cậu viết nhầm cả 2 chân cuối là TX hết rùi.
Thứ tự các chân là:
Chúc Chính ở HN thật là vui vẻ nhé. Mặc dù trời hơi lạnh tí :D. |
Ờ.
Sửa lại rồi. :) |
Chính ơi, cho mình hỏi về cái này nhé.
Chân RTS (chân 7 RS232) bình thường khi không có giap tiếp truyền nhận thì nó ở mức thấp -12V tức là chân MCLR ở mức cao khoảng 5,24V -> IC hoạt động bình thường. Khi có quá trình truyền dữ liệu thì chân này sẽ lên mức cao +12V -> làm chân MCLR xuống mức thấp xấp xỉ = GND. Như vậy trong mạch ứng dụng của mình không thể nối cố định chân MCLR với chân 1 của mạch Tiny Bootloader được vì khi giao tiếp UART thì IC không hoạt động. Thứ nữa, MCLR mình nối với VDD qua một con trở 10k để giảm áp đặt lên chân MCLR. Nếu mà nối thẳng chân 1 của mạch Tiny với chân này thì mình e rằng con trở này chẳng có tác dụng gì. => Nếu mắc thêm trở khoảng 10k vào: MCLR |----|====|-----------| chân 1 của mạch tiny. thì nó lại chẳng có tác dụng reset gì cả. Mình nghĩ rằng trong mạch ứng dụng của mình nên có khóa gạt tức là khi nạp thì chuyển MCLR nối với chân 1 của mạch tiny, còn hoạt động bình thường thì nối với VDD. Nhưng mà mình làm thế thì nó cũng chẳng detect được chip gì cả. Toàn phải bỏ chân 1 bỏ trôi, và nhấn nút Reset làm thủ công thôi. Chúc các bạn thành công. |
Trích:
Trích:
Trích:
Thân, |
Bác NTC ơi, có thể post cho mọi người xem phiên bản 3.0 mà các anh đã cải tiến ko? cái hình phiên bản 2.0 anh post nhỏ xiu hà nhìn ko biết chân nào nối với chân nào cả...
thanks.... á cho em hỏi .. trong CCS phải viết thế nào mới nạp được vậy?? Thanks |
Trích:
Thân, |
Trích:
|
Bạn download cái bản report đầy đủ ở bài viết số 13, trong đó hình rõ hơn.
|
Bac Nam a! Bác có thể cho em filmware Tinybootloader bằng MPLAB (ASM)
con Dspic4012 được ko ạ? -Em dùng thạch anh ngoai 8MHZ (XT_PLL4),kết nối qua UART. |
1 Attachment(s)
Tôi dùng Main IO của UART, tốc độ baud là 38400 bps, các từ cấu hình như dưới đây (thạch anh 8 MHz theo yêu cầu của bạn):
Code:
config __FOSC, CSW_FSCM_OFF & XT_PLL4 Thân, |
Múi giờ GMT. Hiện tại là 12:24 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