Newsgroup: it.comp.os.dibattiti
Titolo: Posso chiedere un consiglio? (a Sensei ed agli altri...)

Volevo chiedervi un consiglio.
Come sapete, sto lavorando su Nanodesktop.
Attualmente, sto scrivendo una nuova libreria libc che
si chiamerà NanoC e supporterà tutte le funzioni a cui si
è abituati sulla libc standard (fopen, fread, fwrite, getchar,
printf ecc. ecc. ecc.).
La libreria è attualmente al 60%: il codice iniziale su cui è
basata è quello dell'SDK della PSP. In questo codice ho
scoperto un numero impressionante di bug, e l'ho riscritto
usando molte parti della libc di BSD, unite al codice di
emulazione di Nanodesktop.
Sta venendo un bel lavoro: in questo modo gli sviluppatori
possono scrivere codice per la PSP in modo molto più
simile a quanto si fa sul PC.
Inoltre, mi sto sforzando di fare in modo che gli header
standard *.h possano continuare ad essere usati.
Comunque, malgrado gli sforzi, c'è qualche piccola differenza
qua e là (per esempio, si usa _errno in luogo di errno).
Ora, vi volevo chiedere questo: posso evitare di implementare
le funzioni scanf e derivate secondo voi?
Se no, mi potreste dire dove posso trovare una implementazione
di scanf e derivate che sia *BSD e che sia autocontenuta (cioè
che non contenga tonnellate di chiamate a macro presenti in
altri file di BSD in modo che compili facilmente nella mia
libreria?).
Saluti e grazie
Pegasus

 basata è quello dell'SDK della PSP. 
Scusa, mi sto perdendo, ma non avevi detto che l'SDK era straproprietario e
che la Sony lo dava (a caro prezzo) solo agli sviluppatori ufficiali?
Anche l'emulatore è a sorgente chiuso, se non ricordo male.

 printf ecc. ecc. ecc.).
[Cut]
Scusa una domanda... Ma che senso ha creare un progetto del genere per una
console del genere? Mi spiego meglio. Tu stai creando un progetto che potrà
funzionare solo su console che hanno un vecchio firmware e che solo
attraverso un hack può essere eseguito... Comprendi con me che non ha
senso, dato che come situazione è un po' critica (se la tua muore per un
difetto e la riporti in garanzia, non pensi che ti mettano il nuovo
firmware? E se ne devi comprare una nuova?). Non ha più senso mettersi a
fare una cosa del genere per una console un po' più aperta come il Gpx2 o
il gp32 (che hanno pure i processori arm che adoro :D). In questo modo sei
sicuro che anche fra 3 anni il tuo lavoro avrà un senso...

 ha scritto nel messaggio 
news:90xgw3kpkt4u.17wvdx4jc43g5$.dlg@40tude.net...

No, hai capito male.
Ho detto che ci sono DUE sdk: quello di Sony, ufficiale, che è
straproprietarissimo e ceduto a migliaia di euro ai soli sviluppatori,
e quello open-source (che si chiama PSPSDK) e che viene
compilato su PC per mezzo del cosiddetto psptoolchain script.
La libreria NanoC che sto scrivendo, è basata per buona parte sul
codice della libreria libc del SDK open-source.
Tu dirai: ma non è allora sufficiente usare la libc dell'SDK open-source?
Perchè devi scriverti una nuova libc per sostituire una libc che già
hai?
Ecco alcune risposte:
a) la libreria libc del PSPSDK è strabuggata. Molte routine sono scritte
veramente molto male. Nella libreria NanoC ho sostituito le vecchie
routine con delle nuove routine BSD, eliminando caratteristiche che
non hanno senso in ambiente PSP (es. il supporto multi-byte, o
l'istruzione flush), ed ottenendo una libc che finalmente funziona.
b) la libreria libc del PSPSDK non ha alcun codice per supportare gli
streams stdout/stderr. Questo significa che una printf non serve proprio
a nulla, non ha effetto (ed è per questo che il codice era stato commentato:
gli sviluppatori avevano capito che printf non avrebbe funzionato). La
libreria NanoC usa una API di Nanodesktop che fa apparire una
apposita finestra sullo schermo, in cui vengono visualizzati i caratteri
inviati a stdout/stderr. In questo modo, funzioni come putchar, puts,
printf possono tornare a funzionare.
Quando invece si chiede un carattere allo stream stdin, appare sullo
schermo della PSP la VirtualKeyboard consentendo l'immissione
dei caratteri. Anche qui NanoC usa un'apposita API di Nanodesktop.
c) la libreria libc del PSPSDK non supporta l'emulatore PSPE, ma gira
solo sulla vera PSP (quando ci gira, cioè bug a parte). La libreria NanoC
invece, supporta sia la vera PSP che PSPE.
Ciao
Pegasus

 sicuro che anche fra 3 anni il tuo lavoro avrà un senso...
Questo discorso che fai tu sarebbe corretto, se non ci fossero dei ma....
Il primo, è che Nanodesktop è stato scritto in modo modulare: la
sezione più a basso livello si chiama HAL (Hardware Abstract Layer)
ed è progettato per adattarsi automaticamente ai cambiamenti di
architettura.
In altre parole, Nanodesktop ha la massima portabilità, tantovero che
mi è stata già commissionata la versione per Linux, e se qualcuno vuole
lavorarci sopra si può creare anche una versione per n-Gage, o per
qualsiasi altra console. Basta scrivere un nuovo HAL e le routine al
livello superiore si adatteranno automaticamente.
Ci vogliono un paio di giorni a scrivere un nuovo HAL, quindi....
Per quanto riguarda GPX2, è una console che è ancora poco diffusa,
e non me la sento di rischiarci sopra, anche perchè Nanodesktop
non è un progetto fine a sè stesso, ma è un progetto che fa parte
dell'EmbVision project page, e per quello che dobbiamo fare noi
l'hardware PSP va bene (la GPX2 non lo so, magari va anche bene
quella, ma non lo so sin quando non la vedo...).
Non è comunque un grosso problema, perchè chiunque può portare
Nanodesktop su GPX2 in pochi giorni.
Del resto, stavo leggendo, se GPX2 usa un kernel Linux con interfaccia
framebuffer, sarà sufficiente usare la versione di Nanodesktop per
Linux opportunamente ricompilata.
Ciao
Pegasus

 codice della libreria libc del SDK open-source.
Ok, capito, grazie.
 

 printf ecc. ecc. ecc.).
Se ti può interessare esistono già dietlibc e uclibc.


The optimist thinks this is the best of all possible worlds.
The pessimist fears it is true.      [J. Robert Oppenheimer]

 Volevo chiedervi un consiglio.
chiedi ad Anna.... ;)

Scusami Pegasus,
ma prendere una console e cambiarle la "destinazione d'uso" č legale?
Cioč, ad esempio se si prende una xbox e si installa linux non si infrange
nesun copiright, ma si tratta di reverse engineering illegale ...
Se intendi usare la PSP in ambiente embedded, dovresti avere perlomeno
l'autorizzazione della sony per farlo !!!
O mi sbaglio?
Ciao e complimenti!


Grazie, fa piacere sentirlo una volta tanto....
Volevo chiederti una cosa: quando rilascerò la NanoLibc e
Nanodesktop (insieme alle ndOpenCV, ndDevIL ecc.),
ti piacerebbe darmi una mano?
Vorrei creare una piccola comunità in modo da procedere
più in fretta, perchè per ora mi devo scrivere migliaia di
routine da solo....
Ciao
Pegasus

 Questo discorso che fai tu sarebbe corretto, se non ci fossero dei ma....
cazzarola, perché in ogni risposta devi sempre fare il cut and paste
della reclame?
Ti leggo volentieri, ma sei molto ridondante.... :-)

 emulazione di Nanodesktop.
hai implementato il 60% della libreria ansi c? beh, complimenti.
Tra parentesi... Sarebbe passato un mese, dove sta il codice? :-)

routine da solo....
Mi piacerebbe darti una mano, ma non sono in grado di scrivere una libreria
per un sistema operativo,
faccio gia abbastanza fatica ad usare quelle che ci sono ...
Ma volevo chiederti, nell'uso embedded, non ci sono delle condizioni piu
ristrettive per l'uso di componenti lettronici rispetto all'uso videoludico?
Ad esempio, immunità ai disturbi (specie quelli irradiati) , grado Ip di
protezione dall'acqua, ecc ...
Sei sicuro che poi le macchine che monterebbero una Psp come Hmi (human
machine interface) siano a norma?
Ha una porta seriale la psp, per poterci connettere dei plc ad esempio ?
Grazie

Volevo anche esprimere il mio parere sul tuo lavoro:
Io NON penso che sia giusto che tu rilasci Nanodesktop gratuitamente, perchč
non č un lavoro fatto con altre persone, ma un lavoro che in pratica hai
fatto tu da solo! Opensource significa anche che si collabora in tanti per
uno scopo, non che uno fa tutto e poi regala il tutto in nome del software
libero ...
Il tutto IMO
Ciao


No, ma ha una meravigliosa porta USB 2.0, un'altra meravigliosa
schedina wireless integrata che consente un collegamento con un
PC (per esempio, per inviare comandi al robot), ed una meravigliosa
porta ad infrarossi (che credo si possa riprogrammare per funzionare
come IRDA compatibile).
Ciao
Pegasus

 printf ecc. ecc. ecc.).
Perché perder tempo a reinventare la ruota?
http://svn.uludag.org.tr/projeler/PSP/newlib-psp/files/
Fabio

 ha scritto nel messaggio 
news:Z%5Gg.76805$_J1.7...@twister2.libero.it...

Perchè NanoC supporta l'emulazione dello stdin
(Virtual Keyboard), l'emulazione della terminal
window per stdout/stderr, supporta l'hiding di
startup.s per chi usa PSPE, e perchè supporta
sia PSPE (dove open, close, seek usano un layer
di emulazione), sia la vera PSP.
Mentre psplibc (la newlib) supporta solo PSP
(e non PSPE), non supporta nè Virtual Keyboard
nè stdin/stdout/stderr, e per l'accesso al file
system usa libpspkernel (addio PSPE.....).
Ciao
Pegasus


Sono tutte minuzie al confronto di dover riscrivere un'intera libreria C 
da capo. Fai prima ad aggiungere il supporto per quelle cose a newlib, 
piuttosto che fare il contrario.
Fabio

 ha scritto nel messaggio 
news:PEcGg.76894$_J1.7...@twister2.libero.it...

Certo, ma in realtà è proprio quello che ho fatto, ossia, ogni volta
che vedevo che si poteva prendere qualcosa di già pronto altrove
(o nella new-lib, o nella libc Avr, o nella libc di freebsd), includevo
il codice (naturalmente indicando la provenienza e la licenza, che
è sempre BSD).
No, è chiaro che non ho scritto NanoC da zero riga per riga di
codice, se c'è del codice BSD che è possibile includere nel
mio, lo si fa e si procede (per esempio per le routine stringa ho
fatto sempre così).
Altre cose invece è stato proprio necessario riscriversele da zero....
Ciao
Pegasus