20231214解决[ 24.476855] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000的问题
2023/12/14 19:30
开发板:Firefly的AIO-3399J
缘起:为了给AIO-3399J适配Rockchip原厂的Android10/12的挖掘机开发板,于是/步骤:
使用Firefly的Android10的SDK,内核的DTS使用挖掘机的,编译Android10使用选项rk3399-Android10-userdebug。
这样可以确定最小改动的DTS,以及较小改动的Android10部分,方便移植!
1、编译uboot
cd uboot
./make.sh rk3399
2、编译kernel:
make ARCH=arm64 rockchip_defconfig android-10.config rk3399.config -j36
make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android10/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
3、编译安卓
source build/envsetup.sh
lunch rk3399-Android10-userdebug
make -j36
./build.sh -u
刷机之后出现:
[ 792.587773] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 793.158517] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.164276] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.227763] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.281167] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.431287] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.544756] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.634274] rockchip-dmc dmc: Get wrong frequency, Request 600000000, Current 856000000
[ 793.764700] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 793.830945] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 793.884167] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 793.937495] rockchip-dmc dmc: Get wrong frequency, Request 400000000, Current 856000000
[ 793.992742] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.044337] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 794.097928] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.150809] rockchip-dmc dmc: Get wrong frequency, Request 400000000, Current 856000000
[ 794.207496] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.264195] rockchip-dmc dmc: Get wrong frequency, Request 528000000, Current 856000000
[ 794.317725] rockchip-dmc dmc: Get wrong frequency, Request 528000000, Current 856000000
[ 794.371019] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
[ 794.424249] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
[ 794.477630] rockchip-dmc dmc: Get wrong frequency, Request 400000000, Current 856000000
[ 794.530928] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.584380] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.641063] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.694234] rockchip-dmc dmc: Get wrong frequency, Request 300000000, Current 856000000
[ 794.747582] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 794.800829] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 794.854237] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 794.907659] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 794.964510] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 795.094573] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 795.147833] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 795.204357] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
[ 795.279423] rockchip-dmc dmc: Get wrong frequency, Request 528000000, Current 856000000
[ 795.341709] rockchip-dmc dmc: Get wrong frequency, Request 528000000, Current 856000000
[ 2.070749] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
[ 15.704625] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
[ 15.860291] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
[ 15.860378] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
[ 24.476855] rockchip-dmc dmc: Get wrong frequency, Request 800000000, Current 856000000
由于是适配Firefly的AIO-3399J开发板,Firefly他们自己肯定适配好了,很容易找到DDR的配置部分DMC:
Z:\3TB\03rk3399_Android10.0异常没有编译Android\kernel-excavator\arch\arm64\boot\dts\rockchip-excavator\rk3399-excavator-sapphire.dtsi
Z:\3TB\03rk3399_Android10.0异常没有编译Android\kernel-firefly\arch\arm64\boot\dts\rockchip-firefly\rk3399-firefly-port.dtsi
Z:\3TB\03rk3399_Android10.0异常没有编译Android\kernel\arch\arm64\boot\dts\rockchip\rk3399-excavator-sapphire.dtsi
Z:\3TB\03rk3399_Android10.0异常没有编译Android\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-port.dtsi
&dmc {
status = "okay";
center-supply = <&vdd_center>;
upthreshold = <40>;
downdifferential = <20>;
system-status-freq = <
/*system status freq(KHz)*/
SYS_STATUS_NORMAL 800000
SYS_STATUS_REBOOT 528000
SYS_STATUS_SUSPEND 200000
SYS_STATUS_VIDEO_1080P 200000
SYS_STATUS_VIDEO_4K 600000
SYS_STATUS_VIDEO_4K_10B 800000
SYS_STATUS_PERFORMANCE 800000
SYS_STATUS_BOOST 600000
SYS_STATUS_DUALVIEW 600000
SYS_STATUS_ISP 600000
>;
vop-bw-dmc-freq = <
/* min_bw(MB/s) max_bw(MB/s) freq(KHz) */
0 762 200000
763 1893 400000
1894 3012 528000
3013 99999 800000
>;
auto-freq-en = <1>;
auto-min-freq = <200000>;
};
修改为:
&dmc {
status = "okay";
center-supply = <&vdd_center>;
compatible = "rockchip,rk3399-dmc";
devfreq-events = <&dfi>;
interrupts =
clocks = <&cru SCLK_DDRC>;
clock-names = "dmc_clk";
ddr_timing = <&ddr_timing>;
upthreshold = <40>;
downdifferential = <20>;
system-status-freq = <
/*system status freq(KHz)*/
SYS_STATUS_NORMAL 856000
SYS_STATUS_REBOOT 856000
SYS_STATUS_SUSPEND 328000
SYS_STATUS_VIDEO_1080P 666000
SYS_STATUS_VIDEO_4K 856000
SYS_STATUS_VIDEO_4K_10B 856000
SYS_STATUS_PERFORMANCE 856000
SYS_STATUS_BOOST 856000
SYS_STATUS_DUALVIEW 856000
SYS_STATUS_ISP 856000
>;
vop-bw-dmc-freq = <
/* min_bw(MB/s) max_bw(MB/s) freq(KHz) */
0 762 416000
763 3012 666000
3013 99999 856000
>;
vop-pn-msch-readlatency = <
0 0x20
4 0x20
>;
auto-min-freq = <328000>;
auto-freq-en = <0>;
};
&dmc_opp_table {
compatible = "operating-points-v2";
opp-200000000 {
opp-hz = /bits/ 64 <200000000>;
opp-microvolt = <900000>;
status = "disabled";
};
opp-300000000 {
opp-hz = /bits/ 64 <300000000>;
opp-microvolt = <900000>;
status = "disabled";
};
opp-328000000 {
opp-hz = /bits/ 64 <328000000>;
opp-microvolt = <900000>;
};
opp-400000000 {
opp-hz = /bits/ 64 <400000000>;
opp-microvolt = <900000>;
status = "disabled";
};
opp-416000000 {
opp-hz = /bits/ 64 <416000000>;
opp-microvolt = <900000>;
};
opp-528000000 {
opp-hz = /bits/ 64 <528000000>;
opp-microvolt = <900000>;
status = "disabled";
};
opp-600000000 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <900000>;
status = "disabled";
};
opp-666000000 {
opp-hz = /bits/ 64 <666000000>;
opp-microvolt = <900000>;
};
opp-800000000 {
opp-hz = /bits/ 64 <800000000>;
opp-microvolt = <900000>;
status = "disabled";
};
opp-856000000 {
opp-hz = /bits/ 64 <856000000>;
opp-microvolt = <900000>;
};
opp-928000000 {
opp-hz = /bits/ 64 <928000000>;
opp-microvolt = <900000>;
status = "disabled";
};
};
百度没有找到解决方法,果断上BING:
[ 222.561356] rockchip-dmc dmc: Get wrong frequency, Request 200000000, Current 856000000
参考资料:
https://blog.csdn.net/YY2065/article/details/128922883
N_rk3399_Android11调试遇到ddr配置不对的问题
https://blog.csdn.net/EmuELEC/article/details/127258162
Rockchip平台DDR调试排查手段
https://blog.csdn.net/lyy901135/article/details/103401292
RK3399 4.4内核 修改DDR频率