pz_cloud 发表于 2018-4-7 11:52:44

如何自制一块“树莓派”--DIY ARM-Linux卡片电脑【5-15更新】

本帖最后由 pz_cloud 于 2018-5-15 13:17 编辑

最近准备拿树莓派做一些AI相关好玩的东西,但是对这块别人设计的板子总感觉不是很满意。一方面树莓派是面向广大用户的,所以定制化不够,板子形状尺寸配置外设都无法达到理想的要求;另一方面树莓派的性能也确实相对捉急,毕竟成本摆在那里,为了普及这块卡片电脑,不可能用上太贵的SOC(树莓派上面的博通CPU是专门供应给树莓派的)。于是为了满足个人的强迫症,也为了学习一下高速PCB的设计制造,决定自己画块ARM核心板玩~
板子的原理图设计和PCB Layout以及完成了,正在发往厂家进行PCB加工。这里吐槽一下,像这种多层精密PCB板要找到合适的厂家打个样(不是批量)还真是不容易。。。淘宝上翻了一遍PCB打样的厂家,没有一家能做0.3mm pitch的BGA板;听说嘉立创最近工艺升级,于是去充了个值把板子发过去试试看,第一次审核通过,第二次准备加工的时候,接到电话说你的板子我们做不了,0.2mm的过孔超过工艺范围,是的加钱也做不了…不过幸运的是最终还是找到一个可以做的厂家,当然价格也是相当的不亲民啦😉



板子用的全志Cortex A53四核CPU,主频1.5GHz,六层DDR3内存,mini-PCIE尺寸,性能应该是完全超过树莓派了~等板子加工好了下一步移植uboot和Linux-kernel,应该是目前为止最小的Linux开发板了。板子引出了spi,iic,uart等引脚资源,后面会做一个arduino兼容的底板。






4-18更新

加工的PCB到了,迅速尝试焊了几片~由于是第一次手工焊接BGA的芯片,而且还是0.3mm pitch的BGA,所以一开始并没有太大的把握。
一般BGA都是让厂家去焊接,因为需要用到专门的吹焊台,可以精确地控制温度曲线。个人寝室是不可能用上这么专业的设备的,所以只能展示一下真正的技术了:D
根据网上看到的BGA焊接经验,一般是先对芯片植锡球,也就是利用钢网对准焊点后,将锡球(网上很好买,分为各种尺寸,一般按万颗计算的)撒到芯片上,然后加热化锡,这样芯片上的的锡球就成为连接PCB和芯片的导线了,这也是BGA(Ball Grid Array,焊球阵列封装)的意思。

植锡球的具体操作可以参考下图:


我买的CPU和DDR芯片是全新的,所以出厂已经植好了锡球,这一步就可以省略了,当然如果后面一次焊接没有成功,需要吹下来重焊的话,还是需要重新植锡的。
这是我的装备↓


我采用的焊接方法是,先把除BGA以外别的器件都焊好(主要是电源电路,和一些外设),然后上电测试电压(5V、3.3V、1.2V、CPUX的1.3/1.4V)是否正常,正常的话就说明板子成功了一半~因为PCB的加工至少应该是没有问题的(虽然PCB发货前会进行飞针测试,但是只保证通路,短路是很难检查出来的)。
很幸运我这块板子没有发现任何问题,这又说明了我的走线和规则设定是ok的。




然后就是最重要的CPU和DDR焊接了,这也是最没把握的一步。BGA的引脚完全分布在芯片下方,所以肉眼是看不到的,因此在设计PCB的时候,一定要准确地把芯片边界的丝印画上去,这是用于对齐芯片的唯一标准。对好芯片之后,上风枪加热,用最低档风速,250°进行加热(注意需要吧吹嘴去掉以便增大出风口均匀加热),吹上一分钟左右可以看到芯片有轻微的归位动作,这时候用镊子非常非常小心地碰一碰芯片,能自动归位,就说明基本焊好了。
这里我由于吹焊的操作没有掌握好,吹废了两块板子(温度太高吹太久焊盘脱落了),不过最终还是成功焊好了一片~有了这次的经验,感觉下次吹BGA应该会轻松很多了。
芯片焊好的样子↓



插上SD卡,USB上电,还没接上SSH呢,已经看到状态LED闪烁了,说明CPU正常启动!至此个人的第一块ARM核心板硬件可以说就圆满成功了~



第一次设计高速多层的ARM板就成功,实在是很幸运(当然其实前期也断断续续各种找资料预研了好几个月),回想一下整个设计过程,有太多的不确定因素:


[*]第一次进行多层板设计,而且还是直接上6层
[*]第一次设计ARM的核心板电路:需要考虑复杂的电源系统、PCB阻抗计算、信号等长走线,EMC优化等等
[*]第一次进行多层精密PCB的加工投板:6层、3mil线距、0.2mm过孔,价格相比2层板翻了20倍不止就算了,加工好了还不确定是否真的能用
[*]第一次进行BGA的手工焊接:就算PCB没问题,焊接也是个大问题,一旦焊接完发现板子不工作,很难排查是哪里的原因

好在以上所有问题都随着板子上那颗可爱的LED闪起来而得到了完美的回答哈哈~

硬件正常工作,下一步就是软件的移植工作了,U-BOOT和Linux内核的移植和编译在之前等PCB加工的时候已经基本完成,将系统写入SD卡后,插上板子,上电成功进入内核~文件系统使用的Ubuntu16.04,Debian系的最佳选择,跟树莓派也基本完全兼容。下图为通过板载的USB串口进行SSH登陆的效果↓



基本跟树莓派一样的功能,只不过性能更强,尺寸小得多
http://v.youku.com/v_show/id_XMzU0MDI5NzY4OA==.html

然后确定了核心板没问题之后,今天也赶紧画了个底板,用于将USB、网口、SPI、I2C等资源都引出来,同时底板上集成了一块Arduino Micro(Mega32U4),通过串口或者I2C和CPU通信(实际上核心板上可以直接运行Linux版的Arduino的IDE给底板上的Arduino下载程序了)



5.15更新
底板的PCB也加工好了,地板功能比较简单,走线也只需要两层,元件全部放在同一层,省得焊接麻烦
底板主要通过mini-PCIE的底座将核心板上的IO资源都引出来,比如USB口、以太网口、I2C、SPI、串口、麦克风、喇叭等等




同时底板也板载了一块Mega32U4芯片,烧写Arduino Micro的Bootloader之后可以作为Arduino使用,其中串口和I2C接口都是可以和核心板相连的,用于两者通信,当然核心板上也能直接编译程序给Arduino下载啦


       
最终板子和树莓派的尺寸对比,大概只有一半的大小,还多了很多外设↓



由于一般Linux都直接用SSH或者远程桌面登陆,所以底板上没接出HDMI接口(另一个原因是为了关闭GPU降低功耗和发热),所以最好需要一个板载的小屏幕来显示一些信息,比如CPU使用率、温度、IP地址等等。这里我选用一块很常用的OLED12864屏幕,尺寸很小巧显示也很漂亮,通过I2C接口驱动,接线也相当简洁,即插即用。



用Linux驱动OLED,和用单片机(比如Arduino)驱动一块OLED有啥不同?那就很有意思啦,首先Linux是一个完整的桌面级操作系统,很多算法(像图像处理,网络应用)都是可以直接移植运行的,所以不会出现像单片机上资源匮乏,每显示一副图片甚至一段中文,都需要事先用PC端软件开好模,再存到单片机的flash里面再下载运行这种情况(因为这Linux板子本身就是个电脑了哈哈);其次Linux是可以多任务的,也就是说可以很方便地将OLED的显示和其他应用结合起来,将屏幕作为一个展示内容的很好工具

例如,下面这个视频,就演示了如何实时解码一段视频(著名的Bad Apple),并经过图像处理后通过OLED来播放↓

http://v.youku.com/v_show/id_XMzU3ODg0ODQwNA==.html


另外,不知道intel啥时候肯放出Movidius芯片的bsp,就可以在板子上整合这颗VPU做神经网络加速了,到时候移植几个神经网络算法设计个迷你AI机器人耍耍 ~

个人主页:www.pengzhihui.xyz


Paderboy 发表于 2018-4-7 13:09:43

赞赞赞,坐等楼主作品。。

弘毅 发表于 2018-4-7 13:58:19

大腿呀。。。。6层。。。

pz_cloud 发表于 2018-4-7 15:14:24

弘毅 发表于 2018-4-7 13:58
大腿呀。。。。6层。。。

其实六层板布线不难:lol,麻烦的是高频电路要计算好阻抗匹配,然后ddr3的拓扑和等长绕线,优化emc等等,层数越多其实走线越方便的。当然更麻烦的是板子加工能用还不够,bga手工焊接,和后面的软件移植工作量也不小;P

wwwusr 发表于 2018-4-8 09:49:53

太强大了。。。软硬通吃啊。

eddiewwm 发表于 2018-4-8 18:43:58

pz_cloud 发表于 2018-4-7 15:14
其实六层板布线不难,麻烦的是高频电路要计算好阻抗匹配,然后ddr3的拓扑和等长绕线,优化emc等等, ...

能介紹一下你的 bga手工焊接 的方法和過程嗎?用了甚麼的設備 和 需要注意的地方?

pz_cloud 发表于 2018-4-8 21:03:00

eddiewwm 发表于 2018-4-8 18:43
能介紹一下你的 bga手工焊接 的方法和過程嗎?用了甚麼的設備 和 需要注意的地方?

风枪吹焊,注意温度曲线,植锡的锡球用熔点低的比较好焊,最重要是要画板子的时候画好丝印,这是对齐芯片的唯一标准

小猪会轮滑 发表于 2018-4-10 21:41:00

:lol:lol:lol膜拜大腿

Ansifa 发表于 2018-4-10 23:33:12

我不管,肯定有4层是只有GND和VCC,反正我不服我妒忌:lol

pz_cloud 发表于 2018-4-11 00:06:22

Ansifa 发表于 2018-4-10 23:33
我不管,肯定有4层是只有GND和VCC,反正我不服我妒忌

好了被你发现了:funk:

pz_cloud 发表于 2018-4-19 15:07:19

wwwusr 发表于 2018-4-8 09:49
太强大了。。。软硬通吃啊。

基本操作哈哈

弘毅 发表于 2018-4-20 11:45:01

太牛了,一次成功。。。。

csgtli 发表于 2018-5-6 01:14:12

牛人,一次就可搞定,是用哪个软件画的板

pz_cloud 发表于 2018-5-7 11:48:33

csgtli 发表于 2018-5-6 01:14
牛人,一次就可搞定,是用哪个软件画的板

altium designer, 一般设计高速板都是用PADS比较多,我业余搞硬件就不讲究了:D

pz_cloud 发表于 2018-5-15 13:18:19

内容更新   
页: [1] 2
查看完整版本: 如何自制一块“树莓派”--DIY ARM-Linux卡片电脑【5-15更新】