Chiarimento guida su wiki - aggiungere scicos block ad Erika

Forum relativo alle schede FLEX, ERIKA Enterprise, RT-Druid, ScicosLab, ...

Moderator: paolo.gai

Locked
Lombo
Newbie
Posts: 28
Joined: Tue Nov 16, 2010 3:34 pm
Contact:

Chiarimento guida su wiki - aggiungere scicos block ad Erika

Post by Lombo » Tue Dec 14, 2010 12:33 pm

Buongiorno,
volevo chiedere un chiarimento, che da non programmatore mi crea dei problemi: nel wiki di Erika, alla pagina della guida per aggiungere un blocco scicos ad Erika,
http://erika.tuxfamily.org/wiki/index.p ... Enterprise
alla fine del passo 7 viene detto di modificare il file "cfg.mk".
Come devo modificare detto file, considerando che ho già eseguito tutti i passi precedenti inserendo il mio blocco (Con lo stesso nome della funzione che richiama, "Toggle_Flex") nel menù delle palette "demo board" aggiungendo al file "symbol" sotto C:\Program Files\scicoslab-4.4b8\contrib\dspic la linea "Toggle_Flex,__USE_DEMOBOARD__"?
Il blocco viene correttamente caricato e visualizzato, ma al momento della generazione del codice per Flex (Da scicosLab) alla fine del passo 3 vengono visualizzati i seguenti errori:

CPP Toggle_Flex.c
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:1:34: error: scicos/scicos_block4.h: No such file or directory

c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:3: error: syntax error before '*' token
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c: In function 'Toggle_Flex':
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:10: warning: implicit declaration of function 'GetRealInPortPtrs'
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:10: error: 'block' undeclared (first use in this function)
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:10: error: (Each undeclared identifier is reported only once
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:10: error: for each function it appears in.)
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:10: warning: assignment makes pointer from integer without a cast
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:11: warning: implicit declaration of function 'GetRealOutPortPtrs'
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:11: warning: assignment makes pointer from integer without a cast
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:12: warning: implicit declaration of function 'GetState'
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:12: warning: assignment makes pointer from integer without a cast
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:15: error: 'flag' undeclared (first use in this function)
c:\Evidence\eclipse\plugins\CO846A~1.201\ee_base\contrib\scicos\src\pic30\Toggle
_Flex.c:60:2: warning: no newline at end of file
make: *** [obj/Toggle_Flex.o] Error 1

Da quanto ho capito si tratta di errori di compilazione, ragion per cui credo si tratti appunto della mancata modifica del file "cfg.mk" sopracitato in quanto nella guida si fa riferimento alla sua necessità per indicare al compilarore che il nuovo file deve essere compilato (Può darsi che ci siano degli errori anche nel file C contenente la funzione del blocco, in particolare nella direttiva "#include <scicos/scicos_block4.h>" da riscrivere forse in maniera diversa, anche se in simulazioni con blocchi di scicos questo funziona correttamente) ma comunque la domanda sulla modifica del file in oggetto rimane pendente: cosa devo inserire o modificare in detto file per soddisfare quanto indicato nella guida?
Grazie in anticipo dell'aiuto, a presto!

Lombo
Newbie
Posts: 28
Joined: Tue Nov 16, 2010 3:34 pm
Contact:

Re: Chiarimento guida su wiki - aggiungere scicos block ad Erika

Post by Lombo » Wed Dec 15, 2010 11:32 am

Effettivamente cambiando la direttiva del preprocessore da
#include <scicos/scicos_block4.h>
come richiesto dal c-block4 di scicos (Ho provato a cambiarla come sotto ma cercando di salvare le modifiche appare l'errore "Compilation problem", segno che scicos a quanto pare la vuole scritta così)
in
#include <scicos_block4.h>
la generazione di codice avviene senza particolari problemi. Nella guida sul wiki di erika però la modifica al file "cfg.mk" viene menzionata come necessaria...

paolo.gai
Administrator
Posts: 875
Joined: Thu Dec 07, 2006 12:11 pm

Re: Chiarimento guida su wiki - aggiungere scicos block ad Erika

Post by paolo.gai » Wed Dec 15, 2010 6:38 pm

La modifica viene segnalata come necessaria perchè il wiki non è aggiornato :-) In alcuni casi il sistema non necessita il cambiamento del cfg.mk.

Ho modificato il wiki... se ci sono altre osservazioni da mettere, potresti magari aggiornare direttamente il wiki? Grazie!

PJ

PS: che tipo di blocchi stai sviluppando? possono essere rialsciabili al pubblico o di uso generale?

Lombo
Newbie
Posts: 28
Joined: Tue Nov 16, 2010 3:34 pm
Contact:

Re: Chiarimento guida su wiki - aggiungere scicos block ad Erika

Post by Lombo » Wed Dec 22, 2010 6:15 pm

Uno in particolare si, anche se forse esiste già qualcosa del genere (L'ho fatto come primo tentativo di generazione di un blocco personalizzato, non mi interessava particolarmente sapere se esistesse già o no :) ) in pratica il blocco in esame cambia il suo stato di uscita (1 - 0) quando in ingresso arriva un livello alto, indipendentemente da quanto questo permanga. In pratica funziona come un Flip Flop T. L'ho pensato e collaudato come intermezzo tra i pulsanti della motion board, le cui uscite rimangono alte soltanto finchè rimane premuto il tasto, e un led o uscita digitale del processore, per utilizzare i pulsanti come interruttori on-off.
Il codice, senz'altro migliorabile ma funzionante, è questo:
#include <scicos_block4.h>

void Toggle_Flex(scicos_block *block,int flag)
{

double *in;
double *state;
double *out;

in = GetRealInPortPtrs(block, 1);
out = GetRealOutPortPtrs(block,1);
state = GetState(block);

/* init */
if (flag == 4) {
*out = 0;
*state = 0;
}

/* output computation */
else if(flag == 1) {
if(*in != 0) {
if(*state == 0) {
if(*out == 1) {
*out = 0;
}
else {
*out = 1;
}
}
}
}

/* state update */
else if(flag == 2) {
if(*in != 0) {
if(*state == 0) {
*state = 1;
}
else {
*state = 0;
}
}
else {
*state = 0;
}
}

/* ending */
else if (flag == 5) {
;
}
}
Se, a proposito, avete delle migliorie da suggerire... ^^

paolo.gai
Administrator
Posts: 875
Joined: Thu Dec 07, 2006 12:11 pm

Re: Chiarimento guida su wiki - aggiungere scicos block ad Erika

Post by paolo.gai » Mon Jan 03, 2011 3:51 pm

Ciao!

Carino... potremmo committarlo sulla distribuzione standard.

Se hai voglia di portare avanti la cosa, inviaci la patch completa con:
- la modifica ad una delle palettes
- il codice del blocco Scicos
- il codice C da mettere dentro ERIKA

E te la committiamo. Il blocco non deve avere un nome che ricorda le FLEX, in quanto è architecture independent...

Ciao,

PJ

Locked