Cơ bản về bootloader & tiny bootloader

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • nguyen binh
    Nhập môn đệ tử
    • Jul 2008
    • 7

    #121
    anh Nam cho em hoi từ source code em dùng mplab sửa lại rồi dịch ra file hex được không a? em đã làm cách này nhưng dịch ra file hex nạp cho pic vẫn bị lổi không tìm được pic, ko bit có phải mplab của em ko fai là bản full ko

    Comment

    • namqn
      Trưởng lão PIC bang
      • Feb 2006
      • 3020

      #122
      Nguyên văn bởi nguyen binh View Post
      anh Nam cho em hoi từ source code em dùng mplab sửa lại rồi dịch ra file hex được không a? em đã làm cách này nhưng dịch ra file hex nạp cho pic vẫn bị lổi không tìm được pic, ko bit có phải mplab của em ko fai là bản full ko
      Bạn sửa những chỗ nào?

      Source code được cung cấp cho người dùng là nhằm mục đích cho phép người dùng tùy biến theo nhu cầu cụ thể của từng người. Có nhiều người đã tùy biến và dùng được bootloader, do đó nhiều khả năng là bạn sửa chưa đúng. Một khả năng khác là bạn thiết lập thông số giữa hai bên không phù hợp.

      MPLAB IDE luôn luôn là bản full, vì Microchip không kinh doanh phần mềm này.

      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

      Comment

      • nguyen binh
        Nhập môn đệ tử
        • Jul 2008
        • 7

        #123
        em đã sửa theo cách anh hướng dẫn, mà em đã kiểm tra lại mạch hình như nguyên nhân là do cái mạch của em, rất cám ơn anh đã trả lời!

        Comment

        • huynhngoctuan
          Nhập môn đệ tử
          • Jun 2008
          • 2

          #124
          Thầy nam ơi,cho em xin firmware con 18F8722 TA 20Mhz,baud 9600.Cảm ơn thầy nhiều!

          Comment

          • ghainag1088
            Nhập môn đệ tử
            • Dec 2012
            • 3

            #125
            anh Nam ơi. cho em xin bld của Pic 18F4550 crystal 20M br 9600. làm thế nào để thay đổi tần số dao động của thạch anh và tốc độ br của file bld vậy, anh chỉ cho em với
            Ilymtics

            Comment

            • ghainag1088
              Nhập môn đệ tử
              • Dec 2012
              • 3

              #126
              Nguyên văn bởi namqn View Post
              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,
              anh ơi. sao em tét với file anh cho thì dc nhưng khi viết thêm 1 lệnh printf một ký tự ra thì ký tự đó hiển thị ko đúng
              Ilymtics

              Comment

              • thjremy
                Nhập môn đệ tử
                • Oct 2012
                • 3

                #127
                Có ai giúp mình chỉnh rõ cái thông số ra sao để cho cái mạch reset nó chạy không, toàn nhấn reset bằng tay!

                Comment

                • phuphuongbk
                  Đệ tử 2 túi
                  • Nov 2012
                  • 27

                  #128
                  Cám ơn anh Namqn a nhiệt tình quá. thanks a nhiều.

                  Comment

                  • tanhaui
                    Nhập môn đệ tử
                    • Mar 2009
                    • 7

                    #129
                    Không biết bootloader có dùng qua giao tiếp CAN được không nhỉ, ai giúp mình với

                    Comment

                    • nguyenthanhquat
                      Nhập môn đệ tử
                      • Jul 2013
                      • 4

                      #130
                      Xin code tiny bootloader cho pic16f877a qua giao tiếp RS485

                      mình mới tìm hiểu về tiny bootloader và đã thử thành công qua giao tiếp RS232, hiện tại mình đang sử dụng giao tiếp RS485 và có ý tường là dùng tiny bootloader qua RS485 (mình kết nối max485 với chân RX, TX của pic, chân điều khiển Max485 là RC5, thạch anh 20M, tốc độ 9600) mình ko biết nhiều về lập trình asm nên ko biết sửa code trong tiny bootloader cho phù hợp, mong các bạn giúp đỡ

                      Comment

                      • nguyenthanhquat
                        Nhập môn đệ tử
                        • Jul 2013
                        • 4

                        #131
                        chỉnh giúp tiny bootloader PIC16F877A qua RS485

                        mình có sửa code tiny bootloader PIC16F877A qua RS485, mô phỏng trên proteus và sử dụng bản tiny 1.95 thì có check dc pic và báo nạp thành công nhưng chương trình nạp ko chạy (đơn giản là nháy 1 con led, các thông số về fuse mình đã cấu hình để phù hợp với chương trình tiny bootloader), đoạn chương trình giao tiếp RS485 mình viết:

                        SendL macro car
                        BCF RCSTA, CREN ; turn off receive on serial
                        bsf PORTC,5 ;RS485 transmit/
                        movlw car
                        movwf TXREG
                        BSF STATUS, RP0 ; bank 1 set bank
                        BTFSS TXSTA, TRMT ; wait until TRMT is high
                        goto $-1
                        BCF STATUS, RP0 ; bank 0
                        bcf PORTC,5 ;RS485 receive
                        BSF RCSTA, CREN ; enable receive on serial
                        endm

                        mong các bạn xem giúp, mình đang nghi ở chỗ:
                        #define first_address max_flash-120 ; 100 word in size
                        nhưng ko biết chỉnh sao cho đúng, chương trình mình sửa theo bản chuẩn của tiny bootloader như sau:

                        radix DEC
                        LIST P=16F887a, F=INHX8M ; change also: Configure->SelectDevice from Mplab

                        ; auto-start at 4MHz internal osc
                        xtal EQU 20000000 ; you may also want to change: _HS_OSC _XT_OSC
                        baud EQU 9600 ; standard TinyBld baud rates: 115200 or 19200
                        ;xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
                        ;baud EQU 19200 ; 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/so...bootloader.htm
                        ;************************************************* *******************

                        #include "icdpictypes.inc" ;takes care of: #include "p16fxxxA.inc", max_flash, IdTypePIC
                        #include "spbrgselect.inc"
                        #include "bankswitch.inc"
                        #define first_address max_flash-120 ; 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
                        BCF RCSTA, CREN ; turn off receive on serial
                        bsf PORTC,5 ;RS485 transmit/
                        movlw car
                        movwf TXREG
                        BSF STATUS, RP0 ; bank 1 set bank
                        BTFSS TXSTA, TRMT ; wait until TRMT is high
                        goto $-1
                        BCF STATUS, RP0 ; bank 0
                        bcf PORTC,5 ;RS485 receive
                        BSF RCSTA, CREN ; enable receive on serial
                        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'10011111' ;////////////////////////////
                        movwf TRISC ;///////////////////////
                        bcf PORTC,5 ;RS485 receive
                        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' ;"-Everything OK, ready and waiting."

                        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/2000000+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

                        Comment

                        • lyxa_bk
                          Đệ tử 1 túi
                          • Oct 2013
                          • 20

                          #132
                          cho minh hỏi là bắt buộc phải dùng mạch nạp riêng nạp Firmware vào PIC rồi mới sử đụng được tiny bootloader ah?? vì mình gặp cái lỗi không nhận được PIC. thể chẳng phải bằng hòa hay sao. mua mạch nạp rồi thì nạp luôn cho xong. câu hỏi hơi gà. mong bác mod tư vấn.

                          Comment

                          • lyxa_bk
                            Đệ tử 1 túi
                            • Oct 2013
                            • 20

                            #133
                            therad closed roi a

                            Comment

                            • supperchon
                              Đệ tử 4 túi
                              • Oct 2011
                              • 70

                              #134
                              Viagra online"Buy viagra online

                              sildenafilo aristo 100 mg precio
                              comprar cialis 5 mg en argentina
                              comprar kamagra de envio en 48 horas
                              precio de la viagra generica
                              comprar viagra madrid
                              comprar cialis en alcobendas
                              es seguro comprar levitra online
                              mejor farmacia online espana cialis
                              comprar libro sobre viagra
                              donde comprar viagra en canarias
                              levitra 10 bucodispersable precio
                              quiero comprar cialis generico y pagar contrareembolso
                              comprar levitra barata
                              comprar levitra en segovia
                              comparativa de precio viagra cialis etc
                              cialis original vs generico
                              fildena 100
                              amazon levitra 10 mg generico
                              kamagra sidenafil cenforce d
                              cialis generico 40
                              porque se puede comprar viagra sin receta
                              cialis pastilla precio en chile
                              comprar fildena en espana
                              sonde comprar el tadalafilo mas barato en andorra
                              comprar cialis en granollers
                              cialis con o sin receta
                              fildena 120 contrareembolso
                              cialis generico 5 mg prezzo in farmacia
                              centurion laboratories cenforce 100
                              precio de pastillas cialis generico
                              comprar levitra con dapoxetina generico en andorra
                              comprar viagra original con receta receta
                              tadalafilo tecnigen 5 mg precio
                              tadalafilo 5 comprar
                              cialis natural o generico

                              Comment

                              Working...