udelay(); mdelay(); ndelay();实现的原理本质上都是忙等待,ndelay和mdelay都是通过udelay衍生出来的。
我们使用这些函数的实现往往会碰到编译器的警告implicit declaration of function udelay,这往往是由于头文件的使用不当造成的。
在include/asm-***/delay.h中定义了udelay(),而在include/linux/delay.h中定义了mdelay和ndelay.
udelay一般适用于一个比较小的delay,如果你填的数大于2000,系统会认为你这个是一个错误的delay函数,因此如果需要2ms以上的delay需要使用mdelay函数。
4.)msleep,ssleep区别:
休眠单位不同
5.)秒的单位
ms是毫秒=0.001秒
us是微秒=0.000001秒
ns是纳秒=0.000000001秒
3.如何配置关机充电(KPOC)中的 长按开机时间
file path:alps/mediatek/platform/mt6589/kernel/drivers/power/pmic_mt6320.c
modify #define LONG_PWRKEY_PRESS_TIME 2000*1000000
4.电池充电报警克制化
手机充电出现异常的报警主要有:
1. 充电电压超过正常允许的电压范围
2. 电池温度超过允许的电池温度
3. 长时间的超过1A的大电流充电
4. 电池电压超过允许的电池电压范围
5. 总的充电时间超过24hr.
配置文件:alps\mediatek\custom\{project}\kernel\battery\battery\cust_battery.h
与上述5个报警相对应的宏:
#define BATTERY_NOTIFY_CASE_0001
#define BATTERY_NOTIFY_CASE_0002
#define BATTERY_NOTIFY_CASE_0003
#define BATTERY_NOTIFY_CASE_0004
#define BATTERY_NOTIFY_CASE_0005
5.如何读取及设置PMIC registers
1)进入工程模式,读取和设置
拨号界面 ----------输入*#*# 3646633#*#* 进入工程模式 power ------ pmu ------ pmu register
或则 hardware testing ----- power ------ pmu ------ pmu register ,所有读写都是16进制
2)程序运行时,如何通过ADB cmd 获取及设置pmic registers?
adb shell cd /sys/devices/platform/mt-pmic
6.关于功耗问题:
1)第三方apk引起的,先予以排除;
2)wake up by RTC:kernel_log中查找wake up by RTC,分析唤醒源;
3)wake up by CCIF_MD:
4)wake up by EINT
7.高温高压后如何恢复充电
参考[FAQ10404]
在充电的过程中,如果出现高温或者高压的情况下, 系统会停止充电, 当温度或者充电器的电压值恢复正常后,如何恢复充电。
三、Driver input system
1.如何添加新的kernel模块:
参考 [FAQ08517]
(1)create new folder
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-55851-8.html
美国为了霸占巴拿马运河
唉
而不是再揣测他派了条老船