LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2023|回复: 10

你想如windows 那样给你的PM CPU 降低电压吗?那么看这里~~

[复制链接]
发表于 2007-12-24 18:14:52 | 显示全部楼层 |阅读模式
1 如果你不知道我在说什么 ,就不要往下看了
2 如果你不愿意或者不会编译内核 也不要看了
3 如果你不知道自己cpu稳定的工作电压 也不要看了
4 如果你用台机 也不需要降低电压
5 如果你电池很nb 更不需要了~~
6 以上条件 都不满足的可以往下看~~



~~PM 1代和2代~~首先给内核打补丁 补丁文件在附件里面~~~
然后 打开 /linux/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
会看到如下几个结构
static struct cpufreq_frequency_table banias_900[] =
{
OP(600, 844),
OP(800, 988),
OP(900, 1004),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Ultra Low Voltage Intel Pentium M processor 1000MHz (Banias) */
static struct cpufreq_frequency_table banias_1000[] =
{
OP(600, 844),
OP(800, 972),
OP(900, 988),
OP(1000, 1004),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Low Voltage Intel Pentium M processor 1.10GHz (Banias) */
static struct cpufreq_frequency_table banias_1100[] =
{
OP( 600, 956),
OP( 800, 1020),
OP( 900, 1100),
OP(1000, 1164),
OP(1100, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};


/* Low Voltage Intel Pentium M processor 1.20GHz (Banias) */
static struct cpufreq_frequency_table banias_1200[] =
{
OP( 600, 956),
OP( 800, 1004),
OP( 900, 1020),
OP(1000, 1100),
OP(1100, 1164),
OP(1200, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 1.30GHz (Banias) */
static struct cpufreq_frequency_table banias_1300[] =
{
OP( 600, 956),
OP( 800, 1260),
OP(1000, 1292),
OP(1200, 1356),
OP(1300, 1388),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 1.40GHz (Banias) */
static struct cpufreq_frequency_table banias_1400[] =
{
OP( 600, 956),
OP( 800, 1180),
OP(1000, 1308),
OP(1200, 1436),
OP(1400, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 1.50GHz (Banias) */
static struct cpufreq_frequency_table banias_1500[] =
{
OP( 600, 956),
OP( 800, 1116),
OP(1000, 1228),
OP(1200, 1356),
OP(1400, 1452),
OP(1500, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 1.60GHz (Banias) */
static struct cpufreq_frequency_table banias_1600[] =
{
OP( 600, 956),
OP( 800, 1036),
OP(1000, 1164),
OP(1200, 1276),
OP(1400, 1420),
OP(1600, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 1.70GHz (Banias) */
static struct cpufreq_frequency_table banias_1700[] =
{
OP( 600, 956),
OP( 800, 1004),
OP(1000, 1116),
OP(1200, 1228),
OP(1400, 1308),
OP(1700, 1484),
{ .frequency = CPUFREQ_TABLE_END }
};

#undef OP

/* Dothan processor datasheet 30218903.pdf defines 4 voltages for each
frequency (VID#A through VID#D) - this macro allows us to define all
of these but we only use the VID#C voltages at compile time - this may
need some work if we want to select the voltage profile at runtime. */

#define OP(mhz, mva, mvb, mvc, mvd) \
{ \
.frequency = (mhz) * 1000, \
.index = (((mhz)/100) << Cool | ((mvc - 700) / 16) \
}

/* Intel Pentium M processor 715 / 1.50GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1500[] =
{
OP( 600, 700, 700, 700, 700),
OP( 800, 988, 988, 988, 988),
OP(1000, 1052, 1052, 1052, 1052),
OP(1200, 1180, 1180, 1180, 1180),
OP(1500, 1212, 1212, 1212, 1212),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 725 / 1.60GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1600[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1068, 1068, 1052, 1052),
OP(1000, 1132, 1132, 1116, 1116),
OP(1200, 1212, 1196, 1180, 1164),
OP(1400, 1276, 1260, 1244, 1228),
OP(1600, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 735 / 1.70GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1700[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1052, 1052, 1052, 1052),
OP(1000, 1116, 1116, 1116, 1100),
OP(1200, 1180, 1180, 1164, 1148),
OP(1400, 1244, 1244, 1228, 1212),
OP(1700, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 745 / 1.80GHz (Dothan) */
static struct cpufreq_frequency_table dothan_1800[] =
{
OP( 600, 988, 988, 988, 988),
OP( 800, 1052, 1052, 1052, 1036),
OP(1000, 1116, 1100, 1100, 1084),
OP(1200, 1164, 1164, 1148, 1132),
OP(1400, 1228, 1212, 1212, 1180),
OP(1600, 1292, 1276, 1260, 1228),
OP(1800, 1340, 1324, 1308, 1276),
{ .frequency = CPUFREQ_TABLE_END }
};

/* Intel Pentium M processor 755 / 2.00GHz (Dothan) */
static struct cpufreq_frequency_table dothan_2000[] =
{
OP( 600, 700, 700, 700, 700),
OP( 800, 700, 700, 700, 700),
OP(1000, 700, 700, 700, 700),
OP(1200, 1084, 1084, 1084, 1084),
OP(1400, 1116, 1116, 1116, 1116),
OP(1600, 1148, 1148, 1148, 1148),
OP(1800, 1196, 1196, 1196, 1196),
OP(2000, 1244, 1244, 1244, 1244),
{ .frequency = CPUFREQ_TABLE_END }
};
看到OP 后面的4个数字了吗 不错那就是电压值 前面是cpu的频率 后面的值/100 就是实际的电压值

如果里面没有你的cpu可以跟改一个为你的cpu~~型号 如果觉得变频档次不够可以自己添加 最多
是1个倍频1档次

cpu的稳定电压可以在windows 用rmclock 测试出来~~~电压值可以参考里面的~

然后如一般情况编译次内核 拷贝你的.config 到/usr/src/linux
~~cd /usr/src/linux
make&&make modules_install&&make install
如果安装了fglrx驱动清重新安装一次~~~~






编译内核的注意的几点~~

如果希望用cpufreq 则全部加为模块~~
下面的设备不要 选ACPI Processor P-States driver 这个和speedstep有冲突如果选了这个speedstep就加载不了 上面的更该改就失效了

~~~~~~~~~~~~~~~~~~~

直接 将下面的模块写入etc/modules里面
pufreq_conservative   


cpufreq_ondemand      
cpufreq_performance     
cpufreq_stats           
cpufreq_powersave      
speedstep_centrino   
freq_table

开机有提示找不到acpi-cpufreq模块 没关系  因为我们有speedstep模块来驱动~~~
可以删除cpufreq~~
 楼主| 发表于 2007-12-24 18:32:04 | 显示全部楼层
去掉bz2 扩展名就行了 没有压缩~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-24 18:37:00 | 显示全部楼层
参考网上的多篇 帖子  酒瓶 装新酒  原创的 可以加精吗~~~~

经过上面的 改动我从cpu电压在1。121 到0。7 之间波动 ~~~电池延长30分钟时间~~~
回复 支持 反对

使用道具 举报

发表于 2007-12-24 18:45:47 | 显示全部楼层
编译内核太麻烦了,一般安装powersaved就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-24 19:02:28 | 显示全部楼层
powersaved做不到的  这不只是降频率和电压  是降低了 每一级别的标准电压~~
比如满载 是1。340  伏特  我把我的cpu降低到1.212伏特   就是和windows下rmclock  和nhc 一样的功能~~~~
回复 支持 反对

使用道具 举报

发表于 2007-12-24 21:31:45 | 显示全部楼层
我记得我发过一个类似补丁,适用于2.6.15内核

现在新的内核已经不用这些了,也不需要用这些了。
直接用gnome的相关applet就可以控制啦。
如果不支持,有可能CPU是工程版或是打磨过的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-24 21:58:29 | 显示全部楼层
晕 ls的人都没弄明白  不需要才怪了~~
回复 支持 反对

使用道具 举报

发表于 2007-12-24 23:52:00 | 显示全部楼层
不是有phc项目吗,楼主这个好像已经过时了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-25 00:37:46 | 显示全部楼层
找了一下都差不多 都要编译内核~~!自己改可以用到最新的内核~~
回复 支持 反对

使用道具 举报

发表于 2007-12-30 11:43:37 | 显示全部楼层
http://www.herofit.cn/2006/12/27_133
据linux-kernel中intel的工程师介绍,speedstep模块已经deprecated(有没有禁用我不知道),全面转向acpi-cpufreq
回复 支持 反对

使用道具 举报

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

本版积分规则

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