![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| Tiny Bootloader Mọi vấn đề liên quan tinybootloader sẽ được tổng hợp ở đây. |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
|
|
#1 |
|
Trưởng lão PIC bang
|
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,
__________________
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 |
|
|
|
|
|
#2 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
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!. |
|
|
|
|
|
#3 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#4 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
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
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. |
|
|
|
|
|
#5 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#6 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
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
|
|
|
|
|
|
#7 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#8 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
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! |
|
|
|
|
|
#9 | |
|
Trưởng lão PIC bang
|
Trích:
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
__________________
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 |
|
|
|
|
|
|
#10 |
|
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 7
: |
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 |
|
|
|
|
|
#11 | |
|
Trưởng lão PIC bang
|
Trích:
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 |
|
|
|
|
|
|
#12 |
|
Đệ tử 2 túi
Tham gia ngày: Nov 2006
Bài gửi: 26
: |
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 |
|
|
|
|
|
#13 | |
|
Trưởng lão PIC bang
|
Trích:
Code:
;************************************************************* ; After reset ; Do not expect the memory to be zero, ; Do not expect registers to be initialised like in catalog. 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,
__________________
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 |
|
|
|
|
|
|
#14 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
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? |
|
|
|
|
|
#15 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
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 thay đổi nội dung bởi: bean984, 13-05-2009 lúc 10:55 AM. |
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|
Similar Threads
|
||||
| Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
| Microchip Bootloader | falleaf | Bootloaders - Programmers - Debuggers - Emulators | 2 | 20-05-2017 11:43 AM |
| Pvn Tiny Bootloader | ntc | Tiny Bootloader | 52 | 31-10-2012 01:27 PM |
| xin bootloader của pic18f4331 | hoangminh1234 | Tiny Bootloader | 30 | 24-12-2011 02:38 PM |
| Tiny bootloaders | falleaf | Tiny Bootloader | 15 | 01-02-2010 03:13 PM |
| Xin file hex bootloader của PIC16F84A | hanhluckyly | Tiny Bootloader | 1 | 18-10-2006 09:36 PM |