Hallo,

Ik zou eens willen experimenteren met een bootloader voor een 18F2520. Heeft iemand ervaring hiermee met de 18F reeks, en kan iemand mij een goeie aanbevelen. Heb al her en der gezocht op het internet, maar de reacties over de kwaliteiten lopen blijkbaar uiteen.

Graag zou ik de bootloader via de UART laten lopen.

Er moet wel PC connectie blijven via de uart, wordt mijn uart nu opgeslokt door de bootloader of kan ik die hierbuiten nog steeds gebruiken?

Ojeke

Kijk eens naar de PicKit2 firmware. (Kun je bij Microchip downloaden)
Heeft een USB bootloader. (RS232 zie je toch niet meer standaard op PC's)

Op de site van Microchip zijn er application notes te vinden voor wat jij wil doen + de code hiervoor. Meestal staat er ook bij met welk type pic zij het hebben gedaan. Als je dan nog eens deze neemt is het eens zo gemakkelijk :)

Het makkelijkst is met een 18f2550/4550 en usb.
Microchip heeft hiervan een mooi pakketje uitgebracht (niet de elektuur-variant nemen!). Ik ben er laatst ook mee bezig geweest en dat werkt heel mooi, maar dus wel over usb. Volgensmij kan je de usb verder nog gebruiken als je dat wilt maar zover ben ik nog niet..

Hoi,

Bedankt voor alle reacties. Het zit zo dat ik een bluetooth module gekocht heb ( http://www.mdfly.com/index.php?main_page=product_info&products_id=…. )

Nu hoopte ik via deze module een uart verbinding op te zetten en zo de bootloader te runnen. In de datasheet van de module staat dat ze ook een USB aansluiting heeft. Zou ik deze aansluiting aan die van de µC kunnen hangen en zo te kunnen bootloaden, of word dit al redelijk spannend?

Ojeke

voor zover ik weet heb je bij het bootloaden ook de resetvoorwaarde. Eerst resetten, pin hoog maken (of usb hebben aangesloten), reset loslaten en dan draait de bootloader. Dit voor het geval je iets wilt maken om op afstand te programmeren.
Ik ken jou module niet maar als het een host is zou je het kunnen proberen door contact te maken en dan de voeding kort te onderbreken(met een backup-capje voor de bluetooth module).

Hmm, zal dan eventjes moeten wachten op mijn module zodat ik het kan testen. Voor het resetten van de pic kan ik ook nog enkele andere manieren verzinnen :)

Ik zou graag de bootloader van microtsjip proberen, maar kan ze helaas niet vinden, kan iemand me een zetje geven?

Ojeke

Toch niet zo moeilijk? Application Notes ->> Select a function ->> Bootloader.

Ahh, gevonden :)

sorry, had misschien ietsje langer moeten zoeken. Was ergens van boven in de menu balk gaan zoeken, maar zo vond ik ze natuurlijk niet.

Ok, heb de files bekeken, maar degene die ik heb zien er redelijk UART uit. Maar dat is ook geen enkel probleem. Zal de bijgesloten PDF eens uitlezen.

Ojeke

Dat resetten van de pic zou ook kunnen gebeuren door de bluetooth module. Sommige bluetooth modules hebben een aantal digitale uitgangen die je kan aansturen.

Hoi,

Heb de module binnen. Nu heb ik even als test de module er nog even uit gelaten.

Ik heb het volgende gedaan:

1) Gekozen voor de 18F242 (had ik liggen)
2) tiny bootloader van het net gehaald.
3) in Tiny bootloader stak een file van de 18F252 (deze heeft meer geheugen dan de 18F242)
4) Usb serieel omvormer aangesloten.

Nu lijkt de pic niets te doen. Als deze opstart zou ze normaal een commando versturen, maar heb er mijn logic analyzer op gehangen maar zie weinig gebeuren. Zou dit door de keuze van de pic kunnen komen?

Ojeke

Weet je zeker dat die usb -> serieel converter goed werkt? Of zoiets gaat werken met je schakeling is altijd maar de vraag. Heb je niet nog ergens een pc met seriele poort?

Op 19 december 2010 15:30:54 schreef ojeke:
3) in Tiny bootloader stak een file van de 18F252 (deze heeft meer geheugen dan de 18F242)

controleer eerst eens of dit we werkt. De file van een chip met meer geheugen gebruiken voor een chip met minder kan wel eens verkeerd gaan. eerst opnieuw compileren.

@ Bas, als ik het goed begrijp zou de pic na het opstarten een commando zenden. Ik controleer de TX lijn van de 18F op enige activiteit met mijn logic analayser. Deze triggert zichzelf wanneer er een signaal verandering is. Maar er gebeurt niets, dus vermoed dat er niets verzonden wordt.

@MAH, Dat kan wel eens de oplossing zijn, alleen weet ik echter niet hoe ik in ASM moet compileren. Ik heb MPLAB van microchips afgehaald en heb een proging gedaan om project te maken met de code van de site, maar dit was helaas niet gelukt.

Is er iemand die veel ervaring heeft met asm?

Ojeke

Ik heb wat met DS30 bootloader zitten spelen (http://mrmackey.no-ip.org/elektronik/ds30loader/index.php) en dit werkt best wel goed.

Als je het programma instaleerd vindt je in :\Program Files\ds30 Loader\ diverse directories voor de verschillende PIC families.

Hiervan kun je dan de MPLAB project file (MPLAB moet dus geinstaleerd zijn) aanklikken.
In het MPLAB project vindt je onder Headers een settings file.
Deze kun je aanpassen aan de betreffende PIC, baudrate, etc
Ook kun je de fuse settings hier aangeven.
Soms moet je ook nog ds30loader.asm aanpassen.

Als je nooit met MPLAB gewerkt hebt moet je je hier wel even in verdiepen maar voor de rest is het niet al te moeilijk.
Voor het aanpassen van de diverse files heb je nauwelijks asm ervaring nodig.

Hoi,

Die ziet er ook wel leuk uit ja. Heb het eens geprobeerd, zoals je zei. In de settings file alles aangepast, en in de project eigenschappen gekozen voor de 18F2520.

Nu krijg ik in de DS30loader.asm de volgende fout:
Error[101] F:\PROGRAM FILES\DS30 LOADER\FIRMWARE PIC18F\SRC\DS30LOADER.ASM 261 : ERROR: (Do you need to configura uart pins to be digital? If not, remove this line)

Als ik er op dubbel klik kom uit op het volgende stukje code.
;----------------------------------------------------------------------
; User init
;----------------------------------------------------------------------
; Enable digital i/o
#ifdef ADCON1
error Do you need to configura uart pins to be digital? If not, remove this line
#endif

Ok, dus ik veronderstel dat ik de uart pins als digitaal wil instellen, dus dan moet ik deze lijn toch laten staan of niet?

Ojeke

Wat hier bedoeld wordt is dat wanneer de uart pinnen ook als analoog gebruikt kunnen worden ze eerst op digitaal gezet moeten worden. (pic's starten kaal altijd de I/O's die analoog kunnen analoog op)
Dit is voor de 18F2520 niet van toepassing.
Het lijntje moet dus weg (of ; ervoor)

Aha, bedankt

Ga het overmorgen eens proberen, heb nu een reeks familiefeesten geprogrammeerd staan.

Ojeke

Hoi,

Ben al een paar uurtjes aan het proberen, maar het lukt niet echt. Op de tx lijn van de computer zie ik activiteit, maar op die van de PIC zie ik niets gebeuren. Ik heb al alle combinaties geprobeerd om de device te resetten om op de juiste manier in de bootloader te komen. Had ergens gevonden op de site dat je moest resetten tijdens het zoeken, maar lukte ook niet.

Ik vermoed dat het aan mijn aangepaste code ligt. Heb het naar mijn inzien zo goed mogelijk proberen aan te passen. Ziet iemand zo 1,2,3 wat hier aan scheelt?


;------------------------------------------------------------------------------
; Device
;------------------------------------------------------------------------------
		LIST      	P=18F2520;						;xxx


;------------------------------------------------------------------------------
; Includes
;------------------------------------------------------------------------------
        #include	"devices.inc"


;------------------------------------------------------------------------------
; User preferences
;------------------------------------------------------------------------------
		radix DEC

		#define		OSCF			20000000		;xxx oscillator frequency
		#define		BAUDRATE	 	9600			;xxx baudrate
		#define		BLTIME			2000			;xxx data receive timeout [ms]
		#define		BLINIT			2000			;xxx hello receive timeout [ms]
		#define		HELLOTRIES		2				;xxx number of non hello characters received before branching to the user application
		
		#define		USE_UART1		1				;xxx uncomment to use uart1
		;#define		USE_UART2		1				;xxx uncomment to use uart2
		;#define USE_CAN								;xxx uncomment to use CAN instead of UART
		
		;#define		USE_TXENABLE	1				;xxx uncomment to use a tx enable pin		
		#ifdef USE_TXENABLE
			#define	TRISR_TXE		TRISC			;xxx tris register containing tx enable
			#define	LATR_TXE		LATC			;xxx port register containing tx enable
			#define	TRISB_TXE		TRISC6			;xxx tris bit for tx enable
			#define LATB_TXE		RC6				;xxx port bit for tx enable
		#endif



;------------------------------------------------------------------------------
; CAN settings
;------------------------------------------------------------------------------		
		#define		ID_PIC		1					;xxx node number for this device
		#define 	ID_GUI 	0x7ff					;xxx node number of the ds30 Loader gui


;------------------------------------------------------------------------------
; Advanced settings
;------------------------------------------------------------------------------		
		#define		PROT_GOTO	1					;xxx protect goto at 0x00
		#define		PROT_BL 	1					;xxx protect bootloader
		
		#define		BLPLP		7					;bootloader placement, pages from end
		#define		BLSIZEP		7					;bootloader size [pages], used by bootloader protection	
		

;------------------------------------------------------------------------------
; Configuration bits, these macros can be found at the end of the inc-files located in 
; C:\Program Files\Microchip\MPASM Suite\
;
; These can also be set in MPLAB IDE instead, they are found in Configure->Configuration bits...
;------------------------------------------------------------------------------
		;config 	OSC 	= INTIO2	;internal oscillator
		;config 	FSCM 	= OFF		;failsafe clock monitor
		;config 	IESO 	= OFF		;internal external switchover mode
		;config 	PWRT 	= OFF		;power-up timer
		;config 	BOR 	= OFF		;brown-out reset
		;config 	BORV	= 27		;brown-out reset value
		;config 	WDT 	= OFF		;watchdog timer
		;config 	WDTPS 	= 1			;1:1 WDT prescalar
		config 	MCLRE 	= ON		;MCLR
		;config 	STVR 	= ON		;stack overflow reset
		;config 	LVP 	= OFF		;low voltage programming
		;config	DEBUG	= OFF		;debug
		;config 	CP0 	= OFF		;
		;config 	CP1 	= OFF		;
		;config 	CPB 	= OFF		;
		;config 	CPD 	= OFF		;
		;config 	WRT0 	= OFF		;
		;config 	WRT1 	= OFF		;
		;config 	WRTB 	= OFF		;
		;config 	WRTC 	= OFF		;
		;config 	WRTD	= OFF		;
		;config 	EBTR0 	= OFF		;
		;config 	EBTR1 	= OFF		;
		;config 	EBTRB 	= OFF		;
		
		;__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC3_PLL4_1L & _USBDIV_2_1L
		;__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEM_OFF_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

Ook even een form gestart op http://mrmackey.no-ip.org/elektronik/ds30loader/forum/showthread.php?t…

Liep destijds tegen hetzelfde aan.
Het lag toen aan de fuse settings.
Vanuit MPLAB zelf kreeg ik die niet werkend.

Als je in de settings het volgende lijstje voor de 18F2520 gebruikt zou het moeten werken.

CONFIG FOSC = HS ;external oscillator
CONFIG FCMEN = OFF ;Fail-Safe Clock Monitor disabled
CONFIG IESO = OFF ;internal external switchover mode
CONFIG PWRT = ON ;power-up timer
CONFIG BOREN = ON ;brown-out reset
CONFIG BORV = 2 ;brown-out reset value (2,8V)
CONFIG WDTEN = OFF ;watchdog timer
CONFIG WDTPS = 128 ;1:128 WDT prescalar
CONFIG PBADEN = OFF ;analog port B<4:0>
CONFIG STVREN = ON ;;stack overflow reset
CONFIG LVP = OFF ;low voltage programming
CONFIG XINST = OFF ;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
CONFIG DEBUG = OFF ;no debug

En waar kan/moet ik deze settings aanpassen?

Bij plaatsen in een file? of van boven bij configure --> configuration bits

MVG

Ojeke

Onderin de settings file die je opgstuurd hebt zie je een hele rij staan met ; ervoor (uitgecomentariseerd)
Dat kun je eventueel weghalen en mijn lijstje eronder zetten.

Ok, het werkt helemaal :)

Dankje knutselaar :)

MVG

Ojeke