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)

namqn 04-08-2008 05:03 PM

Trích:

Nguyên văn bởi bean984 (Post 17930)
đây là code bootloader của mình
Code:

        radix DEC
        LIST      P=16F877A, F=INHX8M        ; change also: Configure->SelectDevice from Mplab
xtal EQU 8000000                ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 9600                        ; standard TinyBld baud rates: 115200 or 19200

mình lấy bootloader của con 16f873A và sử lại như vậy không biết có vấn đề gì không?
...
không biết cái boot loader của mình có vấn đề? hay code pic có vấn đề? mà khi nạp bằng tiny bootloader thấy thông báo ok rồi mà chương trình không chạy?.
...

Bạn chỉ đưa có vài dòng đầu tiên của code cho bootloader, ngay cả cấu hình của bootloader cũng không rõ, do đó không thể nhận xét bootloader của bạn là có vấn đề hay không.

Thân,

namqn 04-08-2008 05:05 PM

Trích:

Nguyên văn bởi bean984 (Post 17931)
mình đã thử dùng PG2C và ICProg đọc lại con pic thì thấy phần code thử pic lại được ghi vào Eeprom? còn phần mã chương trình chỉ có bootloader?

Bạn cho biết đã dùng Tiny Bootloader phiên bản nào, và như post trên tôi đã nêu, code đầy đủ của bootloader, để xem liệu bootloader có chạy đúng như "thiết kế" của bạn hay không.

Thân,

namqn 05-08-2008 07:42 AM

1 Attachment(s)
Trích:

Nguyên văn bởi thaithienanh (Post 17914)
Thầy Namq cho em xin file hex của PIC 18f4550 chạy thạch anh 20 MHz và baurate 57600 nhé :), em cảm ơn thầy.

Các từ cấu hình sau đã được dùng để dịch firmware cho bootloader:
Code:

        CONFIG        PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
        CONFIG        FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF
        CONFIG        PWRT = ON, BOR = OFF, BORV = 2, VREGEN = OFF
        CONFIG        WDT = OFF, WDTPS = 128
        CONFIG        MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF
        CONFIG        STVREN = ON, LVP = OFF, ICPRT = OFF, DEBUG = OFF, XINST = OFF

Tập tin .hex được đính kèm. Chú ý: tần số làm việc của CPU là 48 MHz (96 MHz của khối PLL được chia cho 2).

Thân,

thaithienanh 06-08-2008 12:47 AM

Trích:

Nguyên văn bởi namqn (Post 17953)
Thân,

Em vừa test fimware thầy cho, nhưng không thành công, tiny nó không nhận ra PIC, thầy cho em hỏi có cần phải chú ý điều gì về phần cứng khi sử dụng fimware này không :). Về phần cứng của em em nghĩ đáng chú ý ở điểm chân 23 (chân D- của USB) em đã sử dụng cho giao tiếp I2C, vậy có ảnh hưởng gì đến cấu hình của PIC không ?

namqn 06-08-2008 06:26 AM

1 Attachment(s)
Trích:

Nguyên văn bởi thaithienanh (Post 17963)
Em vừa test fimware thầy cho, nhưng không thành công, tiny nó không nhận ra PIC, thầy cho em hỏi có cần phải chú ý điều gì về phần cứng khi sử dụng fimware này không :). Về phần cứng của em em nghĩ đáng chú ý ở điểm chân 23 (chân D- của USB) em đã sử dụng cho giao tiếp I2C, vậy có ảnh hưởng gì đến cấu hình của PIC không ?

Tôi đã thử Tiny Bootloader v1.9.1 với firmware đã post lên, cho thấy bootloader làm việc tốt (xem hình chụp đính kèm).

Về phần cứng thử nghiệm, ngoài hai chân RX và TX của module EUSART, tôi còn một tụ điện 470 nF nối vào chân Vusb (chân 18) của PIC (bạn không nên nối gì khác vào chân này).

Tôi cho rằng việc dùng chân 23 của PIC cho giao tiếp I2C không ảnh hưởng đến bootloader.

Thân,

namqn 06-08-2008 06:51 AM

1 Attachment(s)
Tôi vừa kiểm tra lại tập tin .hex mà tôi đã upload ở bài viết #84, một dấu hiệu đáng ngờ là tập tin có ngày tháng được cập nhật là 04/8/2006, mặc dù tôi biên dịch hôm qua. Thông tin cấu hình trong tập tin đó bị thiếu (tôi cũng không rõ vì lý do gì, vì firmware được tôi biên dịch lại hôm nay cũng sử dụng cùng tập tin nguồn, trên cùng một máy tính).

Vì lý do trên, tôi upload lại firmware mà tôi vừa biên dịch và thử nghiệm vào hôm nay. Bạn thử lại xem bootloader có làm việc tốt hay không.

Thân,

thaithienanh 06-08-2008 07:08 PM

Trích:

Nguyên văn bởi namqn (Post 17966)
Tôi vừa kiểm tra lại tập tin .hex mà tôi đã upload ở bài viết #84, một dấu hiệu đáng ngờ là tập tin có ngày tháng được cập nhật là 04/8/2006, mặc dù tôi biên dịch hôm qua. Thông tin cấu hình trong tập tin đó bị thiếu (tôi cũng không rõ vì lý do gì, vì firmware được tôi biên dịch lại hôm nay cũng sử dụng cùng tập tin nguồn, trên cùng một máy tính).

Vì lý do trên, tôi upload lại firmware mà tôi vừa biên dịch và thử nghiệm vào hôm nay. Bạn thử lại xem bootloader có làm việc tốt hay không.

Thân,

Hi cảm ơn thầy, với fimware mới này PIC chạy tốt rồi, àh chân 18 em sử dụng cho giao tiếp I2C (có treo một điện trở), nhưng mạch vẫn chạy tốt vậy là không ảnh hưởng ^^ vui rùi, em chúc thầy luôn khỏe để dành thời gian cho công việc giảng dạy thất tốt ạh :)

minhsondaklak 11-08-2008 08:00 PM

Hình dung về Bootloader ?
 
Đọc xong phần bootloader, mình chợt nghĩ: Nó giống như là "hệ điều hành" của chip VĐK, tuỳ chọn cho VĐK nạp chương trình mới hay là chạy chương trình cũ đã nạp trước đó.
Việc hình dung nôm na như nhế có thể giúp bạn dể nắm bắt và dể nhớ về Bootloader.

namqn 11-08-2008 10:43 PM

Trích:

Nguyên văn bởi minhsondaklak (Post 18098)
Đọc xong phần bootloader, mình chợt nghĩ: Nó chính là "hệ điều hành" của chip VĐK, tuỳ chọn cho VĐK nạp chương trình mới hay là chạy chương trình cũ đã nạp trước đó.
Việc hình dung nôm na như nhế có thể giúp bạn dể nắm bắt và dể nhớ về Bootloader.

Nếu hình dung theo kiểu này thì bootloader trong PIC giống như bootloader của MBR hay của partition trong ổ đĩa của máy tính, cho phép bạn khởi động một trong những hệ điều hành trên đĩa, với ổ đĩa có nhiều hệ điều hành (vì vậy nên firmware loại này của PIC cũng được gọi là bootloader). Nếu gọi là hệ điều hành thì nó phải thường xuyên chạy và điều phối các ứng dụng trên PIC, bootloader không làm việc đó đâu.

Thân,

kebitmat_f 27-08-2008 05:54 PM

Em mới tìm hiểu về Pic. Định sử dụng nạp chương trình cho Pic6F877A bằng tiny bootloader. Nhưng vẫn lơ tơ mơ về cái cách này. Theo em hiểu : Ngoài mạch ứng dụng của Pic thì thiết kế thêm 2 module : mạch tinybootloader và RS232. Cái thằng RS232 em đọc tài liệu về nó thì bảo đó là một cách giao tiếp PC với thiết bị ngoại vi. Như thế nếu em có mạch tinybootloader rồi muốn nối với PC thì cần làm những gì? Nối vào các chân của tiny bootloader vào đâu của PC? hay là fai làm một mạch cứng nữa?
hic hic. Thấy bối rối quá.
Mong các bác chỉ giáo tận tình. Nếu có hướng dẫn cụ thể, chi tiết (từ cứng đến mềm)từng bước nạp cho Pic bằng tiny bootloader thì tốt quá.
Thanks !

namqn 27-08-2008 06:32 PM

Trích:

Nguyên văn bởi kebitmat_f (Post 18412)
Em mới tìm hiểu về Pic. Định sử dụng nạp chương trình cho Pic6F877A bằng tiny bootloader. Nhưng vẫn lơ tơ mơ về cái cách này. Theo em hiểu : Ngoài mạch ứng dụng của Pic thì thiết kế thêm 2 module : mạch tinybootloader và RS232. Cái thằng RS232 em đọc tài liệu về nó thì bảo đó là một cách giao tiếp PC với thiết bị ngoại vi. Như thế nếu em có mạch tinybootloader rồi muốn nối với PC thì cần làm những gì? Nối vào các chân của tiny bootloader vào đâu của PC? hay là fai làm một mạch cứng nữa?
hic hic. Thấy bối rối quá.
Mong các bác chỉ giáo tận tình. Nếu có hướng dẫn cụ thể, chi tiết (từ cứng đến mềm)từng bước nạp cho Pic bằng tiny bootloader thì tốt quá.
Thanks !

Bạn đã đọc báo cáo của ntc trong luồng này chưa:
http://www.picvietnam.com/forum//showthread.php?t=439

Module cung cấp chức năng nạp qua Tiny Bootloader cũng có thể dùng để giao tiếp thông qua RS-232. Không nhất thiết RS-232 dùng để giao tiếp PC với thiết bị ngoại vi, vẫn có thể giao tiếp giữa các ngoại vi bằng RS-232.

Thân,

bean984 25-03-2009 04:14 PM

cho mình xin file hex của con 877a chạy TA 8Mhz.
mình cũng đã thử viết nhưng khi dùng tinyBld search Pic thì nó không nhận đc và có thông báo lỗi như thế này:

Connected to \\.\COM1 at 9600
Searching for PIC ...
pic sending unknown data: "K" <> 1h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
ERROR!
cho mình hỏi đây là lỗi gì vậy?

namqn 25-03-2009 05:30 PM

Trích:

Nguyên văn bởi bean984 (Post 23978)
cho mình xin file hex của con 877a chạy TA 8Mhz.
mình cũng đã thử viết nhưng khi dùng tinyBld search Pic thì nó không nhận đc và có thông báo lỗi như thế này:

Connected to \\.\COM1 at 9600
Searching for PIC ...
pic sending unknown data: "K" <> 1h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
ERROR!
cho mình hỏi đây là lỗi gì vậy?

Xin hỏi là bạn đã dùng Tiny Bootloader phiên bản bao nhiêu trên máy tính, và bạn đã dùng firmware nào để nạp cho PIC?

Như bạn có thể thấy, trong luồng này, những thành viên cần firmware Tiny Bootloader cho một PIC cụ thể với một cấu hình cụ thể (nên giống với cấu hình của chương trình ứng dụng) có thể gửi yêu cầu lên, và tôi hay một thành viên nào đó sẽ cung cấp firmware đó.

Thân,

bean984 26-03-2009 08:19 AM

mình dùng tinybld198.
cho mình xin firmware cho con 16f877a.cấu hình như sau:
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=8000000)
thanks.

bean984 26-03-2009 08:20 AM

nếu có thể đc cho mình xin luôn file .asm nha.
thanks

namqn 26-03-2009 03:50 PM

1 Attachment(s)
Trích:

Nguyên văn bởi bean984 (Post 24018)
mình dùng tinybld198.
cho mình xin firmware cho con 16f877a.cấu hình như sau:
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=8000000)
thanks.

Firmware như bạn đã yêu cầu được đính kèm dưới đây.

Thân,

namqn 26-03-2009 03:52 PM

Trích:

Nguyên văn bởi bean984 (Post 24019)
nếu có thể đc cho mình xin luôn file .asm nha.
thanks

Tập tin nguồn đã có sẵn trong thư mục "picsource\pic16" của tập tin "tinybld198.zip". Bạn chỉ cần sửa 3 dòng đầu tiên cho phù hợp với loại PIC, tốc độ thạch anh, và tốc độ baud của bạn, và chỉnh dòng cấu hình cho phù hợp với cấu hình trong chương trình ứng dụng của bạn.

Tôi cũng chỉ làm đúng những động tác trên khi biên dịch firmware vừa gửi lên.

Thân,

bean984 27-03-2009 08:23 AM

cảm ơn anh. cho e hỏi câu lệnh này fai chỉnh như thế nào với các TA khác nhau?
movlw xtal/2000000+1
e thấy trong picsource có thay đổi giá trị này nhưng e vẫn k hiểu cách tính.
e cảm ơn!.

namqn 27-03-2009 05:06 PM

Trích:

Nguyên văn bởi bean984 (Post 24056)
cảm ơn anh. cho e hỏi câu lệnh này fai chỉnh như thế nào với các TA khác nhau?
movlw xtal/2000000+1
e thấy trong picsource có thay đổi giá trị này nhưng e vẫn k hiểu cách tính.
e cảm ơn!.

Câu lệnh đó không cần phải chỉnh lại, vì giá trị xtal dùng để xác định tần số thạch anh.

Thân,

bean984 30-03-2009 12:56 PM

cac a xem giup e cai firmware này co van de j k?sao e dich ma no k nhận đc chip
Code:

        radix DECLIST      P=16F877A, F=INHX8M        ; change also: Configure->SelectDevice from Mplab
        include        <p16f877a.inc>

xtal EQU 8000000                ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 9600                        ; standard TinyBld baud rates: 115200 or 19200
        ; The above 3 lines can be changed and buid a bootloader for the desired frequency (and PIC type)

        ;********************************************************************
        ;        Tiny Bootloader                16FxxxA series                Size=100words
        ;        claudiu.chiculita@ugal.ro
        ;        http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
        ;********************************************************************

        #include        "D:\tinybld198\picsource\icdpictypes.inc"
            #include            "D:\tinybld198\picsource\spbrgselect.inc"
            #include        "D:\tinybld198\picsource\bankswitch.inc"
        #define first_address max_flash-100 ; 100 word in size

        __CONFIG  _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

        errorlevel 1, -305                        ; suppress warning msg that takes f as default

       
        cblock 0x20
        buffer:80
        endc
       
        cblock 0x78
        crc
        contor
        i
        cnt1
        cnt2
        cnt3
        flag       
        endc
       

SendL macro car
        movlw        car
        movwf        TXREG
        endm

;0000000000000000000000000 RESET 00000000000000000000000000

                ORG    0x0000
                PAGESEL IntrareBootloader
                GOTO    IntrareBootloader

;view with TabSize=4
;&&&&&&&&&&&&&&&&&&&&&&&  START    &&&&&&&&&&&&&&&&&
;----------------------  Bootloader  ----------------------
;             
;PC_flash:    C1h          AddrH  AddrL  nr  ...(DataLo DataHi)...  crc
;PIC_response:  id  K                                                K

       
        ORG first_address
        nop
        nop
        nop
        nop
        org first_address+4
IntrareBootloader
                        ;init serial port
        clrf        STATUS
        bsf                STATUS,RP0                        ;BANK1_
        movlw        b'00100100'
        movwf        TXSTA
        movlw        spbrg_value
        movwf        SPBRG
        BANK0_
        movlw        b'10010000'
        movwf        RCSTA
                        ;wait for computer
        call        Receive                       
        sublw        0xC1                                ;Expect C1
        skpz
        goto        way_to_exit
        SendL IdTypePIC                                ;PIC type
        ;SendL IdSoftVer                        ;firmware ver x
MainLoop
        clrf        STATUS                                ;bank0
        SendL 'K'
mainl
        clrf        crc
        call        Receive                                ;H
                bsf STATUS,RP1                        ;bank2
        movwf        EEADRH
        movwf        flag                                ;used to detect if is eeprom
        call        Receive                                ;L
                bsf STATUS,RP1                        ;bank2
        movwf        EEADR

        call        Receive                                ;count
        movwf        contor
        movwf        i
        incf        i
        movlw        buffer-1
        movwf        FSR
rcvoct
        call        Receive
        incf        FSR
        movwf        INDF
        decfsz        i
        goto        rcvoct
       
        movf        crc,f                                ;check checksum
        skpz
        goto        ziieroare
                                ;write
                bsf STATUS,RP1                        ;bank switch 0->2
        movlw        buffer
        movwf        FSR
writeloop                                                ; write 2 bytes = 1 instruction
        clrwdt
        movf        INDF,w
        movwf        EEDATA
        incf        FSR
        movf        INDF,w
        movwf        EEDATH
        incf        FSR       
                BANK3_                                        ;bank  2->3
        bcf                EECON1,EEPGD
        btfss        flag,6                                ;is eeprom (or flash)
        bsf                EECON1,EEPGD
        bsf                EECON1,WREN
        movlw        0x55
        movwf        EECON2
        movlw        0xaa
        movwf        EECON2       
        bsf                EECON1,WR
        nop
        nop
waitwre       
        btfsc        EECON1,WR                        ;for eeprom writes (wait to finish write)
        goto        waitwre
        bcf                EECON1,WREN
                BANK2_                                        ;bank2
        incf        EEADR                                ;does not cross zones
        btfss        flag,6                                ; if writing to EEPROM, skip first counter dec.
        decf        contor
        decfsz        contor
        goto        writeloop
       
        goto        MainLoop
ziieroare
        SendL 'N'
        goto        mainl
         

Receive
        clrf        STATUS
        movlw        xtal/1000000+1                ; for 20MHz => 11 => 1second
        movwf        cnt1
rpt2                                               
        clrf        cnt2
rpt3
        clrf        cnt3
rptc
                btfss PIR1,RCIF                        ;test RX
                goto $+4
                movf RCREG,w                        ;return in W
                addwf crc,f                                ;compute checksum
                return
        clrwdt
        decfsz        cnt3
        goto        rptc
        decfsz        cnt2
        goto        rpt3
        decfsz        cnt1
        goto        rpt2
                                ;timeout:
way_to_exit                        ;exit in all other cases; must be BANK0/1
        ;BANK0_
        bcf        RCSTA,        SPEN        ; deactivate UART
        goto        first_address
;*************************************************************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.

            END

e cung đã thử để nguyên dòng lệnh này
movlw xtal/2000000+1
như anh chính nói nhưng vẫn k đc.
anh chính cho e xin firmware cho con 16f877a.cấu hình như sau:
#fuses XT, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=3579545)
e cảm ơn anh.

namqn 31-03-2009 03:55 AM

Trích:

Nguyên văn bởi bean984 (Post 24148)
cac a xem giup e cai firmware này co van de j k?sao e dich ma no k nhận đc chip
...
e cung đã thử để nguyên dòng lệnh này
movlw xtal/2000000+1
như anh chính nói nhưng vẫn k đc.
anh chính cho e xin firmware cho con 16f877a.cấu hình như sau:
#fuses XT, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=3579545)
e cảm ơn anh.

Bạn đã thử firmware mà bạn đã yêu cầu tôi dịch chưa? Kết quả như thế nào mà bạn phải dịch lại firmware?

Thân,

bean984 31-03-2009 09:54 AM

e muốn dịch lại để biết cách tự dịch các firmware với các TA khác nhau cho con 877A.cái firmware của a chạy tốt a.vì e có mấy cái mạch làm dùng mấy loại TA khác nhau.hỏi xin hoài cũng hơi ngại

namqn 31-03-2009 05:58 PM

1 Attachment(s)
Trích:

Nguyên văn bởi bean984 (Post 24186)
e muốn dịch lại để biết cách tự dịch các firmware với các TA khác nhau cho con 877A.cái firmware của a chạy tốt a.vì e có mấy cái mạch làm dùng mấy loại TA khác nhau.hỏi xin hoài cũng hơi ngại

Bạn thử firmware sau nhé, cấu hình như bạn đã nêu ở trên. Không phải là tôi muốn dấu điều gì, nhưng tôi không hiểu sao source code đã có sẵn mà nhiều người vẫn không cấu hình được firmware, cho nên mới phải ngồi dịch giúp các bạn. Bạn đừng ngại khi yêu cầu dịch giúp firmware cho Tiny Bootloader (tôi nhận được yêu cầu này khá thường xuyên, từ cả những người dùng nước ngoài).

Thân,

bean984 03-04-2009 05:08 PM

anh nam dịch giúp em cái firmware cua con 18f4550 với cấu hình :
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP // for debug mode
#use delay(clock=8000000)
// e k dùng usb

e cảm ơn anh!

namqn 04-04-2009 04:37 AM

1 Attachment(s)
Trích:

Nguyên văn bởi bean984 (Post 24295)
anh nam dịch giúp em cái firmware cua con 18f4550 với cấu hình :
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP // for debug mode
#use delay(clock=8000000)
// e k dùng usb

e cảm ơn anh!

PIC18F4550 có nhiều từ cấu hình, trong đó có nhiều cấu hình chưa được bạn mô tả. Do đó, tôi dịch firmware với cấu hình dưới đây:
Code:

        CONFIG        PLLDIV = 2, CPUDIV = OSC1_PLL2, USBDIV = 2
        CONFIG        FOSC = HS, FCMEM = OFF, IESO = OFF
        CONFIG        PWRT = ON, BOR = OFF, BORV = 21, VREGEN = OFF
        CONFIG        WDT = OFF, WDTPS = 128
        CONFIG        MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF
        CONFIG        STVREN = ON, LVP = OFF, ICPRT = OFF, DEBUG = OFF, XINST = OFF

Thân,

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à 04:52 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