因为基于Wince平台的嵌入式设备在大多时候都没有以高主频运行。但是,希望在需要时动态地改变CPU的主频来提高它的运算能力。请问Wince下有这个接口吗?
谢谢!
------解决方案--------------------
可以的,跟系统相关的接口是OEMIdle
可以参考Intel平台的IPM,三星平台的DVS,这都实现了动态调频以达到省电的目的
不过这一般都需要PMIC的支持,即可以调节CPU Core的电压,不然可能意义不是很大
------解决方案--------------------
绝对可以!我刚刚做好这样的事情。
重要的是看你使用的什么芯片,如果是三星的,我告诉你怎么做,别家的我就不懂了,但我想原理总是一样的。
在三星的平台上,有个OEMIDLE()函数,实现了降频和恢复回去的方法,你既可以在这里实现降频升频,也可以在OEMinit初始化的时候设置系统频率,当然了,因为主频跟外设是密切相关的,所以你得考虑好和外设的分频比、锁频时间等等,建议这部分用汇编写。当然了,每个CPU有它的推荐频率的,不可能升太高,而且,升频要电压一并升上去。
所以,我的结论是:坚决可以,但实现起来要注意一些细节。
------解决方案--------------------
wince下肯定是没有这个接口的!
都知道可以通过修改MPLL来调整CPU的主频,不过在wince系统运行中做这样的工作,会不会带来一些影响呢?一般都是在系统初始化的时候设置好,后面不会再变。动态的,理论上可以做,但是会出现什么情况,需要有人去试试。
------解决方案--------------------
CPU供电电压不能自己调节,当时钟变慢或者关掉PLL的话,内核的功耗会降低,这个时候CPU供电电压是不是降低了就不知道了
讨论LZ的问题,只有当当前没有活动线程和中断时,系统才会降低主频,当你要运算时肯定有个线程要激活,这时候系统就会回到正常主频了
------解决方案--------------------
WinCE没有提供直接调CPU频率的接口,这种功能一般都是由BSP提供。动态调系统频率要非常小心,搞不好就跑飞了,需要做大量长时间的测试确保系统稳定。如果你对相关硬件不熟悉的话最好还是不要调了,否则你都不知道怎么死的。