petit problemme avec le bootlaoder de microchip
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

petit problemme avec le bootlaoder de microchip



  1. #1
    invite13ed46c1

    petit problemme avec le bootlaoder de microchip


    ------

    voila j'ai mis en place le bootloader de Microchip MCHPFSUSB v2.2

    tout ce passe bien je teste un hex pour clignote une led ok , mais quand j'essaye un code avec des interrupteur ça marche pas
    dans mon code j'ai highVector=0x008
    mais mon bootloader déclare déja ces valeurs

    #define REMAPPED_HIGH_INTERRUPT_VECTOR _ADDRESS 0x1008

    enfin voila je ne suis pas un pro et je me demande comment regle ce problemme

    le code de base est pour un 18f4550 et je l'est adapte pour le 2550

    je met ici mon code


    Code:
    #include <delays.h> // fonctions de délais
    /* PIC18 cycle-count delay routines.
    *
    * Functions:
    * Delay1TCY()
    * Delay10TCY() // 17Cxx only
    * Delay10TCYx()
    * Delay100TCYx()
    * Delay1KTCYx()
    * Delay10KTCYx()
    */
    #include <timers.h>    /* fonctions pour les timers */
    #include <p18f2550.h>// déclarations pour le PIC18F252
    
            #pragma config PLLDIV   = 5         // (20 MHz crystal on PICDEM FS USB board)
            #pragma config CPUDIV   = OSC1_PLL2   
            #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
            #pragma config FOSC     = HSPLL_HS
            #pragma config FCMEN    = OFF
            #pragma config IESO     = OFF
            #pragma config PWRT     = ON
            #pragma config BOR      = ON
            #pragma config BORV     = 3
            #pragma config VREGEN   = ON      //USB Voltage Regulator
            #pragma config WDT      = OFF
            #pragma config WDTPS    = 32768
            #pragma config MCLRE    = ON
            #pragma config LPT1OSC  = OFF
            #pragma config PBADEN   = OFF
    //      #pragma config CCP2MX   = ON
            #pragma config STVREN   = ON
            #pragma config LVP      = OFF
    //      #pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming
            #pragma config XINST    = OFF       // Extended Instruction Set
            #pragma config CP0      = OFF
            #pragma config CP1      = OFF
    //      #pragma config CP2      = OFF
    //      #pragma config CP3      = OFF
            #pragma config CPB      = OFF
    //      #pragma config CPD      = OFF
            #pragma config WRT0     = OFF
            #pragma config WRT1     = OFF
    //      #pragma config WRT2     = OFF
    //      #pragma config WRT3     = OFF
            #pragma config WRTB     = OFF       // Boot Block Write Protection
            #pragma config WRTC     = OFF
    //      #pragma config WRTD     = OFF
            #pragma config EBTR0    = OFF
            #pragma config EBTR1    = OFF
    //      #pragma config EBTR2    = OFF
    //      #pragma config EBTR3    = OFF
            #pragma config EBTRB    = OFF
    
    #define PROGRAMMABLE_WITH_USB_HID_BOOTLOADER		//Uncomment this to make the output HEX of this project work with the HID Bootloader
    
    
    
    
    /** P R I V A T E  P R O T O T Y P E S ***************************************/
    static void InitializeSystem(void);
    void ProcessIO(void);
    void USBDeviceTasks(void);
    void YourHighPriorityISRCode();
    void YourLowPriorityISRCode();
    void BlinkUSBStatus(void);
    void UserInit(void);
    void InitializeUSART(void);
    void putcUSART(char c);
    unsigned char getcUSART ();
    
    
    /** VECTOR REMAPPING ***********************************************/
    #if defined(__18CXX)
    	//On PIC18 devices, addresses 0x00, 0x08, and 0x18 are used for
    	//the reset, high priority interrupt, and low priority interrupt
    	//vectors.  However, the current Microchip USB bootloader 
    	//examples are intended to occupy addresses 0x00-0x7FF or
    	//0x00-0xFFF depending on which bootloader is used.  Therefore,
    	//the bootloader code remaps these vectors to new locations
    	//as indicated below.  This remapping is only necessary if you
    	//wish to program the hex file generated from this project with
    	//the USB bootloader.  If no bootloader is used, edit the
    	//usb_config.h file and comment out the following defines:
    	//#define PROGRAMMABLE_WITH_USB_HID_BOOTLOADER
    	//#define PROGRAMMABLE_WITH_USB_LEGACY_CUSTOM_CLASS_BOOTLOADER
    	
    	#if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)
    		#define REMAPPED_RESET_VECTOR_ADDRESS			0x1000
    		#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS	0x1008
    		#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS	0x1018
    	#elif defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER)	
    		#define REMAPPED_RESET_VECTOR_ADDRESS			0x800
    		#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS	0x808
    		#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS	0x818
    	#else	
    		#define REMAPPED_RESET_VECTOR_ADDRESS			0x00
    		#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS	0x08
    		#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS	0x18
    	#endif
    	
    	#if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER)
    	extern void _startup (void);        // See c018i.c in your C18 compiler dir
    	#pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
    	void _reset (void)
    	{
    	    _asm goto _startup _endasm
    	}
    	#endif
    	#pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
    	void Remapped_High_ISR (void)
    	{
    	     _asm goto YourHighPriorityISRCode _endasm
    	}
    	#pragma code REMAPPED_LOW_INTERRUPT_VECTOR = REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
    	void Remapped_Low_ISR (void)
    	{
    	     _asm goto YourLowPriorityISRCode _endasm
    	}
    	
    	#if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER)
    	//Note: If this project is built while one of the bootloaders has
    	//been defined, but then the output hex file is not programmed with
    	//the bootloader, addresses 0x08 and 0x18 would end up programmed with 0xFFFF.
    	//As a result, if an actual interrupt was enabled and occured, the PC would jump
    	//to 0x08 (or 0x18) and would begin executing "0xFFFF" (unprogrammed space).  This
    	//executes as nop instructions, but the PC would eventually reach the REMAPPED_RESET_VECTOR_ADDRESS
    	//(0x1000 or 0x800, depending upon bootloader), and would execute the "goto _startup".  This
    	//would effective reset the application.
    	
    	//To fix this situation, we should always deliberately place a 
    	//"goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS" at address 0x08, and a
    	//"goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS" at address 0x18.  When the output
    	//hex file of this project is programmed with the bootloader, these sections do not
    	//get bootloaded (as they overlap the bootloader space).  If the output hex file is not
    	//programmed using the bootloader, then the below goto instructions do get programmed,
    	//and the hex file still works like normal.  The below section is only required to fix this
    	//scenario.
    	#pragma code HIGH_INTERRUPT_VECTOR = 0x08
    	void High_ISR (void)
    	{
    	     _asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS _endasm
    	}
    	#pragma code LOW_INTERRUPT_VECTOR = 0x18
    	void Low_ISR (void)
    	{
    	     _asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS _endasm
    	}
    	#endif	//end of "#if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_LEGACY_CUSTOM_CLASS_BOOTLOADER)"
    
    	#pragma code
    	
    	
    	//These are your actual interrupt handling routines.
    	#pragma interrupt YourHighPriorityISRCode
    	void YourHighPriorityISRCode()
    	{
    		//Check which interrupt flag caused the interrupt.
    		//Service the interrupt
    		//Clear the interrupt flag
    		//Etc.
    	
    	}	//This return will be a "retfie fast", since this is in a #pragma interrupt section 
    	#pragma interruptlow YourLowPriorityISRCode
    	void YourLowPriorityISRCode()
    	{
    		//Check which interrupt flag caused the interrupt.
    		//Service the interrupt
    		//Clear the interrupt flag
    		//Etc.
    	
    	}	//This return will be a "retfie", since this is in a #pragma interruptlow section 
    
    #endif //of "#if defined(__18CXX)"
    
    
    
    
    #define IO_SERVO PORTAbits.RA0
    #define IO_SERVO_TRIS TRISAbits.TRISA0
    
    #define PULSE_ON	1
    #define PULSE_OFF	0
    
    /* fonction interruption */
    void MyInterrupt(void);
    
    //#pragma code highVector=0x008 REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
    #pragma code highVector=REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
    void atInterrupthigh(void)
    {
    _asm GOTO MyInterrupt _endasm
    }
    #pragma code // retour à la zone de code
    
    // ************************
    // ****  Interruptions ****
    // ************************
    #pragma interrupt MyInterrupt 
    void MyInterrupt(void)
    {
    	unsigned char sauv1;
    	unsigned char sauv2;
    
    	sauv1 = PRODL;
    	sauv2 = PRODH;	
    
    	/* timer qui se charge de l'impulsion */
    	if (PIR1bits.TMR1IF)
    	{
    		// on ne remet pas ce bit à 0, il sera réarmé par le timer3
    		//PIR1bits.TMR1IF = 0;
    		
    		// on remet le pin à 0, le pulse est terminé
    		IO_SERVO = PULSE_OFF;
    	}
    	
    	/* timer qui se charge du temps inter-pulse */
    	if (PIR2bits.TMR3IF)
    	{
    		// on réarme le timer
    		PIR2bits.TMR3IF = 0;
    		
    		// déclenchement du timer dans 20ms
    		WriteTimer3(15535);
    		
    		/* on commence l'impulsion de 1ms */
    		// on met le pin à 1
    		IO_SERVO = PULSE_ON;
    		
    		// on écrit 55535 dans le timer1 pour qu'il se déclenche dans 1ms
    		WriteTimer1(55535);
    		// et on réarme le timer1
    		PIR1bits.TMR1IF = 0;
    	}	
    
    	PRODL = sauv1;
    	PRODH = sauv2;		
    }
    
    /* fonction principale */
    void main (void)
    {
    	// on crée le timer1
    	OpenTimer1(TIMER_INT_ON & T1_8BIT_RW & T1_SOURCE_INT & T1_PS_1_1 & T1_OSC1EN_OFF & T1_SYNC_EXT_OFF);
    	// puis le timer3 avec un prescaler de 4
    	OpenTimer3(TIMER_INT_ON & T3_8BIT_RW & T3_SOURCE_INT & T3_PS_1_4 & T3_SYNC_EXT_ON & T1_SOURCE_CCP);
    	
    	// on va compter 4 * 50000 cycles = 20ms avant de lever l'interruption  
    	WriteTimer3(15535);
    
    	// On active toutes les interruptions
    	INTCONbits.GIE = 1;
    	INTCONbits.PEIE = 1;
    	
    	// on configure le pin 0 du port A en sortie
    	IO_SERVO_TRIS = 0;
    
    	// et on démarre la boucle infinie
    	while (1) {
    	}
    merci encore pour vos aides

    -----

  2. #2
    invite13ed46c1

    Re : petit problemme avec le bootlaoder de microchip

    desole j'ai la tête dans les fils ,j'ai oublier de mettre BONSOIRS TOUT LE MONDE

    j'ai essayer de modifier mais il étais trop tard mais c'est l'attention qui compte

  3. #3
    invitee0bbe70d

    Re : petit problemme avec le bootlaoder de microchip

    Bonsoir,

    Quel projet as-tu utilisé comme base dans le framework USB 2.2 ?

    Il existe des projets avec des bootloaders ici (sur ton DD après installation de la stack et du configurateur graphique) :

    c:\Microchip Solutions\USB Device - Bootloaders\
    Tu as le choix entre :
    HID - Bootloader (classe HID)
    ou
    Vendor Class - MCHPUSB Bootloader (classe custom)

    Tu ne devrais rien avoir à modifier dans les vecteurs si tu réutilises le bootloader. Tu auras juste à changer les fichiers headers / link dans ton projet et vérifier que les broches utilisées sur le PIC18F4550 pour entrer en mode bootloader existe sur ton PIC18F2550 ou à les redéfinir.

    Bon courage

  4. #4
    invite13ed46c1

    Re : petit problemme avec le bootlaoder de microchip

    je me disais bien que cela etais bien compriquer, si a chaque script je doit tout reverifier a cause du bootloader cela etais trop complexe pour

    j'ai utilise ce lui ci

    C:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader\HID Bootloader - Firmware for PIC18 Non-J Devices

    quelle est la diference avec ce lui ci
    C:\Microchip Solutions\USB Device - Bootloaders\Vendor Class - MCHPUSB Bootloader\Bootloader - Firmware for PIC18F4550 Family Devices

    avec Vendor Class - MCHPUSB Bootloader je doit rien changer ?

    j'aimerais en gros commander un servo moteur avec le terminal et avec un bootloader sur mon 18f2550

    j'ai teste USB Device - CDC - Serial Emulator ça marche

    mais quand je commance a melanger les projets je commance a avoir des bugs

    merci d avance

  5. A voir en vidéo sur Futura
  6. #5
    invite13ed46c1

    Re : petit problemme avec le bootlaoder de microchip

    j'arrive bien a compiler mon code ci dessus sans tout les codes en plus que j'avais ajouter

    Code:
    #include <delays.h> // fonctions de délais
    #include <timers.h>    /* fonctions pour les timers */
    #include <p18f2550.h>// déclarations pour le PIC18F252
            #pragma config PLLDIV   = 5         // (20 MHz crystal on PICDEM FS USB board)
            #pragma config CPUDIV   = OSC1_PLL2   
            #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
            #pragma config FOSC     = HSPLL_HS
            #pragma config FCMEN    = OFF
            #pragma config IESO     = OFF
            #pragma config PWRT     = ON
            #pragma config BOR      = ON
            #pragma config BORV     = 3
            #pragma config VREGEN   = ON      //USB Voltage Regulator
            #pragma config WDT      = OFF
            #pragma config WDTPS    = 32768
            #pragma config MCLRE    = ON
            #pragma config LPT1OSC  = OFF
            #pragma config PBADEN   = OFF
            #pragma config STVREN   = ON
            #pragma config LVP      = OFF
            #pragma config XINST    = OFF       // Extended Instruction Set
            #pragma config CP0      = OFF ,CP1=OFF,CPB=OFF
            #pragma config WRT0     = OFF, WRT1= OFF
            #pragma config WRTB     = OFF
            #pragma config WRTC     = OFF
            #pragma config EBTR0    = OFF
            #pragma config EBTR1    = OFF
            #pragma config EBTRB    = OFF
    
    #define IO_SERVO PORTAbits.RA0
    #define IO_SERVO_TRIS TRISAbits.TRISA0
    
    #define PULSE_ON	1
    #define PULSE_OFF	0
    
    /* fonction interruption */
    void MyInterrupt(void);
    
    #pragma code highVector=0x008
    
    void atInterrupthigh(void)
    {
    _asm GOTO MyInterrupt _endasm
    }
    #pragma code // retour à la zone de code
    
    // ************************
    // ****  Interruptions ****
    // ************************
    #pragma interrupt MyInterrupt 
    void MyInterrupt(void)
    {
    	unsigned char sauv1;
    	unsigned char sauv2;
    
    	sauv1 = PRODL;
    	sauv2 = PRODH;	
    
    	/* timer qui se charge de l'impulsion */
    	if (PIR1bits.TMR1IF)
    	{
    		// on ne remet pas ce bit à 0, il sera réarmé par le timer3
    		//PIR1bits.TMR1IF = 0;
    		
    		// on remet le pin à 0, le pulse est terminé
    		IO_SERVO = PULSE_OFF;
    	}
    	
    	/* timer qui se charge du temps inter-pulse */
    	if (PIR2bits.TMR3IF)
    	{
    		// on réarme le timer
    		PIR2bits.TMR3IF = 0;
    		
    		// déclenchement du timer dans 20ms
    		WriteTimer3(15535);
    		
    		/* on commence l'impulsion de 1ms */
    		// on met le pin à 1
    		IO_SERVO = PULSE_ON;
    		
    		// on écrit 55535 dans le timer1 pour qu'il se déclenche dans 1ms
    		WriteTimer1(55535);
    		// et on réarme le timer1
    		PIR1bits.TMR1IF = 0;
    	}	
    
    	PRODL = sauv1;
    	PRODH = sauv2;		
    }
    
    /* fonction principale */
    void main (void)
    {
    	// on crée le timer1
    	OpenTimer1(TIMER_INT_ON & T1_8BIT_RW & T1_SOURCE_INT & T1_PS_1_1 & T1_OSC1EN_OFF & T1_SYNC_EXT_OFF);
    	// puis le timer3 avec un prescaler de 4
    	OpenTimer3(TIMER_INT_ON & T3_8BIT_RW & T3_SOURCE_INT & T3_PS_1_4 & T3_SYNC_EXT_ON & T1_SOURCE_CCP);
    	
    	// on va compter 4 * 50000 cycles = 20ms avant de lever l'interruption  
    	WriteTimer3(15535);
    
    	// On active toutes les interruptions
    	INTCONbits.GIE = 1;
    	INTCONbits.PEIE = 1;
    	
    	// on configure le pin 0 du port A en sortie
    	IO_SERVO_TRIS = 0;
    
    	// et on démarre la boucle infinie
    	while (1) {
    	}
    }
    mais cela marche pas alors que le meme code programmer sans le bootloader marche

    dans mon projet j'ai juste ajoute le fichier _18f2550.lkr modifier pour le bootloader

    Code:
    // File: Application_18f2550.lkr
    
    // Use this linker for the USB application that will be self programmed by the HID bootloader.
    // The HID bootloader project itself uses the BootModified.18f4450.lkr file instead.
    
    // THIS LINKER SCRIPT HAS BEEN MODIFIED...  This version is intended to be used
    // with the "PROGRAMMABLE_WITH_USB_HID_BOOTLOADER" bootloader.  The HID
    // bootloader occupies memory ranges 0x000-0xFFF.  In order for the code generated
    // by this project to work with the bootloader, the linker must not put any code
    // in the 0x00-0xFFF address range.
    
    // This linker script was originated from the 18f4550.lkr file provided by
    // the MCC18 distribution.
    
    LIBPATH .
    
    FILES c018i.o
    
    FILES clib.lib
    FILES p18f2550.lib
    
    CODEPAGE   NAME=bootloader START=0x0          	   END=0xFFF          PROTECTED
    CODEPAGE   NAME=vectors    START=0x1000       	   END=0x1029	  	  PROTECTED
    CODEPAGE   NAME=page       START=0x102A            END=0x7FFF
    CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
    CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
    CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
    CODEPAGE   NAME=eedata     START=0xF00000          END=0xF000FF       PROTECTED
    
    ACCESSBANK NAME=accessram  START=0x0            END=0x5F
    DATABANK   NAME=gpr0       START=0x60           END=0xFF
    DATABANK   NAME=gpr1       START=0x100          END=0x1FF
    DATABANK   NAME=gpr2       START=0x200          END=0x2FF
    DATABANK   NAME=gpr3       START=0x300          END=0x3FF
    DATABANK   NAME=usb4       START=0x400          END=0x4FF          PROTECTED
    DATABANK   NAME=usb5       START=0x500          END=0x5FF          PROTECTED
    DATABANK   NAME=usb6       START=0x600          END=0x6FF          PROTECTED
    DATABANK   NAME=usb7       START=0x700          END=0x7FF          PROTECTED
    ACCESSBANK NAME=accesssfr  START=0xF60          END=0xFFF          PROTECTED
    
    SECTION    NAME=CONFIG     ROM=config
    
    STACK SIZE=0x100 RAM=gpr3
    
    SECTION	   NAME=USB_VARS   RAM=usb4
    sinon le code du servo de base est pour un quartz 10Mhz + PLL = 40Mhz : moi j'ai un quartz de 20Mhz et un pll de 96MHz pour le usb

    je vais regarder comment modifier ça aussi par la suite

    merci pour toute piste

  7. #6
    invitee0bbe70d

    Re : petit problemme avec le bootlaoder de microchip

    Citation Envoyé par taz6cle Voir le message
    je me disais bien que cela etais bien compriquer, si a chaque script je doit tout reverifier a cause du bootloader cela etais trop complexe.

    j'ai utilise celui ci

    C:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader\HID Bootloader - Firmware for PIC18 Non-J Devices

    quelle est la diference avec ce lui ci
    C:\Microchip Solutions\USB Device - Bootloaders\Vendor Class - MCHPUSB Bootloader\Bootloader - Firmware for PIC18F4550 Family Devices

    avec Vendor Class - MCHPUSB Bootloader je doit rien changer ?

    j'aimerais en gros commander un servo moteur avec le terminal et avec un bootloader sur mon 18f2550

    j'ai teste USB Device - CDC - Serial Emulator ça marche

    mais quand je commance a melanger les projets je commance a avoir des bugs
    Bonjour,

    Quand on est en USB, il faut choisir le type de classe que l'on veut utiliser (HID, CDC, MSD,....ou CUSTOM). Je crois même de tête qu'il existe une classe BOOTLOADER mais elle n'est pas implémentée dans le framework Microchip.

    Donc quand on fait un bootloader il faut choisir une classe.
    Dans le framework v2.2, il existe donc 2 bootloaders :
    1 avec la classe HID
    1 avec la classe CUSTOM (Vendor class)

    Je te recommande de charger le workspace (projet) qui est fait pour un bootloader HID :
    c:\Microchip Solutions\USB Device - CDC - Serial Emulator\CDC - Serial Emulator\USB Device - CDC - Serial Emulator - C18 - PICDEM FSUSB.mcw

    Si tu ouvres le fichier "rm18f4550 - HID Bootload.lkr" tu verras comme le fichier linker a été modifié. N'oublie pas dans ton cas que tu n'as pas un PIC18F4550 mais PIC18F2550, il faut modifier le fichier link original du PIC18F2550 de la même manière que celui du PIC18F4550 a été modifié.

    Tu noteras également qu'il existe dans le répertoire du projet un autre fichier link qui est fait pour le bootloader en mode Customer class appelé "rm18f4550 - MCHPUSB Bootload.lkr".

    Je n'ai pas vu dans ton code comment tu rentres en mode bootloader ?

  8. #7
    invite13ed46c1

    Re : petit problemme avec le bootlaoder de microchip

    bonjour ,

    le bootloader que j'utilise est bien ce lui que tu parle je l'es modifier pour le 18f2550 j'ai mis les pin qui etais a la base pour le Port D j'ai mis sur le B

    dans le lynker j'ai modifier FILES p18f4550.lib par FILES p18f2550.lib

    je le programme avec mon programmeur , et je veut entree en bootloader pour envoyer mon hex j'utilise le bouton que j'ai mis sur B4 apres un reset
    cela marche sans problemme j'envoi mon hex ... pas de problemme

    mais je coince pour ajouter le bootloader dans un nouveaux projet , et quelles sont les fichier a ajouter dans la source de mon projet et sur mon fichier main

    escequ'il faut ajouter tout les fichiers de la prise ecran


    merci
    Images attachées Images attachées  

  9. #8
    invitee0bbe70d

    Petit problème avec le bootloader de microchip

    Bonsoir,

    Comment transmets-tu ton fichier HEX du coté PC ?

    Personnellement j'ai utilisé le bootloader de classe custom car j'utilise la carte PICDEM FS-USB qui à l'avantage d'être fournie avec un utilitaire côté PC appelé PDFSUSB.EXE qui permet de charger et d'écrire le fichier HEX sur la carte.

    La méthode est la suivante :
    Demarrer en mode bootloader (appui sur la touche)
    1/ programmer le bootloader
    2/ lancer PDFSUSB et choisir l'onglet bootloader
    3/ charger le fichier HEX
    4/ programmer le PIC à partir de PDFSUSB

    En résumé, dans ce mode, le bootloader est compilé et programmé séparément de l'application. Il faut simplement que l'application soit compilée pour fonctionner dans une zone mémoire au dessus du bootloader.

    Par la suite c'est évidemment uniquement que ton programme que tu compiles et transfère dans le PIC par le bootloader.

    Tu pourrais également utiliser le logiciel PC PDFSUSB pour programmer ton application à condition d'utiliser le bootloader en classe custom.

    Je ne sais pas comment il faut procéder avec le bootloader HID ??? (Je ne vois pas d'utilitaire côté PC pour programmer en mode bootloader avec la classe HID).

    Lis bien les commentaires au début de chaque fichier xxxxx.lkr qui explique comment procéder.

    Dans tous les cas, il existe 2 fichiers xxxxxxxx.lkr différents : un pour le bootloader et un pour l'application (ils sont différents) à compiler séparément.

  10. #9
    invitee0bbe70d

    Re : petit problemme avec le bootlaoder de microchip

    Re,

    Je viens de trouver le bootloader HID si tu souhaites utiliser celui-là.
    Il se trouve dans le répertoire suivant : c:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader\HIDBootLoader.exe

    Maintenant, suivant ton choix (HID ou CUSTOM class) il faut choisir et compiler avec les fichiers linker pour la classe que tu as choisie coté uC et côté PC.

  11. #10
    invite13ed46c1

    Re : petit problemme avec le bootlaoder de microchip

    merci pour ton aide microchip
    j'ai pas de problemme pour envoyer mon hex j'utilise bien HIDBootLoader.exe

    j'ai pas encore regarde la diference avec la classe custom

    moi je veut juste envoyer un mes fichier sur le bootloader avec mon cable usb et le gere par la suite sur mon pic pour recuperer et envoyer des info sur le port serie


    le problemme c est que si j ajoute pas de code de remaping pour le bootloader mon code de base marche pas

    enfin bon je fais une pause avec le compilateur c18 je vais aller faire d'autres le temps d'avoir les idees claire


    @++

  12. #11
    invitee0bbe70d

    Re : petit problemme avec le bootlaoder de microchip

    Bonjour,

    Donc si tu utilises HIDbootloader, le bootloader du PIC doit être compilé (seul) avec le fichier BootModified.18f4450.lkr, en modifiant simplement la ligne :
    FILES p18F4550.lib --> FILES p18F2550.lib

    Ton application (version bootloader) doit etre compilée (seule) avec "rm18f4550 - HID Bootload.lkr", en modifiant simplement les lignes :
    FILES p18F4550.lib --> FILES p18F2550.lib

    Cela devrait je pense être suffisant.

    Si ca ne fonctionne pas il y a plusieurs raisons possibles :
    1/ tu ne rentres pas en mode bootloader (cela se voit car tu n'arriverais pas à FLASHER ton application )
    2/ il y a une erreur dans ton application. Utilises-tu le projet original "USB device - serial emulator" en classe CDC fourni dans le framework 2.2 ou l'as-tu modifié ?

    Accroche tes 2 projets complets (partie bootloader + application), je pourrais jeter un oeil

  13. #12
    inviteb57f4d89

    Re : petit problemme avec le bootlaoder de microchip

    Bonjour a tt le monde ;

    J'ai un souci de trouver le bootloader
    j'ai compilé mon projet et j'ai réussi a avoir le fichier .HEX
    mon probleme je ne sais po comment je vais programmer mon pic
    j'utilise un PIC18F2550 et je vx programmer mon pic en utlisant l'interface USB et j'arrive po à trouver les etapes suiavantes pour programmer mon pic

    merci

Discussions similaires

  1. problemme tv sony
    Par invitebea7cc95 dans le forum Dépannage
    Réponses: 1
    Dernier message: 04/06/2006, 18h21
  2. problemme da montage avec une alarme de maison
    Par invite5225802c dans le forum Dépannage
    Réponses: 1
    Dernier message: 23/01/2006, 17h25
  3. S.O.S Problemme PIC
    Par invite5738ac78 dans le forum Électronique
    Réponses: 11
    Dernier message: 27/12/2005, 21h15
  4. problemme avec polynome du second degrée
    Par sliders_alpha dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 16/11/2005, 20h43
  5. problemme television samsung
    Par lybylule dans le forum Dépannage
    Réponses: 2
    Dernier message: 27/04/2005, 21h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.