BSP/驱动工程工程师经常与已经打交道,并且在软硬件联调遇到的时候分析、定位和解决问题。 1)需要掌握一些基本的技能,比如可以看董原理图和PCB图,使用万用表测电平、使用示波器看波形等。 2)更高一点的要求,能看懂数字电路的逻辑、能看懂芯片手册中各管脚描述(比较重要的是电源、时钟、复位), 清楚整版电源、时钟、复位的分布。 但是现在懂硬件的驱动工程师不多,圈圈所在的团队10来号人中也只有3个。 很久很久以前,圈圈开发的产品系统不太复杂,从硬件方案选型设计、画原理图/PCB、电路调试、代码调试都一个人做。 切入正题,大方向: 时序/逻辑、电源、时钟、复位 时序/逻辑举例 1)产品S0 Bootloader上电串口没有打印,检测ROM串口打印代码没有问题,查原理图发现Endian引脚配置错了。 2)产品A0 nand接口逻辑全部错了,画原理图将cpu cnxxxx的nand接口抄到cpu bcmxxxx上面来。 电源: 1)产品A0 GPIO模拟的I2C接口,读时序SDA高电平只有1.0V,明显SDA没有接上拉电阻。 2)产品R0 E2输出SCL/SDA低电平居然有2.5V, 拿掉E2后电平回复正常。 明显E2设备的地电位被抬高了,查看原理图E2的VCC和GND都接到板子的V+上了。 上面的问题都是逻辑上的错误,基本上可以很快查出来。 还有一些只有个特定环境、偶然才会出现的问题/现象。 下面介绍两个例子。 时钟: 产品R1 CPU PCIe host下面接了一个PCIe-To-PCI桥。偶然出现过数据奇偶校验错误。 最后查处是PCIe同步时钟的时钟沿太缓,导致数据传输出错。 复位: 产品A0 PCIe网卡上游两个复位引脚Power_RST、PCIe_RST。 硬件将CPU的PERST和watchdog的output引脚相与后,接到PCIe网卡的PCIe_RST。 各位看官,这个地方会不会有问题呢? |