RK3568 学习笔记 : u-boot 千兆网络无法 ping 通PC问题的解决方法二

参考

  • RK3568 学习笔记 : u-boot 千兆网络无法 ping 通PC问题的解决

前言

  • rk3568 rockchip 提供的 u-boot,默认的设备树需要读取 单独分区 resouce.img 镜像中的 设备树文件,也就是 Linux 内核的设备树 dtb 文件,gmac 网络才能正常的 ping 通 PC 主机。

  • 如果使用 u-boot 默认的设备树,虽然可以正常的识别到 gmac 设备,但是无法 ping 通 PC 主机,也就是 u-boot 下网络功能异常。

环境

  • 正点原子 RK3568 开发板: AtomPi-CA1DLRK3568 开发板

  • 虚拟机 ubuntu 20.04 单独编译 开发板提供的 u-boot,并去掉 rockchip 一些定制的选项,如使用 resouce 分区等

相关的修改

  • 取消【勾选】一些 rockchip 的配置选项

在这里插入图片描述
在这里插入图片描述

[ ] Enable support for rockchip resource image 
[ ] Rockchip vendor storage partition support
[ ] Using dtb from Kernel/resource for U-Boot
  • 取消后,重新编译 u-boot,发现启动后,提示 env emmc 异常,此时需要修改一下 common/board_r.c 文件

  • rockchip 为了实现 env 通过读取 resource 分区,对初始化次序做了一些调整,需要调整回去,也就是 env 的初始化需要默认放在 mmc 初始化的后面

在这里插入图片描述

  • 这里主要是关闭了 CONFIG_USING_KERNEL_DTB,造成了 initr_env 初始化放在了 initr_mmc 前面,改到后面,就可以正常的 初始化 env 了(env 保存在 emmc 中)

设备树问题

  • 如果使用 u-boot 默认的设备树,gmac 网络无法 ping 通,如果把 u-boot 下的整个设备树,替换为 rockchip Linux kernel 中的设备树,gmac 网络可以正常 ping 通,说明问题点在 设备树的配置上。

  • u-boot 下的设备树,如果全部替换为 Linux kernel 的设备树,比较的麻烦,需要替换很多文件,包括 dt-bindings 头文件等,因为 u-boot 下的设备树与 Linux kernel 的设备树属于两套独立的设备树。Linux kernel 的设备树相对齐全与复杂一些。

  • 通过对比 u-boot 与 Linux kernel 的 设备树,发现 gmac 的相关的设置均一致,排除了 gmac 设置问题。

  • 那到底什么会影响 gmac 的网络功能呢? gmac 网络设备能正常的初始化,没有报错。

问题排查

  • 通过查看 开发板的原理图,发现了一些思路,电源管理,也就是 Linux 内核的设备树,与 rk809 pmic 的电源管理配置,而 u-boot 下,并没有这个配置。

  • 经过仔细查看原理图,发现 gmac 的 io 供电 vcc_1v8,来自 rk809 pmic 电源管理芯片,而这个 pmic 电源管理芯片,默认需要使用 i2c 通信配置,如果不配置,默认的配置,可能供电异常。

在这里插入图片描述

在这里插入图片描述

  • 抱着尝试的心态,在 u-boot 下的开发板设备树文件中,增加 rk809 相关的配置(来自 Linux kernel 设备树配置),并使能了 电源域,测试发现,网络可以 Ping 通了,说明网络 u-boot 默认设备树缺少 pmic 电源管理部分,造成网络无法正常 ping 通

  • 增加的电源管理部分 rk809 相关的设备树配置如下:DLRK3568 开发板 arch/arm/dts/atk-dlrk3568.dts 文件

/** SPDX-License-Identifier:     GPL-2.0+** (C) Copyright 2020 Rockchip Electronics Co., Ltd*//dts-v1/;
#include "rk3568.dtsi"
#include "rk3568-u-boot.dtsi"
#include <dt-bindings/input/input.h>/ {model = "ATK-DLRK3568 Rockchip RK3568 Board";compatible = "rockchip,rk3568-evb", "rockchip,rk3568";dc_12v: dc-12v {compatible = "regulator-fixed";regulator-name = "dc_12v";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <12000000>;regulator-max-microvolt = <12000000>;};vcc3v3_sys: vcc3v3-sys {compatible = "regulator-fixed";regulator-name = "vcc3v3_sys";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;vin-supply = <&dc_12v>;};vcc5v0_sys: vcc5v0-sys {compatible = "regulator-fixed";regulator-name = "vcc5v0_sys";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <5000000>;regulator-max-microvolt = <5000000>;vin-supply = <&dc_12v>;};vcc5v0_usb: vcc5v0-usb {compatible = "regulator-fixed";regulator-name = "vcc5v0_usb";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <5000000>;regulator-max-microvolt = <5000000>;vin-supply = <&dc_12v>;};adc-keys {compatible = "adc-keys";io-channels = <&saradc 0>;io-channel-names = "buttons";keyup-threshold-microvolt = <1800000>;u-boot,dm-spl;status = "okay";volumeup-key {u-boot,dm-spl;linux,code = <KEY_VOLUMEUP>;label = "volume up";press-threshold-microvolt = <17822>;};volumedown-key {u-boot,dm-spl;label = "volume down";linux,code = <KEY_VOLUMEDOWN>;press-threshold-microvolt = <415385>;};};
};&mdio0 {rgmii_phy0: phy@0 {compatible = "ethernet-phy-ieee802.3-c22";reg = <0x0>;};
};&mdio1 {rgmii_phy1: phy@0 {compatible = "ethernet-phy-ieee802.3-c22";reg = <0x0>;};
};&gmac0 {phy-mode = "rgmii";clock_in_out = "output";snps,reset-gpio = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us = <0 20000 100000>;assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;assigned-clock-rates = <0>, <125000000>;pinctrl-names = "default";pinctrl-0 = <&gmac0_miim&gmac0_tx_bus2&gmac0_rx_bus2&gmac0_rgmii_clk&gmac0_rgmii_bus>;tx_delay = <0x3c>;rx_delay = <0x2f>;phy-handle = <&rgmii_phy0>;status = "okay";
};&gmac1 {phy-mode = "rgmii";clock_in_out = "output";snps,reset-gpio = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us = <0 20000 100000>;assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;assigned-clock-rates = <0>, <125000000>;pinctrl-names = "default";pinctrl-0 = <&gmac1m1_miim&gmac1m1_tx_bus2&gmac1m1_rx_bus2&gmac1m1_rgmii_clk&gmac1m1_rgmii_bus>;tx_delay = <0x4f>;rx_delay = <0x26>;phy-handle = <&rgmii_phy1>;status = "okay";
};&crypto {status = "okay";
};&uart2 {status = "okay";
};&i2c0 {status = "okay";vdd_cpu: tcs4525@1c {compatible = "tcs,tcs452x";reg = <0x1c>;vin-supply = <&vcc5v0_sys>;regulator-compatible = "fan53555-reg";regulator-name = "vdd_cpu";regulator-min-microvolt = <712500>;regulator-max-microvolt = <1390000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <2300>;fcs,suspend-voltage-selector = <1>;regulator-boot-on;regulator-always-on;regulator-state-mem {regulator-off-in-suspend;};};rk809: pmic@20 {compatible = "rockchip,rk809";reg = <0x20>;interrupt-parent = <&gpio0>;interrupts = <3 IRQ_TYPE_LEVEL_LOW>;pinctrl-names = "default", "pmic-sleep","pmic-power-off", "pmic-reset";pinctrl-0 = <&pmic_int>;pinctrl-1 = <&soc_slppin_slp>, <&rk817_slppin_slp>;pinctrl-2 = <&soc_slppin_gpio>, <&rk817_slppin_pwrdn>;pinctrl-3 = <&soc_slppin_gpio>, <&rk817_slppin_rst>;rockchip,system-power-controller;wakeup-source;#clock-cells = <1>;clock-output-names = "rk808-clkout1", "rk808-clkout2";//fb-inner-reg-idxs = <2>;/* 1: rst regs (default in codes), 0: rst the pmic */pmic-reset-func = <0>;/* not save the PMIC_POWER_EN register in uboot */not-save-power-en = <1>;vcc1-supply = <&vcc3v3_sys>;vcc2-supply = <&vcc3v3_sys>;vcc3-supply = <&vcc3v3_sys>;vcc4-supply = <&vcc3v3_sys>;vcc5-supply = <&vcc3v3_sys>;vcc6-supply = <&vcc3v3_sys>;vcc7-supply = <&vcc3v3_sys>;vcc8-supply = <&vcc3v3_sys>;vcc9-supply = <&vcc3v3_sys>;pwrkey {status = "okay";};pinctrl_rk8xx: pinctrl_rk8xx {gpio-controller;#gpio-cells = <2>;rk817_slppin_null: rk817_slppin_null {pins = "gpio_slp";function = "pin_fun0";};rk817_slppin_slp: rk817_slppin_slp {pins = "gpio_slp";function = "pin_fun1";};rk817_slppin_pwrdn: rk817_slppin_pwrdn {pins = "gpio_slp";function = "pin_fun2";};rk817_slppin_rst: rk817_slppin_rst {pins = "gpio_slp";function = "pin_fun3";};};regulators {vdd_logic: DCDC_REG1 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <1350000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <6001>;regulator-initial-mode = <0x2>;regulator-name = "vdd_logic";regulator-state-mem {regulator-off-in-suspend;};};vdd_gpu: DCDC_REG2 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <1350000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <6001>;regulator-initial-mode = <0x2>;regulator-name = "vdd_gpu";regulator-state-mem {regulator-off-in-suspend;};};vcc_ddr: DCDC_REG3 {regulator-always-on;regulator-boot-on;regulator-initial-mode = <0x2>;regulator-name = "vcc_ddr";regulator-state-mem {regulator-on-in-suspend;};};vdd_npu: DCDC_REG4 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <1350000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <6001>;regulator-initial-mode = <0x2>;regulator-name = "vdd_npu";regulator-state-mem {regulator-off-in-suspend;};};vdda0v9_image: LDO_REG1 {regulator-boot-on;regulator-always-on;regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;regulator-name = "vdda0v9_image";regulator-state-mem {regulator-off-in-suspend;};};vdda_0v9: LDO_REG2 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;regulator-name = "vdda_0v9";regulator-state-mem {regulator-off-in-suspend;};};vdda0v9_pmu: LDO_REG3 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;regulator-name = "vdda0v9_pmu";regulator-state-mem {regulator-on-in-suspend;regulator-suspend-microvolt = <900000>;};};vccio_acodec: LDO_REG4 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-name = "vccio_acodec";regulator-state-mem {regulator-off-in-suspend;};};vccio_sd: LDO_REG5 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <3300000>;regulator-name = "vccio_sd";regulator-state-mem {regulator-off-in-suspend;};};vcc3v3_pmu: LDO_REG6 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-name = "vcc3v3_pmu";regulator-state-mem {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};};vcca_1v8: LDO_REG7 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcca_1v8";regulator-state-mem {regulator-off-in-suspend;};};vcca1v8_pmu: LDO_REG8 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcca1v8_pmu";regulator-state-mem {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};};vcca1v8_image: LDO_REG9 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcca1v8_image";regulator-state-mem {regulator-off-in-suspend;};};vcc_1v8: DCDC_REG5 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcc_1v8";regulator-state-mem {regulator-off-in-suspend;};};vcc_3v3: SWITCH_REG1 {regulator-always-on;regulator-boot-on;regulator-name = "vcc_3v3";regulator-state-mem {regulator-off-in-suspend;};};vcc3v3_sd: SWITCH_REG2 {regulator-always-on;regulator-boot-on;regulator-name = "vcc3v3_sd";regulator-state-mem {regulator-off-in-suspend;};};};};
};&pmu_io_domains {status = "okay";pmuio2-supply = <&vcc3v3_pmu>;vccio1-supply = <&vccio_acodec>;vccio3-supply = <&vccio_sd>;vccio4-supply = <&vcc_1v8>;vccio5-supply = <&vcc_3v3>;vccio6-supply = <&vcc_1v8>;vccio7-supply = <&vcc_3v3>;
};&pinctrl {pmic {pmic_int: pmic_int {rockchip,pins =<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;};soc_slppin_gpio: soc_slppin_gpio {rockchip,pins =<0 RK_PA2 RK_FUNC_GPIO &pcfg_output_low_pull_down>;};soc_slppin_slp: soc_slppin_slp {rockchip,pins =<0 RK_PA2 1 &pcfg_pull_up>;};soc_slppin_rst: soc_slppin_rst {rockchip,pins =<0 RK_PA2 2 &pcfg_pull_none>;};};
};
  • 修改 arch/arm/dts/rockchip-pinconf.dtsi,增加一些 引脚相关的定义

在这里插入图片描述

  • 以上修改,可以参考 Linux kernel 中开发板设备树获取

验证

  • 经过完善 u-boot 下开发板设备树, rk3568 u-boot gmac 网络功能正常了,也不再依赖 Linux 内核的设备树,不再依赖 resouce 分区,可以单独编译并正常工作了

小结

  • 默认使用 rockchip 提供的 u-boot,通过读取 resouce 分区的Linux 设备树,可以正常的工作,如果想去掉这个依赖,需要 u-boot 关闭 resouce 分区,并且完善 u-boot 下的设备树,当前网络部分无法 ping 通问题主要是 缺少 rk809 电源管理 pmic 的配置

  • 通过不断摸搜,虽然没有写什么代码,只是更改了一些配置,让 RK3568 平台的 u-boot 回归到了原有的样子,去除了一些 rockchip 定制化的选项,可能这样做意义不是很大,不过有兴趣的可以尝试,比如自定义分区,不需要定义过多的额外的 resouce 等分区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/322904.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ 初级球球大作战练手

效果演示&#xff1a; https://live.csdn.net/v/385490 游戏初始化 #include <stdbool.h> #include<stdio.h> #include<stdlib.h> #include<time.h> #include<graphics.h> #include <algorithm> #include<math.h> #include<mmsy…

有刷电机、无刷电机

阅读引言&#xff1a; 最近在备赛&#xff0c; 自己之前虽然用过电机&#xff0c; 但是发现在一些高要求的应用场景&#xff0c; 发现自己对电机的知识理解得不是很透彻&#xff0c; 所以写下这篇文章。 目录 一、 有刷电机内部原理 二、有刷电机一些关键参数 三、无刷电机内…

986: 哈夫曼译码

解法&#xff1a;先把代码粘贴到编译器&#xff08;vs&#xff09;上&#xff0c;分享一个一键去除空白行的操作&#xff0c;ctrlf调出查找窗口&#xff0c;输入查找(?<\r\n)\r\n&#xff0c;选择正则表达式&#xff0c;替换就可以发现会去掉一百多行空白行。 本题只需要利…

【c1】数据类型,运算符/循环,数组/指针,结构体,main参数,static/extern,typedef

文章目录 1.数据类型&#xff1a;编译器&#xff08;compiler&#xff09;与解释器&#xff08;interpreter&#xff09;&#xff0c;中文里的汉字和标点符号是两个字节&#xff0c;不能算一个字符&#xff08;单引号&#xff09;2.运算符/循环&#xff1a;sizeof/size_t3.数组…

6份不用辞职就能赚钱的副业,上班族必看!

在这个经济浪潮中&#xff0c;生活成本的上升与工资增长的缓慢形成了鲜明对比。对于许多上班族来说&#xff0c;寻找额外收入的途径显得尤为迫切。 今天&#xff0c;就让我们一起探索那些适合在业余时间开展的副业&#xff0c;为你的财务自由之路添砖加瓦。 1. 闲鱼二手手机售卖…

【镜像仿真篇】磁盘镜像仿真常见错误

【镜像仿真篇】磁盘镜像仿真常见错误 记系统镜像仿真常见错误集—【蘇小沐】 1、实验环境 2023AFS39.E01&#xff08;Windows11系统镜像&#xff09;Arsenal Image Mounter&#xff0c;[v3.10.262]‍Vmware Workstation 17 Pro&#xff0c;[v17.5.1]Windows 11 专业工作站版…

某盾BLACKBOX逆向关键点

需要准备的东西&#xff1a; 1、原JS码 2、AST解混淆码 3、token(来源于JSON) 一、原JS码很好获取&#xff0c;每次页面刷新&#xff0c;混淆的代码都会变&#xff0c;这是正常&#xff0c;以下为部分代码 while (Qooo0) {switch (Qooo0) {case 110 14 - 55: {function O0…

TensorFlow、pytorch和python对应的版本关系

安装深度学习框架的时候需要考虑版本的关系&#xff0c;不然装了用不了就尴尬了。 深度学习首先得问题就是用CPU跑&#xff0c;还是GPU跑。。当然有英伟达显卡的都想用GPU跑&#xff0c;不然买显卡是做啥、、GPU跑得多块&#xff0c;一下就训练完了。但是有的同学没得gpu&…

Fortinet的安全愿景SASO概述

FTNT SASE的独特方法&#xff0c;使其成为一家适应性极强的厂商&#xff0c;能够应对不断变化的网络和网络安全环境。FTNT开发了一种名为Secure Access Service Omni&#xff08;SASO&#xff09;的变体&#xff0c;以更准确地反映FTNT在融合网络和安全功能方面的实力。我们预计…

Linux内存管理——Swap

swap space 一个磁盘区域&#xff0c;作为内存使用。当系统内存不足时&#xff0c;会将一些很久不使用的数据转移到swap space中。 优点&#xff1a;扩展了内存空间 缺点&#xff1a;用磁盘做内存&#xff0c;读写效率降低。 swappiness swappiness的值表示建议swap space替…

Java线程池(更新中)

1.线程池介绍 顾名思义&#xff0c;线程池就是管理一系列线程的资源池&#xff0c;其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 总结一下使用线程池的好处&#xff1a; 降低资源消耗。通过重复利用已创建的…

Mac 上安装多版本的 JDK 且实现 自由切换

背景 当前电脑上已经安装了 jdk8; 现在再安装 jdk17。 期望 完成 jdk17 的安装&#xff0c;并且完成 环境变量 的配置&#xff0c;实现自由切换。 前置补充知识 jdk 的安装路径 可以通过查看以下目录中的内容&#xff0c;确认当前已经安装的 jdk 版本。 cd /Library/Java/Java…

框架漏洞RCE-1

一、前提 1、命令执行漏洞&#xff1a;直接调用操作系统命令。攻击者构造恶意命令&#xff0c;将命令拼接到正常的输入中&#xff0c;达到恶意攻击的目的。 (1)、常见命令执行函数 PHP&#xff1a;exec、shell_exec、system、passthru、popen、proc_open、反引号等 ASP.N…

Linux(openEuler、CentOS8)企业内网DHCP服务器搭建(固定Mac获取指定IP)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS8基本一致&#xff0c;可参考本文&#xff09;---- 目录 一、知识点二、实验&#xff08;一&#xff09;为服务器配置网卡和IP&#xff08;二&#xff09;为服务器安装DHCP服务软件&#xff08;三&a…

leetcode-岛屿数量-99

题目要求 思路 1.使用广度优先遍历&#xff0c;将数组中所有为1的元素遍历一遍&#xff0c;遍历过程中使用递归&#xff0c;讲该元素的上下左右四个方向的元素值也置为0 2.统计一共执行过多少次&#xff0c;次数就是岛屿数量 代码实现 class Solution { public:int solve(vec…

ROS 2边学边练(45)-- 构建一个能动的机器人模型

前言 在上篇中我们搭建了一个机器人模型(其由各个关节&#xff08;joint&#xff09;和连杆&#xff08;link&#xff09;组成)&#xff0c;此篇我们会通过设置关节类型来实现机器人的活动。 在ROS中&#xff0c;关节一般有无限旋转&#xff08;continuous&#xff09;,有限旋转…

【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用

背景 在开发 Web 应用的过程中&#xff0c;作为开发人员&#xff0c;为了确认接口的性能能够达到要求&#xff0c;我们往往需要一个接口压测工具&#xff0c;帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中&#xff0c;我们通常会用 Postman 等图形化…

python 中如何匹配字符串

python 中如何匹配字符串&#xff1f; 1. re.match 尝试从字符串的起始位置匹配一个模式&#xff0c;如果不是起始位置匹配成功的话&#xff0c;match()就返回none。 import re line"this hdr-biz 123 model server 456" patternr"123" matchObj re.matc…

unity制作app(2)--主界面

1.先跳转过来&#xff0c;做一个空壳&#xff01;新增场景main为4号场景&#xff01; 2.登录成功跳转到四号场景&#xff01; 2.在main场景中新建canvas&#xff0c;不同的状态计划用不同的panel来设计&#xff01; 增加canvas和底图image 3.突然输不出来中文了&#xff0c;浪…

新手做抖音小店,卖什么最容易出单?抖音必爆类目来了!

哈喽&#xff01;我是电商月月 新手做抖音小店没有经验&#xff0c;也不了解市场需求&#xff0c;最好奇的就是&#xff1a;卖什么商品最容易出单&#xff0c;还在犹豫的朋友可以看看这五种类目&#xff0c;在2024年下半年必定火爆一次 一&#xff0e;生活电器类 天气炎热&a…