1, USB 总线是否能用,在usb host 下新加了个hub ,这个hub 有三个port ,分别用于usb设备,SD卡,3G模块。
1)usb 设备,首先看看这个设备能否被枚举,lsusb 可以看到对应设备的vid pid ,然后根据这个加载驱动,其次,看USB 设备读写
速度是否正常,将设备 mount -t vfat /dev/sda1 /mnt/usb ,然后time dd if=/tmp/test of=/mnt/usb 或者用cp 或者用mv命令,如果速度不满意,可以考虑将usb host 的4个pin 单独接出来到一个usb 设备上,以排除是否是中间器件hub 的问题。
2)3G模块,这次遇到3G模块不能枚举,查spec 是3g模块power_on pin 脚需要拉低3秒,刚开始让一个同事查pin 脚的问题,他只看了复位
没看开机时序,太粗心,导致delay 1 天。这种驱动问题,肯定是要查每个pin 脚的意义,然后对spec的开机时序,复位时序。然后3G 模块
接port3 的vbus 没有上电,spec说可以不用上电。另外3g 模块启动后就是可以单独打电话的。
2,开机无法启动,连UBOOT 都无法启动,首先确保镜像没问题,其次看ddr是否OK ,如果OK 查看DDR 外围电路,如果在串口初始化
前就挂了,就用led 灯或者蜂鸣器作为提示器,看看代码能够跑到什么地方,当然,有trace等高大上的仿真器就更好啦!
查出的结果是
PCB 板有问题,这个问题很坑爹,是沉铜没做好,就是PCB板上的那些小孔,这些小孔是沟通各个层之间的桥梁,他们是靠沉铜技术做的
因为这个工艺出了问题,层之间无法连通,而且这个无法连通的恰好是DDR的一部分,自然无法启动。
PCB 板在出厂的时候,首先就要测试这些孔之间的链接性,叫做飞线测试,这次出这个问题应该是PCB厂跳过了这道工序,结果导致了
这个大问题。全部板子都不合格,发回重做。极其不专业。
3,LED 灯,这个他们没有提供FPC,但是没关系,我们需验证了他们提供的GPIO 是否可控即可。
在sys/class/gpio 目录下有export 的接口,我们可以echo 23 > export ,就会生成一个gpio23的目录,进入该目录,echo 1 > value 可以改变值,改变方向就是direction。
另外,查某GPIO 是busy 状态,推测其已经被gpio_request 占用,可以通过查看cat sys/kernel/debug/gpio 知道是谁调用了它,然后修改源码即可,把初始化值该一下确认软件是否可控。
4,以太网丢包问题,查出是硬件问题。
阅读(2086) | 评论(0) | 转发(0) |