USB-Experimente

Geschrieben von MMind am Dienstag, 17. Januar 2012 in Oyo

Heute kam ein neues Hilfsmittel für ein Experiment mit dem USB-Anschluss des Oyo.

Adapter MicroUSB-Stecker auf USB-A-Buchse

Der S3C2416 besitzt ja sowohl einen USB 1.1 Host-Controller als auch einen USB 2.0 Gadget-Controller. Während der Gadget-Controller dazu dient, den Oyo zum Beispiel als Massenspeicher ansprechen zu können, ermöglicht es der Host-Controller weitere Geräte an den Oyo anzuschliessen. So ist zum Beispiel in allen Readern der Familie das 3G-Modem über diesen angebunden.

USB Host und Gadget im S3C2416

Der USB-Host-Controller besitzt dabei zwei Ports. Einer wird für das gerade erwähnte 3G-Modem verwendet und der zweite teilt sich scheinbar die physische Schnittstelle mit dem Gadget-Controller. Es sollte also theoretisch möglich sein, den Port zwischen Host und Gadget umzuschalten.

Als Antwort auf die Frage nach dem Wozu fällt mir ausser dem Nerd-typischen »because we can« zum Beispiel noch die Synchronisation zwischen zwei Readern als handfestere Anwendung dafür ein.

0 Kommentare Mehr...

Stop-and-Go

Geschrieben von MMind am Montag, 9. Januar 2012 in Oyo

Gestern habe ich etwas mit dem Stop-Modus des S3C2416 experimentiert, den ich ja letztens schon beschrieben hatte.

Zum Test musste der Oyo zuerst 10 Minuten normal laufen. Da nichts zu tun war, tat er dies mit 133MHz im DVS-Modus. Danach folgten 10 Minuten im Stop-Modus. Jeweils vor dem Beginn und nach dem Ende des Zeitraumes habe ich mir die Batteriespannung angesehen, die ja allmählich abnimmt. Der Test war also total unwissenschaftlich und trotzdem sind die Ergebnisse interessant.

Während die Spannung in den 10 Minuten mit 133MHz um 8mV abnahm, hat sie im Stop-Modus um weniger als 1mV abgenommen, d.h. der Wert hat sich in der Zeit nicht geändert. Hier besteht also auch noch ein deutliches Einsparpotential — ich bin gespannt.

0 Kommentare Mehr...

Pin-Belegung des Debug-Ports

Geschrieben von MMind am Mittwoch, 4. Januar 2012 in Oyo

Pin-Belegung des Debug-Ports

Eine Information, die bisher noch nicht öffentlich verfügbar ist, ist die komplette Belegung des Debug-Ports. Deswegen ändere ich dies heute mal.

Wenn man den Oyo geöffnet vor sich liegen hat, befindet sich der Debug-Port mittig rechts neben dem Akku. Die Grafik der Pins entspricht auch dieser Anordnung, d.h. Akku Links und Platine rechts. Die Anschlüsse des Ports stellen auch noch GND zur Verfügung.

Der Port beherbergt alle drei UARTs und das nRESET-Signal des S3C2416 sowie JTAG-Pins.

Das Bauteil des Anschlusses nennt sich übrigens 2KK2173018 — falls also jemand wissen sollte, wie der passende Stecker (vermutlich ein Folienleiter) heißt und wo man ihn beziehen kann, darf er sich gern in den Kommentaren melden.

Wie immer bei solchen Themen gilt: Jeder ist für sich verantwortlich. Das heißt wenn ihr euren Oyo zerstört bin ich definitiv nicht schlud :-) .

0 Kommentare Mehr...

Stromzähler

Geschrieben von MMind am Montag, 2. Januar 2012 in Oyo

Aktuell bin ich ja an einem Punkt angelangt, an dem der Kernel alle wirklich notwendigen Komponenten irgendwie unterstützt. Der Treiber für den Touchscreen wird es sogar in Version 3.3 des Linux-Kernels schaffen, der Treiber für den Sipix-Display-Controller zeigt auch etwas an, den Treiber für den Audio-Codec wird erstmal keiner vermissen :-) und ein WLan-Treiber scheitert an der fehlenden Dokumentation.

Das nächste große Arbeitsfeld ist nun den Stromverbrauch soweit zu senken, dass das Gerät auch als Reader wirklich nutzbar wird. Ich nutze aktuell zwar nur noch mein Debian-System zum lesen, aber die Laufzeit ist nicht wirklich berauschend. Es ist an dieser Stelle auch noch gar nicht möglich, die Laufzeit in Seitenwechseln anzugeben, wie es bei eBook-Reader normalerweise üblich ist. Stattdessen erreicht der Oyo momentan eine Laufzeit von knapp 5 Stunden.

Um den Stromverbrauch zu reduzieren gibt es nun mehrere mögliche Angriffsflächen:

CPU-Frequency-Scaling

Für die meißten Aufgaben muss des Prozessor nicht mit seiner vollen Geschwindigkeit laufen. Deswegen hat es sich schon vor einigen Jahren durchgesetzt, im Bereich geringer Last den Prozessortakt herunterzusetzen und bei Bedarf wieder zu erhöhen.

Auch der S3C2416 bietet entsprechende Möglichkeiten. Neben der einfachen Verringerung der Taktfrequenz ist es auch möglich den Prozessor in einen sogenannten "dynamic voltage scaling"-Modus zu versetzen, in dem es auch möglich ist die Spannung des Prozessors zu verringern.

Prozessortakt im S3C2416

Im normalen Modus gelangt das Taktsignal über den sogenannten ARMdiv-Taktteiler in den ARM-Kern. Dieser Taktteiler bringt, wie der Name schon sagt, den angelieferten 800MHz-Takt auf die gerade gewünschte Prozessorgeschwindigkeit. Im dvs-Modus hingegen dient die sogenannte hclk als Takt-Quelle und der ARMdiv wird nicht genutzt.

Dieser dvs-Modus brachte aber durch ein unbekanntes Problem das System sehr oft zum stehen. Der Trick scheint dabei zu sein, beim Wechsel vom dvs- in den normal-Modus den Prozessortakt nicht zu erhöhen. Das heißt, wenn höhere Geschwindigkeiten notwendig sind, muss zuerst in den normalen Modus mit der Taktrate des dvs-Modus gewechselt werden und erst in einem zweiten Schritt ist es möglich die Taktrate zu erhöhen.

Mit dieser Bedingung scheint das Frequency-Scaling auf meinem Oyo jetzt sehr zuverlässig zu funktionieren — bisher gab es nicht einen Hänger.

Runtime-Power-Management

Eine weitere interessante Möglichkeit Strom zu sparen ist, nicht benötigte Komponenten zeitweilig auszuschalten bis diese wieder benötigt werden. Am prädestiniertesten dafür ist hier natürlich der Controller für das Sipix-Display, der ja sehr oft nichts zu tun hat, wenn zum Beispiel die aktuelle Seite eines Buches gerade gelesen wird.

Auch lässt sich Treiber-seitig die Aktivitätsphase des Controllers genau eingrenzen - nämlich auf den eigentlichen Vorgang des Seitenwechsels. Der K1900 bietet zu diesem Zweck auch extra einen Standby-Modus an. Vor beginn der Anzeigeaktualisierung wird der Controller aufgeweckt und nachdem er fertig ist einfach wieder schlafen geschickt.

Und siehe da, das Heruntersetzen des Prozessortaktes inklusive Spannungsanpassung, kombiniert mit dem Schlafen-schicken des K1900 bringt die Laufzeit schon auf beachtliche 9-10 Stunden — jedenfalls hat dies Powertop so ausgerechnet.

CPU-Idle-Modus

Die meißten CPUs unterstützen auch sogenannte Idle-Modi. Das heißt, wenn gerade gar nichts zu tun ist, werden Teile der CPU komplett gestoppt. Auch der S3C2416 unterstützt 3 solcher Modi.

Im Wait for Interrupt-Modus (WFI) wird der Takt zum ARM-Kern angehalten und bei jeder Art von Unterbrechung wieder aktiviert. Dieser Modus ist sehr einfach zur erreichen, das Aufwachen geschieht auch sehr schnell und es erfordert keine anderen Eingriffe im System. Der WFI-Modus ist also sehr billig zu haben, spart aber nur sehr wenig.

Der zweite Modus ist der Stop-Modus. In diesem Modus werden alle Takte angehalten und das System kann nur noch über die interne Uhr und sogenannte externe Unterbrechungen aufgeweckt werden. Externe Unterbrechungen erfolgen zum Beispiel beim Drücken von Tasten des Oyo.

Und schliesslich wird im Deep-Stop-Modus der gesamte ARM-Kern deaktiviert. Die Aufwachbedingungen sie die selben wie im Stop-Modus.

Ein Stop-Modus eignet sich also wunderbar für die Zeit zwischen dem Anzeigen einer Buchseite und dem nächsten Umblättern. Im Vergleich zu WFI haben sie aber eine wesentlich längere Aufwachzeit und der Kernel sollte sich auch sehr sicher sein, dass just in diesem Moment kein Systemteil etwas tun wollte, da im Stop-Modus wirklich nichts mehr passiert. Hier kommt dann wieder das oben erwähnte Runtime-Power-Management zum tragen. Dadurch lässt sich nämlich relativ leicht ermitteln ob gerade ein Systemteil etwas tun wollte, oder ob alles bereit für einen Stop-Modus ist.

Momentan implementiert ist aber nur der WFI-Modus und der Rest liegt noch in der Zukunft.

0 Kommentare Mehr...

Seite 1 von 1, insgesamt 4 Einträge

Suche

Nach Einträgen suchen in Outside the Walled Garden:

Das Gesuchte nicht gefunden? Gib einen Kommentar in einem Eintrag ab oder nimm per E-Mail Kontakt auf!