Linux上位机开发实践(从用板子到自己做板子)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
既然是嵌入式开发,除了开发软件之外,硬件的使用也是非常重要的。一般来说,刚开始的时候,我们习惯于使用现成的板子,俗称开发板。等到比较熟悉之后,我们就开始想办法做自己的板子。做板子通常也不是一蹴而就的。起初,最好是用别人的核心板,自己做底板。等到有一点实力之后,就可以考虑自己做soc板子,但还是建议使用那种内嵌ddr的板子,这样风险小一点。等到这一切都ok之后,就可以考虑自己做核心板了。
1、挑选开发板
现在市面上的开发板还是很多的。包括国外的树莓派,以及国内的各种水果派,都是可以买到的。另外,就算自己不想做板子,电商网站上面也有很多的工控板可以选择,这部分也都可以买到,价格也不贵。在一开始做项目的时候,挑选别人的板子,这都是常见的做法,没有什么不妥。只是自己挑选的时候,不建议过分关注价格,而是把精力放在硬件的质量之上,这样比较好一点。
开发板一般所有的驱动都是写好的,用户专注于上层开发即可。
2、购买核心板
购买的板子,一般尺寸、大小、功能都是别人提前设置好的,价格方面也未必合适。所以如果开发板不合适的话,可以外购核心板,自己做扩展板,这也是常见的开发方式,而且核心板种类也是比较多。目前北京某为,某凌、某龙、某尔,诸如此类,都会提供linux的核心板。核心板一般只有soc、ddr、emmc/flash、pmu。少部分还带有eth phy芯片。所以板子上面,基础的驱动是没有问题的,但是下面的扩展驱动就要自己解决了,比如说spi、iic、hdmi、mipi屏幕、sdio、usb、eth等等。理论上有一个电源给核心板,这个板子就可以跑起来了。
当然和开发板相比较,我们可以自己任意定制底板,这就比纯开发板相比,有一定的定制性。在满足客户需求方面,也有一定的便利性。
3、设计内置ddr的soc板
和mcu开发板相比较,这种开发板就只有两个区别。第一个区别,soc板子上面多了很多不同的电压设计;第二,soc板子多了一个nor/nand/emmc存储。系统的镜像都是保存在这个芯片里面的,不像mcu,因为mcu的固件也是烧录到mcu里面的。除此之外,内置ddr的soc板子和mcu相比较区别不大。而且,这种内置ddr的soc芯片,封装以qfn居多,引脚个数控制在100以内,价格也不贵,好焊接,使用风险较小,非常适合入门。
另外,很多芯片公司都提供对应的sdk,所以我们的硬件设计,很多时候也是直接魔改厂家的soc开发板即可。整体设计难度不是很高。只要原来的板子可以跑通,那么自己设计的板子一般来说问题也不大。
4、自己做核心板
有了前面开发的经验,这个时候就可以开始自己做核心板了。不同的核心板的接口尽量统一。核心板最大的难点,其实不是原理图,因为原理图部分就是多一个外置ddr。难点在于layout,很多复杂的soc都是BGA封装,这种情况下,就只能多层布线。除此之外,由于ddr的存在,对于布线的等长设计,以及阻抗匹配也有要求。所以,如果对开发板要求较高,建议还是外包出去;如果是只有一片ddr,要求和走线没那么严格,那么试一下layout倒也无妨。
设计核心板的好处,就是最低化降低成本,然后最大程度化实现客户的需求。不过这里面同样存在一个成本的问题。通常来说,只有数量到达一定程度的时候,自己做核心板才会比较划算。也就是说,公司业务达到一定阶段,才适合找一个专门的硬件工程师来做这种事情。其他情况下,可能还不如外采核心板划算,这也是很多核心板公司存在的原因和道理。
不同的公司在不同的阶段,对于硬件的需求是不一样的。这种情况下,大家根据实际情况灵活选择即可,没有一个标准的答案。硬件本身是很繁琐的事情,却又是不得不做的事情,也正是因为这样,软硬一体才有价值。毕竟在很多人的印象当中,软件是没有成本的。要改变这一固有印象还是很难的。因此,软件要体现价值,必须附着在硬件之上才可以,这才是我们自己去做硬件的目的所在。