Linux上位机开发实践(底板设计)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们谈过,对于需要硬件开发,但是自身硬件开发能力稍显不足的同学来说,可以通过核心板来进行项目的开发。一般来说,基于核心板的项目开发,除了价格贵一点,剩下来的都是优点,比如说不用复杂的布线、不用负责基础软件、也不用负责soc的采购,害怕遇到假货等等。不过考虑到实际数量使用并不多,所以价格贵这个缺点也是可以忽略的。因为如果量不大,光自己投入的精力、打板的费用,都是一笔不小的开支。那么这个时候,问题来了?我们什么时候开始做底板?怎么做底板?怎么测试底板?
1、先用开发板做好软件
通常开发硬件之前,一般先把软件做好。既然我们选择了某个厂家的核心板,一般先购买一套板子进行开发。这套板子包含了核心板和底板。有了这套板子,我们就可以开发对应的软件了。开发板上面,通常所有的接口都会被接出来,所以就不存在找不到外设的情形。这一步工作通常都是做到前面的。如果软件本身都不能能符合要求,或者说这一步实现不了的话,后面也不用做了。因为硬件怎么着都可以做出来,时间长短的问题。
2、基于厂家给的底板原理图、layout图做开发
对于底板部分,厂家一般都会给出对应的原理图和layout图,所以这部分不会从0到1开始做。用户所要做的,就是了解一下核心板上b2b接口的信号,然后导出我们自己需要的接口即可。设计的时候,厂家还会给出详细的设计建议,比如电源时序、差分布线、阻抗匹配等等。
核心板的接口通常都是防反插的,这一点要注意下。
3、先做最小系统
开始准备开发底板的时候,先把最小系统搭建好。所谓的最小系统,就是可以让系统跑起来的最小电路。读书的时候,所谓的最小系统,就指电源、晶振、复位、输入、输出。回到核心板,内容也差不多。我们把核心板看成大号的mcu,这么来看的话,要使得核心板跑起来,首先也是保证电源,其次是启动模式、复位,最后就是usb otg烧入和串口。这么一来,soc系统电路开发就弱化成了mcu电路开发。等最小系统做好之后,就可以进一步实现后面的外设。
4、接着加上自己需要的外设接口
有了最小系统,接下来就是把一些常用的接口引到板子边上,另外做一些扩展电路。接口的话,就是常规的232/485/can/usb/mipi csi/mipi dsi。如果涉及到hdmi、触摸ic、有线网络、无线模块,还要做一些额外电路的设计。毕竟这些高速的接口,一般都需要专业的芯片来完成的,相关的扩展电路肯定是少不了的。
5、利用前期开发好的软件验证底板
前面既然已经完成了对应的软件开发,那么可以确认软件肯定是好的。那么用这个好的软件,去测试有可能不好的硬件,是非常合适的一个选择。如果软件和硬件有可能同时出问题,不是不能解,而是效率比较低。
比如说一开始拿到板子,我们至少要保证上电后,板子的串口打印是ok的。首先,我们会去确认板子能不能烧录,这是最基础的。不能烧录的话,原因很多,一般来说就是焊接的问题。焊接没问题的话,就要开始量电压、量信号,保证电源没问题。电压没问题的话,后续就是继续看启动模式、复位引脚,经过这样一层一层分析,总能找到问题,直到最小系统跑起来为止。
有了最小系统,就可以开始验证外设,从gpio、pwm、iic这些最基础的外设验证去做。外设没问题了之后,就开始验证业务流程了,甚至是为后面进一步的压力测试做准备。
6、后期开发bist测试
硬件和软件不一样,不管是设计的时候,还是采购、生产的时候都会有一定的出错率,这是不可避免的。这个出错率只能降低,不能消除。所以后期的时候,我们拿到第三方贴好片的板子之后,每次都必须要做bist检测。通过了bist,不代表没问题;但是如果bist都过不了,代表一定有问题。
这个bist一般就是外设的基本测试,上电之后做一下即可。针对csi camera、mipi 屏幕这种接口的测试,还需要准备好对应的环境才能展开去做。