查看: 12285|回复: 23

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

[复制链接]

该用户从未签到

发表于 2018-4-7 11:57 | 显示全部楼层 |阅读模式
本帖最后由 pz_cloud 于 2018-5-15 13:14 编辑

最近在拿树莓派配合arduino做点好玩的东西,但是用别人设计的板子总感觉定制化不够,板子形状尺寸配置外设都无法达到理想的要求,于是自己画了块ARM核心板玩

E484738751D8478D2A2DED6D3E9A7CD9.png

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

9AC120528CA7070E7BCB0F679B260909.png

889B6D0AA6D05B76DFAA886FA2DD5E7B.png
4-18更新

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

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

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


IMG_5117.JPG

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


IMG_5145.JPG


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


IMG_5144.JPG

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


IMG_5120.JPG

第一次设计高速多层的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登陆的效果↓


IMG_5129.JPG

基本跟树莓派一样的功能,只不过性能更强,尺寸小得多


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


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


MiniPi14.jpg

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

MiniPi15.jpg


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

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


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

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

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



个人主页:www.pengzhihui.xyz





MiniPi12.jpg
  • TA的每日心情
    奋斗
    2018-5-13 14:34
  • 签到天数: 43 天

    [LV.5]常住居民I

    发表于 2018-4-7 15:50 来自手机 | 显示全部楼层
    我想起有一种叫做亿典s1的机顶盒45包邮。

    该用户从未签到

     楼主| 发表于 2018-4-7 16:04 | 显示全部楼层
    laodayu 发表于 2018-4-7 15:50
    我想起有一种叫做亿典s1的机顶盒45包邮。

    六层板0.2mm工艺PCB打样就要一千多啦,做这个不是为了降低成本的,是为了可以自己定制化
  • TA的每日心情
    开心
    2020-2-24 11:02
  • 签到天数: 1279 天

    [LV.10]以坛为家III

    发表于 2018-4-7 17:59 | 显示全部楼层
    这么牛,送一块吧
  • TA的每日心情
    开心
    2018-6-6 20:38
  • 签到天数: 104 天

    [LV.6]常住居民II

    发表于 2018-4-7 20:59 | 显示全部楼层
    测试无误后,预订一块

    该用户从未签到

     楼主| 发表于 2018-4-7 23:06 | 显示全部楼层
    sanhuasr 发表于 2018-4-7 20:59
    测试无误后,预订一块

    不是准备卖的,只是自己做来玩的,买我这个花的钱,够你买一堆树莓派了啊,没必要的
  • TA的每日心情
    无聊
    2017-11-18 01:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-4-8 11:31 | 显示全部楼层
    下本了 不过自定还是有意思
  • TA的每日心情
    开心
    2018-1-4 18:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-4-8 15:35 | 显示全部楼层
    后期会开源吗

    该用户从未签到

     楼主| 发表于 2018-4-8 16:55 | 显示全部楼层

    这东西开源也没啥用处吧,硬件上我是完全按自己的需求画的板子,对别人来说不一定有树莓派好用;六层板光PCB加工就一千多;手工焊接BGA芯片也不是大多数人能做的;而且就算硬件能用,这个不像arduino单片机,写个库就能用,linux内核和驱动的编写都非常的麻烦;总的来说,直接买个树莓派啥问题都没有
    我做这个纯粹是为了学习下新的技能,真要拿去卖,估计焊了一块就不想焊第二块了。。
  • TA的每日心情
    开心
    2018-6-6 20:38
  • 签到天数: 104 天

    [LV.6]常住居民II

    发表于 2018-4-8 20:37 | 显示全部楼层
    pz_cloud 发表于 2018-4-7 23:06
    不是准备卖的,只是自己做来玩的,买我这个花的钱,够你买一堆树莓派了啊,没必要的 ...

    嗯,那我就看你发帖分享吧
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    点灯·blinker-1物联网初次尝试-Arduino物联网控制LED灯-零基础篇
    点灯·blinker-1物联网初
    疫情期间,待在家中在抖音上看到“暴改车间”分享的手机小爱同学物联网控制电脑开
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    萌新跪求arduinoUNO板对接无线模块(如何接和程序)
    萌新跪求arduinoUNO板对接
    哪位dalao能帮帮我啊???急!!! (提供有偿服务可加我QQ3285396460)
    DHT11温度模块写不了
    DHT11温度模块写不了
    Arduino:1.8.11 (Windows 10), 开发板:"Generic ESP8266 Module, 80 MHz, Flash, ck,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表