驱动程序调试笔记

1.uboot无法引导Linux系统,机器号不一致。


2.屏幕闪屏:使用自旋锁,每次进入背光函数时,先获取锁,退出时候释放锁。


3.Wifi打不开的问题比较常见:

     (1)有时候在system/lib/目录下有相应驱动了,但是系统起来后,驱动没法加载上去,一般是驱动和正在使用的内核不是兼容的,所以无法加载,这个可以通过查看log,看出魔数不匹配。

       (2)出现新热点,需要重启WIFI才可以扫描到;20s内无法连接到WIFI热点;已连接的热点关闭,不会自动连接下一个热点。是供应商芯片的固件没有配置好,找FAE换掉。

     (3)有打印SD/MMC initializationstarted......,但sdio设备初始化不成功

     (3.1) No any SD/MMC card detected!, 则检查wifi模块供电及WL_REG_ON管脚的电平正确与否。

     (3.2) 出现读写SD_MMC_ERROR_TIMEOUT, 则检查wifi模块与cpu间的sdio接口硬件连接有没问题。

     (3.3) 出现读写SD_MMC_ERROR_DATA_CRC, 则需要在sdio总线的data0~3上加外置上拉电阻。

     (4)WIFI设置选项可以勾选,但过一会出现wifi的勾自动消失。ifconfig查看Wlan的接口用的是否是wlan0,这个需要再hardware/libhardware_legacy/wifi/wifi.c中配置。

     (5)有的路由器不能扫描的到。这个一般是频段的问题,查看wlan的设置的channel是否在1-14这个频段。在nvram.txt中修改成ccode=ALL,并且在gqcom_cfg.ini中把APCntryCode=ALL。

     (6)将wifi sleep policy模式为When screen turns off,关屏五分钟后再点亮屏幕,wifi一直处在扫描scanning状态,无法连接网络,关闭再打开恢复正常。

       a.先检查POWER_ON使能脚,是否存在占用问题。

       b.可能出现在sdio通道,在函数mmc_pm_notify中当出现PM_POST_SUSPEND或PM_POST_HIBERNATION的情况时就有可能移除掉了sdio通道,所以函数mmc_detect_change(host,0)要加一个判断,当sdio作为wifi通道时就不能移除。


4. Nand坏块太多,造成环境变量损坏或者用户分区丢失,导致系统无法开机。从几个方面解决:第一:改善坏块标志机制,在擦除一个块之前,确保该块第一页的sparearea第6个字节是0xff,才能擦除,否则标志为坏块;第二,电压不稳定造成很多伪坏块,在系统起来时候,判断坏块的数目,当超过一定比例时候启动坏块修复机制,修复由于电子不稳定等原因而产生的假坏块;第三,通过备份多份BBT,实现BBT掉电保护,当BBT丢失时候,驱动会去对比各个备份的BBT,使用坏块信息最多的BBT作为当前的BBT使用。客户返修很多因为nand品质问题而开不了机,使用维修的脚本,在usb升级时候,先彻底地擦除坏块标志区再按照平时方式升级。


5.已经量产的机器电池充不满电:重新测试电池曲线,调大充电电流。


6.随机死机问题:硬件平台、死机之前是什么状态的、概率是多大、除了现象之外能否提供log进行分析。

你可能感兴趣的:(驱动程序调试笔记)