PDA

View Full Version : Creare un OS per palmari


bouncey2k
18-04-2007, 12:46
Ciao a tutti!
Come si legge dal titolo della discussione avrei intenzione di cimentarmi nella creazione di sistemi operativi per dispositivi. Naturalmente non pretendo di fare chissà cosa all'inizio, però prima o poi mi piacerebbe fare il primo passo.
Conosco le basi del C/C++ e del Java e diversi linguaggi web (ma non penso possano servire, almeno non all'inizio).

La mia domanda è: da dove partire?
Insomma, se sapete darmi qualche dritta. Naturalmente all'inizio non voglio occuparmi né del sistema I/O né di tutte le funzioni del sistema operativo. Vorrei solo cimentarmi un po' nella grafica o GUI di un so. Per ora mi accontenterei di far comparire una finestrella tutta blu con scritto "ciao" :D (mi accontento di poco).

spk
18-04-2007, 22:31
bè se vuoi partire a programmare un sistema operativo minimale, anche solo per gioco, per visualizzare anche solo un "ciao" sul tuo palmare hai bisogno innanzitutto di accedere alla memoria video,per far questo serve un numero decisamente elevato di presupposti a partire dal tipo di processore su cui vuoi lavorare.
Inoltre ti serve un po di documentazione sulla bestia touchscreen :)

se parti proprio da zero, ti conviene iniziare da un bootloader per personal computer che carica un "kernel" tuo non interattivo con cui puoi giocare e fare i tuoi esperimenti

bouncey2k
18-04-2007, 23:30
immaginavo di dover riflettere sul tipo di processore su cui lavorare, ma ho anche fatto questo ragionameno. Prendiamo ad esempio Windows XP. Questo può girare su una miriade di processori per PC o sbaglio?
ma poi, dove posso trovare documentazioni su queste cose (ad esempio la memoria video)?

VICIUS
19-04-2007, 11:27
Ti sposto in programmazione che di sicuro c'è gente più ferrata sull'argomento.

ciao ;)

matcy
19-04-2007, 13:07
immaginavo di dover riflettere sul tipo di processore su cui lavorare, ma ho anche fatto questo ragionameno. Prendiamo ad esempio Windows XP. Questo può girare su una miriade di processori per PC o sbaglio?
ma poi, dove posso trovare documentazioni su queste cose (ad esempio la memoria video)?
non hai colto quello che si intendeva. non si parla di modelli di processori (celeron 530, pentium D 920, amd xp 2500+), ma di architetture.
e windows xp funziona su un'unica architettura, la "x86". con le restrizioni del caso visto che serve almeno un i386 o i486 credo.

ti mancano molte conoscenze, dovrai studiare parecchio e sbatterti un cifro, ti avverto...

la gui è l'ultima cosa da fare, secondo me.
però se per iniziare vuoi scrivere 4 righe di assembler x stampare delle scritte nessuno te lo vieta.

cmq ritengo che fare tutto da zero sia una pazzia, ci sono tanti kernel ben funzionanti e liberi... già ravanare fra quelli, sceglierne uno, adattarlo, fare una gui, etc etc... è un lavoro lunghissimo.

scegli una architettura, procurati un compilatore, un simulatore e magari anche un bel tocco di silicio vero. e buona fortuna

tomminno
19-04-2007, 13:17
Ciao a tutti!
Come si legge dal titolo della discussione avrei intenzione di cimentarmi nella creazione di sistemi operativi per dispositivi. Naturalmente non pretendo di fare chissà cosa all'inizio, però prima o poi mi piacerebbe fare il primo passo.
Conosco le basi del C/C++ e del Java e diversi linguaggi web (ma non penso possano servire, almeno non all'inizio).

La mia domanda è: da dove partire?
Insomma, se sapete darmi qualche dritta. Naturalmente all'inizio non voglio occuparmi né del sistema I/O né di tutte le funzioni del sistema operativo. Vorrei solo cimentarmi un po' nella grafica o GUI di un so. Per ora mi accontenterei di far comparire una finestrella tutta blu con scritto "ciao" :D (mi accontento di poco).

Che bello partire dal tetto per poi arrivare alle fondamenta!

Per la GUI devi pilotare direttamente il monitor del dispositivo, ma chi ti fornisce le specifiche hardware se non sei anche il produttore dell'elettronica?
Poi se non ottimizzato finisce che il micro passa tutto il tempo a rinfrescare lo schermo senza fare altro.

Quello che serve a te è imparare a scrivere firmware.
Se vuoi creare un OS minimale prova a cercare informazioni riguardo a FreeRTOS, che ti fornisce le basi per lavorare.

[EDIT] Dimenticavo una cosa fondamentale: poi avrai problemi a trovare l'ambiente di sviluppo (non penserai mica di usare Visual Studio,KDevelop o Eclipse vero?) e gcc è praticamente inutilizzabile per fare debug. A lavoro usiamo lo IAR, che pensa un pò, è un compilatore che costa la bellezza di 3000€ e si schianta non appena passi il mouse su una variabile che ha per nome "i" (bug noto e strasegnalato ma che la ditta che lo sviluppa ritiene non correggibile)

bouncey2k
19-04-2007, 15:07
che bello sapere che non ho speranze!! :D
vabbè a parte gli scherzi.. conosco anche un po' di assambly - che penso sia fondamentale.

Pensavo anche io di prendere un kernel già fatto e di modificarlo a piacere, ma ho anche pensato che probabilmente sarebbe stato più semplice costruire un SO di scarsissimo livello che non andare a cercarne altri. Cmq, dove posso prendere allora dei Kernel liberi per architetture di parlmari? Se non sbaglio l'architettura dovrebbe essere ARM, giusto?

Come avete detto bene, la gui è l'ultima cosa che mi interessa, prima vorrei appunto iniziare con un kernel. Ma si può scrivere in C o va fatto in assambly?

@tomminno: sinceramente non ho capito la cosa del firmware.

thebol
19-04-2007, 15:27
e si schianta non appena passi il mouse su una variabile che ha per nome "i" (bug noto e strasegnalato ma che la ditta che lo sviluppa ritiene non correggibile)

:rotfl:

sarà stato messo apposta da chi odia dare i come nome di variabile :asd:

tomminno
19-04-2007, 15:57
Come avete detto bene, la gui è l'ultima cosa che mi interessa, prima vorrei appunto iniziare con un kernel. Ma si può scrivere in C o va fatto in assambly?


Si può scrivere praticamente tutto in C.


@tomminno: sinceramente non ho capito la cosa del firmware.

Un firmware è un OS minimale.

tomminno
19-04-2007, 15:58
:rotfl:

sarà stato messo apposta da chi odia dare i come nome di variabile :asd:

perchè te non hai mai scritto for (int i = 0; i < tot; i++) ?

vizzz
19-04-2007, 18:22
A lavoro usiamo lo IAR, che pensa un pò, è un compilatore che costa la bellezza di 3000€ e si schianta non appena passi il mouse su una variabile che ha per nome "i" (bug noto e strasegnalato ma che la ditta che lo sviluppa ritiene non correggibile)

OT: IAR brrrrr.. con che micro lavorate? avr, at91? ma andate di gcc perdio!! :D

bouncey2k
19-04-2007, 21:24
tralasciando gli OT :P riespongo quanto detto poco sopra:

Pensavo anche io di prendere un kernel già fatto e di modificarlo a piacere, ma ho anche pensato che probabilmente sarebbe stato più semplice costruire un SO di scarsissimo livello che non andare a cercarne altri. Cmq, dove posso prendere allora dei Kernel liberi per architetture di parlmari? Se non sbaglio l'architettura dovrebbe essere ARM, giusto?

vizzz
19-04-2007, 21:30
tralasciando gli OT :P riespongo quanto detto poco sopra:

Pensavo anche io di prendere un kernel già fatto e di modificarlo a piacere, ma ho anche pensato che probabilmente sarebbe stato più semplice costruire un SO di scarsissimo livello che non andare a cercarne altri. Cmq, dove posso prendere allora dei Kernel liberi per architetture di parlmari? Se non sbaglio l'architettura dovrebbe essere ARM, giusto?

può essere arm7-9 come pxa o xscale

bouncey2k
19-04-2007, 22:11
può essere arm7-9 come pxa o xscale

e che voi sappiate esistono dei kernel "open" per queste architetture?

tomminno
19-04-2007, 22:12
OT: IAR brrrrr.. con che micro lavorate? avr, at91? ma andate di gcc perdio!! :D

Si e il debug come lo fai? L'architettura è ARM7.

vizzz
19-04-2007, 22:15
Si e il debug come lo fai? L'architettura è ARM7.

jtag + gdb

vizzz
19-04-2007, 22:16
e che voi sappiate esistono dei kernel "open" per queste architetture?

il kernel linux

bouncey2k
19-04-2007, 22:32
il kernel linux

esiste un kernel linux apposito per l'architettura ARM7 ?

vizzz
19-04-2007, 22:36
esiste un kernel linux apposito per l'architettura ARM7 ?
è semplicemente il kernel linux con le patch di Russell King
http://www.arm.linux.org.uk/
ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.6

thebol
20-04-2007, 00:28
perchè te non hai mai scritto for (int i = 0; i < tot; i++) ?

certo, pero avevo letto e sentito che ci sono dei pazzi a cui non piace, perchè i è un nome troppo generico per una variabile.

bouncey2k
20-04-2007, 11:24
ma il kernel va compilato nel palmare? :mbe:

vizzz
20-04-2007, 12:20
ma il kernel va compilato nel palmare? :mbe:
no devi cross-compilarlo su un pc normale, per questo ti serve una toolchain arm.

^TiGeRShArK^
20-04-2007, 12:22
:mbe:
il kernel va compilato sul tuo pc e poi scaricato sul palmare tramite porta seriale una volta che hai configurato correttamente (leggi riscritto molte volte) il bootloader.
Se non sbalgio una versione di linux per palmari è la GPE che installa prima il suo bootloader e poi ti consente di riprogrammare il firmware tramite seriale.
Ma cmq il firmware devi averlo già compilato altrimenti puoi buttare il palmare :p

D4rkAng3l
20-04-2007, 12:37
quello cehv uoi fare sinceramente non ha alcun senso...
ad informatica (2 anno) stiamo studiando sistemi operativi...ecco dopo aver dato questo esame credo che ancora non avrò la benchè minima possibilità di fare qualcosa del genere...diciamo che nonc redo che neanche una intera triennale in informatica basti...forse con la specialistica già ci fai qualcosina in più...

cmq non perdere tempo...le basi di programmazione che hai non bastano minimamente..devi avere un'ottima conoscenza di programmazione, programmazione oggetti, multitrhead, ampie conoscenze in architetture hardware e nella teoria dei sistemi operativi...non te la cavi così facilmente :D

bouncey2k
20-04-2007, 12:55
potrà non avere alcun senso, ma finché uno non prova non saprà mai come si fa. Infatti per ora ho abbandonato l'idea di creare il SO. Voglio limitarmi a capire come si carica il bootloader e il kernel.
Dopodiché vedrò come studiarlo. :p

D4rkAng3l
20-04-2007, 16:22
io ti consiglierei prima di farti saldissime basi di programmazione...magari dopo che hai imparato per bene un bel mucchietto di teoria prova ad entrare in qualche progetto opensource per fare pratica