View source for Kernel/it
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Template used on this page:
Return to Kernel/it.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Template used on this page:
Return to Kernel/it.
Il kernel del GTA01 è basato sul kernel Linux 2.6.21.3 (come da kernel.org).
Le patch aggiunte riguardano:
L'insieme di tutte le patch sopra citate, da aggiungere al kernel Linux sopra indicato, è reperibile all'indirizzo https://svn.openmoko.org/trunk/src/target/kernel/patches/ Si tratta di un cosiddetto quilt patchset. Una volta prelevato, si può applicare ad un kernel Linux piazzandolo nella sua directory "patches" (sotto la directory "linux-2.6.x") ed eseguendo "quilt push -a".
Pre esempio, dopo aver decompresso il kernel "linux-2.6.21.1.tar.gz", si possono eseguire questi comandi:
cd linux-2.6.21.1 svn co https://svn.openmoko.org/trunk/src/target/kernel/patches quilt push -a
(nota: questo è solo un esempio; la versione del kernel Linux da utilizzare potrebbe essere più recente, come indicato nella sezione precedene di questa stessa pagina).
L'ultima versione del file di configurazione del kernel può essere recuperata da https://svn.openmoko.org/trunk/oe/packages/linux/linux-gta01/ (basta copiare tale file di configurazione nella directory "linux-2.6.x" e rinominarlo ".config").
La compilazione del kernel si esegue normalmente col "make"; attualmente serve solo il target "vmlinux", non è necessaria la "zImage".
Dei kernel già compilati per il boot, chiamati uImage*, sono disponibili qui:
In tal caso occorre prelevare anche i moduli utilizzati dal kernel (disponibili da quella stessa pagina col nome di modules* con lo stesso numero di versione), da mettere poi nella rootfs (attenzione: non tutti i moduli in questione potrebbero essere veramente indispensabili nell'installazione).
In alternativa si può prelevare il pacchetto completo del kernel (comprensivo dei moduli), installabile con ipkg, da qui:
Sul Neo1973 GTA01 sono necessari almeno questi moduli:
È necessario che tali moduli siano presenti nella root image (cfr. bug 580).
Probabilmente sarà sufficiente indicare la lista di almeno questi moduli in un file sotto "/etc/modutils/" per poi eseguire "update-modules" per farli funzionare correttamente:
u-boot necessita di tutti i file (kernel, initrd, ...) nel formato uImage, che in fin dei conti contiene solo alcune informazioni addizionali all'inizio (controllo CRC, versione, etc). Vedere u-boot per i dettagli.
Dato che il QT2410 può essere utilizzato con differenti schermi LCD (liquid crystal modules: LCM), per il caricamento del kernel è disponibile un parametro "tft" specificabile al boot:
In questa sezione ci sono alcune note sui sottosistemi specifici del GTA01, e sui relativi driver.
Il driver gta01_pm_gsm implementa le procedure di risparmio energetico della sezione GSM (pertanto, se compilato come modulo gta01_pm_gsm.ko, va caricato prima dell'utilizzo).
Tale driver esporta questa interfaccia basata sul sysfs:
root@fic-gta01:/$ ls -l /sys/bus/platform/devices/gta01-pm-gsm.0/ -rw-r--r-- 1 root root 4096 Feb 1 09:58 download -rw-r--r-- 1 root root 4096 Feb 1 09:58 power_on -rw-r--r-- 1 root root 4096 Feb 1 09:58 reset
root@fic-gta01:~$ echo "1" > /sys/bus/platform/devices/gta01-pm-gsm.0/power_on gta01-pm-gsm gta01-pm-gsm.0: powering up GSM, thus disconnecting serial console
root@fic-gta01:~$ echo "0" > /sys/bus/platform/devices/gta01-pm-gsm.0/power_on gta01-pm-gsm gta01-pm-gsm.0: powered down GSM, thus enabling serial console
root@fic-gta01:~$ echo "1" > /sys/bus/platform/devices/gta01-pm-gsm.0/reset root@fic-gta01:~$ echo "0" > /sys/bus/platform/devices/gta01-pm-gsm.0/reset
root@fic-gta01:~$ echo "1" > /sys/bus/platform/devices/gta01-pm-gsm.0/download
root@fic-gta01:~$ echo "0" > /sys/bus/platform/devices/gta01-pm-gsm.0/download
Il modulo gta01_pm_gps del kernel pure offre un'interfaccia basata sul sysfs:
root@fic-gta01:~$ ls -l /sys/bus/platform/devices/gta01-pm-gps.0/ -rw-r--r-- 1 root root 4096 Feb 1 09:14 power_avdd_3v -rw-r--r-- 1 root root 4096 Feb 1 09:14 power_lp_io_3v3 -rw-r--r-- 1 root root 4096 Feb 1 09:14 power_pll_core_2v5 -rw-r--r-- 1 root root 0 Feb 1 09:14 power_sequence -rw-r--r-- 1 root root 4096 Feb 1 09:14 power_vtxco_2v8 -rw-r--r-- 1 root root 4096 Feb 1 09:14 pwron -rw-r--r-- 1 root root 4096 Feb 1 09:14 reset
I vari power_avdd_3v, power_lp_io_3v3, power_pll_core_2v5, power_vtxco_2v8, pwron e reset rappresentano lo stato dei segnali omonimi.
Il file power_sequence implementa invece l'accensione o spegnimento secondo quanto prescritto dal datasheet del GlobalLocate.
root@fic-gta01:~$ echo "power_up" > /sys/bus/platform/devices/gta01-pm-gps.0/power_sequence
root@fic-gta01:~$ echo "power_down" > /sys/bus/platform/devices/gta01-pm-gps.0/power_sequence
Nonostante il sistema audio del GTA01 sia alquanto complesso, i requisiti di livello più alto per il suo driver sono abbastanza semplici. Le caratteristiche indispensabili sono:
Per maggiori dettagli, vedere Neo1973 Audio Subsystem
Viene utilizzata l'implementazione bluez presente nei kernel Linux.
Il sistema bluetooth ha tre prerequisiti:
Il driver gta01_pm_bt è controllabile via sysfs:
root@fic-gta01:/$ ls -l /sys/bus/platform/devices/gta01-pm-bt.0 -rw-r--r-- 1 root root 4096 Feb 1 09:52 power_on -rw-r--r-- 1 root root 4096 Feb 1 09:52 reset
root@fic-gta01:/$ echo "1" > /sys/bus/platform/devices/gta01-pm-bt.0/power_on usb 1-1: new full speed USB device using s3c2410-ohci and address 4 usb 1-1: configuration #1 chosen from 1 choice
root@fic-gta01:/$ echo "0" > /sys/bus/platform/devices/gta01-pm-bt.0/power_on usb 1-1: USB disconnect, address 3
root@fic-gta01:/$ echo "0" > /sys/bus/platform/devices/gta01-pm-bt.0/reset root@fic-gta01:/$ usb 1-1: USB disconnect, address 2
root@fic-gta01:/$ echo "1" > /sys/bus/platform/devices/gta01-pm-bt.0/reset s3c2410-ohci s3c2410-ohci: wakeup usb 1-1: new full speed USB device using s3c2410-ohci and address 3 usb 1-1: configuration #1 chosen from 1 choice
Esempio:
root@fic-gta01:~$ hciconfig hci0 up root@fic-gta01:~$ hcitool scan Scanning ... 00:14:9A:77:A2:02 A780 root@fic-gta01:~$ hcitool inq 00:14:9A:77:A2:02 Inquiring ... 00:14:9A:77:A2:02 clock offset: 0x55df class: 0x502204 root@fic-gta01:~$ hcitool cc 00:14:9A:77:A2:02 root@fic-gta01:~$ hcitool con Connections: < ACL 00:14:9A:77:A2:02 handle 42 state 1 lm MASTER root@fic-gta01:~$ hcitool info 00:14:9A:77:A2:02 Requesting information ... BD Address: 00:14:9A:77:A2:02 Device Name: A780 LMP Version: 1.1 (0x1) LMP Subversion: 0x700 Manufacturer: Broadcom Corporation (15) Features: 0xff 0xff 0x0d 0x00 0x00 0x00 0x00 0x00 <3-slot packets> <5-slot packets> <encryption> <slot offset> <timing accuracy> <role switch> <hold mode> <sniff mode> <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD> <power control> <transparent SCO>
Il bottone AUX (precedentemente indicato come bottone "9-1-1") è supportato dal driver della tastiera (gta01kbd) nel kernel (drivers/input/keyboard/gta01kbd.c).
Tale bottone è associato a eventi "KEY_PHONE" (tasto premuto/rilasciato).
La PMU (Unità di gestione energia) è supportata dal driver "pcf50606" del kernel (drivers/i2c/chips/pcf50606.c).
Questo driver fornisce numerose interfacce nell'user-space per le varie funzionalità della PMU.
La PMU crea un device di input che supporta questi tre "tasti":
L'orologio interno (real-time-clock), comprese le funzionalità di sveglia, è implementato con l'interfaccia standard RTC (/dev/rtc).
Il watchdog integrato nella PMU è implementato con il character-device apposito del kernel.
I regolatori di tensione sono accessibili in user-space attraverso il sysfs (un po' come i noti lm_sensors); i valori possono essere oltre che letti, perfino scritti; il formato è in ASCII, e il valore indica i millivolt.
root@fic-gta01:/sys/devices/platform/s3c2410-i2c/i2c-0/0-0008$ ls -l /sys/bus/i2c/devices/0-0008/voltage_* -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_d1reg -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_d2reg -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_d3reg -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_dcd -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_dcde -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_dcud -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_lpreg -rw-r--r-- 1 root root 4096 Sep 3 11:55 /sys/bus/i2c/devices/0-0008/voltage_ioreg root@fic-gta01:/sys/devices/platform/s3c2410-i2c/i2c-0/0-0008$ cat voltage_dcd 1300
Il voltaggio della batteria (in millivolt) può essere letto sempre attraverso il sysfs:
root@fic-gta01:~$ cat /sys/bus/i2c/devices/0-0008/battvolt 3767
L'intensità della corrente nella carica della batteria (espressa in milliampére) può essere letta da sysfs:
root@fic-gta01:~$ cat /sys/bus/i2c/devices/0-0008/chgcur 0
La temperatura della batteria (in gradi centigradi) può essere letta via sysfs:
root@fic-gta01:~$ cat /sys/bus/i2c/devices/0-0008/battemp 25
Lo sviluppo del Kernel è discusso nella mailing-list openmoko-kernel@lists.openmoko.org
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |