高通平台Driver开发的参考文档(6)

2019-08-31 10:48

44922004.doc

– Adds an item to the watermark(添加一条记录到watermark中) – Calls each_item_func(), if any(调用函数each_item_func())

– If this is the first item in the watermark, calls non_empty_func_ptr(如果这是watermark的第

一条记录(队头),则调用non_empty_func_ptr) – If highwater mark in bytes is reached, calls hiwater_func_ptr(deassert CTS)(如果字节数到达了watermark上线则调用hiwater_func_ptr)

– If it does not_exceed_cnt bytes in the watermark, drops the item(如果item中的字节数没有达到要求则忽略这个item) dsm_dequeue(wmark)

– Removes the first item from the watermark(从watermark中去掉队头(出队))

– If no other items are left in the watermark, calls gone_empty_func_ptr(如果watermark中已经没有item了,则调用gone_empty_func_ptr)

– If low-water mark is reached, calls lowater_func_ptr(assert CTS)(如果到达watermark底线,则调用lowater_func_ptr)

注意: watermark counts是指byte数而不是item数。

可以看出,dsm watermark就是通过对队列的出队入队的管理来实现流控制的。 在DSM入队操作中,其中有这么一句:

这里就是对队列进行watermark监测,下面看watermark监测做了什么事情。

联想移动产品开发部软件处 - 23 -

44922004.doc

上面的代码可以看出,在入队时,根据队列的情况进行了相应情况的call back调用。换句话讲,就是当队列发生变化时,watermark将调用不同的函数以响应这些变化。 可见,watermark可以看成是一种基于队列操作的队列管理机制。示意图如下 联想移动产品开发部软件处 - 24 -

44922004.doc

3.5 Sleep

3.5.1 Sleep硬件相关知识

一般我们直观观察高通是否进入睡眠可以通过数字电源来观察,那么有必要对睡眠相关的Sleep电流概念有所了解:

联想移动产品开发部软件处 - 25 -

44922004.doc

CDMA 手机的Idle 状态的电流如上。有3 个概念描述如下: Average sleep current: 0.4-0.9mA.根据手机功能,显示屏的要求不同而不同。

Average Rx current:手机处于睡眠状态时,需要定时从基站接收消息。此刻手机接收系统唤醒。正常的手机paging 应是规则的。

Idle 电流: 是指手机 sleep current 和Rx current 的时间平均值。影响手机Idle 电流的主要因素是sleep 底电流。RX 电流的宽度和高度在芯片组和协议栈定好以后,一般开发者没有能力改变。

3.5.2 Sleep软件相关知识 在高通平台上,Sleep由sleep task进行管理, sleep任务的优先级最低(优先级2). 当没有其他任务使用CPU时, 调度器才会让sleep task获得CPU的使用权限, sleep task会根据当前的任务调用状态, 决定CPU是否可以进入睡眠状态, 如果判定当前状态可以进入sleep状态, 则通过sleep_power_down_and_halt关闭主晶振TCXO及其他LDO电源, 以获得省电效果。具体流程如下图所示: TMC initFor(;;)Query signalsif ( sleep_sigs != 0 ) deal some signalselse sleep_power_down_and_haltSleep taskDeal some signals

sleep_initsleep_power_down_and_halt联想移动产品开发部软件处 - 26 -

44922004.doc

Sleep鉴权:

sleep_power_down_and_halt能否关闭TCXO及其他LDO电源, 以获得省电效果由sleep鉴权机制决定

Sleep鉴权机制大体可以分为两块鉴权部分:

1) sleep任务本身是否容许进行睡眠 2) 是否有其他任务不容许进行睡眠

3.5.3 查Sleep电流方法

1. 首先确保所有 task 都可以进sleep

. 在Sleep.c 里面添加代码,把所有not_okts 的task 从log 打出来, 如果这时只有SLEEP_DIAG_OKTS_SIG 和SLEEP_USB_OKTS_SIG 则正常.

. 再把上面加的代码去掉, 用示波器测量TCXO, 看是否有周期性关闭. 如果有则正常,没有则需查diag 和usb task 是否有问题.

2. 在 TCXO 关闭基础上,查板子是否存在漏电 . 测量板上所有电阻两端是否存在压降; . 把板子一些无关器件吹掉;

. 测试PM 输出的几个电压值是否正常

联想移动产品开发部软件处 - 27 -


高通平台Driver开发的参考文档(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公路工程建设程序与各阶段工程造价关系知识表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: