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)

manhha1987 16-04-2009 11:53 AM

Mình mới gia nhập vào chủ đề này. Mình thấy mạch Tiny Bootloader rất hay, phù hợp với bài toán mà yêu cầu nạp chương trình ngay trên mạch ứng dụng. Hơn nữa còn tận dụng việc giao tiếp với máy tính qua cổng Com. Mình định tiến hành làm mạch này. Mình hiểu các bước thực hiện ntn có đug ko?
-1: Nạp cho PIC phần firmware (có đc nhở sửa code phần "xtal" và "baud" , hoặc hỏi thầy namqn ) bằng một mạch nạp
-2: Lẳ́p ráp mạch cứng gồm Max232 , RB9 (female hay male nhỉ), PIC http://picvietnam.com/forum/showthread.php?t=130
-3: Test mạch và nạp chương trình ứng dụng (dạng file hex) bằng Tiny Bootloader
Mình nói như vậy có sai gì không, Mọi người chỉ giúp để mình bắt tay vào thực hiện

namqn 16-04-2009 05:37 PM

Trích:

Nguyên văn bởi manhha1987 (Post 24835)
Mình mới gia nhập vào chủ đề này. Mình thấy mạch Tiny Bootloader rất hay, phù hợp với bài toán mà yêu cầu nạp chương trình ngay trên mạch ứng dụng. Hơn nữa còn tận dụng việc giao tiếp với máy tính qua cổng Com. Mình định tiến hành làm mạch này. Mình hiểu các bước thực hiện ntn có đug ko?
-1: Nạp cho PIC phần firmware (có đc nhở sửa code phần "xtal" và "baud" , hoặc hỏi thầy namqn ) bằng một mạch nạp
-2: Lẳ́p ráp mạch cứng gồm Max232 , RB9 (female hay male nhỉ), PIC http://picvietnam.com/forum/showthread.php?t=130
-3: Test mạch và nạp chương trình ứng dụng (dạng file hex) bằng Tiny Bootloader
Mình nói như vậy có sai gì không, Mọi người chỉ giúp để mình bắt tay vào thực hiện

Những bước của bạn như vậy là ổn. Ở bước 2, việc dùng đầu nối 9 chân loại nào không quan trọng, quan trọng là nối chân TX của PIC đến chân 2 của cổng COM máy tính (thông qua MAX232 hoặc tương đương), và nối chân RX của PIC đến chân 3 của cổng COM máy tính (thông qua MAX232 hoặc tương đương).

Thân,

enti 21-04-2009 03:31 PM

Mình mới sử dụng thử bootloader. Mình bị vướng vấn đề như sau.
Mình sử dụng 18F4550, có thiết kế phần USB (nhưng chưa sử dụng), SPI (2 thiết bị, 1 là SD card), RS232 (giao tiếp PC), RS485, XTAL 20Mhz.
- Mình sử dụng bản tiny bootloader198, ko dùng RTS mềm (pin 9), do lúc thiết kế board chưa biết đến bootloader.
1. Mình sửa file asm của 18F2550 (trong thư mục đi kèm của tiny bootloader):
xtal 24000000
baud 115200
phần config mình bỏ_FCMEM_OFF_1H đi vì compile báo lỗi chưa khai báo.
Sau khi compile xong thì nạp lên pic, có thể detect được pic, nhưng phải nhấn reset trên board và nhấn vào write flash (trong khỏang 1s, nếu không thì sẽ error), chương trình laod thành công, nhưng khi chạy thì không thể gửi data về pc qua RS232 được, chương trình của mình có chức năng giao tiếp PC, ngoài ra SPI họat động không đúng chức năng, mình đã kiềm tra code rồi, chắc chắn không vấn đề (khi nạp trực tiếp và chạy).
2. Mình download bootloader của namqn post trên đây về và nạp vào pic, thì spi gần như không họat động, do mình co phần init SD card, init báo lỗi ngay từ đầu.
Bạn có thể hướng dẫn mình sửa bootloader được không?

Mình post phần mình sửa để bạn xem
Code:

xtal EQU 24000000                ; 'xtal' here is resulted frequency (is no longer quartz frequency)
baud EQU 115200                        ; the desired baud rate

...
__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC3_PLL4_1L & _USBDIV_2_1L
        __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _IESO_OFF_1H
        __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L ; _VREGEN_OFF_2L
        __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_1_2H
        __CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H
        __CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVREN_OFF_4L & _XINST_OFF_4L
        __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L
        __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
        __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
        __CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
        __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
        __CONFIG _CONFIG7H, _EBTRB_OFF_7H


namqn 21-04-2009 07:48 PM

Trích:

Nguyên văn bởi enti (Post 25063)
Mình mới sử dụng thử bootloader. Mình bị vướng vấn đề như sau.
Mình sử dụng 18F4550, có thiết kế phần USB (nhưng chưa sử dụng), SPI (2 thiết bị, 1 là SD card), RS232 (giao tiếp PC), RS485, XTAL 20Mhz.
- Mình sử dụng bản tiny bootloader198, ko dùng RTS mềm (pin 9), do lúc thiết kế board chưa biết đến bootloader.
1. Mình sửa file asm của 18F2550 (trong thư mục đi kèm của tiny bootloader):
xtal 24000000
baud 115200
phần config mình bỏ_FCMEM_OFF_1H đi vì compile báo lỗi chưa khai báo.
Sau khi compile xong thì nạp lên pic, có thể detect được pic, nhưng phải nhấn reset trên board và nhấn vào write flash (trong khỏang 1s, nếu không thì sẽ error), chương trình laod thành công, nhưng khi chạy thì không thể gửi data về pc qua RS232 được, chương trình của mình có chức năng giao tiếp PC, ngoài ra SPI họat động không đúng chức năng, mình đã kiềm tra code rồi, chắc chắn không vấn đề (khi nạp trực tiếp và chạy).
2. Mình download bootloader của namqn post trên đây về và nạp vào pic, thì spi gần như không họat động, do mình co phần init SD card, init báo lỗi ngay từ đầu.
Bạn có thể hướng dẫn mình sửa bootloader được không?

Mình post phần mình sửa để bạn xem
...

1. Bạn có nắm được ý nghĩa của đoạn ghi chú sau trong mã nguồn firmware của Claudiu không:
Code:

;*************************************************************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.

Nếu code của bạn chạy tốt khi nạp trực tiếp, nó vẫn có thể gặp trục trặc khi được nạp từ bootloader. Vì khi nạp xong code ứng dụng (hoặc hết time out mà không có code ứng dụng mới để nạp), bootloader sẽ nhảy đến đoạn code ứng dụng, chứ không thực hiện hard reset như khi bạn thử code được nạp trực tiếp. Đây mới chỉ là một khả năng, vì bạn chưa cho biết đoạn code khởi tạo trong chương trình ứng dụng của bạn.

2. Tôi không nhớ đã post firmware bootloader nào cho dòng PIC18F mà có hỗ trợ luôn cả USB, theo cấu hình của bạn ở trên. Do đó, việc làm của bạn rất nhiều khả năng là không thành công, vì bạn đang dùng "râu ông nọ cắm cằm bà kia".

Thân,

bean984 12-05-2009 04:17 PM

e cũng bị trường hợp tương tự. nếu nạp trực tiếp thì phần truyền thông của e chạy nhưng khi nạp qua bootloader thì phần truyền thông lại không chạy nữa.
vậy cho e hỏi có cách nào để sửa lỗi này k?

bean984 13-05-2009 10:48 AM

hôm nay e lại gặp vấn đề với cái bootloader.dạo trước check pic, nạp ngon lành nên không để ý.
vấn đề e gặp phải là:
khi nạp mới firmware cho con pic sau đó dùng tinybld check và nạp ngon lành. nhưng sau đó e nạp lại phần mềm thì lại không check được nữa.
sau đó e thử nạp lại fireware rồi check thì lại ok.
e không biết nó bị làm sao nữa????????
phần mền e viết bằng ccs c

bean984 19-05-2009 04:39 PM

không ai giúp e sửa lỗi bootloader ở trên ạ?
các cao thủ đâu rồi? giúp e với!!!!!!!!!!!!!

popeye_ts22 26-06-2009 12:28 AM

Cho em xin firmware của 16F877A TA 20Mhz baud 9600 với ạ.Em vào source của tiny để thay đổi nhưng nó là file asm,mà em dùng CCS.

quilong 06-09-2009 04:21 PM

Hic đọc xong cả 8 trang hoa cả mắt cuối cùng củng hiểu tí chút về cái bootloader này. Có thể nói là rất hay, đơn giản gọn nhẹ và ứng dụng tốt. Tuy nhiên, mình vẫn còn thắc mắc 1 vẫn đề đó là dùng bootloader có thể vừa nạp vừa giao tiếp với máy tính bằng 1 số ngôn ngữ như VB,C#.. nhưng có ai đã kiểm tra được tính chính xác của mạch chưa. Có thể nạp được nhưng giao tiếp với máy tính đã được. Mong bạn namqn giải thích giùm mình cái nghen. Nếu có thể cho mình 1 ví dụ minh họa nhé.

namqn 07-09-2009 03:28 PM

Trích:

Nguyên văn bởi popeye_ts22 (Post 27150)
Cho em xin firmware của 16F877A TA 20Mhz baud 9600 với ạ.Em vào source của tiny để thay đổi nhưng nó là file asm,mà em dùng CCS.

Bạn hoàn toàn có thể dùng firmware của PIC16F876A, với thạch anh 20 MHz ở tốc độ baud 9600 bps (đã dịch sẵn trong tập tin download từ trang web của Tiny Bootloader).

Thân,

namqn 07-09-2009 03:31 PM

Trích:

Nguyên văn bởi quilong (Post 29348)
Hic đọc xong cả 8 trang hoa cả mắt cuối cùng củng hiểu tí chút về cái bootloader này. Có thể nói là rất hay, đơn giản gọn nhẹ và ứng dụng tốt. Tuy nhiên, mình vẫn còn thắc mắc 1 vẫn đề đó là dùng bootloader có thể vừa nạp vừa giao tiếp với máy tính bằng 1 số ngôn ngữ như VB,C#.. nhưng có ai đã kiểm tra được tính chính xác của mạch chưa. Có thể nạp được nhưng giao tiếp với máy tính đã được. Mong bạn namqn giải thích giùm mình cái nghen. Nếu có thể cho mình 1 ví dụ minh họa nhé.

Bootloader dùng giao tiếp RS-232 với máy tính để truyền/nhận dữ liệu cho việc nạp chương trình ứng dụng. Việc giao tiếp với máy tính của chương trình ứng dụng hoàn toàn độc lập với phần giao tiếp với máy tính của bootloader. Không rõ bạn muốn kiểm tra tính chính xác của mạch nào, trong trường hợp nào?

Ví dụ cụ thể: bạn hoàn toàn có thể dùng baud rate 115200 bps khi kết nối bootloader với máy tính, và thiết lập baud rate 9600 bps trong chương trình ứng dụng để giao tiếp với máy tính trong quá trình thực thi chương trình ứng dụng.

Thân,

quilong 07-09-2009 09:08 PM

Cảm ơn Namnq nhiều nghen. Đọc cái ví dụ của huynh:

Ví dụ cụ thể: bạn hoàn toàn có thể dùng baud rate 115200 bps khi kết nối bootloader với máy tính, và thiết lập baud rate 9600 bps trong chương trình ứng dụng để giao tiếp với máy tính trong quá trình thực thi chương trình ứng dung.

Thấy bây giờ đã hiểu tương đối về nó. Mình đinh dùng CCS để viết chương trình về RFID giao tiếp với dòng 16F876A và dùng 2 chân RXD, TXD vừa nạp cho PIC bằng tinybootloader vừa giao tiếp hiện thị kết quả đọc đựoc từ bộ reader lên máy tính và truyền yêu cầu từ máy tính xuống bộ reader của RFID. Mình không rõ là khi viết bằng CCS nó có phù hợp với phần mềm của tiny không.

dang tuan 13-10-2009 06:00 PM

Cổng COM ảo không dùng được tiny bootloader (PC rs232<->max232<->PIC) hay sao?
Bạn nào biết chỉ mình với.

Mình có 2 cái cổng USB-COM mà cả hai đều như nhau. kết nối đều báo lỗi.

Mặc dù driver nhận tốt kết nối với các thiết bị dùng cổng COM khác thì OK .

Nhưng kết nối với thiết bị thông qua mạch có Max232 thì không được.

namqn 13-10-2009 08:03 PM

Trích:

Nguyên văn bởi dang tuan (Post 30209)
Cổng COM ảo không dùng được tiny bootloader (PC rs232<->max232<->PIC) hay sao?
Bạn nào biết chỉ mình với.

Mình có 2 cái cổng USB-COM mà cả hai đều như nhau. kết nối đều báo lỗi.

Mặc dù driver nhận tốt kết nối với các thiết bị dùng cổng COM khác thì OK .

Nhưng kết nối với thiết bị thông qua mạch có Max232 thì không được.

Laptop của tôi không có cổng COM thực, tôi vẫn dùng bộ chuyển đổi USB<=>RS-232 với Tiny Bootloader bình thường.

Bạn xem lại thiết lập của cổng và của phần mềm Tiny Bootloader có tương thích hay không.

Thân,

quilong 25-10-2009 10:53 AM

Hôm bữa test cái bootloader cho con Pic 16f877a ni nhiều lần mà khônng được. Tưởng cái cáp chuyển từ cổng usb-com của mình bị hư. Nhưng lại không phải. Sau nhiều lần kiểm tra thì lại do cái driver bootloader bị lỗi. Mình nghĩ cứ làm theo sơ đồ hướng dẫn và test chạy là ok hết. Dùng CCS lập trình đổ vào cũng chạy ok luôn. Thanks mấy người ngĩ ra cái này nhan. Nạp nhanh lém.

Link down:
http://mega.1280.com/file/C1JDGFJ6ZQ/


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

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