来自翻译者:Librem 5(呈现)-Purism的Linux安全智能手机, 由于众筹而在最开放的硬件和软件上创建。今天,我们将讨论Librem 5开发人员工具包的开发以及如何在其开发中仅使用100%免费软件。
devkit设计是根据GNU GPLv3 +许可的条款发布的,Git硬件存储库
位于此处 。
KiCad-EDA的明显选择在开始开发之前,尚不清楚开发该项目的方式。 特别是,
为电子设计自动化(EDA)选择哪种工具。 最初的想法是从FEDEVEL更改i.MX 6QP OpenRex板,以满足devkit的所有要求,但我们立即面临两个主要问题:它使用了过时的i.MX 6QP处理器,更糟糕的是,该板是在Altium专有系统中开发的。 幸运的是,我已经具有使用EDA KiCad设计电子产品的经验,因此我们设法使用100%免费软件来创建devkit设计。
KiCad是一个显而易见的选择,这不仅是因为获得了免费许可证(GNU GPLv3 +),而且还因为它是一种功能非常强大的电子设计套件,甚至超过了一些昂贵的专有工具。
选择符合要求的组件
开发devkit的第一步是找到符合活动期间确定的要求的组件。 除了遵守声明的规格外,在搜索组件时,我们还决定添加一些额外的铃铛和哨子。 包括:
- 充电控制器(BQ25896)
- 18650电池座,用于可选的锂离子电池
- USB-C
- 迷你HDMI
- SD卡控制器和micro-SD插槽(因为i.MX 8M仅具有两个uSDHC控制器)
- 以太网/ RJ45
- 音频编解码器
- 听筒扬声器
- 麦克风
- CTIA / AHJ 4针3.5毫米耳机插孔(可在内置和外接麦克风之间选择)
- GPG智能卡读卡器
- 振动马达
- 可编程LED
- 音量和电源按钮
- 硬件开关和启动模式开关
- 闪存16Mb SPI NOR
- 实时时钟(RTC)
按照计划,我们为默认情况下不忙的UART调试触点添加了通孔(通过USB串行运行在devkit随附的默认映像上)。 提示:如果您不喜欢焊接,那么割台支持压配合,请查找自动接头零件编号23-1063。 板上有一个支持表面的SMD 2×5 JTAG,其功能已经在原型上进行了测试。 如果您有兴趣在玩,请寻找零件编号GRPB052VWQS-RC。
对于WWAN /基带调制解调器和WiFi + BT,很明显,您需要找到一些现成的模块,例如,具有表面贴装的模块。 在早期,Nicole曾有一个绝妙的主意,即使用mPCIe和M.2模块,使devkit成为模块化的,并有可能在将来进行升级。 最后,我们选择了mPCIe SIMCom SIM7100A / E调制解调器模块和M.2 RedPine RS9116 Wi-Fi + BT模块。
开始绘图
在研究阶段的最后,我们应该开始实施我们的想法。 i.MX 8M Quad处理器刚刚出现在市场上。 为了从开发开始就取得突破,并增加模块化和将来更新的可能性,我们选择了
模块上系统(SOM)选项,包括SoC,SDRAM,eMMC和PMIC。 但是,即使在开发的早期阶段,当我们刚开始绘制图表时,我们感兴趣的一些SOM的批量生产仍未开始。 在4月中旬左右,我们与EmCraft建立了良好的关系,而EmCraft刚刚开始了第一个主要的SOM生产周期,并且即将发布硬件架构规范。 我们认为EmCraft的SOM及其资源正是我们所需要的。 选择特定的SOM后,我们立即开始绘制图表。
为devkit选择特定组件的过程与计划的准备工作同时进行。 所有工作都在Git版本控制系统中进行。
图 1. 5月2日计划的早期修订(git commit 023915d5的哈希)方案完成后,我们导出了
网表文件,这极大地使我们更接近了devkit在生活中的实施。
建模HP_DET
除了KiCad之外,我们还通过免费软件使用了称为
Qucs-S的工具和与SPICE兼容的
Xyce仿真
工具来仿真耳机传感器芯片,该芯片包括一个齐纳二极管,以保护相应的GPIO免受过高或过低的输入电压的影响,从而防止从HP DAC发出HP DAC。音频编解码器。 Qucs-S和Xyce的组合使得可以
在芯片中使用MMSZ4688T1G二极管的MMS-SP4
模型 ,它最能代表同时激活HP DAC的3.5毫米
空白连接器的物理状态。
图 2.使用Qucs-S和Xyce对HP_DET模式进行建模这种模仿以及简单的DC情况,即3.5 mm连接器的内部开关断开并且1MΩ仅达到默认电压3V3_P,这确保了特定的保护方法确实有效。
建立网站
在6月中旬左右,我们完成了
材料清单(BOM)的汇编,开始下单订购组件,并开始创建设备中所有位置(芯片,连接器,模块等)的轮廓。 我们从文档中获取了推荐的特征,并四次检查一切是否正确。
图 3.充电控制器BQ25896的平台(开发板上的U301,位于SOM下)在KiCad令人惊叹的3D观看模式下,我们创建了几乎所有组件的三维轮廓。
图 4.充电控制器BQ25896的3D模型KiCad逐级计划,接线和更新
在早期阶段,制定
了一个粗略的
计划,以快速确定将使用集成电路的哪个区域(90×180 mm)以及在哪里放置较大的组件(连接器,插槽,卡插槽,mPCIe和M.2插槽,模块等)。 d。)。 放置在面包板上后,一些细节仍然移动,但是很快将它们固定在特定的位置。
6月底,我们开始接线,从USB-C开始(提交a1bfc689)。 这标志着原型的开始。
图 5.首先提交接线
图 6.到底USB-C的布局是什么?
图 7.放置元件和布线之前的电路的早期版本接线过程需要在工作速度和验证所有操作正确无误之间取得微妙的平衡,包括仔细控制电阻控制线和敏感模拟线的接线。
最初,无法确定需要多少层以及是否应在电路板的两侧放置组件。 我们知道i.MX 8M板的两面都有八个层和组件,但是我们确信可以减少层数。 我们很快意识到,在板子的背面肯定要放置组件,因为在电话上,某些模块位于板子的“背面”(显示侧),包括显示连接器,接近/光传感器,可编程LED,扬声器和麦克风。 两侧都有组件,这使布局过程更加容易,因为它释放了一些空间,您可以在其中放置SPI NOR闪存,读卡器,RTC,2.8V LDO,各种IC和其他组件。 至于层数,我们决定将其减少到六层。 我们决定仅在陷入死胡同且无法铺设任何链条的情况下再增加两层。 幸运的是,这没有发生,并且有六层设计。
我们决定使用一种通用布局,该布局可在易于接线和减少意外排放之间实现最佳平衡。 作为电介质基板,我们使用了NAN YA的NP-180TL铜箔层压板,该板在我们约1.7 GHz的平均工作频率下的相对介电常数约为4.11。 我们在Git储存库中找到了使用这种布置对微带线和共面波导板馈线(CPW)的RF馈线的计算。
图 8:devkit层的布局在KiCad中实施devkit之前,我们不知道是发布Alpha版本还是坚持使用经典的更稳定的版本(如4.0.7)。 尽管“夜间构建”具有几个有用的功能,但我们仍然决定保持稳定的发行版本,这样我们就不必经常更新KiCad,而冒着同时出现多个版本的风险。
当我们开始工作时,发布了KiCad版本5.0.0! 7月16日,我们将该项目升级到KiCad 5.0.0(特别是4f70b865和a4e3de8a提交),没有任何问题。 幸运的是,此更新与我们大多数无源元件从0603到0402的过渡相吻合,因为KiCad中的新焊盘与旧的默认值略有不同,并且焊盘具有圆角,对于无铅焊料更有效。
更新到5.0.0后,我们专注于原型制作-并在一个月内(即8月14日,提交了9b4dd2e0)使未稀释电路的数量为零。
图 9:8月14日发布候选,提交9b4dd2e0记录了零数目的未稀释电路完成布局并检查设计规则检查(DRC)之后,我们清理了一周的布局。
在对电路板进行原型制作时,最有用的资源是官方文档中的集成电路原型制作参考指南和
Toradex原型制作指南 。
图 10.最终布局(铜涂层区域被隐藏)导出文件并发送到生产
布局完成后,有必要导出生产和组装电路板所需的所有文件。 将
Gerber文件导出到KiCad非常简单。 但是,承包商要求另一种组装方案和布局,这需要一些努力。
对于导出预览文件,我们通常使用gEDA中的Gerbv。
这是 Gerblook中我们的devkit的样子-该工具使用Gerbv和ImageMagick进行Web渲染。
图 11. Gerbv中查看的Gerber devkit文件为了创建所需类型的图形,我们使用了F.Fab / B.Fab层。 它们显示板上所有组件的位置,轮廓,极性和参考符号。 使用每个站点的F / B.Fab层,我们可以通过将F.Fab和B.Fab打印到单独的PDF文件中,然后将它们组合到一个文档中来创建最终图形。
图 12. SOM的方案还有更多的工作要制定生产计划。 为此,您必须将Cmts.User层中的注释与电路板一起导出为一个DXF存档,然后将所有钻孔标记导出为另一个DXF存档。 创建这两个文件后,它们将合并到整个站点的图形中(足迹)。 收到包含两个DXF文件的特殊“足迹”后,我们几乎隐藏了布局中的所有内容-并“为工厂”导入了这个特殊的足迹(不保存临时布局)。 目前,您需要的所有内容都在Dwgs.User层上。 因此,您可以将其与框架一起打印在最终的PDF中以进行生产。
图 13.钻孔标签连同所有这些文件和文档一起,使用了IPC-D-356连接列表,工厂可以
使用该列表
使用“飞针”方法进行
测试,并确认没有短路或断路。 我们还准备了一个CSV文件(以便工厂知道所有组件的放置位置和方向),最后准备了一个手动编辑的GenCAD文件(用于对工厂焊接机器人进行编程)。
原型测试
我们将最终文件发送给生产,回答了承包商的所有问题,并更改了他们要求的所有内容。 档案已于8月底左右寄出-我们很期待我们的设计进入深圳的装配线。 不幸的是,正如我们
在博客上告诉我们的那样,由于恶劣的天气和“黄金周”(中国的国定假日-大约2月1日),不可预见的情况导致原型生产出现了严重的延迟。 跨]。 由于这些延误,我们决定在一家国内工厂订购样机的生产,这为我们提供了比中国快两周的木板。
图 14. devkita v0.1.2原型面板(组装前)组装了少量原型后,它们便迅速发送给我们的工程师进行调试和软件开发。 幸运的是,由于进行了公开讨论并对设计进行了全面分析,因此硬件中几乎没有错误(对布局/电路列表进行了三项相对较小的调整,并进行了一次机械修复)。 在接下来的两个月中,使用了原型来完善软件。
最终生产和交付
在11月中旬左右,我们对设计进行了微小的调整并
检查了几乎所有的硬件子系统后,我们重新导出并重新发布了用于生产和最终组装的文件。 我们的一些员工在12月10日至22日度过,帮助将devkit组装,测试,包装和发送到我们的面包师(许多人在圣诞节前交付!)
图 15. devkit面板v1.0.0的最终视图(组装前)

图 16.与3D模型相比,完全组装的devkit(显示面)
图 17.完全组装的devkit与3D模型相比(SOM方面)整个过程花了很多精力,但是值得。 尤其是当我们看到社区可以多么有效地利用我们的工作成果时。 有些人已经开始为devkita开发3D打印的盒子。 我很想看看这些出色的主板会为您带来什么样的炫酷软件和用例! 随时通过电子邮件发送至
feedback@puri.sm
报告所有很酷的内容。 如果真的很棒,我们将在以后的博客文章中讨论您的发展。
现在我们总是花时间发送Librem 5手机,因此在下次之前,请不要失去您的创造力!