Wie wir Librem 5 DevKit vollständig in freier Software entwickelt haben

Vom Übersetzer: Librem 5 (beim Rendern) - ein sicheres Smartphone für Linux von Purism, das aufgrund von Crowdfunding auf der offensten Hardware und Software erstellt wird.

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

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

KiCad - die offensichtliche Wahl für EDA

Vor Beginn der Entwicklung war nicht klar, wie das Projekt entwickelt werden sollte. Insbesondere welches Tool zur Automatisierung des elektronischen Designs (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. Wir hatten jedoch sofort zwei Hauptprobleme: Es wurde der archaische i.MX 6QP-Prozessor verwendet, und noch schlimmer, das Board wurde im proprietären Altium-System entwickelt . Glücklicherweise hatte ich bereits Erfahrung mit dem Entwerfen von Elektronik mit EDA KiCad, sodass wir es geschafft haben, ein Devkit-Design mit 100% freier Software zu erstellen.

KiCad ist eine offensichtliche Wahl, nicht nur wegen der kostenlosen Lizenz (GNU GPLv3 +), sondern auch, weil es ein sehr funktionales Elektronik-Design-Kit ist, das sogar einige teure proprietäre Tools übertrifft.

Auswahl der Komponenten, die den Anforderungen entsprechen


Der erste Schritt bei der Entwicklung von Devkits besteht darin, Komponenten zu finden, die den während der Kampagne ermittelten Anforderungen entsprechen. Zusätzlich zur Einhaltung der angegebenen Spezifikationen haben wir uns bei der Suche nach Komponenten dazu entschlossen, ein paar zusätzliche Schnickschnack hinzuzufügen. einschließlich:

  • Laderegler (BQ25896)
  • 18650 Batteriehalter für optionale Lithium-Ionen-Batterie
  • USB-C
  • Mini-HDMI
  • SD-Kartencontroller und Micro-SD-Steckplatz (da der i.MX 8M nur zwei uSDHC-Controller hat)
  • Ethernet / RJ45
  • Audio-Codec
  • Hörerlautsprecher
  • das Mikrofon
  • CTIA / AHJ 4-polige 3,5-mm-Kopfhörerbuchse (mit Wahl zwischen eingebautem und externem Mikrofon)
  • GPG Chipkartenleser
  • Vibrationsmotor
  • programmierbare LED
  • Lautstärke- und Ein- / Ausschalter
  • Hardware-Schalter und Boot-Modus-Schalter
  • Flash-Speicher 16 MB SPI NOR
  • Echtzeituhr (RTC)

Wie geplant haben wir Durchgangslöcher für UART-Debugging-Kontakte hinzugefügt, die standardmäßig nicht ausgelastet sind (seriell über USB wird auf dem mit dem Devkit gelieferten Standard-Image ausgeführt). Tipp: Wenn Sie nicht gerne löten, unterstützt der Header die Presspassung. Suchen Sie nach der Autosplice-Teilenummer 23-1063. Auf der Platine befindet sich eine Auflagefläche SMD 2 × 5 JTAG, deren Funktionalität am Prototyp getestet wurde. Wenn Sie herumspielen möchten, suchen Sie nach der Teilenummer GRPB052VWQS-RC.

Für das WWAN / Basisband-Modem und WiFi + BT war klar, dass Sie einige vorgefertigte Module finden müssen, beispielsweise mit Oberflächenmontage. Schon früh hatte Nicole die geniale Idee, die Module mPCIe und M.2 zu verwenden, damit die Devkits modular aufgebaut werden und in Zukunft ein Upgrade möglich ist. Am Ende haben wir uns für das mPCIe SIMCom SIM7100A / E-Modemmodul und das M.2 RedPine RS9116 Wi-Fi + BT-Modul entschieden.

Beginnen Sie mit dem Zeichnen


Am Ende der Forschungsphase sollten wir beginnen, unsere Ideen umzusetzen. Der i.MX 8M Quad-Prozessor ist gerade auf den Markt gekommen. Um von Anfang an einen Durchbruch in der Entwicklung zu erzielen sowie Modularität und die Möglichkeit zukünftiger Updates hinzuzufügen, haben wir uns für die Option System-on-Module (SOM) entschieden , einschließlich SoC, SDRAM, eMMC und PMIC. Aber selbst in den frühen Entwicklungsstadien, als wir gerade anfingen, Diagramme zu zeichnen, hatte die Serienproduktion einiger der für uns interessanten SOMs noch nicht begonnen. Mitte April haben wir gute Beziehungen zu EmCraft aufgebaut, das gerade den ersten großen SOM-Produktionszyklus begonnen hatte und kurz vor der Veröffentlichung einer Spezifikation für die Hardwarearchitektur stand. Wir haben entschieden, dass EmCrafts SOM und ihre Ressourcen genau das sind, was wir brauchen. Sobald ein bestimmter SOM ausgewählt wurde, begannen wir sofort mit dem Zeichnen von Diagrammen.

Der Prozess der Auswahl spezifischer Komponenten für das Devkit wurde gleichzeitig mit der Erstellung von Schemata durchgeführt. Alle Arbeiten wurden im Git-Versionskontrollsystem durchgeführt.


Abb. 1. Vorzeitige Überarbeitung des Schemas vom 2. Mai (Hash des Git Commit 023915d5)

Nach Abschluss der Programme haben wir die Netzlistendatei exportiert, was uns der Implementierung von devkit im Leben erheblich näher gebracht hat.

Modellierung von HP_DET


Zusätzlich zu KiCad verwendeten wir aus freier Software ein Tool namens Qucs-S und ein SPICE-kompatibles Xyce- Emulationstool, um einen Kopfhörersensorchip zu emulieren, der eine Zenerdiode enthält, um den entsprechenden GPIO vor zu hoher oder zu niedriger Eingangsspannung vor der Ausgabe von HP DAC zu schützen Audio-Codec. Die Kombination von Qucs-S und Xyce ermöglichte die Verwendung des MMS-SP4- Modells der MMSZ4688T1G-Diode im Chip , das den physikalischen Zustand des 3,5-mm- Blindsteckers bei gleichzeitig aktivem HP DAC am besten darstellt.


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

Diese Nachahmung sowie ein einfaches DC-Gehäuse, bei dem der interne Schalter des 3,5-mm-Steckers offen ist und 1 MΩ nur die Standardspannung von 3V3_P erreicht, stellten sicher, dass die spezifische Schutzmethode wirklich funktioniert.

Erstellen Sie Websites


Mitte Juni haben wir die Erstellung der Stückliste abgeschlossen , Bestellungen für Komponenten aufgegeben und die Umrisse aller Standorte im Gerät (Chips, Steckverbinder, Module usw.) erstellt. Wir haben die empfohlenen Eigenschaften aus der Dokumentation entnommen und viermal überprüft, ob alles korrekt war.


Abb. 3. Die Plattform des Ladereglers BQ25896 (U301 auf der Entwicklungsplatine unter dem SOM)

Im atemberaubenden 3D-Anzeigemodus von KiCad haben wir dreidimensionale Umrisse fast aller Komponenten erstellt.


Abb. 4. 3D-Modell des Ladereglers BQ25896

KiCad Level-für-Level-Planung, Verkabelung und Aktualisierung


Zu Beginn wurde ein grober Pegelplan erstellt , um schnell herauszufinden, welcher Bereich der integrierten Schaltung verwendet werden würde (90 × 180 mm) und wo die größeren Komponenten (Steckverbinder, Buchsen, Kartensteckplätze, mPCIe- und M.2-Buchsen, Module usw.) platziert werden müssen. d.). Nach dem Platzieren auf dem Steckbrett bewegten sich einige Details noch, fixierten sich jedoch schnell an bestimmten Stellen.

Ende Juni haben wir mit der Verkabelung begonnen, beginnend mit USB-C (Commit a1bfc689). Dies war der Beginn des Prototyping.


Abb. 5. Zuerst mit der Verkabelung festschreiben


Abb. 6. Wie war das USB-C-Layout am Ende?


Abb. 7. Eine frühe Version der Schaltung, bevor Komponenten und Verkabelung platziert werden

Der Verdrahtungsprozess erforderte ein ausgewogenes Verhältnis zwischen Arbeitsgeschwindigkeit und der Überprüfung, ob alles fehlerfrei durchgeführt wurde, einschließlich einer sorgfältigen Verdrahtung der Widerstandskontrollspuren und empfindlichen analogen Leitungen.

Anfangs gab es keine Gewissheit, wie viele Schichten benötigt wurden und ob Komponenten auf beiden Seiten der Platine platziert werden sollten. Wir wussten, dass die i.MX 8M-Karte auf beiden Seiten acht Schichten und Komponenten hatte, aber wir waren uns sicher, dass wir die Anzahl der Schichten reduzieren konnten. Wir haben schnell erkannt, dass Sie auf der Rückseite der Platine unbedingt Komponenten platzieren müssen, da sich auf dem Telefon einige Module auf der Rückseite der Platine (Anzeigeseite) befinden, darunter Displayanschlüsse, Näherungs- / Lichtsensor, programmierbare LED, Lautsprecher und Mikrofon. Das Vorhandensein von Komponenten auf beiden Seiten erleichterte den Layoutprozess ein wenig, da ein wenig Platz für SPI NOR-Flash-Speicher, Kartenleser, RTC, 2,8-V-LDO, verschiedene ICs und andere Komponenten frei wurde. Die Anzahl der Schichten haben wir auf sechs reduziert. Wir haben beschlossen, nur dann zwei weitere Schichten hinzuzufügen, wenn wir in einer Sackgasse stecken bleiben und keine Ketten legen können. Glücklicherweise geschah dies nicht und es gab ein sechsschichtiges Design.

Wir haben uns für ein gemeinsames Layout entschieden, das ein optimales Gleichgewicht zwischen einfacher Verkabelung und Reduzierung unbeabsichtigter Emissionen bietet. Als dielektrisches Substrat verwendeten wir Laminat mit NP-180TL-Kupferfolie von NAN YA, das bei unserer durchschnittlichen Betriebsfrequenz von etwa 1,7 GHz eine relative Permittivität von etwa 4,11 aufweist. Unsere Berechnungen der HF-Zuleitung für Mikrostreifen- und koplanare Wellenleiterplatinen-Zuleitungen (CPW) unter Verwendung dieser Anordnung finden Sie im Git-Repository.


Abb. 8: Layout der Devkit-Ebenen

Vor der Implementierung von devkit in KiCad wussten wir nicht, ob wir Alpha-Versionen veröffentlichen oder uns an die klassischen stabileren Versionen wie 4.0.7 halten sollten. Obwohl die "nächtlichen Builds" mehrere nützliche Funktionen haben, haben wir uns dennoch entschlossen, stabile Versionen beizubehalten, damit wir KiCad nicht häufig aktualisieren müssen und das Auftreten mehrerer gleichzeitiger Versionen riskieren.

Als wir mit der Arbeit begannen, wurde KiCad Version 5.0.0 veröffentlicht! Am 16. Juli haben wir das Projekt problemlos auf KiCad 5.0.0 aktualisiert (insbesondere die Commits 4f70b865 und a4e3de8a). Glücklicherweise fiel dieses Update mit dem Übergang der meisten unserer passiven Komponenten von 0603 auf 0402 zusammen, da sich die neuen Pads in KiCad geringfügig von den alten Standardwerten unterscheiden und die Pads abgerundete Ecken haben, die für bleifreies Löten effektiver sind.

Nach dem Update auf 5.0.0 haben wir uns auf das Prototyping konzentriert - und innerhalb eines Monats (nämlich am 14. August mit einem Commit von 9b4dd2e0) die Anzahl der unverdünnten Schaltkreise auf Null gebracht.


Abb. 9: Der Release-Kandidat vom 14. August mit 9b4dd2e0-Commit hat eine Anzahl von unverdünnten Schaltkreisen von Null aufgezeichnet

Nach Abschluss des Layouts und Überprüfung des Design Rules Check (DRC) haben wir das Layout eine Woche lang bereinigt.

Beim Prototyping eines Boards waren die nützlichsten Ressourcen ein Referenzhandbuch für das Prototyping integrierter Schaltkreise aus der offiziellen Dokumentation und ein Toradex-Prototyping-Handbuch .


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

Dateien exportieren und an die Produktion senden


Nach Abschluss des Layouts mussten alle für die Herstellung und Montage von Platinen erforderlichen Dateien exportiert werden. Das Exportieren von Gerber-Dateien nach KiCad ist ganz einfach. Der Auftragnehmer forderte jedoch ein anderes Schema und Layout für die Montage an, was einige Anstrengungen erforderte.

Für den Export von Vorschaudateien haben wir normalerweise Gerbv von gEDA verwendet. So sieht unser Devkit in Gerblook aus - dieses Tool verwendet Gerbv und ImageMagick für das Web-Rendering.


Abb. 11. Gerber-Devkit-Dateien bei Anzeige in Gerbv

Um die Zeichnung des gewünschten Typs zu erstellen, haben wir die F.Fab / B.Fab-Ebenen verwendet. Sie zeigen die Positionen, Konturen, Polarität und Referenzsymbole aller Komponenten auf der Platine an. Mithilfe der F / B.Fab-Ebenen für jede Site konnten wir die endgültige Zeichnung erstellen, indem wir F.Fab und B.Fab in separate PDF-Dateien druckten und sie dann zu einem Dokument kombinierten.


Abb. 12. Schema der SOM

Noch mehr mussten an einem Produktionsplan arbeiten. Dazu mussten Sie Notizen aus der Cmts.User-Ebene zusammen mit der Leiterplatte als ein DXF-Archiv exportieren und anschließend alle Markierungen zum Bohren von Löchern als ein weiteres DXF-Archiv exportieren. Nach dem Erstellen dieser beiden Dateien werden sie in der Zeichnung der gesamten Site (Footprint) kombiniert. Nachdem wir diesen speziellen „Footprint“ erhalten haben, der zwei DXF-Dateien kombiniert, verstecken wir fast alles im Layout - und importieren diesen speziellen Footprint „für die Fabrik“ (ohne das temporäre Layout zu speichern). Im Moment befindet sich alles, was Sie brauchen, auf der Ebene Dwgs.User. Daher können Sie es zusammen mit dem Rahmen im endgültigen PDF für die Produktion drucken.


Abb. 13. Tags zum Bohren von Löchern

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

Prototypentest


Wir haben die endgültigen Dateien zur Produktion geschickt, alle Fragen des Auftragnehmers beantwortet und alles geändert, was er gestellt hat. Die Akten wurden Ende August verschickt - und wir freuten uns darauf, als unser Design in Shenzhen ans Fließband kam. Leider kam es, wie wir im Blog sagten , aufgrund unvorhergesehener Umstände wie Unwetter und der Goldenen Woche [Nationalfeiertag in China - ca. trans.]. Aufgrund dieser Verzögerungen haben wir uns entschlossen, die Produktion von Prototypen in einem heimischen Werk zu bestellen, das uns zwei Wochen schneller als die Chinesen Boards lieferte.


Abb. 14. Das Prototyp-Panel devkita v0.1.2 (vor dem Zusammenbau)

Nach dem Zusammenbau einer kleinen Menge von Prototypen wurden diese schnell zum Debuggen und zur Softwareentwicklung an unsere Ingenieure gesendet. Glücklicherweise gab es dank der öffentlichen Diskussion und einer umfassenden Analyse des Designs nur sehr wenige Fehler in der Hardware (drei relativ geringfügige Anpassungen des Layouts / der Liste der Schaltkreise und eine mechanische Korrektur). In den nächsten zwei Monaten wurden Prototypen verwendet, um die Software zu polieren.

Endgültige Produktion und Lieferung


Anfang und Mitte November haben wir nach geringfügigen Anpassungen am Design und Überprüfung fast aller Hardware-Subsysteme die Dateien erneut exportiert und für die Produktion und Endmontage freigegeben. Einige unserer Mitarbeiter haben vom 10. bis 22. Dezember beim Zusammenbau, Testen, Verpacken und Versenden von Devkits an unsere Bäcker geholfen (viele wurden vor Weihnachten geliefert!).


Abb. 15. Die endgültige Ansicht des Devkit-Panels v1.0.0 (vor dem Zusammenbau)



Abb. 16. Komplett montiertes Devkit im Vergleich zum 3D-Modell (Anzeigeseite)




Abb. 17. Komplett zusammengesetztes Devkit im Vergleich zum 3D-Modell (SOM-Seite)

Der gesamte Prozess war sehr aufwändig, hat sich aber gelohnt. Besonders als wir sahen, wie fruchtbar die Community die Ergebnisse unserer Arbeit nutzen kann. Einige haben bereits begonnen, 3D-gedruckte Hüllen für devkita zu entwickeln. Ich bin gespannt, welche coole Software und welche Anwendungsfälle Sie für diese erstaunlichen Boards entwickeln werden! Fühlen Sie sich frei, alle coolen Sachen per E-Mail an feedback@puri.sm zu melden. Wenn es wirklich super ist, werden wir in zukünftigen Blog-Posts über Ihre Entwicklung sprechen.

Jetzt geben wir immer Librem 5-Telefone aus. Verlieren Sie also bis zum nächsten Mal nicht Ihren Erfindungsreichtum!

Source: https://habr.com/ru/post/de436022/


All Articles