Ich war also soweit das der Rechner wieder halbwegs stabil lief.
Mit einem eingeklebten Zusatzlüfter, notddürftig befestigtem Radiator, ständig am Temperaturlimit, aber es lief. Aber es war klar, ich brauche auf jeden Fall ein anderes Gehäuse, in das ich mehr Lüfter einbauen kann und auch den Radiator ordentlich befestigen.
Außerdem hat mich die Optik des Rechners schon lange gestört. Nicht das es technisch gesehen eine Rolle spielt, aber seit ich ein Gehäuse mit Seitenfenster habe, sehe ich es halt dauernd. Und ich hatte mir schon lange ein moderneres Gehäuse gewünscht. Ich wollte eine Abdeckung unter der das Netzteil verschwindet, Platz um alle Kabel versteckt zu verlegen, versteckte Montageplätze für Festplatten, viele Einbaumöglichkeiten für Lüfter und Radiatoren, Staubfilter, all die Sachen die heute schon fast standard sind, die mein Gehäuse aber nicht hatte.
Also stand als nächstes nicht das neue Mainboard auf dem Plan, sondern ein neues Gehäuse. Und wo ich schon dabei war, sollten auch gleich ein paar PWM-Lüfter dazu kommen.
Bei der für mich typischen gründlichen Suche fand ich ein echtes Schnäppchen: Das AeroCool 300 FAW Edition. Hat alle Features die ich mir gewünscht hatte, plus ein wirklich hübsches Seitenteil aus Acrylglas. Und das für gerade mal 40€. Dazu wollte ich dann zuerst ein paar rote LED-Lüfter, die waren aber nicht direkt lieferbar. Daher hab ich mich dann für 3 Scythe GlideStream Lüfter entschieden. Die können wirklich sehr viel Luft schaufeln, über 140 m³/h, lassen sich aber auch auf 300 Umdrehungen runter regeln wo sie dann praktisch unhörbar sind. Bis das Gehäuse wirklich angekommen war, hatte ich eigentlich vor die Schutzfolie auf dem Fenster zu lassen so lange wie möglich, aber wie man hier sehr gut sehen kann war das keine echte Option. Aber kein großes Problem. Also zuerst mal meinen kompletten Rechner in sämtliche Einzelteile zerlegt, was ich seit über einem Jahr nicht mehr gemacht hatte.
Nach einer gefühlten Ewigkeit hatte ich dann alles zerlegt. Das DVD-Laufwerk und ein paar Steckkarten kommen in das neue Gehäuse nicht mit rein, obwohl es möglich wäre. Aber ich will es diesmal ordentlich und sauber machen. Die noch nicht erwähnten Komponenten sind ein ASRock 980DE3/U3S3 rev 2 Mainboard, eine Gigabyte GeForce GTX 660 Ti, 8 GB RAM von mushkin, ein Thermaltake Hamburg 530W Netzteil und eine Toshiba 1TB Festplatte.
Das alles muß jetzt nurnoch in das neue Gehäuse passen, und zwar halbwegs ordentlich.
Anstatt den ganzen Prozess so zu schildern wie ich ihn durchlaufen habe, werde ich es so beschreiben wie man es idealerweise machen sollte. Als aller erstes sollte man die Festplatte montieren, weil man sonst nicht mehr an die Schraublöcher kommt. Man kann die Festplatte auch so montieren mit den mitgelieferten Rändelschrauben, aber ich mag es wenn Sachen richtig festgeschraubt sind.
Danach kommt das Netzteil, hier ist nichts besonderes zu beachten. Es ist aber wichtig das Netzteil vor dem Mainboard einzubauen, es sei denn man verwendet Verlängerungskabel für den 8-pin EPS 12V Anschluß. Die Öffnung an der linken oberen Ecke wird nämlich vom Mainboard verdeckt, so daß man das Kabel vorher reinlegen muß. Kein großes Problem, wenn man es weiß. Danach beim Einbau des Mainboards sollte man (falls nötig) die Backplate zusammen mit dem Board einbauen, weil die Öffnung auf der Rückseite die Schraublöcher teilweise verdeckt, zumindest bei diesem Board. Die Montage des Kühlblocks ist in diesem Fall kein Problem, nur 4 Schrauben von Hand anziehen und fertig. Hier hab ich dann auch gleich noch die Audio-, USB- und SATA-Kabel am unteren Rand des Mainboards montiert. Was man hier auch sehen kann ist der Radiator, den ich aber später an anderer Stelle untergebracht habe. An dieser Stelle ist es eigentlich schon fast erledigt. Nurnoch die Grafikkarte einbauen, PCIe-Stromkabel einstecken und die Kabel sauber verlegen.
Nach einigem probieren hab ich in der Front zwei der Scythe-Lüfter eigebaut, und darüber den Radiator der Cooler Master Seidon 120V mit dem dazu gehörenden Lüfter. Dadurch wird die CPU direkt mit frischer Luft von aussen gekühlt, anstatt die Abwärme der Grafikkarte dafür zu benutzen. Der dritte Scythe Lüfter sitzt oben, ebenfalls als Eingangslüfter. Einen Ausgangslüfter habe ich im Moment garnicht, was aber kein Problem darstellt. Die Rückseite des Gehäuses ist sehr offen, die Luft kann also problemlos aus dem Gehäuse. Und ich wollte die Staubfilter wirklich gut benutzen, damit mein PC endlich mal sauber bleibt.
Und bisher funktioniert es perfekt. Die Temperaturen sind gut, der Rechner ist dank SpeedFan flüsterleise. Selbst unter Vollast ist er jetzt deutlich leiser als vorher im Leerlauf. Und ich habe nach 2 Wochen noch immer keinen Sichtbaren Staub im Gehäuse. Jetzt warte ich sehnlich auf das neue Mainboard, aber das wird noch eine Weile dauern. Bis dahin hab ich aber ein ansehnliches System auf dem Schreibtisch stehen. Und obwohl es noch bei weitem nicht perfekt ist, ertappe ich mich immer wieder dabei das ich ein paar Minuten nur meinen PC anschaue und mich daran freue wie ordentlich er jetzt aussieht. Und er wird noch viel besser wenn er fertig ist.
Sonntag, 30. Juli 2017
Samstag, 29. Juli 2017
PC Upgrades
Nach langer Zeit hatte ich in den letzten 2 Monaten endlich mal wieder etwas Geld für meinen PC. Und als erstes wollte ich eine schnellere CPU. Der FX-4300 hat mir jetzt eineinhalb Jahre gute Dienste geleistet, aber ein Quadcore war mir einfach zu wenig.
Ein Upgrade auf ein Ryzen System war mir aber einerseits zu teuer, andererseits ist es eine ganz neue Platformund noch nicht richtig ausgereift. Und wie immer bei einer ganz neuen Generation, bezahlt man natürlich einen Aufpreis für die Entwicklung mit. Also obwohl die Ryzen CPUs sehr gut und eigentlich auch preiswert sind, habe ich mich entschieden nochmal auf der AM3-Plattform zu bleiben und die maximal auszubauen.
Da ich ja schon beim Kauf des Mainboards damit gerechnet hatte, ist mein Board (laut Hersteller) für bis zu 140 Watt CPUs ausgelegt. Der FX-8350 mit seiner TDP von 125 Watt sollte also kein Problem darstellen. Und ich wollte auch endlich den boxed Kühler loswerden, der unter Vollast extrem laut wird. Meine Wahl fiel auf eine Cooler Master Seidon 120V rev2 AIO Wasserkühlung. Davon versprach ich mir vor allem einen leiseren Betrieb unter Last. Da die FX-CPUs allgemein in dem Ruf stehen sehr viel Abwärme zu produzieren, wollte ich einfach auf der sicheren Seite sein. Und nicht zuletzt finde ich das eine Wasserkühlung einfach besser aussieht als ein Luftkühler.
Soweit zur Planung. Ich habe also die beiden Teile bestellt und war ganz begeistert als sie endlich ankamen. Zuerst wollte ich mal den Unterschied im Bezug auf den Kühler testen, und habe ihn daher erstmal auf dem FX-4300 montiert. Und da fingen die Probleme an. In meinem Gehäuse (Thermaltake Soprano) gibt es nur zwei Plätze für einen 120er Lüfter, und wie ich feststellen musste sind beide ungeeignet für Radiatoren. An der Front ist der Festplattenkäfig im Weg, während an der Rückseite die Montagelöcher zu nah am Netzteil sitzen. Blöd gelaufen.
Aber so leicht lasse ich mich natürlich nicht aufhalten, und hab den Radiator einfach irgendwie befestigt. Zusätzlich zu Klebegummi an allen vier Ecken brauchte ich noch ein Stück Draht, um den Radiator auch dann noch an seinem Platz zu halten, wenn er richtig warm wird. Die Installation des eigentlichen Kühlblocks auf der CPU war kein Problem, es war nur etwas nervig das ich dafür das Mainboard ausbauen musste. Aber es funktionierte. Die Leistung war aber nicht so gut wie ich gehofft hatte. Die Temperaturen waren sogar etwas höher als zuvor. Aber es lief und war deutlich leiser, selbst mit dem Lüfter auf 100%. Das Problem zeigte sich erst, als ich ein paar Leistungstests machen wollte. Die CPU lief dabei heiß, aber stabil. Aber immer wieder hat sie sich kurzzeitig runter getaktet und dabei sind sogar YouTube Videos ins stottern gekommen. Relativ schnell hat sich dann herausgestellt, das es mein eigener Planungsfehler war. Auf meinem Board sind die Spannungsregler für den Prozessor komplett ungekühlt.
Und auf der Webseite findet sich auch der Hinweis, daß man auf diesem Board nur Lüfter benutzen soll, die die Komponenten auf dem Board mit kühlen. Das ist natürlich hier nicht der Fall, und die Spannungsregler haben sich überhitzt. Ein "quick&dirty" Fix dafür war der Lüfter vom alten boxed Kühler, den ich neben dem Kühlblock festgeklebt habe. Nicht hübsch, aber funktionierte stabil. Aber noch wollte ich die Hoffnung nicht aufgeben. Wenn ASrock die Kühlkörper eingespart hat, warum dann nicht einfach welche nachrüsten?
Leider hatte ich keine passenden. Und natürlich habe ich auch keinen Wärmeleitkleber, und das Board hat auch keine Löcher in der Gegend die man für eine improvisierte Befestigung benutzen könnte. Aber zuerst mal brauchte ich passende Kühlkörper. Dafür entschied ich mich, einen alten 486er CPU-Kühler zu zersägen. Das war auch kein großes Problem. Problematisch war eher die Befestigung. Mein erster Versuch war, Wärmeleitpaste mit Sekundenkleber zu mischen.
Das war allerdings keine gute Idee. Ein paar Sekunden nach dem Vermischen gab es eine ziemlich heftige chemische Reaktion, eine kleine Rauchwolke und das Gemisch war hart wie Stein. Der nächste Versuch war dann Uhu Alleskleber, und die Mischung hat wirklich funktioniert.
Leider war das nicht genug um die Regler dauerhaft zu kühlen. Die Einbrüche der Taktrate waren immer noch da. Meine Vermutung war eine Kombination aus zwei Faktoren:
Einerseits überdeckte der Radiator mit Lüfter den Bereich der Spannungsregler, andererseits hatte das Gehäuse nur einen einzigen Einlass-Lüfter an einer sehr ungünstigen Position. Das zusammen führte dazu, das die Kühlkörper praktisch keinen Luftstrom abbekommen haben. Also musste ich weiterhin den zusätzlichen Lüfter benutzen. Konnte ihn aber deutlich langsamer laufen lassen. Und obwohl der Kleber bei höheren Temperaturen etwas weich wird, hält es sehr stabil. Und sieht sogar recht ansehnlich aus. Aber eine Dauerlösung war das natürlich nicht. Im Prinzip bleiben da drei Möglichkeiten. Ein neues Mainboard, ein passender Luftkühler, oder eine weniger stromhungrige CPU. Die letzten beiden Möglichkeiten scheiden für mich aber beide aus. Aber das hebe ich mir noch für einen zukünftigen Beitrag auf.
Dienstag, 7. Juni 2016
Portfolio Komplettumbau, Teil 1
Ich habe jetzt einige Zeit nichts geschrieben, aber war nicht untätig.
Es sind einige Modifikationen für den Portfolio zusammen gekommen, die ich hier nach und nach vorstellen will. Los geht es mit:
Teil 1: RAM-Erweiterung
Schritt 1.1: Zerlegen
Den Vorgang beschreibe ich nun nicht
genauer, es gibt bereits mehrere Anleitungen. Man muß jedenfalls das
Mainboard komplett ausbauen.
Schritt 1.2: Auslöten
Dafür benutze ich die etwas gröbere
Lötspitze. Zuerst wollte ich die Platine abkleben und jeweils eine
ganze Seite des jeweiligen Chips am Stück auslöten. Das hat sich
aber als sehr unpraktisch erwiesen, so das ich mich doch entschieden
habe die Pins einzeln abzulöten. Dafür hat es sich als zweckmäßig
erwiesen von außen nach innen vorzugehen, so das man die Pins in der
Mitte des Chips zuletzt ablötet. Dadurch wird einerseits die
thermische Belastung der Platine minimiert, und zudem ist das Risiko
geringer das man den Chip versehentlich verdreht und dabei Lötpads
beschädigt. Beim Auslöten muß man extrem vorsichtig vorgehen.
Trotz großer Sorgfalt haben sich bei
mir einige Pads gelöst. Zum Glück ist jedoch keines abgerissen.
Nachdem alle vier RAM Chips ausgelötet waren, habe ich festgestellt,
das C20 und C21 etwas zu nah an der Position von U7 liegen, und man
den Chip nicht ganz auf die Pads bekommt. Daher habe ich
diese
SMD-Kondensatoren auf ihren Lötpads ein Stück verschoben um
genügend Platz zu schaffen.
Nachdem man auf die gleiche Weise auch
U11 (Adress-Decoder) auf der anderen Seite der Platine ausgelötet
hat, ist es schon fast geschafft. Wenn man gleichzeitig noch den
CF-Steckplatz einbauen will, ist es empfehlenswert gleich noch den
Steckplatz für die originalen Speicherkarten zu entfernen. Die etwas
längeren Pins kann man ähnlich wie die der Speicherchips auslöten,
die kürzeren habe ich einfach direkt an der Platine abgezwickt.
Hinterher habe ich das jedoch bereut.
Es wäre sinnvoll auch diese einzeln auszulöten, damit der Sockel
weitgehend unbeschädigt bleibt. Der könnte später noch für ein
anderes Projekt interessant werden.
Danach ist es Zeit die Lötspitze zu
wechseln, für das einlöten und verschalten der neuen Bauteile
empfiehlt sich eine möglichst feine Lötspitze. Je dünner desto
besser.
Schritt 1.3: Einlöten
Verglichen mit dem vorherigen Schritt
ist das Einlöten des neuen Chips eine Kleinigkeit. Man
muß nur sehr vorsichtig sein beim
Dosieren des Lötzinns, damit man keine Kurzschlüsse verursacht. Und
natürlich muss man darauf achten das die zuvor hoch gebogenen Pins
keinen Kontakt zur Platine bekommen. Vom 74HC21 biegen wir dann auf der
linken Seite alle Pins bis auf den untersten (GND) etwas hoch, und
auf der rechten Seite den obersten (Vcc). dann befestigen wir ihn mit
einem kleinen Stückchen doppelseitigem Klebeband auf der Platine.
Und zwar so, das der Massepin auf dem Massepad von U5 liegt.
Nachdem dieser Pin angelötet ist,
verbinden wir zuerst die Betriebsspannung mit dem Vcc-Pin von
U14
oder U15. Den Vcc Pin des neuen RAM-Chips verbinden wir mit dem
Vcc-Pad von U5. Es kann nicht schaden zwischendurch die Verbindungen
mit einem Durchgangsprüfer oder Widerstandsmessgerät zu überprüfen.
Q1, von dem wir den mittleren Pin anzapfen müssen, befindet sich auf
der anderen Seite der Platine. Es ist ein kleiner Transistor in der
Nähe des PROM-Chips. Also löten wir einen Draht dort an, und führen
ihn an der Spule vorbei durch die Platine. Nachdem dieser Draht am
74HC21 angelötet ist, sind noch drei Drähte am DIP-Chip anzulöten.
Da die Pads an diesem Chip sehr eng liegen, empfiehlt es sich, dort
zuerst einen Draht anzulöten und diesen zum 74HC21 zu ziehen. Dort
hat man dann deutlich mehr Spielraum. Nun nicht ungeduldig werden, es
fehlen noch vier Adressleitungen. Zwei davon nehmen wir von U3, dem
PROM-Chip auf der CPU-Seite. Die anderen beiden von unserem eben
verdrahteten 74HC21. Sobald diese vier Pins verbunden sind, ist es
Zeit für einen ersten Test. Also bauen wir den Portfolio
provisorisch wieder zusammen. Sollte der Portfolio sich mit der
Fehlermeldung "Ram Test Failure 000:0BFE" melden, hat man
die Adressleitungen vergessen, wie ich bei meinem ersten Versuch.
Wenn alles geklappt hat, sieht man beim Einschalten ungefähr das
hier:Montag, 16. Mai 2016
ATARI Portfolio
Ich habe kürzlich einen ATARI Portfolio bekommen, und war auf Anhieb begeistert.
Es ist so ziemlich der erste PDA. Erschienen 1989, passt in eine Handtasche und ist dabei fast kompatibel zum IBM PC XT. Der Speicher ist, zumindest bei meinem Modell, mit 128 kB sehr knapp bemessen, und richtige Laufwerke fehlen komplett. Er verwendet eigentlich spezielle Speicherkarten, damals CCM (Credit Card Memory) genannt. Das waren keine Speicherkarten wie wir sie heute kennen, sondern praktisch RAM-Chips mit Batterie. Flash Speicher gab es damals noch nicht. Ein Teil des Arbeitsspeichers wird als RAM Disk für ein virtuelles Laufwerk C: verwendet.
Das hat den Nachteil das ein "böses" Programm ganz leicht die kompletten Daten löschen kann.
Wie es so meine Art ist, musste ich natürlich sofort probieren was ich an dem kleinen modifizieren könnte. Und es hat sich schon vor einer Ewigkeit jemand die Mühe gemacht einen Steckplatz für CF-Karten in den Portfolio einzubauen. Da ich eine solche noch da hatte und auch einen kaputten Kartenleser als Spender für den Steckplatz, habe ich sofort angefangen.
Meine Versuche einen Flash Chip direkt anzuschließen waren nicht erfolgreich, vermutlich weil der eine bestimmte Kommandosequenz braucht um den Schreibschutz aufzuheben. Aber das schaffe ich vielleicht noch irgendwann. Auch einen PIC Chip direkt einzubauen hat nicht funktioniert. Der bringt die Signale des 80C88 Prozessors durcheinander beim Starten. Aber das schaffe ich noch irgendwann. Jedenfalls hat die Modifikation mit der CF-Karte nach kleineren anfänglichen Schwierigkeiten perfekt funktioniert. Der Treiber dafür funktioniert auch problemlos, und ich habe jetzt zwei zusätzliche Laufwerke mit jeweils 32 MB. Das ist für dieses winzige System reichlich. Aber da wurde es erst interessant. Da ich nun einen festen Speicher
hatte, wollte ich natürlich auch ein paar Programme. Also ging die Suche
los. Onkel Google war dabei sehr hilfreich, und es hat nicht lange
gedauert bis ich einiges an Software hatte. Und wie es bei mir so üblich
ist, kamen auch recht schnell die ersten Ideen auf was man noch alles
machen könnte.
Also ging ich auch auf die Suche nach einem C-Compiler,
der nicht nur Code für den Portfolio erstellen kann, sondern auch noch
auf dem Portfolio selbst laufen sollte. Das war schon etwas kniffeliger,
aber nach einiger Suche bin ich auf DeSmet C gestoßen. Zuerst in Form der abgespeckten Shareware von 1988 oder so, aber dann habe ich auch die inzwischen freigegebenen Vollversionen gefunden. Und siehe da, der Portfolio kann auch kompilieren. Die neueste Version ist etwas zu speicherhungrig, die werde ich wohl erst nutzen können wenn ich der Arbeitsspeicher erweitert habe. Das steht ganz oben auf meiner Liste, zusammen mit einer Hintergrundbeleuchtung für das Display. Was mich aber wirklich begeistert ist wie sparsam der kleine ist. Obwohl ich ihn relativ oft benutze und auch den Parallelport dran habe, der angeblich recht viel Strom braucht, halten die Batterien fast eine Woche. Betrieben wird er nicht mit speziellen Akkus, sondern mit drei herkömmlichen AA-Zellen.
Und heute habe ich schon das erste Stückchen Software für den Portfolio veröffentlicht. Mit Hilfe des technischen Referenzhandbuchs habe ich ein paar der speziellen BIOS-Funktionen des Pofo und einige DOS-Funktionen in eine C-Bibliothek verpackt und auf Github gestellt. Bin mal gespannt ob meine libPofo jemandem von Nutzen sein kann.
Es ist so ziemlich der erste PDA. Erschienen 1989, passt in eine Handtasche und ist dabei fast kompatibel zum IBM PC XT. Der Speicher ist, zumindest bei meinem Modell, mit 128 kB sehr knapp bemessen, und richtige Laufwerke fehlen komplett. Er verwendet eigentlich spezielle Speicherkarten, damals CCM (Credit Card Memory) genannt. Das waren keine Speicherkarten wie wir sie heute kennen, sondern praktisch RAM-Chips mit Batterie. Flash Speicher gab es damals noch nicht. Ein Teil des Arbeitsspeichers wird als RAM Disk für ein virtuelles Laufwerk C: verwendet.
Das hat den Nachteil das ein "böses" Programm ganz leicht die kompletten Daten löschen kann.
Wie es so meine Art ist, musste ich natürlich sofort probieren was ich an dem kleinen modifizieren könnte. Und es hat sich schon vor einer Ewigkeit jemand die Mühe gemacht einen Steckplatz für CF-Karten in den Portfolio einzubauen. Da ich eine solche noch da hatte und auch einen kaputten Kartenleser als Spender für den Steckplatz, habe ich sofort angefangen.
Meine Versuche einen Flash Chip direkt anzuschließen waren nicht erfolgreich, vermutlich weil der eine bestimmte Kommandosequenz braucht um den Schreibschutz aufzuheben. Aber das schaffe ich vielleicht noch irgendwann. Auch einen PIC Chip direkt einzubauen hat nicht funktioniert. Der bringt die Signale des 80C88 Prozessors durcheinander beim Starten. Aber das schaffe ich noch irgendwann. Jedenfalls hat die Modifikation mit der CF-Karte nach kleineren anfänglichen Schwierigkeiten perfekt funktioniert. Der Treiber dafür funktioniert auch problemlos, und ich habe jetzt zwei zusätzliche Laufwerke mit jeweils 32 MB. Das ist für dieses winzige System reichlich. Aber da wurde es erst interessant. Da ich nun einen festen Speicher
hatte, wollte ich natürlich auch ein paar Programme. Also ging die Suche
los. Onkel Google war dabei sehr hilfreich, und es hat nicht lange
gedauert bis ich einiges an Software hatte. Und wie es bei mir so üblich
ist, kamen auch recht schnell die ersten Ideen auf was man noch alles
machen könnte.
Also ging ich auch auf die Suche nach einem C-Compiler,
der nicht nur Code für den Portfolio erstellen kann, sondern auch noch
auf dem Portfolio selbst laufen sollte. Das war schon etwas kniffeliger,
aber nach einiger Suche bin ich auf DeSmet C gestoßen. Zuerst in Form der abgespeckten Shareware von 1988 oder so, aber dann habe ich auch die inzwischen freigegebenen Vollversionen gefunden. Und siehe da, der Portfolio kann auch kompilieren. Die neueste Version ist etwas zu speicherhungrig, die werde ich wohl erst nutzen können wenn ich der Arbeitsspeicher erweitert habe. Das steht ganz oben auf meiner Liste, zusammen mit einer Hintergrundbeleuchtung für das Display. Was mich aber wirklich begeistert ist wie sparsam der kleine ist. Obwohl ich ihn relativ oft benutze und auch den Parallelport dran habe, der angeblich recht viel Strom braucht, halten die Batterien fast eine Woche. Betrieben wird er nicht mit speziellen Akkus, sondern mit drei herkömmlichen AA-Zellen.Und heute habe ich schon das erste Stückchen Software für den Portfolio veröffentlicht. Mit Hilfe des technischen Referenzhandbuchs habe ich ein paar der speziellen BIOS-Funktionen des Pofo und einige DOS-Funktionen in eine C-Bibliothek verpackt und auf Github gestellt. Bin mal gespannt ob meine libPofo jemandem von Nutzen sein kann.
Montag, 25. April 2016
DevelOS Struktur
Ich habe mal ein Diagramm erstellt um die grundlegende Struktur von DevelOS aufzuzeigen.
Leider ist es im Moment nicht wirklich so lauffähig, wie ich es gerne hätte. Bei der erweiterung habe ich wohl einige inkompatibilitäten erzeugt, und die Performance lässt auch stark zu wünschen übrig. Teile des Systems werde ich wohl neu schreiben müssen. Aber die Struktur will ich gerne so belassen. Noch rot eingezeichnet ist das Konsolen-Modul. Das habe ich erst jetzt implementiert. Mir ist aufgefallen das der Zugriff auf den Buffer des Display-Moduls problematisch sein kann. Außerdem hätte ich die gesamten Ausgabe-Routinen für den UART nochmal neu schreiben müssen. Also habe ich mich entschloßen den Buffer und die Ausgabefunktionen aus dem Display-Modul heraus zu nehmen. Dieses Modul macht jetzt nur noch die Initialisierung und das Übertragen vom Konsolenbuffer in den Hardware-Puffer des jeweiligen Display Moduls. Allerdings ist da noch so einiges im argen. Ich glaube ich habe da noch jede Menge Speicherlöcher drin.
Wie man hier sieht belegt DevelOS selbst einen großen Teil der externen Schnittstellen des PIC. Es verwaltet den Taktgenerator, die AD Wandler und das EEProm. Über IO-Pins können weitere Geräte angebunden werden.
Im Moment habe ich an meiner Testplatine ein 4x20 Zeichen LCD Display angeschloßen, sowie zwei kleine I2C-EEproms. Eines ist ein Atmel 32kbit-EEPROM das nur eine Bus-Adresse hat, aber intern mit 16bit Adressen arbeitet. Das andere ist ein ST 8kbit, das intern mit 8 bit adressiert wird, dafür aber in 4 Bänke unterteilt ist, die jeweils über eigene Bus-Adressen angesprochen werden. Eine gute Möglichkeit, um einen wirklich universellen Treiber zu schreiben, der beide EEPROMs ansprechen und für das DevelOS einheitlich darstellen kann. Sie sind zwar etwas abenteuerlich angeschloßen, aber im Prinzip funktioniert es. Den UART habe ich auf eine Buchse heraus geführt, aber bisher funktioniert er nicht richtig. Da der PIC im Moment nur mit dem internen Oszillator läuft, ist die Baudrate wohl zu ungenau. Die Buchse habe ich von einem alten Mainboard geerntet. Eigentlich ist es ein Audio-Anschluß für ein CD oder DVD Laufwerk. Die drei belegten Pins machen ihn aber für alles mögliche einsetzbar, und die etwas besseren Kabel für diesen Port sind sogar abgeschirmt. Damit will ich später mal die
Verbindung von diesem PIC-Board zu meinem Server herstellen. Auf dem Bild hier links sieht man das Display, und die zwei Ports die ich eben beschrieben habe. Der linke, schwarze davon ist an den UART angeschloßen, der andere ist noch nicht belegt. geplant hatte ich dort den I2C-Bus heraus zu führen, um zusätzliche Chips mit anbinden zu können. Ganz am linken Rand sieht man oben den Anschlußblock für die Stromversorgung und den Anschluß der Lüfter, die der PIC einmal regeln soll. Die Stiftleiste rechts neben den Widerständen ist ein Anschluß für die Spannungen des ATX-Netzteils. Diese soll der PIC ebenfalls überwachen und dem Banana Pi über den UART mitteilen. Unter dem Anschlußblock links sieht man auch noch zwei Transistoren die ich ebenfalls von alten Mainboard habe. Für die Steuerung von Lüftern sind sie mit einer Schaltleistung von über 100 Ampere zwar völlig überdimensioniert, aber hey, was nichts kostet ist auch nicht verschwendet.

Zwischen dem Anschlußblock und dem Kabel für das Display sieht man noch den Anschluß für das Programmiergerät. Dafür verwende ich eine ehemalige PS2-Buchse. Ich wollte mein Programmiergerät nicht jedes mal wieder an eine Stiftleiste anschließen, sondern eine komfortable Möglichkeit haben ein Gerät auch von außen zu Programmieren.
Der weitere Ausbau gestaltet sich jedoch schwierig, da das Programm jetzt nur noch etwas mehr als 100 mal pro Sekunde durch läuft. Dabei wird aber schon zwei mal das Display neu geschrieben und einige Timer laufen. Es kann jedoch noch einiges optimiert werden. Zum Beispiel wird die Uhr im Moment von einem 8-bit Timer abgeleitet mithilfe eines Software-Zählers. Das ist extrem ineffizient. es wäre deutlich besser hierfür einen 16-bit Timer mit entsprechenden Preloadwerten zu verwenden.Und wenn ich mir die Zeit nehme, finde ich bestimmt noch hundert weitere Möglichkeiten zur Optimierung. Leider habe ich das Profiler-Plugin für MPLab-X nicht, und will auch keine 45 Euro dafür bezahlen. Also werde ich wohl so zurecht kommen müssen.
Hier nochmal ein Link zum Projekt auf Github: https://github.com/Stefanie80/DevelOS.X/tree/experimental
Leider ist es im Moment nicht wirklich so lauffähig, wie ich es gerne hätte. Bei der erweiterung habe ich wohl einige inkompatibilitäten erzeugt, und die Performance lässt auch stark zu wünschen übrig. Teile des Systems werde ich wohl neu schreiben müssen. Aber die Struktur will ich gerne so belassen. Noch rot eingezeichnet ist das Konsolen-Modul. Das habe ich erst jetzt implementiert. Mir ist aufgefallen das der Zugriff auf den Buffer des Display-Moduls problematisch sein kann. Außerdem hätte ich die gesamten Ausgabe-Routinen für den UART nochmal neu schreiben müssen. Also habe ich mich entschloßen den Buffer und die Ausgabefunktionen aus dem Display-Modul heraus zu nehmen. Dieses Modul macht jetzt nur noch die Initialisierung und das Übertragen vom Konsolenbuffer in den Hardware-Puffer des jeweiligen Display Moduls. Allerdings ist da noch so einiges im argen. Ich glaube ich habe da noch jede Menge Speicherlöcher drin.
![]() |
| DevelOS Struktur |
![]() | |
| Freestyle-I2C |
Verbindung von diesem PIC-Board zu meinem Server herstellen. Auf dem Bild hier links sieht man das Display, und die zwei Ports die ich eben beschrieben habe. Der linke, schwarze davon ist an den UART angeschloßen, der andere ist noch nicht belegt. geplant hatte ich dort den I2C-Bus heraus zu führen, um zusätzliche Chips mit anbinden zu können. Ganz am linken Rand sieht man oben den Anschlußblock für die Stromversorgung und den Anschluß der Lüfter, die der PIC einmal regeln soll. Die Stiftleiste rechts neben den Widerständen ist ein Anschluß für die Spannungen des ATX-Netzteils. Diese soll der PIC ebenfalls überwachen und dem Banana Pi über den UART mitteilen. Unter dem Anschlußblock links sieht man auch noch zwei Transistoren die ich ebenfalls von alten Mainboard habe. Für die Steuerung von Lüftern sind sie mit einer Schaltleistung von über 100 Ampere zwar völlig überdimensioniert, aber hey, was nichts kostet ist auch nicht verschwendet.

Zwischen dem Anschlußblock und dem Kabel für das Display sieht man noch den Anschluß für das Programmiergerät. Dafür verwende ich eine ehemalige PS2-Buchse. Ich wollte mein Programmiergerät nicht jedes mal wieder an eine Stiftleiste anschließen, sondern eine komfortable Möglichkeit haben ein Gerät auch von außen zu Programmieren.
Der weitere Ausbau gestaltet sich jedoch schwierig, da das Programm jetzt nur noch etwas mehr als 100 mal pro Sekunde durch läuft. Dabei wird aber schon zwei mal das Display neu geschrieben und einige Timer laufen. Es kann jedoch noch einiges optimiert werden. Zum Beispiel wird die Uhr im Moment von einem 8-bit Timer abgeleitet mithilfe eines Software-Zählers. Das ist extrem ineffizient. es wäre deutlich besser hierfür einen 16-bit Timer mit entsprechenden Preloadwerten zu verwenden.Und wenn ich mir die Zeit nehme, finde ich bestimmt noch hundert weitere Möglichkeiten zur Optimierung. Leider habe ich das Profiler-Plugin für MPLab-X nicht, und will auch keine 45 Euro dafür bezahlen. Also werde ich wohl so zurecht kommen müssen.
Hier nochmal ein Link zum Projekt auf Github: https://github.com/Stefanie80/DevelOS.X/tree/experimental
Samstag, 23. April 2016
DevelOS auf github
Ich habe mein DevelOS jetzt auf github veröffentlicht.
Am Anfang war es noch etwas gewöhnungsbedürftig, aber ich hab die Bedienung hin bekommen.
Leider läuft das System so wie es gerade ist nicht richtig. Vermutlich wird irgendwo eine Variable überschritten oder so, aber das habe ich auf die schnelle nicht gefunden. Es tritt interessanter Weise nur im production Image auf, das Debug Image läuft gut.
Die Sources sind hier zu finden: https://github.com/Stefanie80/DevelOS.X
Hoffe das es noch jemandem was bringt ...
Am Anfang war es noch etwas gewöhnungsbedürftig, aber ich hab die Bedienung hin bekommen.
Leider läuft das System so wie es gerade ist nicht richtig. Vermutlich wird irgendwo eine Variable überschritten oder so, aber das habe ich auf die schnelle nicht gefunden. Es tritt interessanter Weise nur im production Image auf, das Debug Image läuft gut.
Die Sources sind hier zu finden: https://github.com/Stefanie80/DevelOS.X
Hoffe das es noch jemandem was bringt ...
Dienstag, 12. April 2016
Download-Server im Einsatz
Ich hatte ja schon angekündigt, das ich in absehbarer Zeit ein Howto erstellen will, wie man einen Homeserver selbst konfiguriert. Dafür werde ich dann natürlich meinen vorhandenen Banana Pi einsetzen. Aber noch ist es nicht so weit. Ich habe den Server ja erst kürzlich zerlegt, und bevor ich das nochmal mache, möchte ich ein bisschen was vorbereiten. Auf jeden Fall will ich dann gleich das aktuellste Betriebssystem verwenden, und die Einrichtung dann Schritt für Schritt dokumentieren. Und auch an der Hardware will ich noch ein bisschen was verändern. Heute soll es aber erstmal um die Vorbereitung gehen. Und dabei kann ich auch gleich zeigen, wie und wofür man so einen Server sehr gut einsetzen kann. Einer der wichtigsten Punkte ist für mich die Downloadverwaltung. Und die wird heute zum Einsatz kommen.Die aktuellste Version von Bananian gibt es hier: https://www.bananian.org/download
Im Moment ist das Debian 8 Jessie. Die Datei ist zwar "nur" 158 MB groß, das wäre noch an der Grenze dessen was ich lokal auf dem Desktop runter laden würde. Aber heute mache ich es gleich über Torrent, um den Vorgang mal zu zeigen.
Wie man auf dem Screenshot sehen kann, gibt es auf der Seite von Bananian nur einen direkten Link auf die ZIP-Datei. Man kann aber trotzdem Torrent verwenden, dafür gibt es die Seite http://burnbit.com/. Man klickt auf einen beliebigen Download-Link mit der rechten Maustaste, und wählt dann den Punkt "Link-Adresse kopieren".
Dann geht man auf die Seite von Burnbit, und fügt den Link in die Zeile oben ein.
Hier muß man ein bisschen aufpassen, denn es werden nur reine http-Links unterstüzt. In diesem Fall ist es ein https-Link, der würde so nicht funktionieren. Aber in den meisten Fällen klappt es trotzdem, wenn man das 's' einfach löscht.
So klappt es auch hier. Danach öffnet sich die Download-Seite mit einigen Infos zur Datei.
Hier finde ich den Punkt "Added:7 months ago" besonders interessant. Das heist ich bin nicht die erste, die Burnbit verwendet um diese Datei zu laden, jemand hat sie schon vor 7 Monaten hinzugefügt.
Ein klick auf "Download Torrent" startet dann den Download. Falls die Datei noch nicht bei Burnbit registriert ist, erscheint in diesem Fenster oben ein Forstschrittsbalken, während die Datei verarbeitet wird. Dabei wird sie in viele kleine Teile unterteilt und für jedes Teil wird eine Prüfsumme berechnet, so das man sie von mehreren Quellen gleichzeitig herunterladen kann, aber trotzdem die Integrität der Datei sichergestellt ist. Warum das wichtig ist, werdet ihr gleich noch sehen. Jetzt geht es aber erstmal ans runterladen:
Ich wähle hier direkt "Öffnen mit ...". Wie man sieht wird nun eine Größe von nur knapp 50kb angezeigt. Was man hier herunter lädt, ist nur eine sogenannte Metadatei. Sie enthält Prüfsummen der Datei und Angaben dazu, wo sie zu finden ist. Nach dem Klick auf OK öffnet sich Deluge mit dem Dialog zum Hinzufügen eines neuen Torrents. Hier kann man auch gleich ein paar Einstellungen vornehmen, wie zum Beispiel den Zielordner. Sobald man die Datei hinzugefügt hat, legt Deluge direkt mit dem Download los.
Allerdings läuft der Download selbst auf dem Server, nicht auf meinem PC. Den könnte ich jetzt auch ausschalten.
Wozu der Umweg? Naja, bei dieser Datei ist die geschätzte Downoaldzeit nur gut 10 Minuten, da lohnt es sich kaum. Es sei denn man will in der Zeit etwas anderes Nebenbei machen. Deluge bietet nämlich unter anderem die Möglichkeit, die Up- und Downloadgeschwindigkeit zu bestimmen. Ich habe hier nur eine 6000er DSL Leitung, also kann ich im besten Fall mit etwa 700 kb/s laden.
Das ist nicht viel, und selbt ein einzelner Download kann dazu führen, das nebenher nichts anderes mehr funktioniert, oder YouTube die Videoqualität auf 144p drosselt. Ich habe den Deluge allerdings auf 230 kb/s gedrosselt, so das mir immer noch zwei Drittel der Leitung frei bleiben. Ich könnte jetzt auch noch beliebig viele weitere Torrents hinzufügen, Deluge erledigt die dann gleichzeitig. Man muß sich nicht darum kümmern, das läuft alles wie von selbst. Man kann die Geschwindigkeit auch zeitabhängig einstellen, so wie ich. Tagsüber, von morgens um 7 bis Nachts um 12 ist die Geschwindigkeit gedrosselt, so das ich immer problemlos surfen und Videos schauen kann, und von 0 Uhr bis 7 Uhr morgens darf dann Deluge die Leitung komplett ausnutzen.
Das kann man im Scheduler-Plugin auch noch für jeden Tag der Woche einzeln genau konfigurieren, und man kann auch einzelne Stunden komplett verbieten, dann ist das Feld rot. Das ist zum Beispiel sinnvoll, wenn man regelmäßig zeitgesteuerte Updates durchführen lässt. So kann man sicherstellen, das die immer mit der höchsten Geschwindigkeit laufen. Hat man mehrere Rechner, so wie ich, dann legt man die Updates am besten auf jedem Rechner auf einen anderen Wochentag, aber in die gleiche Stunde, und stellt dann die entsprechenden Stunden im Deluge auf rot. Sobald der Download abgeschloßen ist, steht im Fortschrittsbalken "Seeding". Das heißt das mein Rechner jetzt dabei mithilft, die Datei zu verteilen.
Lädt jemand anders jetzt die gleiche Datei, so verbindet sich sein Rechner nicht nur mit dem Original-Server, sondern zusätzlich auch mit meinem Rechner. Er bekommt dann von mir ein paar Kilobyte pro Sekunde zusätzlich. Wenn es nur einen sogenannten Seed gibt, bringt das natürlich nicht viel, aber bei populären Dateien gibt es auch mal hunderte Seeds, so das man mit Torrent auch deutlich höhere Geschwindigkeiten erzielen kann. Diese Technik setzen zum Beipsiel die meisten Online-Spiel ein, um ihre regelmäßigen Updates zu verteilen.

Nur das man dort nichts davon sieht, und den Vorgang auch kaum beeinflussen kann. Man braucht übrigens nicht immer Burnbit dazu. Viele Anbieter haben die Vorteile von Torrents inzwischen erkannt, und bieten gleich selbst entsprechende Downloads an.Dazu zählen etwa die Raspberry Foundation oder auch OpenSUSE. Ich möchte bei Gelegenheit auch noch das neueste SuSE Linux als Zweitsystem auf meinem Desktop installieren, dafür gibt es wie ihr seht direkt den Link auf BitTorrent.
Und hier sieht das Bild jetzt etwas anders aus: mein Rechner hat sich mit 94 anderen verbunden, und bekommt von jedem ein paar Kilobyte pro Sekunde. Die einzelnen Benutzer bemerken die wenigen kb gar nicht, aber ich kann die Datei trotzdem mit voller Geschwindigkeit laden. Bei der momentanen Geschwindigkeit wird das wohl über 5,5 Stunden dauern. Aber wie gesagt, das läuft auf dem Server, und ich muß meinen Rechner nicht die ganze Zeit laufen lassen.
Im Moment ist das Debian 8 Jessie. Die Datei ist zwar "nur" 158 MB groß, das wäre noch an der Grenze dessen was ich lokal auf dem Desktop runter laden würde. Aber heute mache ich es gleich über Torrent, um den Vorgang mal zu zeigen.
Wie man auf dem Screenshot sehen kann, gibt es auf der Seite von Bananian nur einen direkten Link auf die ZIP-Datei. Man kann aber trotzdem Torrent verwenden, dafür gibt es die Seite http://burnbit.com/. Man klickt auf einen beliebigen Download-Link mit der rechten Maustaste, und wählt dann den Punkt "Link-Adresse kopieren".
Dann geht man auf die Seite von Burnbit, und fügt den Link in die Zeile oben ein.
Hier muß man ein bisschen aufpassen, denn es werden nur reine http-Links unterstüzt. In diesem Fall ist es ein https-Link, der würde so nicht funktionieren. Aber in den meisten Fällen klappt es trotzdem, wenn man das 's' einfach löscht.
So klappt es auch hier. Danach öffnet sich die Download-Seite mit einigen Infos zur Datei.
Hier finde ich den Punkt "Added:7 months ago" besonders interessant. Das heist ich bin nicht die erste, die Burnbit verwendet um diese Datei zu laden, jemand hat sie schon vor 7 Monaten hinzugefügt.
Ein klick auf "Download Torrent" startet dann den Download. Falls die Datei noch nicht bei Burnbit registriert ist, erscheint in diesem Fenster oben ein Forstschrittsbalken, während die Datei verarbeitet wird. Dabei wird sie in viele kleine Teile unterteilt und für jedes Teil wird eine Prüfsumme berechnet, so das man sie von mehreren Quellen gleichzeitig herunterladen kann, aber trotzdem die Integrität der Datei sichergestellt ist. Warum das wichtig ist, werdet ihr gleich noch sehen. Jetzt geht es aber erstmal ans runterladen:
Ich wähle hier direkt "Öffnen mit ...". Wie man sieht wird nun eine Größe von nur knapp 50kb angezeigt. Was man hier herunter lädt, ist nur eine sogenannte Metadatei. Sie enthält Prüfsummen der Datei und Angaben dazu, wo sie zu finden ist. Nach dem Klick auf OK öffnet sich Deluge mit dem Dialog zum Hinzufügen eines neuen Torrents. Hier kann man auch gleich ein paar Einstellungen vornehmen, wie zum Beispiel den Zielordner. Sobald man die Datei hinzugefügt hat, legt Deluge direkt mit dem Download los.
Allerdings läuft der Download selbst auf dem Server, nicht auf meinem PC. Den könnte ich jetzt auch ausschalten.
Wozu der Umweg? Naja, bei dieser Datei ist die geschätzte Downoaldzeit nur gut 10 Minuten, da lohnt es sich kaum. Es sei denn man will in der Zeit etwas anderes Nebenbei machen. Deluge bietet nämlich unter anderem die Möglichkeit, die Up- und Downloadgeschwindigkeit zu bestimmen. Ich habe hier nur eine 6000er DSL Leitung, also kann ich im besten Fall mit etwa 700 kb/s laden.
Das ist nicht viel, und selbt ein einzelner Download kann dazu führen, das nebenher nichts anderes mehr funktioniert, oder YouTube die Videoqualität auf 144p drosselt. Ich habe den Deluge allerdings auf 230 kb/s gedrosselt, so das mir immer noch zwei Drittel der Leitung frei bleiben. Ich könnte jetzt auch noch beliebig viele weitere Torrents hinzufügen, Deluge erledigt die dann gleichzeitig. Man muß sich nicht darum kümmern, das läuft alles wie von selbst. Man kann die Geschwindigkeit auch zeitabhängig einstellen, so wie ich. Tagsüber, von morgens um 7 bis Nachts um 12 ist die Geschwindigkeit gedrosselt, so das ich immer problemlos surfen und Videos schauen kann, und von 0 Uhr bis 7 Uhr morgens darf dann Deluge die Leitung komplett ausnutzen.
Das kann man im Scheduler-Plugin auch noch für jeden Tag der Woche einzeln genau konfigurieren, und man kann auch einzelne Stunden komplett verbieten, dann ist das Feld rot. Das ist zum Beispiel sinnvoll, wenn man regelmäßig zeitgesteuerte Updates durchführen lässt. So kann man sicherstellen, das die immer mit der höchsten Geschwindigkeit laufen. Hat man mehrere Rechner, so wie ich, dann legt man die Updates am besten auf jedem Rechner auf einen anderen Wochentag, aber in die gleiche Stunde, und stellt dann die entsprechenden Stunden im Deluge auf rot. Sobald der Download abgeschloßen ist, steht im Fortschrittsbalken "Seeding". Das heißt das mein Rechner jetzt dabei mithilft, die Datei zu verteilen.
Lädt jemand anders jetzt die gleiche Datei, so verbindet sich sein Rechner nicht nur mit dem Original-Server, sondern zusätzlich auch mit meinem Rechner. Er bekommt dann von mir ein paar Kilobyte pro Sekunde zusätzlich. Wenn es nur einen sogenannten Seed gibt, bringt das natürlich nicht viel, aber bei populären Dateien gibt es auch mal hunderte Seeds, so das man mit Torrent auch deutlich höhere Geschwindigkeiten erzielen kann. Diese Technik setzen zum Beipsiel die meisten Online-Spiel ein, um ihre regelmäßigen Updates zu verteilen.

Nur das man dort nichts davon sieht, und den Vorgang auch kaum beeinflussen kann. Man braucht übrigens nicht immer Burnbit dazu. Viele Anbieter haben die Vorteile von Torrents inzwischen erkannt, und bieten gleich selbst entsprechende Downloads an.Dazu zählen etwa die Raspberry Foundation oder auch OpenSUSE. Ich möchte bei Gelegenheit auch noch das neueste SuSE Linux als Zweitsystem auf meinem Desktop installieren, dafür gibt es wie ihr seht direkt den Link auf BitTorrent.
Und hier sieht das Bild jetzt etwas anders aus: mein Rechner hat sich mit 94 anderen verbunden, und bekommt von jedem ein paar Kilobyte pro Sekunde. Die einzelnen Benutzer bemerken die wenigen kb gar nicht, aber ich kann die Datei trotzdem mit voller Geschwindigkeit laden. Bei der momentanen Geschwindigkeit wird das wohl über 5,5 Stunden dauern. Aber wie gesagt, das läuft auf dem Server, und ich muß meinen Rechner nicht die ganze Zeit laufen lassen.
Abonnieren
Posts (Atom)




















