Dari penerjemah: Librem 5 (on render) - smartphone yang aman untuk Linux dari Purism, yang dibuat pada perangkat keras dan perangkat lunak paling terbuka karena crowdfunding .Hari ini kita akan berbicara tentang pengembangan Kit Pengembang Librem 5 dan bagaimana kita menggunakan hanya 100% perangkat lunak gratis dalam pengembangannya.
Desain devkit diterbitkan dengan ketentuan lisensi GNU GPLv3 +, repositori perangkat keras Git
ada di sini .
KiCad - pilihan yang jelas untuk EDASebelum memulai pengembangan, tidak jelas ke arah mana untuk mengembangkan proyek. Secara khusus, alat mana yang dipilih untuk
otomatisasi desain elektronik (EDA) . Awalnya, idenya adalah mengubah papan OpenRex i.MX 6QP dari FEDEVEL untuk memenuhi semua persyaratan untuk devkit, tetapi kami segera menghadapi dua masalah utama: prosesor i.MX 6QP digunakan di sana, dan lebih buruk lagi, papan tersebut dikembangkan dalam sistem kepemilikan Altium. . Untungnya, saya sudah memiliki pengalaman mendesain elektronik menggunakan EDA KiCad, jadi kami berhasil membuat desain devkit menggunakan perangkat lunak 100% gratis.
KiCad adalah pilihan yang jelas, tidak hanya karena lisensi gratis (GNU GPLv3 +), tetapi juga karena itu adalah kit desain elektronik yang sangat fungsional yang bahkan melampaui beberapa alat eksklusif yang mahal.
Pemilihan komponen yang memenuhi persyaratan
Langkah pertama dalam pengembangan devkit adalah menemukan komponen yang memenuhi persyaratan yang diidentifikasi selama kampanye. Selain mengamati spesifikasi yang dinyatakan, saat mencari komponen, kami memutuskan untuk menambahkan beberapa lonceng dan peluit tambahan; termasuk:
- pengendali muatan (BQ25896)
- Dudukan baterai 18650 untuk baterai lithium-ion opsional
- USB-C
- mini HDMI
- Pengontrol kartu SD dan slot micro-SD (karena i.MX 8M hanya memiliki dua pengontrol uSDHC)
- Ethernet / RJ45
- codec audio
- speaker lubang suara
- mikrofon
- CTIA / AHJ 4-tiang jack headphone 3,5 mm (dengan pilihan antara mikrofon internal dan eksternal)
- Pembaca kartu pintar GPG
- motor getaran
- LED yang dapat diprogram
- tombol volume dan daya
- sakelar perangkat keras dan sakelar mode boot
- memori flash 16Mb SPI NOR
- jam waktu nyata (RTC)
Seperti yang direncanakan, kami menambahkan melalui lubang untuk kontak debugging UART yang tidak sibuk secara default (serial over USB berjalan pada gambar default yang datang dengan devkit). Petunjuk: jika Anda tidak suka menyolder, maka tajuk mendukung fit pers, cari nomor komponen Autosplice 23-1063. Di papan ada permukaan pendukung SMD 2 Γ 5 JTAG, dan fungsinya telah diuji pada prototipe; Jika Anda tertarik bermain-main, maka cari nomor bagian GRPB052VWQS-RC.
Untuk modem WWAN / baseband dan WiFi + BT, jelas bahwa Anda perlu menemukan beberapa modul yang sudah jadi, misalnya, dengan pemasangan di permukaan. Pada tahap awal, Nicole memiliki ide cemerlang untuk menggunakan modul mPCIe dan M.2 sehingga para devkits menjadi modular, dengan kemungkinan peningkatan di masa depan. Pada akhirnya, kami memilih modul modem mPCIe SIMCom SIM7100A / E dan modul M.2 RedPine RS9116 Wi-Fi + BT.
Mulai menggambar
Pada akhir fase penelitian, kita harus mulai mengimplementasikan ide-ide kita. Prosesor i.MX 8M Quad baru saja muncul di pasaran. Untuk mendapatkan terobosan dari awal pengembangan, serta menambah modularitas dan kemungkinan pembaruan di masa mendatang, kami memilih opsi
sistem-modul (SOM) , termasuk SoC, SDRAM, eMMC dan PMIC. Tetapi bahkan pada tahap awal pengembangan, ketika kami baru mulai menggambar diagram, produksi serial beberapa SOM yang menarik bagi kami belum dimulai. Sekitar pertengahan April, kami menjalin hubungan baik dengan EmCraft, yang baru saja memulai siklus produksi SOM besar pertama dan hampir merilis spesifikasi arsitektur perangkat keras. Kami memutuskan bahwa SOM EmCraft dan sumber dayanya tepat seperti yang kami butuhkan. Segera setelah SOM tertentu dipilih, kami segera mulai menggambar diagram.
Proses pemilihan komponen spesifik untuk devkit dilakukan bersamaan dengan persiapan skema. Semua pekerjaan dilakukan dalam sistem kontrol versi Git.
Fig. 1. Revisi awal skema 2 Mei (hash dari git commit 023915d5)Setelah menyelesaikan skema, kami mengekspor file
netlist , yang secara signifikan membawa kami lebih dekat ke implementasi devkit dalam kehidupan.
Memodelkan HP_DET
Selain KiCad, dari perangkat lunak bebas kami juga menggunakan alat yang disebut
Qucs-S dan
alat emulasi
Xyce yang kompatibel dengan SPICE untuk meniru chip sensor headphone, yang mencakup dioda zener untuk melindungi GPIO yang sesuai dari tegangan input yang terlalu tinggi atau terlalu rendah dari mengeluarkan DAC HP dari codec audio. Kombinasi Qucs-S dan Xyce memungkinkan untuk menggunakan model MMS-SP4
dari dioda MMSZ4688T1G dalam chip , yang paling mewakili kondisi fisik konektor
kosong 3,5 mm dengan HP DAC yang aktif secara bersamaan.
Fig. 2. Memodelkan skema HP_DET menggunakan Qucs-S dan XyceTiruan ini, serta casing DC sederhana, di mana sakelar internal konektor 3,5 mm terbuka dan 1MΞ© hanya mencapai tegangan standar 3V3_P, ini memastikan bahwa metode perlindungan spesifik benar-benar berfungsi.
Buat situs
Sekitar pertengahan Juni, kami menyelesaikan kompilasi
Daftar Bahan (BOM) , mulai memesan komponen dan mulai membuat garis besar semua situs di perangkat (chip, konektor, modul, dll.). Kami mengambil karakteristik yang direkomendasikan dari dokumentasi dan empat kali memeriksa bahwa semuanya benar.
Fig. 3. Platform pengontrol muatan BQ25896 (U301 pada dev-board, yang terletak di bawah SOM)Dalam mode tampilan 3D KiCad yang memukau, kami membuat garis besar tiga dimensi dari hampir semua komponen.
Fig. 4. Model 3D dari pengontrol muatan BQ25896Perencanaan, perkabelan, dan pembaruan level demi level KiCad
Pada tahap awal, sebuah
rencana tingkat kasar disusun untuk dengan cepat mengetahui area sirkuit terintegrasi yang akan digunakan (90 Γ 180 mm) dan di mana menempatkan komponen yang lebih besar (konektor, soket, slot kartu, soket mPCIe dan soket M.2, modul, dll. d.). Setelah penempatan di papan tempat memotong roti, beberapa detail masih bergerak, tetapi dengan cepat memperbaiki diri di tempat-tempat tertentu.
Pada akhir Juni, kami mulai memasang kabel, dimulai dengan USB-C (commit a1bfc689). Ini menandai awal dari pembuatan prototipe.
Fig. 5. Pertama-tama komit dengan kabel
Fig. 6. Bagaimana tata letak USB-C pada akhirnya?
Fig. 7. Versi awal dari rangkaian sebelum menempatkan komponen dan kabelProses pengkabelan membutuhkan keseimbangan yang rumit antara kecepatan kerja dan memverifikasi bahwa semuanya dilakukan dengan benar tanpa kesalahan, termasuk pengkabelan yang hati-hati dari trek kontrol tahanan dan saluran analog yang sensitif.
Awalnya, tidak ada kepastian berapa banyak lapisan yang dibutuhkan dan apakah komponen harus ditempatkan di kedua sisi papan. Kami tahu bahwa papan i.MX 8M memiliki delapan lapisan dan komponen di kedua sisi, tetapi kami yakin bahwa kami dapat mengurangi jumlah lapisan. Kami dengan cepat menyadari bahwa di sisi belakang papan Anda pasti harus menempatkan komponen, karena pada telepon beberapa modul terletak di sisi "belakang" papan (sisi tampilan), termasuk konektor display, sensor proximity / cahaya, LED yang dapat diprogram, speaker dan mikrofon. Kehadiran komponen di kedua sisi membuat proses tata letak sedikit lebih mudah, karena membebaskan sedikit ruang di mana Anda dapat menempatkan memori flash SPI NOR, pembaca kartu, RTC, 2.8V LDO, berbagai IC dan komponen lainnya. Adapun jumlah lapisan, kami memutuskan untuk menguranginya menjadi enam. Kami memutuskan untuk menambahkan dua lapisan tambahan hanya jika kami buntu dan tidak dapat memasang rantai apa pun. Untungnya, ini tidak terjadi dan ada desain enam lapis.
Kami memutuskan untuk menggunakan tata letak umum yang memberikan keseimbangan optimal antara kemudahan pemasangan kabel dan mengurangi emisi yang tidak disengaja. Sebagai substrat dielektrik, kami menggunakan laminasi foil tembaga NP-180TL dari NAN YA, yang memiliki permitivitas relatif sekitar 4,11 pada frekuensi operasi rata-rata sekitar 1,7 GHz. Perhitungan kami dari jalur umpan RF untuk jalur feed papan gelombang mikro (CPW) microstrip dan coplanar menggunakan pengaturan ini dapat ditemukan di repositori Git.
Fig. 8: Layout dari layer devkitSebelum menerapkan devkit di KiCad, kami tidak tahu apakah akan merilis versi alpha atau tetap menggunakan rilis klasik yang lebih stabil seperti 4.0.7. Meskipun "nightly builds" memiliki beberapa fitur yang bermanfaat, kami masih memutuskan untuk tetap merilis rilis stabil sehingga kami tidak perlu memperbarui KiCad sesering mungkin dan berisiko munculnya beberapa versi simultan.
Ketika kami mulai bekerja, KiCad versi 5.0.0 dirilis! Pada 16 Juli, kami meningkatkan proyek ke KiCad 5.0.0 (khususnya, 4f70b865 dan a4e3de8a berkomitmen) tanpa masalah. Untungnya, pembaruan ini bertepatan dengan transisi sebagian besar komponen pasif kami dari 0603 ke 0402, karena bantalan baru di KiCad sedikit berbeda dari nilai default lama, dan bantalan memiliki sudut bulat yang lebih efektif untuk solder bebas timbal.
Setelah memperbarui ke 5.0.0, kami fokus pada pembuatan prototipe - dan dalam waktu satu bulan (yaitu, 14 Agustus dengan komit 9b4dd2e0) membuat jumlah sirkuit yang tidak diencerkan menjadi nol.
Fig. 9: 14 Agustus kandidat pelepasan dengan 9b4dd2e0 komit mencatat jumlah nol sirkuit murniSetelah menyelesaikan tata letak dan memeriksa Pemeriksaan Aturan Desain (DRC), kami membersihkan tata letak selama seminggu.
Saat membuat prototipe papan, sumber daya yang paling berguna adalah panduan referensi untuk membuat prototipe sirkuit terpadu dari dokumentasi resmi dan
panduan prototipe Toradex .
Fig. 10. Tata letak akhir (area berlapis tembaga tersembunyi)Ekspor file dan kirim ke produksi
Setelah tata letak selesai, perlu untuk mengekspor semua file yang diperlukan untuk produksi dan perakitan papan. Mengekspor
file Gerber ke KiCad cukup sederhana. Namun, kontraktor meminta skema dan tata letak lain untuk perakitan, yang membutuhkan upaya.
Untuk mengekspor file pratinjau, kami biasanya menggunakan Gerbv dari gEDA.
Beginilah bentuk devkit kami di Gerblook - alat ini menggunakan Gerbv dan ImageMagick untuk rendering web.
Fig. 11. File devkit Gerber bila dilihat di GerbvUntuk membuat gambar dari tipe yang diinginkan, kami menggunakan layer F.Fab / B.Fab. Mereka menampilkan lokasi, kontur, polaritas, dan simbol referensi dari semua komponen di papan tulis. Menggunakan lapisan F / B.Fab untuk setiap situs, kami dapat membuat gambar terakhir dengan mencetak F.Fab dan B.Fab ke dalam file PDF yang terpisah, dan kemudian menggabungkannya ke dalam satu dokumen.
Fig. 12. Skema dari SOMLebih banyak lagi yang harus mengerjakan skema untuk produksi. Untuk melakukan ini, Anda harus mengekspor catatan dari lapisan Cmts.User bersama dengan papan sirkuit sebagai satu arsip DXF, dan kemudian mengekspor semua tanda untuk lubang pengeboran sebagai arsip DXF lainnya. Setelah membuat dua file ini, mereka digabungkan dalam gambar seluruh situs (tapak). Setelah menerima "jejak" khusus ini, yang menggabungkan dua file DXF, kami menyembunyikan hampir semua hal dalam tata letak - dan mengimpor jejak khusus ini "untuk pabrik" (tanpa menyimpan tata letak sementara). Saat ini, semua yang Anda butuhkan ada di layer Dwgs.User; oleh karena itu, Anda dapat mencetaknya bersama dengan bingkai di PDF akhir untuk produksi.
Fig. 13. Tag untuk lubang pengeboranBersama dengan semua file dan dokumen ini, daftar koneksi IPC-D-356 digunakan, dimana pabrik dapat melakukan
pengujian menggunakan metode "probe terbang" dan memverifikasi bahwa tidak ada hubungan pendek atau hubungan terbuka. Kami juga menyiapkan file CSV (sehingga pabrik tahu di mana harus menempatkan dan bagaimana mengarahkan semua komponen), dan, akhirnya, file GenCAD yang diedit secara manual (untuk pemrograman robot penyolderan pabrik).
Pengujian prototipe
Kami mengirim file akhir untuk produksi, menjawab semua pertanyaan kontraktor dan mengubah semua yang mereka tanyakan. File-file itu dikirim sekitar akhir Agustus - dan kami menantikan ketika desain kami mencapai jalur perakitan di Shenzhen. Sayangnya, seperti yang kami
katakan di blog , keterlambatan yang signifikan dalam produksi prototipe terjadi karena keadaan yang tidak terduga, seperti cuaca buruk dan Golden Week [hari libur nasional di Cina - sekitar. trans.]. Karena keterlambatan ini, kami memutuskan untuk memesan produksi prototipe di pabrik domestik, yang memberi kami papan dua minggu lebih cepat daripada Cina.
Fig. 14. Panel prototipe devkita v0.1.2 (sebelum perakitan)Setelah merakit sejumlah kecil prototipe, mereka dengan cepat dikirim ke teknisi kami untuk debugging dan pengembangan perangkat lunak. Untungnya, berkat diskusi publik dan analisis desain yang komprehensif, ada sangat sedikit kesalahan pada perangkat keras (tiga penyesuaian yang relatif kecil pada tata letak / daftar sirkuit dan satu perbaikan mekanis). Selama dua bulan berikutnya, prototipe digunakan untuk memoles perangkat lunak.
Produksi dan pengiriman akhir
Sekitar awal dan pertengahan November, setelah melakukan sedikit penyesuaian pada desain dan
memeriksa hampir semua subsistem perangkat keras, kami mengekspor kembali dan merilis kembali file untuk produksi dan perakitan akhir. Beberapa karyawan kami menghabiskan 10-22 Desember, membantu perakitan, pengujian, pengemasan, dan pengiriman devkits ke tukang roti kami (banyak dikirim sebelum Natal!)
Fig. 15. Tampilan akhir panel devkit v1.0.0 (sebelum perakitan)

Fig. 16. Devkit yang telah dirakit sepenuhnya dibandingkan dengan model 3D (sisi tampilan)
Fig. 17. Devkit yang telah dirakit sepenuhnya dibandingkan dengan model 3D (sisi SOM)Seluruh proses membutuhkan banyak usaha, tetapi tidak sia-sia. Terutama ketika kami melihat betapa berbuahnya masyarakat dapat menggunakan hasil pekerjaan kami. Beberapa sudah mulai mengembangkan kasus cetak 3D untuk devkita. Saya ingin sekali melihat perangkat lunak apa dan kasus penggunaan apa yang akan Anda buat untuk papan yang luar biasa ini! Jangan ragu untuk melaporkan semua hal keren melalui email di
feedback@puri.sm
. Jika benar-benar super, kami akan membicarakan perkembangan Anda di posting blog mendatang.
Sekarang kami selalu mengeluarkan biaya untuk mengirimkan ponsel Librem 5. Jadi sampai lain kali, jangan kehilangan daya cipta Anda!