Do you have a question? Post it now! No Registration Necessary
- Laurent CLAUDE
February 10, 2010, 5:36 pm

Bonjour à tous,
Sur un pic18f4550 j'utilise le bootloader usb de chez Diolan
(http://www.diolan.com/pic/bootloader.html ), il utilise les instructions
étendues.
J'ai souhaité tester le programme de microchip de souris (mouse in a
circle), qui lui n'utilise pas ces instructions.
Une fois programmé via le bootloader, le prog de souris semble bien se
lancer (j'ai les leds qui clignotent) mais la reconnaissance usb ne se
fait pas. j'ai essayé de multiples combinaisons de configurations entre
ces deux programmes, mais je n'ai rien trouvé de concluant.
N'étant pas très fort sur cette gamme de pic, je mets maintenant en
doute le fait que ces deux prog puissent cohabiter du fait que l'un
utilise ces instructions et pas l'autre.
1/ Que pensez vous de cette théorie ?
2/ Connaissez vous une doc (de pref en francais) qui explique ce que
sont ces instructions étendues ?
3/ pensez vous qu'il est possible de modifier le prog de souris pour
qu'il fonctionne avec ces instructions étendues ?
Merci
Laurent
Sur un pic18f4550 j'utilise le bootloader usb de chez Diolan
(http://www.diolan.com/pic/bootloader.html ), il utilise les instructions
étendues.
J'ai souhaité tester le programme de microchip de souris (mouse in a
circle), qui lui n'utilise pas ces instructions.
Une fois programmé via le bootloader, le prog de souris semble bien se
lancer (j'ai les leds qui clignotent) mais la reconnaissance usb ne se
fait pas. j'ai essayé de multiples combinaisons de configurations entre
ces deux programmes, mais je n'ai rien trouvé de concluant.
N'étant pas très fort sur cette gamme de pic, je mets maintenant en
doute le fait que ces deux prog puissent cohabiter du fait que l'un
utilise ces instructions et pas l'autre.
1/ Que pensez vous de cette théorie ?
2/ Connaissez vous une doc (de pref en francais) qui explique ce que
sont ces instructions étendues ?
3/ pensez vous qu'il est possible de modifier le prog de souris pour
qu'il fonctionne avec ces instructions étendues ?
Merci
Laurent

Re: PIC18 et les instructions étendues...
On Feb 10, 6:36 pm, Laurent CLAUDE

Je doute qu'il s'agisse d'un problE8%me de cohabitation,
dans la mesure ou le bootloader a fonctionnE9%,
et que le prog de "souris" se lance.
Par contre il faut bien que le prog de "souris" ait
pu initialiser l'USB en mode IHM pour son propre usage :
as-tu bien vE9%rifiE9% que c'est bien le cas ?

Tu devrais la trouver chez Microchip, leur site est complet mais
assez vaste alors il faut bien chercher (et ne pas se dE9%courager)
Mais trouver ces docs en Francais, je crois qu'il faut oublier.

Certainement. Cela va changer la taille et/ou la vitesse
d'exE9%cution du programme mais E0% priori rien ne s'y oppose.
Programmes-tu en ASM ou en C ?

Je doute qu'il s'agisse d'un problE8%me de cohabitation,
dans la mesure ou le bootloader a fonctionnE9%,
et que le prog de "souris" se lance.
Par contre il faut bien que le prog de "souris" ait
pu initialiser l'USB en mode IHM pour son propre usage :
as-tu bien vE9%rifiE9% que c'est bien le cas ?

Tu devrais la trouver chez Microchip, leur site est complet mais
assez vaste alors il faut bien chercher (et ne pas se dE9%courager)
Mais trouver ces docs en Francais, je crois qu'il faut oublier.

Certainement. Cela va changer la taille et/ou la vitesse
d'exE9%cution du programme mais E0% priori rien ne s'y oppose.
Programmes-tu en ASM ou en C ?

Re: PIC18 et les instructions étendues...
Le 10/02/2010 22:42, Jean-Christophe a écrit :

en fait, je crois (rien de sûr hein !) que le prog de souris
disfonctionne (mais ne plante pas) quand il arrive sur ces instructions,
et qui d'après le comportement, ce pourrait être pendant l'énumération USB

Ouais, j'en ai bien peur aussi... Bon, aller courage bibi ;-)

Le bootloader est en assembleur, la souris en C. Peut importe
l'optimisation pour l'instant, il faudrait déjà que j'arrive à une
cohabitation fonctionnelle. Mais, ne maitrisant pas cette famille de
pic, je n'arrive pas à compiler le prog souris avec les instructions
étendues en 'ON', j'ai un 'build failed'.
Une piste ? ...
Merci
laurent

en fait, je crois (rien de sûr hein !) que le prog de souris
disfonctionne (mais ne plante pas) quand il arrive sur ces instructions,
et qui d'après le comportement, ce pourrait être pendant l'énumération USB

Ouais, j'en ai bien peur aussi... Bon, aller courage bibi ;-)

Le bootloader est en assembleur, la souris en C. Peut importe
l'optimisation pour l'instant, il faudrait déjà que j'arrive à une
cohabitation fonctionnelle. Mais, ne maitrisant pas cette famille de
pic, je n'arrive pas à compiler le prog souris avec les instructions
étendues en 'ON', j'ai un 'build failed'.
Une piste ? ...
Merci
laurent

Re: PIC18 et les instructions étendues...
On Feb 11, 9:43 am, Laurent CLAUDE

Alors tu dois pouvoir compiler le prog de souris avec une option
de compilation interdisant l'usage des instructions E9%tendues.

Pourquoi ne pas dE9%ja le valider sans instructions E9%tendues ?
En C cela doit se rE9%sumer E0% une macro.
En ASM cela doit se dE9%valider via un des bits de config.
http://www.microchip.com/stellent/idcplg?IdcService3D%SS_GET_PAGE&nodeId3D%
1406&dDocName3D%en027867
(In Non-Extended mode the compiler will not use extended instructions)

Ca dE9%pend du compilateur que tu uilises.
Pour l'USB, en uC Microchip j'utilise le 18F2455 en C, sous
diffE9%rents compilos, je n'ai jamais eu ce genre de problE8%me.
Sur ce NG rodent des abonnE9%s qui font pas mal de PIC, tu as
de bonnes chances d'en trouver qui ont le meme compilo que toi.
Anyway : RTFM :-)
http://search.microchip.com/searchapp/searchhome.aspx?q3D%PIC18F4550
Bonne chance !

Alors tu dois pouvoir compiler le prog de souris avec une option
de compilation interdisant l'usage des instructions E9%tendues.

Pourquoi ne pas dE9%ja le valider sans instructions E9%tendues ?
En C cela doit se rE9%sumer E0% une macro.
En ASM cela doit se dE9%valider via un des bits de config.
http://www.microchip.com/stellent/idcplg?IdcService3D%SS_GET_PAGE&nodeId3D%
1406&dDocName3D%en027867
(In Non-Extended mode the compiler will not use extended instructions)

Ca dE9%pend du compilateur que tu uilises.
Pour l'USB, en uC Microchip j'utilise le 18F2455 en C, sous
diffE9%rents compilos, je n'ai jamais eu ce genre de problE8%me.
Sur ce NG rodent des abonnE9%s qui font pas mal de PIC, tu as
de bonnes chances d'en trouver qui ont le meme compilo que toi.
Anyway : RTFM :-)
http://search.microchip.com/searchapp/searchhome.aspx?q3D%PIC18F4550
Bonne chance !

Re: PIC18 et les instructions étendues...
Le 11/02/2010 10:07, Jean-Christophe a écrit :

Là je ne te suis plus, car le prog de souris est par défaut sans les
instructions étendues... je te renvois au 1er post.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId14%06&dDocName=en027867

En fait, en C comme en ASM il s'agit des bits de config,
comme tu l'écris : [ Configuration Bit XINST = 1 ]
et ça ce passe aussi au niveau du compilo (j'utilise MPLAB, MPASM et
C18) dans les 'build options', il y'a une case à cocher pour activer les
instructions étendues.
Bon, je vais me plonger dans les manuels... en english (sniff, sniff)
Merci de ta participation
Laurent

Là je ne te suis plus, car le prog de souris est par défaut sans les
instructions étendues... je te renvois au 1er post.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId14%06&dDocName=en027867

En fait, en C comme en ASM il s'agit des bits de config,
comme tu l'écris : [ Configuration Bit XINST = 1 ]
et ça ce passe aussi au niveau du compilo (j'utilise MPLAB, MPASM et
C18) dans les 'build options', il y'a une case à cocher pour activer les
instructions étendues.
Bon, je vais me plonger dans les manuels... en english (sniff, sniff)
Merci de ta participation
Laurent

Re: PIC18 et les instructions étendues...
On Feb 11, 7:12 pm, Laurent CLAUDE
|> Alors tu dois pouvoir compiler le prog de souris avec une option
|> de compilation interdisant l'usage des instructions E9%tendues.

Exact, autant pour moi !

D'aprE8%s ce que j'ai lu, la mE9%moire programme n'est pas
affectE9%e par l'utilisation ou pas des instructions E9%tendues.
Par contre cela a des consE9%quences sur la mE9%moire donnE9%es.
Lire ici (fichier ZIP -> PDF)
http://cjoint.com/?clnAXLyH76
|> Alors tu dois pouvoir compiler le prog de souris avec une option
|> de compilation interdisant l'usage des instructions E9%tendues.

Exact, autant pour moi !

D'aprE8%s ce que j'ai lu, la mE9%moire programme n'est pas
affectE9%e par l'utilisation ou pas des instructions E9%tendues.
Par contre cela a des consE9%quences sur la mE9%moire donnE9%es.
Lire ici (fichier ZIP -> PDF)
http://cjoint.com/?clnAXLyH76

Re: PIC18 et les instructions étendues...
On Feb 11, 7:12A0%pm, Laurent CLAUDE
|> Le bootloader est en assembleur, la souris en C.
Je pense E0% un truc :
Puisque le bootloader utilise les intructions E9%tendues,
lors l'init aprE8%s reset tu dois avoir XINST 3D% 1.
Maintenant, avant de rentrer dans le prog utilisateur
qui n'utilise pas ces instructions,
alors tu peux les dE9%valider avec XINST 3D% 0.
Pas sur que ce soit autorisE9% aprE9%s l'init,
et le compilo risque d'y mettre du sien.
Mais cela ne coute rien d'essayer.
|> Le bootloader est en assembleur, la souris en C.
Je pense E0% un truc :
Puisque le bootloader utilise les intructions E9%tendues,
lors l'init aprE8%s reset tu dois avoir XINST 3D% 1.
Maintenant, avant de rentrer dans le prog utilisateur
qui n'utilise pas ces instructions,
alors tu peux les dE9%valider avec XINST 3D% 0.
Pas sur que ce soit autorisE9% aprE9%s l'init,
et le compilo risque d'y mettre du sien.
Mais cela ne coute rien d'essayer.

Re: PIC18 et les instructions étendues...
Le 11/02/2010 22:06, Jean-Christophe a écrit :

Bein, cela me parait être une manip compliquée,
je suis pas sûr non plus que ce soit possible d'autant plus qu'il
s'agirait de modifier 'en live' (pendant que le programme 'application'
tourne) le config-word et qu'il est protégé en écriture (par le
bootloader)...
Le prog application hérite de la config du bootloader.
Le bootloader étant en ASM et nécessitant ces instructions, je dois
adapter le programme application pour qu'il soit compatible avec cette
option.
J'ai cru comprendre que cela serait possible au moment de la compilation
asses facilement (actuellement, c'est encore relatif comme terme ;-) )
parce que ce programme est en C.
Mais je n'ai pas encore trouvé la méthode : une simple modification de
la directive dans le code et de l'option au niveau de MPLAB ne semblent
pas suffire.
j'espère pouvoir dégager du temps pour cette recherche ce week-end, a
suivre...

Bein, cela me parait être une manip compliquée,
je suis pas sûr non plus que ce soit possible d'autant plus qu'il
s'agirait de modifier 'en live' (pendant que le programme 'application'
tourne) le config-word et qu'il est protégé en écriture (par le
bootloader)...
Le prog application hérite de la config du bootloader.
Le bootloader étant en ASM et nécessitant ces instructions, je dois
adapter le programme application pour qu'il soit compatible avec cette
option.
J'ai cru comprendre que cela serait possible au moment de la compilation
asses facilement (actuellement, c'est encore relatif comme terme ;-) )
parce que ce programme est en C.
Mais je n'ai pas encore trouvé la méthode : une simple modification de
la directive dans le code et de l'option au niveau de MPLAB ne semblent
pas suffire.
j'espère pouvoir dégager du temps pour cette recherche ce week-end, a
suivre...

Re: PIC18 et les instructions étendues...
On Feb 12, 7:34 pm, Laurent CLAUDE

|> Et il n'est pas possible de dE9%valider cette protection ?

Non, d'ailleurs je n'aurai meme pas du le suggE9%rer,
car ce bit de conf impacte sur l'organisation mE9%moire.
Il semble qu'il faille compiler ton prog utilisateur
en validant l'option " instructions E9%tendues ",
ce qui ne devrait pas poser de problE8%me majeur (?)

|> Et il n'est pas possible de dE9%valider cette protection ?

Non, d'ailleurs je n'aurai meme pas du le suggE9%rer,
car ce bit de conf impacte sur l'organisation mE9%moire.
Il semble qu'il faille compiler ton prog utilisateur
en validant l'option " instructions E9%tendues ",
ce qui ne devrait pas poser de problE8%me majeur (?)

Re: PIC18 et les instructions étendues...
Le 12/02/2010 19:43, Jean-Christophe a écrit :

en fait je suis en train d'explorer cette piste quand même !
Je me dis qu'au début du prog utilisateur je pourrais :
- défaire la protection à l'écriture sur le config-word
- passer en XINST = OFF
- remettre la protection du config-word
- poursuivre normalement le déroulement du prog
...et une procédure semblable au début du bootloader mais pour passer en
XINST = ON
Quant à l'impact sur l'accès à la mémoire, il me semble (à vérifier) que
cela ne devrait pas poser de problème si je fais ces manip au tout début
de ces deux programmes. Non ?

en fait je suis en train d'explorer cette piste quand même !
Je me dis qu'au début du prog utilisateur je pourrais :
- défaire la protection à l'écriture sur le config-word
- passer en XINST = OFF
- remettre la protection du config-word
- poursuivre normalement le déroulement du prog
...et une procédure semblable au début du bootloader mais pour passer en
XINST = ON
Quant à l'impact sur l'accès à la mémoire, il me semble (à vérifier) que
cela ne devrait pas poser de problème si je fais ces manip au tout début
de ces deux programmes. Non ?

Re: PIC18 et les instructions étendues...
Le 12/02/2010 19:43, Jean-Christophe a écrit :

et bien si !
voici le fruit de mes essais :
Cas 1 : j'active dans le code : XINST = ON ; mais je laisse MPLAB
(Project>build options...>project>MPASM/C17/C18 Suite) sans cocher l'option
Résultat : une fenêtre d'avertissement contenant : "The Extended CPU
Mode configuration bit is enabled, but the program that was loaded was
not built using extended CPU instructions. Therefore, your code may not
work properly."
>>> BUILD SUCCEEDED
Cas 2 : XINST = ON ; MPLAB : option cochée
Résultat : MPLINK 4.34, Linker
Error - mixing extended and non-extended mode modules not allowed.
Errors : 1
Link step failed.
>>> BUILD FAILED
Cas 3 : XINST = OFF ; MPLAB : option cochée
Résultat : idem cas 2
Dans le cas 1, je programme mon pic mais le résultat est le même que
celui décrit dans mon 1er post, c'est à dire qu'il y'a bug (mais pas
plantage) au fonctionnement : "Périphérique USB non reconnu"

et bien si !
voici le fruit de mes essais :
Cas 1 : j'active dans le code : XINST = ON ; mais je laisse MPLAB
(Project>build options...>project>MPASM/C17/C18 Suite) sans cocher l'option
Résultat : une fenêtre d'avertissement contenant : "The Extended CPU
Mode configuration bit is enabled, but the program that was loaded was
not built using extended CPU instructions. Therefore, your code may not
work properly."
>>> BUILD SUCCEEDED
Cas 2 : XINST = ON ; MPLAB : option cochée
Résultat : MPLINK 4.34, Linker
Error - mixing extended and non-extended mode modules not allowed.
Errors : 1
Link step failed.
>>> BUILD FAILED
Cas 3 : XINST = OFF ; MPLAB : option cochée
Résultat : idem cas 2
Dans le cas 1, je programme mon pic mais le résultat est le même que
celui décrit dans mon 1er post, c'est à dire qu'il y'a bug (mais pas
plantage) au fonctionnement : "Périphérique USB non reconnu"

Re: PIC18 et les instructions étendues...
On Feb 10, 6:36 pm, Laurent CLAUDE

Dans la data sheet du uC j'ai trouvE9% ceci :
http://cjoint.com/?clnAXLyH76
Pour valider les instructions E9%tendues :
[ Configuration Bit XINST 3D% 1 ]
Extended Instruction Set :
The PIC18F2455/2550/4455/4550 family introduces an optional
extension to the PIC18 instruction set which adds 8 new
instructions and an Indexed Literal Offset Addressing mode.
This extension has been specifically designed to
optimize re-entrant application code originally
developed in high-level languages such as C.

Dans la data sheet du uC j'ai trouvE9% ceci :
http://cjoint.com/?clnAXLyH76
Pour valider les instructions E9%tendues :
[ Configuration Bit XINST 3D% 1 ]
Extended Instruction Set :
The PIC18F2455/2550/4455/4550 family introduces an optional
extension to the PIC18 instruction set which adds 8 new
instructions and an Indexed Literal Offset Addressing mode.
This extension has been specifically designed to
optimize re-entrant application code originally
developed in high-level languages such as C.
Site Timeline
- » ampli entrée phono
- — Next thread in » Electronics (French)
-
- » Re: Alim écran TFT : cherche 2 composants
- — Previous thread in » Electronics (French)
-
- » Richter ou Merkel ?
- — Newest thread in » Electronics (French)
-
- » il galvanometro
- — The site's Newest Thread. Posted in » Electronics Hobby (Italian)
-
- » Richter ou Merkel ?
- — The site's Last Updated Thread. Posted in » Electronics (French)
-