社区
嵌入开发(WinCE)
帖子详情
各位高人,请问有做过DVS的吗?
西山锈码
2009-06-11 11:46:10
WINCE5.0、三星2440BSP,现在要做DVS功能,不知道从哪里下手,需要修改或完成哪些函数呢?请高手指点!
...全文
285
17
打赏
收藏
各位高人,请问有做过DVS的吗?
WINCE5.0、三星2440BSP,现在要做DVS功能,不知道从哪里下手,需要修改或完成哪些函数呢?请高手指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
西山锈码
2009-06-15
打赏
举报
回复
搞不定了,放弃吧,遗憾啊
y_man18
2009-06-12
打赏
举报
回复
没做过,帮顶!
西山锈码
2009-06-12
打赏
举报
回复
[Quote=引用 15 楼 yashi 的回复:]
GPB和GPF就是GPIO的B组和F组,具体做什么用,要看你的硬件设计了。
你从网上下载的BSP,这部分是和硬件关系比较密切的,没有匹配的硬件原理图,恐怕很难搞明白。
不知道你搞DVS的目的是什么,如果是自己研究,鉴于你自己也说是菜鸟,我想还是暂且搁置;
如果是工作任务,那你真的很不幸,又遇到了乱指挥的领导。。。。
[/Quote]
yashi兄真是一针见血啊,佩服!首先,没有匹配的原理图,所以我没办法搞清楚GPB和GPF的控制;其次,我的确是菜鸟,很多东西有心无力啊;再次,这是领导安排的工作任务...我现在是欲哭无泪啊。
所以,病急乱投医,希望能在论坛里偶遇做过DVS的高人随意指点一下,呵呵,我这是非典型性守株待兔呢
yashi
2009-06-12
打赏
举报
回复
GPB和GPF就是GPIO的B组和F组,具体做什么用,要看你的硬件设计了。
你从网上下载的BSP,这部分是和硬件关系比较密切的,没有匹配的硬件原理图,恐怕很难搞明白。
不知道你搞DVS的目的是什么,如果是自己研究,鉴于你自己也说是菜鸟,我想还是暂且搁置;
如果是工作任务,那你真的很不幸,又遇到了乱指挥的领导。。。。
西山锈码
2009-06-12
打赏
举报
回复
该死的DVS,折腾两天了,没搞出啥头绪,我现在完全是瞎子摸鱼啊,苦恼
zhj8727
2009-06-12
打赏
举报
回复
uping
西山锈码
2009-06-12
打赏
举报
回复
在kernel\oal\init.c文件中发现这个函数,不理解是什么意思,有哪位能够讲解一下吗?这里的GPB和GPF用来控制什么啊?
#ifdef DVS_EN
void ChangeVoltage(int vtg)
{
volatile S3C2440A_IOPORT_REG *s2440IOP = (S3C2440A_IOPORT_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);
UINT8 temp;
// port setting
// GPF4:D0, GPF5:D1, GPF6:D2, GPF7:D3, GPB7:D4, GPB8:Latch enable
CurrVoltage = vtg;
temp = s2440IOP->GPFDAT;
switch(vtg) {
case V090: // 0.9V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(1<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(0<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
break;
case V095: // 0.95V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(1<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(0<<7)|(0<<6)|(0<<5)|(1<<4); //D3~0
break;
case V0975: // 0.975V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(1<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(0<<7)|(0<<6)|(0<<5)|(0<<4); //D3~0
break;
case V100: // 1.0V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(1<<6)|(1<<5)|(1<<4); //D3~0
break;
case V105: // 1.05V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(1<<6)|(1<<5)|(0<<4); //D3~0
break;
case V110: // 1.1V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(1<<6)|(0<<5)|(1<<4); //D3~0
break;
case V115: // 1.15V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(1<<6)|(0<<5)|(0<<4); //D3~0
break;
case V120: // 1.2V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
break;
case V125: // 1.25V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(0<<6)|(1<<5)|(0<<4); //D3~0
break;
case V130: // 1.3V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(0<<6)|(0<<5)|(1<<4); //D3~0
break;
case V135: // 1.35V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(1<<7)|(0<<6)|(0<<5)|(0<<4); //D3~0
break;
case V140: // 1.4V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(0<<7)|(1<<6)|(1<<5)|(1<<4); //D3~0
break;
case V145: // 1.45V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(0<<7)|(1<<6)|(1<<5)|(0<<4); //D3~0
break;
case V150: // 1.5V
s2440IOP->GPBDAT=(s2440IOP->GPBDAT&0x77f)|(0<<7); //D4
s2440IOP->GPFDAT=(s2440IOP->GPFDAT&0x0f)|(0<<7)|(1<<6)|(0<<5)|(1<<4); //D3~0
break;
default:
break;
}
// port setting
// GPF4:D0, GPF5:D1, GPF6:D2, GPF7:D3, GPB7:D4, GPB8:Latch enable, GPB10: OE
s2440IOP->GPBCON=(s2440IOP->GPBCON&0x3f3fff)|(1<<14); // GPB7: Output
RETAILMSG(1,(_T("GPBCON: 0X%x\r\n"),s2440IOP->GPBCON));
// s2440IOP->rGPBDN&=~(1<<7);
s2440IOP->GPFCON=(s2440IOP->GPFCON&0x00ff)|(0x5500); // GPF4~7: Output
// s2440IOP->rGPFDN&=~(0xf<<4);
RETAILMSG(1,(_T("GPFCON: 0X%x\r\n"),s2440IOP->GPFCON));
s2440IOP->GPBDAT&=~(1<<8); //Latch enable
s2440IOP->GPBCON=(s2440IOP->GPBCON&0x3cffff)|(1<<16); // GPB8: Output
s2440IOP->GPBDAT|=(1<<10); //Output enable
s2440IOP->GPBCON=(s2440IOP->GPBCON&0x0fffff)|(1<<20); // GPB10: Output
// s2440IOP->rGPBDN&=~(1<<8);
s2440IOP->GPBDAT|=(1<<8); //Latch disable
s2440IOP->GPFDAT = temp;
}
西山锈码
2009-06-11
打赏
举报
回复
[Quote=引用 3 楼 xqhrs232 的回复:]
没做过,不过三星是不是已经实现了,只要设置那个环境变量使能就OK?!
[/Quote]
是有这个环境变量:BSP_USEDVS,但是我觉得实现的函数可能需要做改动或添加功能函数,对DVS的原理没怎么搞清楚,感觉很困难,所以希望有做过的同志们能帮一帮啊
xqhrs232
2009-06-11
打赏
举报
回复
没做过,不过三星是不是已经实现了,只要设置那个环境变量使能就OK?!
西山锈码
2009-06-11
打赏
举报
回复
[Quote=引用 1 楼 91program 的回复:]
网络视频服务器DVS(digtal video server)???
这要实现,不简单。
[/Quote]
不是网络视频服务,是DVS(Dynamic Voltage Scaling)动态电压调整,目的是为了达到动态控制能耗。
91program
2009-06-11
打赏
举报
回复
网络视频服务器DVS(digtal video server)???
这要实现,不简单。
西山锈码
2009-06-11
打赏
举报
回复
[Quote=引用 9 楼 shuiyan 的回复:]
方法说起来简单:判断cpu占用率低过一定门限,就降低频率,再降低电压。判断cpu占用率高过一定门限,就提升电压,再提升频率。
不过做起来就不简单了。难道2442的bsp没提供?那厂商也不提供?
如果真支持,厂商应该会提供的,不然这功能就浪费了。
自己做,感觉困难大、周期长。
[/Quote]
是啊,确实感觉困难很大,我的BSP是从网上DOWN的一个,一路做来很艰辛啊,我年后才接触WinCE的,辛苦啊
shuiyan
2009-06-11
打赏
举报
回复
方法说起来简单:判断cpu占用率低过一定门限,就降低频率,再降低电压。判断cpu占用率高过一定门限,就提升电压,再提升频率。
不过做起来就不简单了。难道2442的bsp没提供?那厂商也不提供?
如果真支持,厂商应该会提供的,不然这功能就浪费了。
自己做,感觉困难大、周期长。
西山锈码
2009-06-11
打赏
举报
回复
[Quote=引用 7 楼 shuiyan 的回复:]
要做cpu的降频,必须确认cpu本身支持运行中变频,如果不支持,就没法做。2440没玩过dvs,不好说是否能做。
[/Quote]
我的CPU用的是S3C2442,从本质上讲和2440区别不大,但是应该是支持DVS的,希望shuiyan兄有空时能替兄弟看一下可有好的方法,呵呵。鄙人比较菜,还望不要笑话我啊
shuiyan
2009-06-11
打赏
举报
回复
要做cpu的降频,必须确认cpu本身支持运行中变频,如果不支持,就没法做。2440没玩过dvs,不好说是否能做。
西山锈码
2009-06-11
打赏
举报
回复
[Quote=引用 5 楼 shuiyan 的回复:]
功耗决定频率和电压。
cpu的占用率高,就使用高频率和高电压;占用率低, 就降低频率和电压。
现在的台式机和笔记本的cpu基本都有,也是Intel首创的。
嵌入式在Intel的XScal PXA270首先出现利用。
因为涉及使用中改变cpu主频,所以cpu的设计复杂性增加,驱动复杂性也增加,除了判断cpu占用率,主要工作在于调整频率,调整电压,调整cpu各个模组的时钟分频。
这部分一般原厂都是直接提供,而且建议不要修改,否…
[/Quote]
多谢shuiyan兄指点迷津,相对于通过DVS具体能降低多少功耗,我更关心的是我现在应该怎么去实现DVS,在2440A的BSP里面有两个文件夹(timer_dvs和intr_dvs)貌似是与实现DVS相关的代码,我研究了一下,很是不明白,觉得没办法实现DVS的,难道是因为我没搞清楚究竟如何实现DVS?
shuiyan
2009-06-11
打赏
举报
回复
功耗决定频率和电压。
cpu的占用率高,就使用高频率和高电压;占用率低, 就降低频率和电压。
现在的台式机和笔记本的cpu基本都有,也是Intel首创的。
嵌入式在Intel的XScal PXA270首先出现利用。
因为涉及使用中改变cpu主频,所以cpu的设计复杂性增加,驱动复杂性也增加,除了判断cpu占用率,主要工作在于调整频率,调整电压,调整cpu各个模组的时钟分频。
这部分一般原厂都是直接提供,而且建议不要修改,否则很难保证是否会出问题。
2440没有专用的调整电压的接口,所以即使能调整频率,对功耗的减少也不客观。
目前Monahans(PXA3xx)系列cpu,以手机论,使用了动态调整能减少150-230mA左右。
D
VS
SDK(windows)(支持行为分析D
VS
)
D
VS
SDK(windows)(支持行为分析D
VS
),海康D
VS
二次开发SDK
D
VS
Vs
ti - 7 种乐器的 免费音源
D
VS
Vs
ti (DSV 提供 7 种乐器的 免费音源,效果不错,效果 比 DSK 还要牛。) DreamSequencer2-V2.01 , d
vs
_bass-V1.1 , d
vs
_guitar-V1.05a , d
vs
_microtrance-V1.0 d
vs
_microtron-V1.0 , d
vs
_saxophone-V1.8 , nanotron2
德州仪器DVR、D
VS
解决方案
德州仪器DVR、D
VS
解决方案 DVR and D
VS
Solutionsfrom Texas Instruments Market Overview & Trends DVR/D
VS
Block Diagram TI Solutions for DVR/D
VS
What’s New from TI?
宏电网络视频服务器D
VS
参数说明H3201 D
VS
使用说明书.pdf
宏电网络视频服务器D
VS
参数说明H3201 D
VS
使用说明书pdf,宏电网络视频服务器D
VS
参数说明H3201 D
VS
使用说明书
SEED D
VS
6446硬件测试用户手册
D
VS
6446测试操作
嵌入开发(WinCE)
19,500
社区成员
41,567
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章