3162|10

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

弄电源管理遇到奇怪的问题,求救。 [复制链接]

今天,看了一下电源管理,下午就动起手来,后来启动后无论怎么搞,都会不断的调用OEMIDLE函数,我在里面加的打印信息,不停的打印。
我就做了下面的修改而已
首先修改bootloader
;Check if the boot is caused by the wake-up from SLEEP mode.
        ldr        r1,=GSTATUS2
        ldr        r0,[r1]
        tst        r0,#0x2
        ;In case of the wake-up from SLEEP mode, go to SLEEP_WAKEUP handler.
        bne        WAKEUP_SLEEP
——这里跟IDLE没有关系吧!

我再检查OEMIDLE函数是否被哪里调用了没有,结果是是没有的,但是就会不停的打印信息,启动超长时间,并且这个液晶画面不出来了。

请问是什么导致不停的进入空闲的?哎,幸好做了备份,不然被搞死了。

欢迎给点意见。


最新回复

WinCE 的 Scheduler 是 Thread-base 的, 若是目前所有的 Thread 皆是在 WaitForSingleObject or Sleep 中, 則 Scheduler 無 Thread 可切換, 那麼你覺得它該做什麼呢?? 透過 OEMIdle 在 DebugPort 印出 "發呆中, 請稍候".... OEMIdle 是給系統在 "沒有 Thread 需要被 service" 的情況下叫用的, 故就沒所謂的 "耗資源" 的問題. Paul, Chao @ Techware  详情 回复 发表于 2009-3-30 12:40
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
关注
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
哈, 建議你用  "你可以準備一個 LED, 在 OEMIdle 進入時 關掉, 離開 OEMIdle 前 打開, 觀察它的亮度或是 frequency or duty cycle, 你可以發現一些事情. "

你用 debug message, 那不把你搞死, 用 LED, 時間的 delay 會很小 (ns 等級), 用 UART or Ethernet, 那要等 FIFO 清空後才能繼續往下丟, 所以 delay 會很久.

"但是 scheduler 發現沒有 thread 需要被 service, 所以進入 OEMIdle", 所以是 WinCE Kernel 進去的, 查查 private 的 code 吧, 或許在那裡, 也或許 ms 沒公佈 source code.

若是系統不忙(即無 peripheral interrupt occur), 那麼 OEMIdle 預定是由 scheduler timer interrupt 觸發後離開, 所以你看 %_WINCEROOT%\platform\common\SRC\COMMON\TIMER 下有好幾種 scheduler timer 的實現方式, 那是有關係的.

Paul, Chao
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
你是不是修改了状态寄存器,GSTATUS2的值被你修改了吧?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 yashi 的回复:
你是不是修改了状态寄存器,GSTATUS2的值被你修改了吧?


这个GSTATUS2不会影响空闲吧。只有CLKCON才会影响的。
GSTATUS2 0x560000b4 R/W Reset status 0x1

GSTATUS2 Bit Description
Reserved [3] Reserved
WDTRST [2] Boot is caused by Watch Dog Reset
cleared by writing !°1
SLEEPRST [1] Boot is caused by wakeup reset in sleep mode
cleared by writing !°1!
PWRST [0] Boot is caused by power on reset
cleared by writing !°1

 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
找不到原因。现在拿备份的再逐步加入信息。
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(初级)

7
 
OEMIdle再哪里调用我不知道。但是在ISR中断线程里面有是系统进入IDLE模式的代码。就是在没有中断的时候,WinCE软芯片进入IDLE模式,一旦发生了中断,就从IDLE模式唤醒。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 xajhuang 的回复:
OEMIdle再哪里调用我不知道。但是在ISR中断线程里面有是系统进入IDLE模式的代码。就是在没有中断的时候,WinCE软芯片进入IDLE模式,一旦发生了中断,就从IDLE模式唤醒。


哎,不知道怎么回事,现在我拿原来的BSP编译,也会不能出现画面了。

是这样的,一旦启动NK,这个LCD画面就不出现了。我没有修改LCD驱动啊,真是晕了,启动时候不断进入OEMIDLE。

我把信息屏蔽了也感觉启动慢了很多。

现在我把原来好的工程和BSP重新编译,如果不行,那我也没有办法了。真是奇了。

 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
找到LCD不能显示画面的原因了。是在OAL我加了如下代码

// for Speaker EN——在这里会导致LCD的画面不能显示。
        //s2440IOP->GPGDAT |= 0x10 | 0x80 |0x01; //bt sleep
        //s2440IOP->GPGDAT &= ~0X02;// GPG1 SPEAKER_EN = 0, SOUND OK;
        //s2440IOP->GPGCON = 0xff214185;//0xffa94aaa;        //GPG10 EINT18
        //s2440IOP->GPGUP  = 0xffff;    // The pull up function is disabled GPG[15:0]
这个代码刚好和LCD的液晶电源使能冲突了。

这个东西的确很郁闷。以前我加的时候没有编译OAL,并且在驱动中再加了一次,现在重新编译BSp,导致LCD就受影响了。

让我感觉奇怪的是OEMIDLE的事情,

我感觉这个函数莫非是必须执行的?

的确让人感到莫名其妙。

再加上打印信息吧。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
//------------------------------------------------------------------------------
//
//  Function:  OEMIdle
//
//  This function is called by the kernel when there are no threads ready
//  to run. The CPU should be put into a reduced power mode if exists and
//  halted. It is important to be able to resume execution quickly upon
//  receiving an interrupt.

看来是系统会自动调用OEMIdle的

感觉很耗资源。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

11
 
WinCE 的 Scheduler 是 Thread-base 的, 若是目前所有的 Thread 皆是在 WaitForSingleObject or Sleep 中, 則 Scheduler 無 Thread 可切換, 那麼你覺得它該做什麼呢??

透過 OEMIdle 在 DebugPort 印出 "發呆中, 請稍候"....

OEMIdle 是給系統在 "沒有 Thread 需要被 service" 的情況下叫用的, 故就沒所謂的 "耗資源" 的問題.

Paul, Chao @ Techware
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表