PIC18 et les instructions étendues...

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From French to

Threaded View
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

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

Quoted text here. Click to load it

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 ?

Quoted text here. Click to load it

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.

Quoted text here. Click to load it

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 :
Quoted text here. Click to load it
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


Quoted text here. Click to load it
Ouais, j'en ai bien peur aussi... Bon, aller courage bibi ;-)

Quoted text here. Click to load it

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

Quoted text here. Click to load it

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

Quoted text here. Click to load it

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)

Quoted text here. Click to load it

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 :
Quoted text here. Click to load it
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.

Quoted text here. Click to load it
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId14%06&dDocName=en027867
Quoted text here. Click to load it
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.

Quoted text here. Click to load it

Exact, autant pour moi !

Quoted text here. Click to load it

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.

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

Quoted text here. Click to load it


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, 6:45 pm, Laurent CLAUDE

Quoted text here. Click to load it

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

Quoted text here. Click to load it

Ok, bon courage, et tiens-nous au courant STP,
c'est un problE8%me qui pourrait arriver E0% d'autres.

Re: PIC18 et les instructions étendues...
Le 12/02/2010 19:03, Jean-Christophe a écrit :
Quoted text here. Click to load it
Si si, bien sûr c'est possible. Mais je n'y tiens pas


Quoted text here. Click to load it

bien entendu !


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

Quoted text here. Click to load it
|> Et il n'est pas possible de dE9%valider cette protection ?
Quoted text here. Click to load it

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 :
Quoted text here. Click to load it

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 :
Quoted text here. Click to load it

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

Quoted text here. Click to load it

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