OpenWRT(LEDE)编译固件修改固件原始CPU频率超频,小米路由R3G超频1100Mhz固件下载
由于Breed里取消了对小米路由R3G的超频设置,只能从硬件初始化入手,折腾一翻后成功把小米路由R3G超频到1100Mhz。
小米路由R3G超频到1100Mhz设置教程
Openwrt固件的超频1100Mhz设置
这里使用的是Lean的Openwrt内核4.14,推荐4.14内核,v2瑞性能是最好的,新内核5.4会造成性能大幅下降。
Lean的内核4.14的源码包下载在OpenWRT目录,设置在openwrt\target\linux\ramips\patches-4.14\102-mt7621-fix-cpu-clk-add-clkdev.patch文件,通过设置CPU频率寄存器,可以提升MT7621的频率
修改一,第68行红色部分代码
#define MT7621_GPIO_MODE_UART1 1
#define MT7621_GPIO_MODE_I2C 2
#define MT7621_GPIO_MODE_UART3_MASK 0x3
@@ -113,49 +113,93 @@ static struct rt2880_pmx_group mt7621_pi
{ 0 }
};
修改二,第113和156-160行红色部分代码
+void __init ralink_clk_init(void)
+{
+ u32 syscfg, xtal_sel, clkcfg, clk_sel, curclk, ffiv, ffrac;
+ u32 pll, prediv, fbdiv;
+ u32 xtal_clk, cpu_clk, bus_clk,i;
+ const static u32 prediv_tbl[] = {0, 1, 2, 2};
+
+ syscfg = rt_sysc_r32(SYSC_REG_SYSTEM_CONFIG0);
+ xtal_sel = (syscfg >> XTAL_MODE_SEL_SHIFT) & XTAL_MODE_SEL_MASK;
+
+ clkcfg = rt_sysc_r32(SYSC_REG_CLKCFG0);
+ clk_sel = (clkcfg >> CPU_CLK_SEL_SHIFT) & CPU_CLK_SEL_MASK;
+
+ curclk = rt_sysc_r32(SYSC_REG_CUR_CLK_STS);
+ ffiv = (curclk >> CUR_CPU_FDIV_SHIFT) & CUR_CPU_FDIV_MASK;
+ ffrac = (curclk >> CUR_CPU_FFRAC_SHIFT) & CUR_CPU_FFRAC_MASK;
+
+ if (xtal_sel <= 2)
+ xtal_clk = 20 * 1000 * 1000;
+ else if (xtal_sel <= 5)
+ xtal_clk = 40 * 1000 * 1000;
+ else
+ xtal_clk = 25 * 1000 * 1000;
switch (clk_sel) {
case 0:
- clk_sts = rt_sysc_r32(SYSC_REG_CUR_CLK_STS);
- cpu_fdiv = ((clk_sts >> 8) & 0x1F);
- cpu_ffrac = (clk_sts & 0x1F);
- cpu_clk = (500 * cpu_ffrac / cpu_fdiv) * 1000 * 1000;
+ cpu_clk = 500 * 1000 * 1000;
break;
-
case 1:
- fbdiv = ((rt_sysc_r32(0x648) >> 4) & 0x7F) + 1;
- syscfg = rt_sysc_r32(SYSC_REG_SYSCFG);
- xtal_mode = (syscfg >> 6) & 0x7;
- if (xtal_mode >= 6) {
- /* 25Mhz Xtal */
- cpu_clk = 25 * fbdiv * 1000 * 1000;
- } else if (xtal_mode >= 3) {
- /* 40Mhz Xtal */
- cpu_clk = 40 * fbdiv * 1000 * 1000;
- } else {
- /* 20Mhz Xtal */
- cpu_clk = 20 * fbdiv * 1000 * 1000;
- }
+ pll = rt_memc_r32(MEMC_REG_CPU_PLL);
+ pll &= ~(0x7ff);
+ pll |= (0x362);
+ rt_memc_w32(pll,MEMC_REG_CPU_PLL);
+ for(i=0;i<1024;i++);
+ fbdiv = (pll >> CPU_PLL_FBDIV_SHIFT) & CPU_PLL_FBDIV_MASK;
+ prediv = (pll >> CPU_PLL_PREDIV_SHIFT) & CPU_PLL_PREDIV_MASK;
+ cpu_clk = ((fbdiv + 1) * xtal_clk) >> prediv_tbl[prediv];
break;
将原代码改为上面红色字体三行代码,其中"0x362"这个位置的值,对应的是1100Mhz的频率设置
频率设置值的换算如下,
0x362 =
1100Mhz/20Mhz -1 = 54
54*16+2 = 866
866转为十六进制就是0x362
相应的,
1000Mhz--0x312
1200Mhz--0x3B2
保存文件,重新编译,之前最好是能编译成功一次
make clean(一定要这个清除命令否则改动不会编译进去)
make -j1 V=s (如果之前已经成功编译过,可以用多线程编译)
编译好的超频固件下载
链接: https://pan.baidu.com/s/1bNgFzfsNTpXh3WtXWWFPpA提取码: j38r
确保已经装了breed或u-boot再刷入超频固件,账号密码root/password
小米路由R3G固件Lean_Openwrt MIR3G 1100Mhz
小米路由R3P固件Lean_Openwrt MIR3G 1100Mhz
小米路由AC2100固件Lean Openwrt MiAC2100 1100Mhz
红米AC2100固件Lean Openwrt RedMiAC2100 1100Mhz
没刷过openwrt用“kernel”固件然后再刷“sysupgrade”固件,已经刷有openwrt直接用sysupgrade固件
编译固件详细教程
可能遇到超频后时间会变快的问题
breed超频后路由器时间总是变快,路由器时间总是不准
K2P超频到1000,现在时间太快了,计划任务全乱套了
目前刷的是M大的openwrt,里面应该有时间同步
现在的问题是我不知道它多久同步一次?什么时候同步?一天同步几次还是几天才同步一次
是否可以在计划任务里输入时间同步命令?至少每天要自动同步2次以上才能解决问题
引起这个问题应该是
路由器没有专门的时钟芯片,而是用CPU的来作为基准 所以超CPU时间才会快
解决方法
让路由器每隔4小时同步一次时间才行
解决方法:0 */4 * * * ntpd -n -d -p stdtime.gov.hk
点击链接加入群聊三群:751529538
点击链接加入群聊二群:376877156
点击链接加入群聊【路由器交流群:622891808已满】
本站附件分享,如果附件失效,可以去找找看
饿了么红包