Custom OIL file per Infineon tricore

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

Moderator: paolo.gai

Locked
mPez

Custom OIL file per Infineon tricore

Post by mPez »

Buongiorno,
sono un nuovo utente e mi sono addentrato da poco nel mondo Erika e RT-Druid per un progetto universitario.
In questo progetto vogliamo poter inserire delle nuove proprietà in un oggetto OIL, ad esempio TASK, e modificare il writer java per ottenere un eseguibile ad hoc per i nostri scopi.
Siamo in possesso di una scheda Infineon aurix.
Per fare questo sono partito da un esempio esistente e ho iniziato a lavorarci, senza successo.

La mia domanda quindi è: quali file devo modificare per aggiungere una proprietà OIL, in modo da poterla usare in un progetto e qual è il writer da modificare per ottenere un eseguibile funzionante per un processore Infineon?

Grazie
Marco
paolo.gai
Administrator
Posts: 877
Joined: Thu Dec 07, 2006 12:11 pm

Re: Custom OIL file per Infineon tricore

Post by paolo.gai »

Un buon punto di partenza potrebbe essere la seguente pagina:

http://erika.tuxfamily.org/wiki/index.p ... formations

Ciao,

PJ
mPez

Re: Custom OIL file per Infineon tricore

Post by mPez »

Grazie Paolo per la risposta,
in questi giorni sono riuscito a capire meglio come sono strutturati i writer e come funzionano, sono riuscito a modificarne alcune parti e a generare il codice che ci serve; chiarisco che sto modificando i writer java perchè abbiamo reputato essere la via più veloce per i nostri scopi.
ora però mi sorge un nuovo problema: se ho capito bene per aggiungere un nuovo attibuto OIL ad un oggetto, TASK ad esempio, lo devo inserire in un file di definizioni OIL, ma in RT-Druid ce ne sono molti!
ho provato ad inserirlo un po ovunque ma ancora il tag non viene riconosciuto.
dove sto sbagliando?
qual è il modo corretto per aggiungere un attributo?

Grazie
Marco
mPez

Re: Custom OIL file per Infineon tricore

Post by mPez »

Buonasera,
aggiungo ancora qualcosa alla mia domanda:
- nell'interfaccia ISimpleGenResKeywords sono presenti una serie di stringhe che vengono usate per recuperare i valori delle proprietà presenti nei file OIL; quindi dovrò aggiungere anche qui i nuovi tag che desidero inserire nella mia implementazione di OIL. A questo punto mi sfugge come vengano collegate queste stringhe ai tag OIL.
Infatti provando a effettuare un build di RT-Druid con le varie modifiche effettuate con lo script start_ant_builder.sh la compilazione fallisce.

Spero di essere stato più chiaro nel descrivere il mio problema.

Marco
nicola.serreli

Re: Custom OIL file per Infineon tricore

Post by nicola.serreli »

Ciao Marco,

Riesco a darti qualche consiglio, ma non tutte le risposte di cui hai bisogno, per le quali servirebbero giornate, se non settimane.
Prima cosa. Non so che editor stai usando, ma se vuoi modificare il codice java e non usi eclipse... ti posso solo dire rinuncia.

Come indicato da Paolo, quel link e' il punto di partenza. Parla di xslt (che risulta generalmente molto piu' semplice per iniziare ad apportare piccole modifiche alla generazione)
ma ti parla anche dei file oil e di quanto siano importanti.
ISimpleGenResKeywords non sostituisce l'oil. Cerca dove viene usata e scoprirai a cosa serve e come leggere i dati da oil.
Se hai problemi (es. perche' non ti vede la parte oil aggiunta)
a) usa il debug
b) guarda il log
ti aiuteranno a capire che sta sucedendo e perche' le tue modifiche non portano frutto.

Osserva i file oil che ci sono. E' vero che son tanti, ma sono generalmente complementari e ciascuno gestisce una parte del progetto:
differenti tipologie di kernel ed architetture.
Data la struttura a plugin di RT-Druid (e di eclipse in generale), puoi scegliere cosa installare e cosa omettere (purche' non ci siano dipendenze).
Questo ti dovrebbe guidare per decidere dove mettere i tuoi campi aggiuntivi.

Nota: puoi sempre crearti il tuo writer ed il tuo oil, indipendentemente che sia java o xslt o qualcosa di nuovo che ti puoi inventare,
e metterlo su un nuovo plugin (di nuovo, vedi il link dato da Paolo).

Compilare .... prima di tutto: auguri. Seconda cosa: ti faccio i complimenti per il coraggio.
Generalmente il modo piu' semplice per compilare un progetto eclipse e' usare i progetti update-site.

Ciao,
Nicola
mPez

Re: Custom OIL file per Infineon tricore

Post by mPez »

Ciao Nicola,
intanto grazie della risposta, anche se non molto incoraggiante, ma mi hai fatto capire la complessità del progetto.

Per quanto riguarda i nuovi tag OIL ho capito dove inserirli e vengono letti correttamente, infatti sono presenti nell'implementazione OIL attiva su eclipse.
Ho capito che ISimpleGenResKeywords serve quasi esclusivamente per leggere i valori degli attributi OIL che sono stati correttamente parsati e poterli utilizzare per generale il codice C.
Ho visto che in AbstractRtosWriter vengono letti dall'albero di parsing gli attributi e vengono settati sulle corrispondenti stringhe in ISimpleGenResKeywords.
(se ho detto qualcosa di sbagliato ti prego di correggermi)

Una volta modificati i 2 file sopra con i nuovi tag che mi servono dovrei essere in grado di utilizzare una nuova proprietà per generare il codice di cui ho bisogno.
Ho modificato la classe SectionWriterKernelOsek che mi dovrebbe permettere di leggere le nuove proprietà e scrivere nel file eecfg.c.

Purtroppo nel compilare RT-Druid con rtdruid/products/tool_build_scripts/start_ant_builder.sh ottengo un errore in compilazione:

Code: Select all

[javac] /home/marco/RTworkspace/rtdruid/sources/oil/kernel/plugin_rtd_oil_ee_osek_core/src/internal/com/eu/evidence/rtdruid/internal/modules/oil/codewriter/erikaenterprise/SectionWriterKernelOsek.java:672: error: cannot find symbol
    [javac] 					if (!currTask.containsProperty(ISimpleGenResKeywords.TASK_CONF)
    [javac] 					                                                    ^
    [javac]   symbol:   variable TASK_CONF
    [javac]   location: interface ISimpleGenResKeywords
non riesco a capire quale sia il problema e cosa posso fare per sistemare le cose (sembra che non venga riconosciuta la variabile TASK_CONF che però è stata definita correttamente in ISimpleGenResKeywords ed eclipse la riconosce)

Grazie per il tempo che mi state dedicando.

Marco
nicola.serreli

Re: Custom OIL file per Infineon tricore

Post by nicola.serreli »

Ciao Marco,

due note in piu' su ISimpleGenResKeywords:
* quelle costanti sono utili se devi scambiare informazioni condivise tra piu' plugin. In quel modo sei sicuro che tutti usano lo stesso identificativo. Se l'informazione e' locale al tuo plugin, puoi evitare di modificare quel file.
* i valori salvati possono essere letti dall'oil, ma possono essere anche valori calcolati

Se dall'interfaccia grafica di eclipse riesci a compilare, il problema non e' sul codice.
L'output dello script di compilazione, prima della parte che contiene l'errore mostrato sul tuo post, dovrebbe contenere l'indicazione dei file jar e class utilizzati per fare la compilazione.
Secondo me, li' trovi l'errore vero. Di solito, se ti sta dicendo che non trova un elemento del codice che hai aggiunto e che sta in un'altro plugin e' perche' il plugin di libreria in cui sta cercando il nuovo elemento non e' il plugin aggiornato.
L'ipotesi secondo me' piu' probabile e' che l'installazione di eclipse che stai usando per fare la compilazione contiene anche i plugin di RT-Druid. Quindi javac ti legge (ed usa) i jar presenti dentro la cartella plugin di eclipse e non quelli che hai appena compilato.
Altre ipotesi piu' fantasiose implicano che non hai compilato il plugin che contiene ISimpleGenResKeywords o che hai modificato file diversi da quelli che poi vai a compilare. Se stai usando il build.xml in tool_build_script, tenderei a scartare queste ipotesi.

Come scritto nel post precedente, da interfaccia grafica puoi compilare i plugin usando il file "site.xml" (nota: questa strada e' priva d'errori, nel senso che se non funziona ... semplicemente non sai perche' e non trovi alcun log che te lo dice )


Nicola
mPez

Re: Custom OIL file per Infineon tricore

Post by mPez »

Grazie Nicola,
in effetti venivano usati i vecchi plugin di RT-Druid per la compilazione; una volta aggiornati ha funzionato tutto a dovere!

Buona serata!
Marco
Locked