Wie wir den Librem 5-Entwickler vollständig auf freier Software entwickelt haben

Ursprünglicher Autor: Eric Kuzmenko
  • Übersetzung
Vom Übersetzer: Librem 5 (auf dem Render) - ein geschütztes Smartphone für Linux der Firma Purism, das mit Crowdfunding auf der offensten Hard- und Software erstellt wird .

Heute werden wir über die Entwicklung des Librem 5 Developer Kit sprechen und darüber, wie wir bei der Entwicklung nur 100% freie Software verwendet haben.

Das Design des Devkits wird unter den Bedingungen der GNU GPLv3 + Lizenz veröffentlicht, das Git-Hardware-Repository befindet sich hier .

KiCad ist eine naheliegende Entscheidung für EDA.

Vor Beginn der Entwicklung war nicht klar, auf welche Weise das Projekt entwickelt werden soll. Welches Werkzeug für das Design der Automatisierungselektronik (EDA) zu wählen ist. Ursprünglich bestand die Idee darin, das i.MX 6QP OpenRex-Board von FEDEVEL zu ändern, um alle Anforderungen für das Devkit zu erfüllen, aber wir hatten sofort zwei Hauptprobleme: Sie verwendeten einen archaischen i.MX 6QP-Prozessor, und noch schlimmer wurde das Board in einem proprietären Altium-System entwickelt . Glücklicherweise hatte ich bereits Erfahrung mit dem Entwurf von Elektronik mit EDA KiCad. Daher ist es uns gelungen, ein Devkit-Design mit 100% freier Software zu erstellen.

KiCad ist nicht nur aufgrund der kostenlosen Lizenz (GNU GPLv3 +) eine offensichtliche Wahl, sondern auch, weil es ein sehr funktionales Set für die Entwicklung von Elektronik ist, das sogar einige teure proprietäre Tools übertrifft.

Auswahl der Komponenten, die die Anforderungen erfüllen


Der erste Schritt bei der Entwicklung von Devkit besteht darin, Komponenten zu finden, die den während der Kampagne definierten Anforderungen entsprechen. Neben der Einhaltung der angegebenen Spezifikationen haben wir uns bei der Suche nach Komponenten für ein paar zusätzliche Schnickschnack entschieden. einschließlich:

  • Laderegler (BQ25896)
  • 18650 Batteriehalter für optionale Lithium-Ionen-Batterie
  • USB-C
  • Mini-HDMI
  • SD-Kartencontroller und Micro-SD-Anschluss (da i.MX 8M nur über zwei uSDHC-Controller verfügt)
  • Ethernet / RJ45
  • Audio-Codec
  • Kopfhörerlautsprecher
  • ein Mikrofon
  • 4-poliger 3,5-mm-Kopfhörerausgang (CTIA / AHJ) (mit Wahl zwischen eingebautem und externem Mikrofon)
  • GPG-Chipkartenleser und -anschluss
  • Vibrationsmotor
  • programmierbare LED
  • Lautstärke- und Power-Tasten
  • Hardware-Schalter und Boot-Modus-Schalter
  • 16Mb SPI NOR Flash-Speicher
  • Echtzeituhr (RTC)

Wie geplant haben wir Löcher für UART-Debugging-Pins hinzugefügt, die standardmäßig nicht belegt sind (Seriell über USB funktioniert mit dem Standardabbild, das mit dem Devkit geliefert wird). Hinweis: Wenn Sie nicht gern löten, unterstützen Hecken die Presspassung, suchen Sie nach der Teilenummer Autosplice 23-1063. Die Platine verfügt über eine SMD 2 × 5-JTAG-Support-Oberfläche. Die Funktionalität wurde an einem Prototyp getestet. Wenn Sie herumspielen möchten, suchen Sie nach der Teilenummer GRPB052VWQS-RC.

Für das WWAN / Baseband-Modem und WiFi + BT war es klar, dass Sie einige vorgefertigte Module suchen müssen, zum Beispiel mit Oberflächenmontage. Schon früh hatte Nicole die geniale Idee, aus den Modulen mPCIe und M.2 Modulmodule herzustellen, die in Zukunft ein Upgrade ermöglichen könnten. Am Ende stoppten wir beim SIMCom SIM7100A / E mPCIe-Modemmodul und beim M.2 RedPine RS9116 Wi-Fi + BT-Modul.

Beginnen Sie mit dem Zeichnen


Am Ende der Forschungsphase mussten wir unsere Ideen umsetzen. Der i.MX 8M Quad-Prozessor ist gerade auf dem Markt erschienen. Um einen Durchbruch in der Entwicklung zu erzielen und um Modularität und die Möglichkeit zukünftiger Upgrades hinzuzufügen, haben wir uns für die System-on-Module (SOM) -Option entschieden , die SoC, SDRAM, eMMC und PMIC umfasst. Aber selbst in den frühen Entwicklungsstadien, als wir gerade mit dem Zeichnen von Diagrammen begannen, hatte die Serienproduktion einiger der für uns interessanten SOMs noch nicht begonnen. Mitte April haben wir eine gute Beziehung zu EmCraft aufgebaut, die gerade den ersten großen SOM-Produktionszyklus gestartet hat und kurz vor der Veröffentlichung einer Hardwarearchitektur-Spezifikation stand. Wir haben entschieden, dass EmCraft SOM und seine Ressourcen genau das sind, was wir brauchen. Sobald ein bestimmtes SOM ausgewählt wurde, wurden sofort Diagramme gezeichnet.

Die Auswahl spezifischer Komponenten für Geräte wurde gleichzeitig mit dem Mapping durchgeführt. Alle Arbeiten wurden im Git-Versionskontrollsystem ausgeführt.


Abb. 1. Frühe Ausgabe des Schemas vom 2. Mai (Hash von git-commit 023915d5)

Nach Abschluss des Schemas haben wir die Netzlistendatei exportiert , wodurch wir den devitch näher bringen konnten.

HP_DET-Simulation


Neben KiCad haben wir aus freier Software auch ein Tool namens Qucs-S und ein SPICE-kompatibles Xyce- Emulationstool zum Emulieren des Kopfhörer-Sensorchips verwendet, der eine Zenerdiode enthält, um den entsprechenden GPIO vor zu hoher oder zu niedriger Eingangsspannung vor dem HP DAC-Ausgang zu schützen Audio-Codec. Die Kombination aus Qucs-S und Xyce ermöglichte die Verwendung des SPICE-Modells der MMSZ4688T1G-Diode im Chip , das den physischen Zustand der leeren 3,5-mm-Buchse mit gleichzeitig aktivem HP DAC am besten darstellt.


Abb. 2. Simulation des HP_DET-Schemas mit Qucs-S und Xyce

Diese Nachahmung sowie der einfache Fall von Gleichstrom, bei dem der interne 3,5-mm-Klinkenschalter offen ist und 1 MΩ nur die Standardspannung von 3V3_P erreicht, stellte sicher, dass eine bestimmte Schutzmethode wirklich funktioniert.

Sites erstellen


Um Mitte Juni haben wir die Erstellung einer Liste von Materialien (BOM) abgeschlossen , mit der Bestellung von Komponenten begonnen und mit der Erstellung der Umrisse aller Standorte im Gerät (Chips, Steckverbinder, Module usw.) begonnen. Wir haben die empfohlenen Spezifikationen aus der Dokumentation übernommen und viermal geprüft, ob alles korrekt ist.


Abb. 3. Plattform des Ladereglers BQ25896 (U301 auf der Entwicklungsplatine, befindet sich unter SOM)

In einer hervorragenden 3D-Ansicht haben wir mit KiCad dreidimensionale Konturen fast aller Komponenten erstellt.


Abb. 4. Laderegler für 3D-Modell BQ25896

Stufenplanung, Layout und KiCad-Update


In einem frühen Stadium wurde ein grober Ebenenplan erstellt , um schnell abzuschätzen, welche Fläche des integrierten Schaltkreises (90 × 180 mm) verwendet werden soll und wo größere Komponenten (Anschlüsse, Buchsen, Kartensteckplätze, mPCIe- und M.2-Sockel, Module und Module) platziert werden sollten d.) Nach dem Einfügen in das Layout bewegten sich einige Details noch, wurden jedoch an bestimmten Stellen schnell konsolidiert.

Ende Juni begannen wir mit dem Layout, beginnend mit USB-C (Commit a1bfc689). Dies markiert den Beginn des Layouts.


Abb. 5. Die Commit zuerst Verteilen


Fig. 6. Was war das Endergebnis des USB-C-Layouts


? 7. Frühe Version des Schemas vor dem Platzieren von Komponenten und Verdrahtung

Der Verdrahtungsprozess erforderte ein sensibles Gleichgewicht zwischen Geschwindigkeit und der Überprüfung, ob alles korrekt und fehlerfrei ausgeführt wurde, einschließlich sorgfältiger Routenführung der Widerstandssteuerspuren und empfindlicher Analogleitungen.

Zunächst war nicht sicher, wie viele Schichten benötigt werden und ob Komponenten auf beiden Seiten der Platine platziert werden sollten. Wir wussten, dass sich auf der i.MX 8M-Platine auf beiden Seiten acht Schichten und Komponenten befinden, aber wir waren uns sicher, dass wir die Anzahl der Schichten reduzieren können. Schnell wurde uns klar, dass die Rückseite der Platine mit Komponenten bestückt werden müsste, da sich am Telefon einige Module auf der Platinenrückseite (Anzeigeseite) befinden, einschließlich Display-Anschlüsse, Annäherungssensor / Lichtsensor, programmierbare LED, Lautsprecher und Mikrofon. Das Vorhandensein von Komponenten auf beiden Seiten hat den Layout-Prozess etwas vereinfacht, da ein wenig Platz für SPI-NOR-Flash-Speicher, Kartenleser, RTC, 2,8-V-LDO, verschiedene ICs und andere Komponenten geschaffen wurde. Wir haben uns entschieden, die Anzahl der Schichten auf sechs zu reduzieren. Zwei zusätzliche Schichten entschieden sich für das Hinzufügen nur wenn wir in einer Sackgasse stecken und keine Ketten bahnen können. Glücklicherweise passierte dies nicht und das Design mit sechs Schichten blieb erhalten.

Wir haben uns für ein gemeinsames Layout entschieden, das ein optimales Gleichgewicht zwischen einfacher Verdrahtung und weniger ungewollten Emissionen bietet. Als dielektrisches Substrat haben wir ein Laminat mit einer NP-180TL-Kupferfolie von NAN YA genommen, das bei unserer durchschnittlichen Betriebsfrequenz von etwa 1,7 GHz eine relative Dielektrizitätskonstante von etwa 4,11 aufweist. Unsere RF-Stromleitungsberechnungen für Microstrip- und Coplanar-Waveguide-Stromleitungen der Platine (CPW) mit diesem Layout finden Sie im Git-Repository.


Abb. 8: Devikit-Layout

Vor der Implementierung von devikit in KiCad wussten wir nicht, ob wir Alpha-Versionen freigeben oder an den klassischen stabileren Versionen wie 4.0.7 festhalten möchten. Obwohl die „Nightly Builds“ einige nützliche Funktionen enthalten, haben wir uns dennoch für stabile Releases entschieden, sodass wir KiCad nicht regelmäßig aktualisieren müssen und das Auftreten mehrerer gleichzeitiger Versionen riskieren.

Als wir angefangen haben, wurde KiCad Version 5.0.0 veröffentlicht! Am 16. Juli haben wir das Projekt ohne Probleme auf KiCad 5.0.0 aktualisiert (insbesondere Commit 4f70b865 und a4e3de8a). Glücklicherweise fiel dieses Update mit dem Übergang der meisten passiven Komponenten von 0603 auf 0402 zusammen, da sich die neuen Standorte in KiCad geringfügig von den alten Standardwerten unterscheiden und die abgerundeten Ecken der Standorte für bleifreies Lot besser geeignet sind.

Nach dem Update auf 5.0.0 konzentrierten wir uns auf das Prototyping. Innerhalb eines Monats (nämlich am 14. August mit einem Commit von 9b4dd2e0) wurde die Anzahl der ungelösten Ketten auf null reduziert.


Abb. 9: Release-Kandidat vom 14. August mit einem Commit 9b4dd2e0 fixierte eine Null-Anzahl unverdünnter Ketten

Nach Abschluss der Routing- und Design Rules Check (DRC) haben wir das Layout für eine Woche festgelegt.

Beim Prototyping der Platine waren die nützlichsten Ressourcen das Nachschlagewerk zum Prototyping integrierter Schaltkreise aus der offiziellen Dokumentation und der Toradex-Prototyping-Leitfaden .


Abb. 10. Endgültiges Layout (kupferbeschichtete Bereiche sind nicht sichtbar)

Dateien exportieren und an die Produktion senden


Nachdem das Layout fertiggestellt war, mussten alle für die Produktion und Montage der Platinen erforderlichen Dateien exportiert werden. Das Exportieren von Gerber-Dateien nach KiCad ist ziemlich einfach. Der Auftragnehmer forderte jedoch ein anderes Layout und Layout für die Baugruppe, was einen gewissen Aufwand erfordert.

Wir haben in der Regel Gerbv von gEDA verwendet, um eine Vorschau der Dateien beim Export anzuzeigen. So sieht unser Devkit in Gerblook aus - dieses Tool verwendet Gerbv und ImageMagick für das Web-Rendering.


Abb. 11. Gerber Devkit-Dateien beim Browsen in Gerbv

Um eine Zeichnung des gewünschten Typs zu erstellen, haben wir die Ebenen F.Fab / B.Fab verwendet. Sie zeigen die Positionen, Konturen, Polarität und Referenzbezeichnungen aller Komponenten auf der Platine an. Mit den F / B.Fab-Ebenen für jede Site konnten wir die endgültige Zeichnung erstellen, indem F.Fab und B.Fab in separaten PDF-Dateien ausgedruckt und dann in einem Dokument zusammengefügt wurden.


Abb. 12. Schema von SOM

Es musste noch mehr an dem Schema für die Produktion gearbeitet werden. Dazu mussten Sie Notizen aus der Cmts.User-Ebene zusammen mit der Board-Gliederung als ein DXF-Archiv exportieren und anschließend alle Markierungen für das Bohren von Löchern als ein anderes DXF-Archiv exportieren. Nachdem Sie diese beiden Dateien erstellt haben, werden sie in der Footprint-Zeichnung kombiniert. Nachdem wir diesen speziellen „Footprint“, der zwei DXF-Dateien enthält, erhalten haben, verstecken wir fast alles im Layout - und importieren diesen speziellen Footprint „für die Anlage“ (ohne das temporäre Layout zu speichern). Im Moment befindet sich alles, was Sie brauchen, auf der Dwgs.User-Ebene. Daher können Sie es zusammen mit dem Rahmen in das endgültige PDF für die Produktion drucken.


Abb. 13. Markierungen zum Bohren von Löchern

Zusammen mit all diesen Dateien und Dokumenten wird die IPC-D-356-Netzliste verwendet, mit der die Anlage einen Test mit der "Flying Probe" -Methode durchführen kann und sicherstellen kann, dass kein Kurzschluss oder eine Unterbrechung vorliegt. Wir haben auch eine CSV-Datei vorbereitet (damit die Fabrik wusste, wo sie platziert und wie sie alle Komponenten ausrichten sollen) und schließlich eine manuell bearbeitete GenCAD-Datei (zum Programmieren eines Lötroboters).

Prototypentest


Wir haben die endgültigen Dateien zur Produktion geschickt, alle Fragen des Auftragnehmers beantwortet und alles geändert, was sie wollten. Die Akten wurden Ende August verschickt - und wir warteten ungeduldig darauf, dass unser Design in Shenzhen am Montageband auftauchte. Leider, wie wir im Blog erzählten , kam es aufgrund unvorhergesehener Umstände wie Unwetter und Goldene Woche zu erheblichen Verzögerungen bei der Herstellung von Prototypen. trans.]. Aufgrund dieser Verzögerungen entschieden wir uns, die Produktion von Prototypen in einem inländischen Werk zu bestellen, das uns die Boards zwei Wochen schneller lieferte als die Chinesen.


Abb. 14. Der Prototyp des Devkit-Panels v0.1.2 (vor der Montage)

Nach dem Bau einer kleinen Serie von Prototypen wurden sie schnell zum Debugging und zur Softwareentwicklung an unsere Ingenieure geschickt. Glücklicherweise gab es aufgrund öffentlicher Diskussionen und einer umfassenden Analyse des Designs nur sehr wenige Fehler in der Hardware (drei relativ geringfügige Anpassungen des Layouts / der Liste der Schaltungen und eine mechanische Korrektur). In den nächsten zwei Monaten wurden Prototypen verwendet, um die Software zu polieren.

Endfertigung und Lieferung


Nachdem wir Anfang Mitte November geringfügige Anpassungen an Design und Test fast aller Hardware-Subsysteme vorgenommen hatten, führten wir ein Reexportverfahren durch und veröffentlichten die Dateien erneut für die Produktion und Endmontage. Einige unserer Mitarbeiter haben vom 10. bis zum 22. Dezember mitgeholfen, beim Zusammenstellen, Testen, Verpacken und Versenden von Beilagen an unsere Bäcker (viele vor Weihnachten geliefert!) Zu helfen


. 15. Die endgültige Ansicht des Devkit-Bedienfelds der Version 1.0.0 (vor der Montage)



. Abbildung 16. Vollständig zusammengebautes Gerät im Vergleich zum 3D-Modell (Anzeigeseite)





. 17. Komplett montiertes Gerät im Vergleich zum 3D-Modell (SOM-Seite)

Der gesamte Prozess war sehr aufwendig, aber es hat sich gelohnt. Besonders wenn wir gesehen haben, wie fruchtbar die Gemeinschaft die Ergebnisse unserer Arbeit nutzen kann. Einige haben bereits begonnen, 3D-gedruckte Gehäuse für ein Devkit zu entwickeln. Ich kann es kaum erwarten zu sehen, welche coole Software und welche Anwendungsfälle Sie für diese erstaunlichen Karten finden werden! Fühlen Sie sich frei, alle coolen Sachen per E-Mail an feedback@puri.sm. Wenn dies wirklich großartig ist, werden wir in zukünftigen Blogbeiträgen über Ihre Entwicklung sprechen.

Jetzt haben wir alle Zeit, um Librem 5-Telefone auszusenden, und verliert keine Ressourcen!

Jetzt auch beliebt: