20250211解决荣品的RK3566核心板在Android13下出现charge_extrem_low_power的问题

server/2025/2/12 23:16:28/

20250211解决荣品的RK3566核心板在Android13下出现charge_extrem_low_power的问题
2025/2/11 17:45


缘起:荣品的RK3566核心板在Android13下,出现charge_extrem_low_power之后就直接挂住了。
由于我司使用了CW2217这个电量计,没有使用核心板自带的RK809。【嫌弃RK809的精度不够。】
battery: 160
voltage_sys = 208
voltage_usb = 208
current_avg = -2
dsoc = 0
rsoc = 0
remain_cap = 0
fcc = 5000
qmax = 5100
NO_CHARGER
Enable charge animation display
charge_extrem_low_power: Not charging, online=0. Shutdown...
debug info:
CAL_OFFSET = 0x8014
current_avg = -2
k = 18, b = 20

battery: 160
voltage_sys = 208
voltage_usb = 208
current_avg = -2
dsoc = 0
rsoc = 0
remain_cap = 0
fcc = 5000
qmax = 5100


结果调试的时候,悲剧了,起不来了!
问荣品,说是要在DTS设备树中屏蔽掉RK809的部分即可。

Z:\Android13.0\kernel-5.10\arch\arm64\boot\dts\rockchip\rk356x\pro-rk3566.dts
Z:\Android13.0\kernel-5.10\arch\arm64\boot\dts\rockchip00\rk356x\pro-rk3566.dts


    charge-animation {
        compatible = "rockchip,uboot-charge";
        rockchip,uboot-charge-on = <0>;
        rockchip,android-charge-on = <0>;
        rockchip,uboot-low-power-voltage = <7000>;
        rockchip,screen-on-voltage = <7000>;
        status = "okay";
    };
修改为:
    charge-animation {

        compatible = "rockchip,uboot-charge";
        rockchip,uboot-charge-on = <0>;
        rockchip,android-charge-on = <0>;
        rockchip,uboot-low-power-voltage = <7000>;
        rockchip,screen-on-voltage = <7000>;
        status = "disabled";
    };


&rk809 {
    battery {
                compatible = "rk817,battery";
                pinctrl-names = "default";
                pinctrl-0 = <&rp_bat_pins>;

                ocv_table = < 7024 7072 7080 7096 7104 7112 7120
                              7136 7152 7168 7184 7224 7264 7320
                              7392 7512 7612 7724 7828 7928 8100>;

                design_capacity = <5000>;
                design_qmax = <5100>;
                bat_res = <100>;
                sleep_enter_current = <300>;
                sleep_exit_current = <300>;
                sleep_filter_current = <100>;
                power_off_thresd = <7024>;
                zero_algorithm_vol = <7400>;
                max_soc_offset = <60>;
                monitor_sec = <5>;
        
                sample_res = <20>;
                bat_res_up = <140>;
                bat_res_down = <20>;
                
                virtual_power = <0>;    //test mode, 1 to force report 66%
                energy_mode = <0>;
                register_chg_psy = <1>;    //rk817 report charge state
                
                plug-det-gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;   //rpdzkj add for detect charge state, need register_chg_psy = 1, active state is plugin.
                full-det-gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;      //rpdzkj add for detect charge status whether is full.
        };
};

修改为:
&rk809 {
//    battery {
//                compatible = "rk817,battery";
//                pinctrl-names = "default";
//                pinctrl-0 = <&rp_bat_pins>;
//
//                ocv_table = < 7024 7072 7080 7096 7104 7112 7120
//                              7136 7152 7168 7184 7224 7264 7320
//                              7392 7512 7612 7724 7828 7928 8100>;

//                design_capacity = <5000>;
//                design_qmax = <5100>;
//                bat_res = <100>;
//                sleep_enter_current = <300>;
//                sleep_exit_current = <300>;
//                sleep_filter_current = <100>;
//                power_off_thresd = <7024>;
//                zero_algorithm_vol = <7400>;
//                max_soc_offset = <60>;
//                monitor_sec = <5>;
//        
//                sample_res = <20>;
//                bat_res_up = <140>;
//                bat_res_down = <20>;
//                
//                virtual_power = <0>;    //test mode, 1 to force report 66%
//                energy_mode = <0>;
//                register_chg_psy = <1>;    //rk817 report charge state
//                
//                plug-det-gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;   //rpdzkj add for detect charge state, need register_chg_psy = 1, active state is plugin.
//                full-det-gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;      //rpdzkj add for detect charge status whether is full.
//        };
};


参考资料:
百度:RK809 电量计 充电指示

https://blog.csdn.net/wsen2012/article/details/139337998
1、关掉电池检测
理由
之所以要关闭充电检测是因为我用RP-PRO-3566核芯板做了一个自己的底板,但充电电路这块又没有抄全,导至整个板子无法启动。打印信息提示是没有足够的电源,然后直接关机了。

有效操作
1、找到主设备树。如下图关闭电池检测即可。


https://m.elecfans.com/article/2092347.html
https://blog.csdn.net/Industio_CSDN/article/details/130921874
【深圳触觉智能技术分享】RK3568 RK809电量计电池调试
 
/{
    charger_det: charger {
        compatible = "gpio-charger";
        charger-type = "mains";
        gpios = <&gpio1 RK_PD1 GPIO_ACTIVE_LOW>;
        status = "okay";
    };
 
    test-power {
        status = "disabled";
    };
};
 
&rk809 {
        battery {
            status = "okay";
            compatible = "rk817,battery";
            ocv_table = <7000 7250 7370 7384 7436 7470 7496
                7520 7548 7576 7604 7632 7668 7706
                7754 7816 7892 7950 8036 8142 8212>;/*开路电压,是第一次接电池开机、长时间关机后再开机、长时间休眠后校正库仑计的依据,
                                                    0%~100%的电量细分成 21 个点,步进 5%电量*/
            design_capacity = <1500>;       //实际电池容量,单位:mah
            design_qmax = <1500>;           //最大容量值
            design_max_voltage = <8400>;      //最大电压
            bat_res = <180>;                //电池内阻
            sleep_enter_current = <300>;    //进入松弛模式的条件之一
            sleep_exit_current = <300>;     //退出松弛模式的条件之一
            sleep_filter_current = <100>;   //过滤无效的松弛电流。
            power_off_thresd = <7000>;      //期待的系统关机电压,单位:mV
            zero_algorithm_vol = <7700>;    //进入电压+库仑计放电模式的电压值
            max_soc_offset = <60>;          //开机校正时允许的最大电量误差。
            monitor_sec = <5>;              //轮询时间 单位秒
            sample_res = <10>;              //电池端附近的采样电阻大小
            energy_mode = <1>;              //该值为 1 时表示尽可能采取将电池电量放完的方式,为 0 时表示尽量考虑曲线平滑的合理性
            fb_temperature = <105>;         //芯片热保护温度阈值
            virtual_power = <0>;            //假电池模式(测试模式)
            bat_res_up = <140>;             //BATDIV上拉分压电阻
            bat_res_down = <20>;                        //BATDIV下拉分压电阻
            register_chg_psy = <0>;         //是否通过RK809上报充电状态
            external_chg_psy = <1>;                    //配置外部DC检测上报充电状态
        };
};

电池调试
驱动文件路径为:kernel/drivers/power/supply/rk817_battery.c
系统启动后可从 /sys/class/power_supply/battery/uevent 节点获取电池状态信息。

支持应用层配置驱动调试信息的输出,配置方法如下:

#开启打印信息
echo 1 > /sys/module/rk817_battery/parameters/dbg_level
#关闭打印信息
echo 0 > /sys/module/rk817_battery/parameters/dbg_level
开启后详细的电池数据将会输出至调试串口,内容如下:


完整的LOG:
console:/ $ 
console:/ $ 
console:/ $ su
console:/ # 
console:/ # 
console:/ # 
console:/ # [ 3187.519017][  T176] type=1400 audit(1739262997.296:567): avc: denied { execute } for comm="sh" name="toybox" dev="dm-0" ino=1722 scontext=u:r:autosync:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1
[ 3187.519249][  T176] type=1400 audit(1739262997.296:568): avc: denied { getattr } for comm="sh" path="/system/bin/toybox" dev="dm-0" ino=1722 scontext=u:r:autosync:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1
[ 3187.520535][  T176] type=1400 audit(1739262997.300:569): avc: denied { read open } for comm="sh" path="/system/bin/toybox" dev="dm-0" ino=1722 scontext=u:r:autosync:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1
[ 3187.520845][  T176] type=1400 audit(1739262997.300:570): avc: denied { execute_no_trans } for comm="sh" path="/system/bin/toybox" dev="dm-0" ino=1722 scontext=u:r:autosync:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1
[ 3187.521291][  T176] type=1400 audit(1739262997.300:571): avc: denied { map } for comm="sync" path="/system/bin/toybox" dev="dm-0" ino=1722 scontext=u:r:autosync:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1
[ 3189.646808][  T176] type=1400 audit(1739262999.423:572): avc: denied { use } for comm="binder:283_2" path="socket:[151436]" dev="sockfs" ino=151436 scontext=u:r:netd:s0 tcontext=u:r:getagpsdata:s0 tclass=fd permissive=1
[ 3191.816419][  T176] type=1400 audit(1739263001.593:573): avc: denied { read } for comm="Thread-17" name="status" dev="proc" ino=4026532769 scontext=u:r:system_server:s0 tcontext=u:object_r:proc:s0 tclass=file permissive=1
[ 3191.817152][  T176] type=1400 audit(1739263001.593:574): avc: denied { open } for comm="Thread-17" path="/proc/adckey/status" dev="proc" ino=4026532769 scontext=u:r:system_server:s0 tcontext=u:object_r:proc:s0 tclass=file permissive=1
[ 3191.817542][  T176] type=1400 audit(1739263001.593:575): avc: denied { getattr } for comm="Thread-17" path="/proc/adckey/status" dev="proc" ino=4026532769 scontext=u:r:system_server:s0 tcontext=u:object_r:proc:s0 tclass=file permissive=1
[ 3213.808574][  T143] init: Received sys.powerctl='reboot,loader' from pid: 7708 (/system/bin/reboot)
[ 3213.808662][  T143] init: sys.powerctl: do_shutdown: 0 IsShuttingDown: 0
[ 3213.808918][    T1] init: Got shutdown_command 'reboot,loader' Calling HandlePowerctlMessage()
[ 3213.808980][    T1] init: Clear action queue and start shutdown trigger
[ 3213.809101][    T1] init: Entering shutdown mode
[ 3213.809317][    T1] init: processing action (shutdown_done) from (<Builtin Action>:0)
[ 3213.809386][    T1] init: Reboot start, reason: reboot,loader, reboot_target: loader
[ 3213.809444][    T1] init: Shutdown timeout: 6000 ms
[ 3213.809475][    T1] init: Create reboot monitor thread.
[ 3213.810069][ T7710] init: shutdown_timeout_timespec.tv_sec: 3517
[ 3213.878261][ T7711] watchdogd: watchdogd started (interval 10, margin 20)!
I/TA: Goodbye Rockchip Weaver!
I/TA: Goodbye Rockchip gatekeeper!
[ 3214.005996][  T176] type=1400 audit(1739263023.783:576): avc: denied { unlink } for comm="init" name="camera_tool" dev="tmpfs" ino=645 scontext=u:r:init:s0 tcontext=u:object_r:socket_device:s0 tclass=sock_file permissive=1
[ 3214.071114][ T6989] binder: release 326:348 transaction 4836 in, still active
[ 3214.071154][ T6989] binder: send failed reply for transaction 4836 to 507:585
I/TA: Goodbye Rockchip Keymaster!
[ 3214.503489][  T144] printk: init: 16 output lines suppressed due to ratelimiting
[ 3214.557087][  T179] binder_alloc: 507: binder_alloc_buf, no vma
[ 3214.557126][  T179] binder: 179:179 transaction failed 29189/-3, size 100-0 line 3346
[ 3214.690240][ T7718] android_work: sent uevent USB_STATE=DISCONNECTED
[ 3214.711694][  T175] printk: logd.klogd: 192 output lines suppressed due to ratelimiting
[ 3214.753895][ T7713] binder: undelivered TRANSACTION_ERROR: 29189
[ 3214.754233][ T7713] binder: undelivered death notification, b400007c6b9c9640
[ 3215.061474][    T1] [dhd] dhd_reboot_callback: code = 1
[ 3215.061588][    T1] [dhd] dhd_module_cleanup: Enter
[ 3215.061706][    T1] [dhd] sdioh_remove: Enter
[ 3215.063174][    T1] [dhd] dhdsdio_disconnect : no mutex held
[ 3215.063192][    T1] [dhd] dhdsdio_disconnect : set mutex lock
[ 3215.063208][    T1] [dhd] dhd_detach: making dhdpub up FALSE
[ 3215.063223][    T1] [dhd] bcmsdh_oob_intr_unregister: Enter
[ 3215.063232][    T1] [dhd] bcmsdh_oob_intr_unregister: irq is not registered
[ 3215.063242][    T1] [dhd] dhd_wlfc_deinit():3894, Already disabled!
[ 3215.160627][    T1] [dhd] dhd_detach(): thread:dhd_watchdog_thread:19f wait for terminate
[ 3215.160717][    T1] [dhd] dhd_detach(): thread:dhd_watchdog_thread:19f terminated OK
[ 3215.160788][    T1] [dhd] dhd_detach(): thread:dhd_rxf:1a1 wait for terminate
[ 3215.160821][    T1] [dhd] dhd_detach(): thread:dhd_rxf:1a1 terminated OK
[ 3215.160899][  T416] [dhd] dhd_dpc_thread: Unexpected up_cnt 0
[ 3215.161645][    T1] [dhd] dhd_detach(): thread:dhd_dpc:1a0 wait for terminate
[ 3215.161689][    T1] [dhd] dhd_detach(): thread:dhd_dpc:1a0 terminated OK
[ 3215.190817][    T1] [dhd] CFG80211-ERROR) wl_cfg80211_clear_per_bss_ies : netinfo or netinfo->wdev is NULL
[ 3215.253977][    T1] [dhd] dhd_tcpack_suppress_set: TCP ACK Suppress mode 2 -> mode 0
[ 3215.254074][    T1] [dhd] dhd_tcpack_suppress_set: TCPACK_INFO_MAXNUM=40, TCPDATA_INFO_MAXNUM=40
[ 3215.254278][    T1] [dhd] STATIC-MSG) dhd_wlan_mem_prealloc : section 7, size 0
[ 3215.254340][    T1] [dhd] dhdsdio_disconnect : mutex is released.
[ 3215.255881][    T1] [dhd] unregister wifi platform drivers
[ 3215.255935][    T1] [dhd] wifi_platform_bus_enumerate device present 0
[ 3215.255968][    T1] [dhd] ======== Card detection to remove SDIO card! ========
[ 3215.255996][    T1] [dhd] dhd_wlan_deinit_gpio: gpio_free(WL_HOST_WAKE 0)
[ 3215.256046][    T1] [dhd] STATIC-MSG) dhd_static_buf_exit : Enter
[ 3215.256391][    T1] [dhd] dhd_module_cleanup: Exit
[ 3215.258130][    T1] rk808 0-0020: reboot: not restore POWER_EN
[ 3215.259286][    T1] rk808 0-0020: reboot: force RK817_RST_FUNC_REG ok!
[ 3215.563616][    T1] rockchip-vop2 fe040000.vop: [drm:vop2_crtc_atomic_disable] Crtc atomic disable vp1
[ 3215.600900][    T1] mpp_rkvdec2 fdf80200.rkvdec: shutdown device
[ 3215.606949][    T1] mpp_rkvdec2 fdf80200.rkvdec: shutdown success
[ 3215.613076][    T1] mpp_rkvenc fdf40000.rkvenc: shutdown device
[ 3215.619025][    T1] mpp_rkvenc fdf40000.rkvenc: shutdown success
[ 3215.645841][    T1] fan53555-regulator 0-001c: fan53555..... reset
[ 3215.653168][    T1] fan53555-regulator 0-001c: reset: force fan53555_reset ok!
[ 3215.670475][    T1] [WLAN_RFKILL]: Enter rfkill_wlan_shutdown
[ 3215.676270][    T1] [WLAN_RFKILL]: rockchip_wifi_power: 0
[ 3215.681696][    T1] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 3215.688244][    T1] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[ 3215.694364][    T1] [WLAN_RFKILL]: rfkill_set_wifi_bt_power: 0
[ 3215.700977][    T1] rkisp_hw fdff0000.rkisp: rkisp_hw_shutdown
[ 3215.706976][    T1] mpp-iep2 fdef0000.iep: shutdown device
[ 3215.712491][    T1] mpp-iep2 fdef0000.iep: shutdown success
[ 3215.718129][    T1] mpp_vepu2 fdee0000.vepu: shutdown device
[ 3215.723822][    T1] mpp_vepu2 fdee0000.vepu: shutdown success
[ 3215.729637][    T1] mpp_jpgdec fded0000.jpegd: shutdown device
[ 3215.735498][    T1] mpp_jpgdec fded0000.jpegd: shutdown success
[ 3215.741486][    T1] mpp_vdpu2 fdea0400.vdpu: shutdown device
[ 3215.747167][    T1] mpp_vdpu2 fdea0400.vdpu: shutdown success
[ 3215.753332][    T1] xhci-hcd xhci-hcd.0.auto: remove, state 4
[ 3215.759119][    T1] usb usb6: USB disconnect, device number 1
[ 3215.766221][    T1] xhci-hcd xhci-hcd.0.auto: USB bus 6 deregistered
[ 3215.773074][    T1] xhci-hcd xhci-hcd.0.auto: remove, state 4
[ 3215.778896][    T1] usb usb5: USB disconnect, device number 1
[ 3215.786104][    T1] xhci-hcd xhci-hcd.0.auto: USB bus 5 deregistered
[ 3215.800986][    T1] reboot: Restarting system with command 'loader'
DDR V1.18 f366f69a7d typ 23/07/17-15:48:58
ln
LP4/4x derate en, other dram:1x trefi
SRX
ddrconfig:7
LP4 MR14:0x4d
LPDDR4, 324MHz
BW=32 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB
tdqss: cs0 dqs0: 72ps, dqs1: -24ps, dqs2: 24ps, dqs3: -48ps, 
tdqss: cs1 dqs0: 72ps, dqs1: -24ps, dqs2: 24ps, dqs3: -48ps, 

change to: 324MHz
clk skew:0x60

change to: 528MHz
clk skew:0x58

change to: 780MHz
clk skew:0x58

change to: 1056MHz(final freq)
PHY drv:clk:38,ca:38,DQ:30,odt:60
vrefinner:16%, vrefout:29%
dram drv:40,odt:80
vref_ca:00000068
clk skew:0x25
cs 0:
the read training result:
DQS0:0x40, DQS1:0x41, DQS2:0x40, DQS3:0x42, 
min  : 0x7  0x5  0x4  0x5  0x5  0x4  0x3  0x1 , 0x1  0x5  0xa  0x5  0x2  0x5  0x7  0x3 ,
       0x4  0x3  0x4  0x2  0x1  0x2  0x5  0x1 , 0x8  0x3  0x5  0x3  0x3  0x6  0x9  0x1 ,
mid  :0x27 0x25 0x25 0x25 0x25 0x25 0x23 0x23 ,0x24 0x27 0x29 0x26 0x23 0x27 0x29 0x25 ,
      0x25 0x25 0x25 0x24 0x23 0x24 0x26 0x23 ,0x29 0x26 0x27 0x25 0x26 0x27 0x2b 0x24 ,
max  :0x48 0x46 0x47 0x46 0x46 0x46 0x44 0x45 ,0x47 0x49 0x48 0x47 0x44 0x4a 0x4c 0x47 ,
      0x47 0x47 0x46 0x46 0x46 0x47 0x47 0x46 ,0x4b 0x49 0x4a 0x47 0x49 0x48 0x4d 0x47 ,
range:0x41 0x41 0x43 0x41 0x41 0x42 0x41 0x44 ,0x46 0x44 0x3e 0x42 0x42 0x45 0x45 0x44 ,
      0x43 0x44 0x42 0x44 0x45 0x45 0x42 0x45 ,0x43 0x46 0x45 0x44 0x46 0x42 0x44 0x46 ,
the write training result:
DQS0:0x2e, DQS1:0x22, DQS2:0x28, DQS3:0x1f, 
min  :0x56 0x56 0x56 0x56 0x55 0x54 0x53 0x56 0x56 ,0x49 0x4b 0x4e 0x4b 0x4a 0x4d 0x4d 0x4b 0x4b ,
      0x4f 0x4f 0x4f 0x4e 0x4d 0x4e 0x4f 0x4f 0x4e ,0x48 0x47 0x47 0x47 0x47 0x48 0x49 0x48 0x47 ,
mid  :0x71 0x71 0x71 0x71 0x70 0x70 0x6e 0x70 0x70 ,0x65 0x64 0x69 0x66 0x62 0x67 0x67 0x66 0x64 ,
      0x6b 0x6b 0x6b 0x6a 0x68 0x6a 0x6a 0x69 0x6a ,0x64 0x60 0x61 0x61 0x60 0x62 0x65 0x61 0x61 ,
max  :0x8d 0x8c 0x8d 0x8d 0x8b 0x8c 0x8a 0x8a 0x8b ,0x81 0x7d 0x84 0x82 0x7b 0x81 0x81 0x81 0x7d ,
      0x88 0x87 0x87 0x87 0x84 0x86 0x85 0x84 0x87 ,0x80 0x7a 0x7b 0x7b 0x7a 0x7c 0x81 0x7a 0x7b ,
range:0x37 0x36 0x37 0x37 0x36 0x38 0x37 0x34 0x35 ,0x38 0x32 0x36 0x37 0x31 0x34 0x34 0x36 0x32 ,
      0x39 0x38 0x38 0x39 0x37 0x38 0x36 0x35 0x39 ,0x38 0x33 0x34 0x34 0x33 0x34 0x38 0x32 0x34 ,
cs 1:
the read training result:
DQS0:0x41, DQS1:0x43, DQS2:0x41, DQS3:0x43, 
min  : 0x7  0x5  0x5  0x5  0x6  0x5  0x4  0x2 , 0x2  0x5  0xb  0x5  0x2  0x6  0x8  0x5 ,
       0x4  0x4  0x3  0x2  0x2  0x3  0x4  0x2 , 0x7  0x4  0x5  0x2  0x3  0x4  0x7  0x1 ,
mid  :0x28 0x26 0x26 0x26 0x26 0x26 0x25 0x24 ,0x24 0x27 0x2a 0x26 0x24 0x28 0x2a 0x26 ,
      0x26 0x26 0x25 0x23 0x24 0x25 0x26 0x24 ,0x2a 0x26 0x28 0x25 0x26 0x27 0x2a 0x23 ,
max  :0x49 0x47 0x48 0x47 0x47 0x47 0x46 0x46 ,0x47 0x4a 0x49 0x47 0x46 0x4b 0x4c 0x47 ,
      0x49 0x49 0x48 0x45 0x46 0x48 0x49 0x46 ,0x4d 0x48 0x4b 0x48 0x4a 0x4a 0x4e 0x46 ,
range:0x42 0x42 0x43 0x42 0x41 0x42 0x42 0x44 ,0x45 0x45 0x3e 0x42 0x44 0x45 0x44 0x42 ,
      0x45 0x45 0x45 0x43 0x44 0x45 0x45 0x44 ,0x46 0x44 0x46 0x46 0x47 0x46 0x47 0x45 ,
the write training result:
DQS0:0x2e, DQS1:0x22, DQS2:0x28, DQS3:0x1f, 
min  :0x55 0x56 0x56 0x56 0x54 0x54 0x52 0x55 0x55 ,0x48 0x4a 0x4d 0x4a 0x48 0x4c 0x4d 0x4b 0x4b ,
      0x4e 0x4e 0x4e 0x4e 0x4d 0x4e 0x4e 0x4e 0x4e ,0x47 0x45 0x45 0x45 0x45 0x46 0x48 0x46 0x46 ,
mid  :0x71 0x71 0x71 0x72 0x6f 0x70 0x6d 0x6f 0x70 ,0x65 0x64 0x69 0x66 0x61 0x66 0x66 0x66 0x65 ,
      0x6b 0x6a 0x6a 0x6a 0x69 0x6a 0x69 0x69 0x6a ,0x63 0x5f 0x5f 0x5f 0x5f 0x61 0x64 0x60 0x60 ,
max  :0x8e 0x8c 0x8d 0x8e 0x8b 0x8c 0x89 0x8a 0x8b ,0x82 0x7e 0x85 0x82 0x7b 0x81 0x80 0x81 0x80 ,
      0x89 0x87 0x87 0x87 0x85 0x86 0x85 0x85 0x87 ,0x80 0x7a 0x7a 0x7a 0x7a 0x7c 0x80 0x7a 0x7a ,
range:0x39 0x36 0x37 0x38 0x37 0x38 0x37 0x35 0x36 ,0x3a 0x34 0x38 0x38 0x33 0x35 0x33 0x36 0x35 ,
      0x3b 0x39 0x39 0x39 0x38 0x38 0x37 0x37 0x39 ,0x39 0x35 0x35 0x35 0x35 0x36 0x38 0x34 0x34 ,
CA Training result:
cs:0 min  :0x4e 0x4f 0x45 0x42 0x44 0x43 0x4a ,0x4d 0x4a 0x42 0x40 0x42 0x40 0x45 ,
cs:0 mid  :0x8e 0x8e 0x84 0x81 0x84 0x82 0x7a ,0x8c 0x88 0x81 0x7f 0x81 0x7f 0x73 ,
cs:0 max  :0xce 0xcd 0xc4 0xc1 0xc4 0xc1 0xaa ,0xcc 0xc7 0xc1 0xbf 0xc0 0xbe 0xa2 ,
cs:0 range:0x80 0x7e 0x7f 0x7f 0x80 0x7e 0x60 ,0x7f 0x7d 0x7f 0x7f 0x7e 0x7e 0x5d ,
cs:1 min  :0x4e 0x4f 0x45 0x43 0x46 0x41 0x48 ,0x4f 0x4c 0x43 0x42 0x42 0x40 0x42 ,
cs:1 mid  :0x8d 0x8e 0x84 0x82 0x85 0x81 0x7a ,0x8e 0x8a 0x83 0x81 0x81 0x7f 0x74 ,
cs:1 max  :0xcd 0xce 0xc4 0xc2 0xc5 0xc1 0xad ,0xce 0xc9 0xc3 0xc0 0xc1 0xbf 0xa6 ,
cs:1 range:0x7f 0x7f 0x7f 0x7f 0x7f 0x80 0x65 ,0x7f 0x7d 0x80 0x7e 0x7f 0x7f 0x64 ,
out
U-Boot SPL board init
U-Boot SPL 2017.09-gaaca6ffec1-211203 #zzz (Dec 03 2021 - 18:42:16)
unknown raw ID phN
unrecognized JEDEC id bytes: 00, 00, 00
Trying to boot from MMC2
MMC error: The cmd index is 1, ret is -110
Card did not respond to voltage select!
mmc_init: -95, time 16
spl: mmc init failed with error: -95
Trying to boot from MMC1
SPL: A/B-slot: _a, successful: 0, tries-remain: 7
Trying fit image at 0x4000 sector
## Verified-boot: 0
## Checking atf-1 0x00040000 ... sha256(0d5225a4ab...) + OK
## Checking uboot 0x00a00000 ... sha256(50848881a3...) + OK
## Checking fdt 0x00b457c0 ... sha256(036cca5880...) + OK
## Checking atf-2 0xfdcc1000 ... sha256(3e94d16e6a...) + OK
## Checking atf-3 0x0006b000 ... sha256(fde0ef262b...) + OK
## Checking atf-4 0xfdcce000 ... sha256(c9eb312bf2...) + OK
## Checking atf-5 0xfdcd0000 ... sha256(befba422b8...) + OK
## Checking atf-6 0x00069000 ... sha256(6ede7a3b44...) + OK
## Checking optee 0x08400000 ... sha256(6c92ef6a0e...) + OK
Jumping to U-Boot(0x00a00000) via ARM Trusted Firmware(0x00040000)
Total: 321.22 ms

INFO:    Preloader serial: 2
NOTICE:  BL31: v2.3():v2.3-607-gbf602aff1:cl
NOTICE:  BL31: Built : 10:16:03, Jun  5 2023
INFO:    GICv3 without legacy support detected.
INFO:    ARM GICv3 driver initialized in EL3
INFO:    pmu v1 is valid 220114
INFO:    dfs DDR fsp_param[0].freq_mhz= 1056MHz
INFO:    dfs DDR fsp_param[1].freq_mhz= 324MHz
INFO:    dfs DDR fsp_param[2].freq_mhz= 528MHz
INFO:    dfs DDR fsp_param[3].freq_mhz= 780MHz
INFO:    Using opteed sec cpu_context!
INFO:    boot cpu mask: 0
INFO:    BL31: Initializing runtime services
INFO:    BL31: Initializing BL32
I/TC: 
I/TC: OP-TEE version: 3.13.0-743-gb5340fd65 #hisping.lin (gcc version 10.2.1 20201103 (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16))) #5 Mon Aug 28 15:15:17 CST 2023 aarch64
I/TC: Primary CPU initializing
E/TC:0 0 hal_algo_version_init:296 CRYPTO_CRYPTO_VERSION_NEW no support. Skip all algo mode check.
I/TC: Primary CPU switching to normal world boot
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0xa00000
INFO:    SPSR = 0x3c9


U-Boot 2017.09 (Feb 11 2025 - 09:44:41 +0800)

Model: Rockchip RK3568 Evaluation Board
MPIDR: 0x81000000
PreSerial: 2, raw, 0xfe660000
DRAM:  4 GiB
Sysmem: init
Relocation Offset: ed21a000
Relocation fdt: eb9f94a8 - eb9fece8
CR: M/C/I
Using default environment

optee api revision: 2.0
dwmmc@fe2b0000: 1, dwmmc@fe2c0000: 2, sdhci@fe310000: 0
Bootdev(atags): mmc 0
MMC0: HS200, 200Mhz
PartType: EFI
DM: v1
Android 13.0, Build 2023.8, v2
boot mode: loader
RESC: 'boot', blk@0x0001da70
Device is: UNLOCKED
DTB: rk-kernel.dtb
HASH(c): OK
ANDROID: fdt overlay OK
I2c0 speed: 100000Hz
PMIC:  RK8090 (on=0x40, off=0x00)
vdd_logic init 950000 uV
vdd_gpu init 900000 uV
vdd_npu init 900000 uV
vsel-gpios- not found! Error: -2
vdd_cpu init 1000000 uV
io-domain: OK
INFO:    ddr dmc_fsp already initialized in loader.
Model: pro-rk3566
MPIDR: 0x81000000
ethaddr = 02:2a:b6:1b:a5:37
eth1addr = 66:f8:d5:b6:ac:cc
eth2addr = 6a:ac:db:99:cd:b2
eth3addr = 52:b5:6a:b3:65:a0
Rockchip UBOOT DRM driver version: v1.0.1
VOP have 1 active VP
vp0 have layer nr:0[], primary plane: 0
vp1 have layer nr:6[0 2 4 1 3 5 ], primary plane: 4
vp2 have layer nr:0[], primary plane: 0
disp info 2, type:16, id:0
base2_disp_info couldn't be found, screen_info type[0] or id[0] mismatched
Using display timing dts
dsi@fe060000:  detailed mode clock 161000 kHz, flags[a]
    H: 1200 1231 1251 1265
    V: 1920 2135 2141 2341
bus_format: 100e
VOP update mode to: 1200x1920p54, type: MIPI0 for VP1
VP1 set crtc_clock to 161000KHz
VOP VP1 enable Smart0[270x654->270x654@465x633] fmt[1] addr[0xedf82000]
final DSI-Link bandwidth: 996 Mbps x 4
unsupport command data type: 48
failed to send on cmds: -22
enter Rockusb!
RKUSB: LUN 0, dev 0, hwpart 0, sector 0x0, count 0x39ef6c0
|DDR V1.18 f366f69a7d typ 23/07/17-15:48:58
ln
LP4/4x derate en, other dram:1x trefi
SRX
ddrconfig:7
LP4 MR14:0x4d
LPDDR4, 324MHz
BW=32 Col=10 Bk=8 CS0 Row=16 CS1 Row=16 CS=2 Die BW=16 Size=4096MB
tdqss: cs0 dqs0: 72ps, dqs1: -24ps, dqs2: 24ps, dqs3: -48ps, 
tdqss: cs1 dqs0: 72ps, dqs1: -24ps, dqs2: 24ps, dqs3: -48ps, 

change to: 324MHz
clk skew:0x60

change to: 528MHz
clk skew:0x58

change to: 780MHz
clk skew:0x58

change to: 1056MHz(final freq)
PHY drv:clk:38,ca:38,DQ:30,odt:60
vrefinner:16%, vrefout:29%
dram drv:40,odt:80
vref_ca:00000068
clk skew:0x25
cs 0:
the read training result:
DQS0:0x40, DQS1:0x41, DQS2:0x40, DQS3:0x42, 
min  : 0x8  0x5  0x4  0x5  0x5  0x4  0x3  0x2 , 0x1  0x5  0xa  0x5  0x1  0x5  0x7  0x3 ,
       0x4  0x4  0x4  0x2  0x1  0x3  0x5  0x1 , 0x8  0x3  0x5  0x3  0x4  0x6  0x9  0x1 ,
mid  :0x28 0x25 0x25 0x25 0x25 0x25 0x23 0x23 ,0x24 0x27 0x29 0x26 0x22 0x27 0x29 0x25 ,
      0x26 0x25 0x25 0x24 0x23 0x25 0x26 0x23 ,0x29 0x26 0x27 0x25 0x26 0x27 0x2b 0x24 ,
max  :0x48 0x46 0x46 0x46 0x46 0x46 0x44 0x45 ,0x47 0x49 0x48 0x47 0x44 0x4a 0x4c 0x47 ,
      0x48 0x47 0x46 0x46 0x46 0x47 0x47 0x46 ,0x4b 0x49 0x4a 0x47 0x49 0x48 0x4d 0x47 ,
range:0x40 0x41 0x42 0x41 0x41 0x42 0x41 0x43 ,0x46 0x44 0x3e 0x42 0x43 0x45 0x45 0x44 ,
      0x44 0x43 0x42 0x44 0x45 0x44 0x42 0x45 ,0x43 0x46 0x45 0x44 0x45 0x42 0x44 0x46 ,
the write training result:
DQS0:0x2e, DQS1:0x22, DQS2:0x28, DQS3:0x1f, 
min  :0x56 0x56 0x56 0x56 0x55 0x54 0x53 0x56 0x56 ,0x49 0x4b 0x4e 0x4b 0x4a 0x4d 0x4d 0x4b 0x4b ,
      0x4f 0x4f 0x4f 0x4e 0x4d 0x4e 0x4f 0x4f 0x4e ,0x48 0x47 0x47 0x47 0x47 0x48 0x49 0x47 0x47 ,
mid  :0x71 0x71 0x71 0x71 0x70 0x70 0x6e 0x70 0x70 ,0x65 0x64 0x69 0x66 0x63 0x67 0x67 0x66 0x64 ,
      0x6b 0x6b 0x6b 0x6a 0x68 0x6a 0x6a 0x69 0x6a ,0x64 0x60 0x61 0x61 0x61 0x62 0x65 0x60 0x61 ,
max  :0x8d 0x8c 0x8d 0x8d 0x8b 0x8c 0x8a 0x8a 0x8b ,0x81 0x7d 0x84 0x82 0x7c 0x81 0x81 0x82 0x7d ,
      0x88 0x87 0x87 0x87 0x84 0x86 0x85 0x84 0x87 ,0x81 0x7a 0x7b 0x7b 0x7b 0x7c 0x81 0x7a 0x7b ,
range:0x37 0x36 0x37 0x37 0x36 0x38 0x37 0x34 0x35 ,0x38 0x32 0x36 0x37 0x32 0x34 0x34 0x37 0x32 ,
      0x39 0x38 0x38 0x39 0x37 0x38 0x36 0x35 0x39 ,0x39 0x33 0x34 0x34 0x34 0x34 0x38 0x33 0x34 ,
cs 1:
the read training result:
DQS0:0x41, DQS1:0x43, DQS2:0x41, DQS3:0x43, 
min  : 0x7  0x5  0x4  0x5  0x6  0x5  0x4  0x2 , 0x3  0x6  0xa  0x5  0x2  0x6  0x8  0x5 ,
       0x4  0x3  0x3  0x2  0x2  0x3  0x4  0x2 , 0x7  0x4  0x4  0x1  0x3  0x4  0x7  0x1 ,
mid  :0x27 0x26 0x26 0x26 0x26 0x26 0x25 0x24 ,0x25 0x28 0x29 0x26 0x24 0x28 0x2a 0x26 ,
      0x27 0x26 0x25 0x23 0x24 0x25 0x26 0x24 ,0x2a 0x26 0x28 0x24 0x26 0x27 0x2a 0x23 ,
max  :0x48 0x47 0x48 0x47 0x47 0x47 0x46 0x46 ,0x47 0x4a 0x48 0x47 0x46 0x4b 0x4c 0x48 ,
      0x4a 0x49 0x48 0x45 0x46 0x48 0x49 0x46 ,0x4d 0x48 0x4c 0x48 0x49 0x4a 0x4e 0x46 ,
range:0x41 0x42 0x44 0x42 0x41 0x42 0x42 0x44 ,0x44 0x44 0x3e 0x42 0x44 0x45 0x44 0x43 ,
      0x46 0x46 0x45 0x43 0x44 0x45 0x45 0x44 ,0x46 0x44 0x48 0x47 0x46 0x46 0x47 0x45 ,
the write training result:
DQS0:0x2e, DQS1:0x22, DQS2:0x28, DQS3:0x1f, 
min  :0x55 0x56 0x56 0x56 0x55 0x54 0x52 0x56 0x55 ,0x48 0x4a 0x4d 0x4a 0x48 0x4c 0x4d 0x4b 0x4b ,
      0x4e 0x4e 0x4e 0x4e 0x4d 0x4e 0x4e 0x4e 0x4e ,0x47 0x45 0x45 0x45 0x45 0x46 0x48 0x46 0x46 ,
mid  :0x71 0x71 0x72 0x72 0x70 0x70 0x6e 0x70 0x70 ,0x65 0x64 0x69 0x66 0x61 0x66 0x67 0x66 0x64 ,
      0x6b 0x6a 0x6a 0x6a 0x69 0x6a 0x69 0x69 0x6a ,0x63 0x5f 0x5f 0x5f 0x5f 0x61 0x64 0x60 0x60 ,
max  :0x8e 0x8d 0x8e 0x8e 0x8b 0x8c 0x8a 0x8a 0x8b ,0x82 0x7e 0x85 0x82 0x7b 0x81 0x81 0x81 0x7e ,
      0x89 0x87 0x87 0x87 0x85 0x86 0x85 0x85 0x87 ,0x80 0x7a 0x7a 0x7a 0x7a 0x7c 0x80 0x7a 0x7a ,
range:0x39 0x37 0x38 0x38 0x36 0x38 0x38 0x34 0x36 ,0x3a 0x34 0x38 0x38 0x33 0x35 0x34 0x36 0x33 ,
      0x3b 0x39 0x39 0x39 0x38 0x38 0x37 0x37 0x39 ,0x39 0x35 0x35 0x35 0x35 0x36 0x38 0x34 0x34 ,
CA Training result:
cs:0 min  :0x4e 0x4f 0x45 0x42 0x44 0x43 0x49 ,0x4d 0x49 0x42 0x40 0x42 0x40 0x45 ,
cs:0 mid  :0x8e 0x8e 0x84 0x81 0x84 0x82 0x79 ,0x8c 0x88 0x81 0x7f 0x81 0x7f 0x73 ,
cs:0 max  :0xce 0xcd 0xc4 0xc1 0xc4 0xc1 0xaa ,0xcc 0xc7 0xc1 0xbf 0xc0 0xbe 0xa2 ,
cs:0 range:0x80 0x7e 0x7f 0x7f 0x80 0x7e 0x61 ,0x7f 0x7e 0x7f 0x7f 0x7e 0x7e 0x5d ,
cs:1 min  :0x4e 0x4f 0x45 0x43 0x46 0x41 0x48 ,0x4f 0x4c 0x43 0x41 0x42 0x40 0x42 ,
cs:1 mid  :0x8d 0x8e 0x84 0x82 0x85 0x81 0x7a ,0x8e 0x8a 0x83 0x80 0x81 0x7f 0x74 ,
cs:1 max  :0xcd 0xce 0xc4 0xc2 0xc4 0xc1 0xad ,0xce 0xc9 0xc3 0xc0 0xc1 0xbf 0xa6 ,
cs:1 range:0x7f 0x7f 0x7f 0x7f 0x7e 0x80 0x65 ,0x7f 0x7d 0x80 0x7f 0x7f 0x7f 0x64 ,
out
U-Boot SPL board init
U-Boot SPL 2017.09-gaaca6ffec1-211203 #zzz (Dec 03 2021 - 18:42:16)
unknown raw ID phN
unrecognized JEDEC id bytes: 00, 00, 00
Trying to boot from MMC2
MMC error: The cmd index is 1, ret is -110
Card did not respond to voltage select!
mmc_init: -95, time 16
spl: mmc init failed with error: -95
Trying to boot from MMC1
Magic is incorrect.
Error validating A/B metadata from disk. Resetting and writing new A/B metadata to disk.
SPL: A/B-slot: _a, successful: 0, tries-remain: 7
Trying fit image at 0x4000 sector
## Verified-boot: 0
## Checking atf-1 0x00040000 ... sha256(0d5225a4ab...) + OK
## Checking uboot 0x00a00000 ... sha256(47884d3aa3...) + OK
## Checking fdt 0x00b457c0 ... sha256(036cca5880...) + OK
## Checking atf-2 0xfdcc1000 ... sha256(3e94d16e6a...) + OK
## Checking atf-3 0x0006b000 ... sha256(fde0ef262b...) + OK
## Checking atf-4 0xfdcce000 ... sha256(c9eb312bf2...) + OK
## Checking atf-5 0xfdcd0000 ... sha256(befba422b8...) + OK
## Checking atf-6 0x00069000 ... sha256(6ede7a3b44...) + OK
## Checking optee 0x08400000 ... sha256(6c92ef6a0e...) + OK
Jumping to U-Boot(0x00a00000) via ARM Trusted Firmware(0x00040000)
Total: 337.528 ms

INFO:    Preloader serial: 2
NOTICE:  BL31: v2.3():v2.3-607-gbf602aff1:cl
NOTICE:  BL31: Built : 10:16:03, Jun  5 2023
INFO:    GICv3 without legacy support detected.
INFO:    ARM GICv3 driver initialized in EL3
INFO:    pmu v1 is valid 220114
INFO:    dfs DDR fsp_param[0].freq_mhz= 1056MHz
INFO:    dfs DDR fsp_param[1].freq_mhz= 324MHz
INFO:    dfs DDR fsp_param[2].freq_mhz= 528MHz
INFO:    dfs DDR fsp_param[3].freq_mhz= 780MHz
INFO:    Using opteed sec cpu_context!
INFO:    boot cpu mask: 0
INFO:    BL31: Initializing runtime services
INFO:    BL31: Initializing BL32
I/TC: 
I/TC: OP-TEE version: 3.13.0-743-gb5340fd65 #hisping.lin (gcc version 10.2.1 20201103 (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16))) #5 Mon Aug 28 15:15:17 CST 2023 aarch64
I/TC: Primary CPU initializing
E/TC:0 0 hal_algo_version_init:296 CRYPTO_CRYPTO_VERSION_NEW no support. Skip all algo mode check.
I/TC: Primary CPU switching to normal world boot
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0xa00000
INFO:    SPSR = 0x3c9


U-Boot 2017.09 (Feb 11 2025 - 15:32:32 +0800)

Model: Rockchip RK3568 Evaluation Board
MPIDR: 0x81000000
PreSerial: 2, raw, 0xfe660000
DRAM:  4 GiB
Sysmem: init
Relocation Offset: ed21a000
Relocation fdt: eb9f94a8 - eb9fece8
CR: M/C/I
Using default environment

optee api revision: 2.0
dwmmc@fe2b0000: 1, dwmmc@fe2c0000: 2, sdhci@fe310000: 0
Bootdev(atags): mmc 0
MMC0: HS200, 200Mhz
PartType: EFI
DM: v1
Android 13.0, Build 2023.8, v2
boot mode: recovery (misc)
RESC: 'recovery', blk@0x000374cc
Device is: UNLOCKED
DTB: rk-kernel.dtb
HASH(c): OK
ANDROID: fdt overlay OK
I2c0 speed: 100000Hz
PMIC:  RK8090 (on=0x40, off=0x00)
vdd_logic init 950000 uV
vdd_gpu init 900000 uV
vdd_npu init 900000 uV
vsel-gpios- not found! Error: -2
vdd_cpu init 1000000 uV
io-domain: OK
INFO:    ddr dmc_fsp already initialized in loader.
Model: pro-rk3566
MPIDR: 0x81000000
ethaddr = 02:2a:b6:1b:a5:37
eth1addr = 66:f8:d5:b6:ac:cc
eth2addr = 6a:ac:db:99:cd:b2
eth3addr = 52:b5:6a:b3:65:a0
OCV Value:6000  6319  6466  6556  6621  6675  6722  6766  6809  6854  6903  6960  7026  7104  7195  7297  7404  7521  7641  7771  8051  ocvsize: 21
battery->design_cap: 5000
battery->qmax: 5100
battery->bat_res_up: 140
battery->bat_res_down: 20
reg read version:0 dts read version:0
battery = 160
rk817_bat_rsoc_init: is_first_power_on = 1, pwroff_min = 0, pwron_voltage = 168
rk817_bat_first_pwron, rsoc = 0, dsoc = 0, fcc = 5000, nac = 0
<rk817_bat_calc_linek>. meet=0, diff=0, link=1000, calc: dsoc=0, rsoc=0
voltage_k = 18, voltage_b = 20
voltage_sys = 208
voltage usb: 160
battery: 160
current_avg = -2
current_pwron = -7
remain_cap = 0
fcc = 5000
qmax = 5100
dsoc = 0
rsoc = 0
charge type: 0
debug info:
CAL_OFFSET = 0x8014
current_avg = -2
k = 18, b = 20
battery: 160
voltage_sys = 208
voltage_usb = 208
current_avg = -2
dsoc = 0
rsoc = 0
remain_cap = 0
fcc = 5000
qmax = 5100
NO_CHARGER
Enable charge animation display
charge_extrem_low_power: Not charging, online=0. Shutdown...
debug info:
CAL_OFFSET = 0x8014
current_avg = -2
k = 18, b = 20
battery: 160
voltage_sys = 208
voltage_usb = 208
current_avg = -2
dsoc = 0
rsoc = 0
remain_cap = 0
fcc = 5000
qmax = 5100


 


http://www.ppmy.cn/server/167180.html

相关文章

基于 openEuler 构建 LVS-DR 群集。

1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 。 2. 基于 openEuler 构建 LVS-DR 群集。 1.LVS&#xff08;Linux Virtual Server&#xff09;负载均衡群集的NAT模式和DR模式各有优势&#xff0c;具体如下&#xff1a; NAT模式优势 - 部署…

个人毕业设计--基于HarmonyOS的旅行助手APP的设计与实现(挖坑)

在行业混了短短几年&#xff0c;却总感觉越混越迷茫&#xff0c;趁着还有心情学习&#xff0c;把当初API9 的毕业设计项目改成API13的项目。先占个坑&#xff0c;把当初毕业设计的文案搬过来 摘要&#xff1a;HarmonyOS&#xff08;鸿蒙系统&#xff09;是华为公司推出的面向全…

OpenCV2D 特征框架 (18)目标检测之级联分类器

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 下面描述的目标检测器最初由保罗维奥拉[280]提出&#xff0c;并由莱纳连哈特[163]改进。 首先&#xff0c;使用几百个特定对象&#xff08;例如…

[C#].net顶级语句省略main方法内容

.net顶级语句省略main方法 内容复制自&#xff1a;docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/tutorials/top-level-statements 先决条件 需要将计算机设置为运行 .NET 6&#xff0c;其中包括 C# 10 编译器。 自 Visual Studio 2022 或 .NET 6 SDK 起&#xff0c;开…

MongoDB 的使用场景

一、内容管理系统 1. 博客平台 文章内容、作者信息、标签、评论等数据结构多样&#xff0c;MongoDB 的无模式特性可轻松应对。比如 WordPress 等博客系统&#xff0c;使用 MongoDB 能灵活存储不同格式和长度的文章内容&#xff0c;以及与文章相关的各种元数据。 2. 新闻网站…

rpx和px混用方案

&#xff08;1&#xff09;创建一个全局的样式配置文件&#xff1a; // styles/variables.scss :root {// 基础字体大小--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;// 响应式间距--spacing-xs: 5px;--spacing-sm: 10px;--spacing-…

OpenHarmony应用开发学习路线与资源指南

OpenHarmony应用开发学习路线与资源指南 本文基于官方文档为OpenHarmony开发者设计一条系统的学习路径,并梳理核心知识点框架。以下为学习路线思维导图的结构化呈现: #mermaid-svg-JWYC574nXzAHW0Ab {font-family:"trebuchet ms",verdana,arial,sans-serif;font-s…

在postman中设置环境变量和全局变量以及五大常用响应体断言

一、什么是环境变量和全局变量 环境变量&#xff08;Environment Variables&#xff09;和全局变量&#xff08;Global Variables&#xff09;是 Postman 中用于存储和管理数据的两种变量类型&#xff0c;它们可以提高 API 测试的灵活性和可维护性。 1、 环境变量&#xff08…