社区导航

 

搜索
查看: 4846|回复: 17

各位高人,请问有做过DVS的吗?

[复制链接]

112

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 11:46 | 显示全部楼层 |阅读模式
WINCE5.0、三星2440BSP,现在要做DVS功能,不知道从哪里下手,需要修改或完成哪些函数呢?请高手指点!

106

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 11:53 | 显示全部楼层
网络视频服务器DVS(digtal video server)???

这要实现,不简单。

回复

使用道具 举报

92

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 11:58 | 显示全部楼层
引用 1 楼 91program 的回复:
网络视频服务器DVS(digtal video server)???

这要实现,不简单。

不是网络视频服务,是DVS(Dynamic Voltage Scaling)动态电压调整,目的是为了达到动态控制能耗。

回复

使用道具 举报

95

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 12:07 | 显示全部楼层
没做过,不过三星是不是已经实现了,只要设置那个环境变量使能就OK?!

回复

使用道具 举报

107

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 12:34 | 显示全部楼层
引用 3 楼 xqhrs232 的回复:
没做过,不过三星是不是已经实现了,只要设置那个环境变量使能就OK?!

是有这个环境变量:BSP_USEDVS,但是我觉得实现的函数可能需要做改动或添加功能函数,对DVS的原理没怎么搞清楚,感觉很困难,所以希望有做过的同志们能帮一帮啊

回复

使用道具 举报

126

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 13:06 | 显示全部楼层
功耗决定频率和电压。
cpu的占用率高,就使用高频率和高电压;占用率低, 就降低频率和电压。

现在的台式机和笔记本的cpu基本都有,也是Intel首创的。

嵌入式在Intel的XScal PXA270首先出现利用。

因为涉及使用中改变cpu主频,所以cpu的设计复杂性增加,驱动复杂性也增加,除了判断cpu占用率,主要工作在于调整频率,调整电压,调整cpu各个模组的时钟分频。

这部分一般原厂都是直接提供,而且建议不要修改,否则很难保证是否会出问题。


2440没有专用的调整电压的接口,所以即使能调整频率,对功耗的减少也不客观。


目前Monahans(PXA3xx)系列cpu,以手机论,使用了动态调整能减少150-230mA左右。

回复

使用道具 举报

105

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 13:42 | 显示全部楼层
引用 5 楼 shuiyan 的回复:
功耗决定频率和电压。
cpu的占用率高,就使用高频率和高电压;占用率低, 就降低频率和电压。

现在的台式机和笔记本的cpu基本都有,也是Intel首创的。

嵌入式在Intel的XScal PXA270首先出现利用。

因为涉及使用中改变cpu主频,所以cpu的设计复杂性增加,驱动复杂性也增加,除了判断cpu占用率,主要工作在于调整频率,调整电压,调整cpu各个模组的时钟分频。

这部分一般原厂都是直接提供,而且建议不要修改,否…

多谢shuiyan兄指点迷津,相对于通过DVS具体能降低多少功耗,我更关心的是我现在应该怎么去实现DVS,在2440A的BSP里面有两个文件夹(timer_dvs和intr_dvs)貌似是与实现DVS相关的代码,我研究了一下,很是不明白,觉得没办法实现DVS的,难道是因为我没搞清楚究竟如何实现DVS?

回复

使用道具 举报

107

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 14:48 | 显示全部楼层
要做cpu的降频,必须确认cpu本身支持运行中变频,如果不支持,就没法做。2440没玩过dvs,不好说是否能做。

回复

使用道具 举报

51

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 15:38 | 显示全部楼层
引用 7 楼 shuiyan 的回复:
要做cpu的降频,必须确认cpu本身支持运行中变频,如果不支持,就没法做。2440没玩过dvs,不好说是否能做。

我的CPU用的是S3C2442,从本质上讲和2440区别不大,但是应该是支持DVS的,希望shuiyan兄有空时能替兄弟看一下可有好的方法,呵呵。鄙人比较菜,还望不要笑话我啊

回复

使用道具 举报

86

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 17:16 | 显示全部楼层
方法说起来简单:判断cpu占用率低过一定门限,就降低频率,再降低电压。判断cpu占用率高过一定门限,就提升电压,再提升频率。
不过做起来就不简单了。难道2442的bsp没提供?那厂商也不提供?
如果真支持,厂商应该会提供的,不然这功能就浪费了。
自己做,感觉困难大、周期长。

回复

使用道具 举报

114

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-11 17:34 | 显示全部楼层
引用 9 楼 shuiyan 的回复:
方法说起来简单:判断cpu占用率低过一定门限,就降低频率,再降低电压。判断cpu占用率高过一定门限,就提升电压,再提升频率。
不过做起来就不简单了。难道2442的bsp没提供?那厂商也不提供?
如果真支持,厂商应该会提供的,不然这功能就浪费了。
自己做,感觉困难大、周期长。

是啊,确实感觉困难很大,我的BSP是从网上DOWN的一个,一路做来很艰辛啊,我年后才接触WinCE的,辛苦啊

回复

使用道具 举报

95

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-12 12:41 | 显示全部楼层
没做过,帮顶!

回复

使用道具 举报

86

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-12 13:09 | 显示全部楼层
在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;
}

回复

使用道具 举报

110

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-12 14:05 | 显示全部楼层
uping

回复

使用道具 举报

90

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-12 14:40 | 显示全部楼层
该死的DVS,折腾两天了,没搞出啥头绪,我现在完全是瞎子摸鱼啊,苦恼

回复

使用道具 举报

62

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-12 15:16 | 显示全部楼层
GPB和GPF就是GPIO的B组和F组,具体做什么用,要看你的硬件设计了。

你从网上下载的BSP,这部分是和硬件关系比较密切的,没有匹配的硬件原理图,恐怕很难搞明白。

不知道你搞DVS的目的是什么,如果是自己研究,鉴于你自己也说是菜鸟,我想还是暂且搁置;
如果是工作任务,那你真的很不幸,又遇到了乱指挥的领导。。。。

回复

使用道具 举报

102

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-12 15:38 | 显示全部楼层
引用 15 楼 yashi 的回复:
GPB和GPF就是GPIO的B组和F组,具体做什么用,要看你的硬件设计了。

你从网上下载的BSP,这部分是和硬件关系比较密切的,没有匹配的硬件原理图,恐怕很难搞明白。

不知道你搞DVS的目的是什么,如果是自己研究,鉴于你自己也说是菜鸟,我想还是暂且搁置;
如果是工作任务,那你真的很不幸,又遇到了乱指挥的领导。。。。

yashi兄真是一针见血啊,佩服!首先,没有匹配的原理图,所以我没办法搞清楚GPB和GPF的控制;其次,我的确是菜鸟,很多东西有心无力啊;再次,这是领导安排的工作任务...我现在是欲哭无泪啊。
所以,病急乱投医,希望能在论坛里偶遇做过DVS的高人随意指点一下,呵呵,我这是非典型性守株待兔呢

回复

使用道具 举报

120

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-6-15 11:34 | 显示全部楼层
搞不定了,放弃吧,遗憾啊

回复

使用道具 举报

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

关闭

站长推荐上一条 /7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-27 05:51 , Processed in 0.476602 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表