20240926给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Buildroot的EVB4方案【通过HDMI0显示】

news2024/12/25 1:05:49

20240926给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Buildroot的EVB4方案【通过HDMI0显示】
2024/9/26 15:15


1、由于荣品RD-RK3588-AHD开发板没有HDMI1部分,因此拿掉了HDMI1的配置部分:
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588s-evb4-lp4x-v10-linux.dts
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
 *
 */

/dts-v1/;

#include "rk3588s-evb4-lp4x.dtsi"
#include "rk3588-linux.dtsi"

/ {
    model = "Rockchip RK3588S EVB4 LP4X V10 Board";
    compatible = "rockchip,rk3588s-evb4-lp4x-v10", "rockchip,rk3588";
};


// rp
&hdmi0 {
        status = "okay";
};

&hdmi0_in_vp0 {
        status = "okay";
};

&hdmi0_sound {
        status = "okay";
};

&i2s5_8ch {
        status = "okay";
};

&hdptxphy_hdmi0 {
        status = "okay";
};

&route_hdmi0 {
    status = "okay";
    connect = <&vp0_out_hdmi0>;
};


// rp
&display_subsystem {
clocks = <&hdptxphy_hdmi_clk0>;
clock-names = "hdmi0_phy_pll";
};

&hdptxphy_hdmi_clk0 {
            status = "okay";
};

//&hdptxphy_hdmi_clk1 {
//            status = "okay";
//};


原始代码源自:
【HDMI0显示部分】
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rp-lcd-hdmi0.dtsi
&hdmi0 {
        status = "okay";
};

&hdmi0_in_vp0 {
        status = "okay";
};

&hdmi0_sound {
        status = "okay";
};

&i2s5_8ch {
        status = "okay";
};

&hdptxphy_hdmi0 {
        status = "okay";
};

&route_hdmi0 {
    status = "okay";
    connect = <&vp0_out_hdmi0>;
};


【配置HDMI0的显示域】
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rd-rk3588s-ahd.dts
&display_subsystem {
clocks = <&hdptxphy_hdmi_clk0>, <&hdptxphy_hdmi_clk1>;
clock-names = "hdmi0_phy_pll", "hdmi1_phy_pll";
};

&hdptxphy_hdmi_clk0 {
            status = "okay";
};

&hdptxphy_hdmi_clk1 {
            status = "okay";
};


2、【HDMI1部分可选,确认可以不加的】
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588s.dtsi
        mclkout_i2s0: mclkout-i2s0@fd58c318 {
            compatible = "rockchip,clk-out";
            reg = <0 0xfd58c318 0 0x4>;
            clocks = <&cru I2S0_8CH_MCLKOUT>;
                        assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
                        assigned-clock-rates = <22288000>;      
 
                    #clock-cells = <0>;
            clock-output-names = "i2s0_mclkout_to_io";
            rockchip,bit-shift = <0>;
            rockchip,bit-set-to-disable;
            rockchip,clk-ignore-unused; /* for OLD SDK */
        };


    hdptxphy0: phy@fed60000 {
        compatible = "rockchip,rk3588-hdptx-phy";
        reg = <0x0 0xfed60000 0x0 0x2000>;
        clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX0>;
        clock-names = "ref", "apb";
        resets = <&cru SRST_P_HDPTX0>, <&cru SRST_HDPTX0_INIT>,
             <&cru SRST_HDPTX0_CMN>, <&cru SRST_HDPTX0_LANE>;
        reset-names = "apb", "init", "cmn", "lane";
        rockchip,grf = <&hdptxphy0_grf>;
        #phy-cells = <0>;
        status = "disabled";
    };

    hdptxphy_hdmi0: hdmiphy@fed60000 {
        compatible = "rockchip,rk3588-hdptx-phy-hdmi";
        reg = <0x0 0xfed60000 0x0 0x2000>;
        clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX0>;
        clock-names = "ref", "apb";
        resets = <&cru SRST_HDPTX0>, <&cru SRST_P_HDPTX0>,
             <&cru SRST_HDPTX0_INIT>, <&cru SRST_HDPTX0_CMN>,
             <&cru SRST_HDPTX0_LANE>, <&cru SRST_HDPTX0_ROPLL>,
             <&cru SRST_HDPTX0_LCPLL>;
        reset-names = "phy", "apb", "init", "cmn", "lane", "ropll",
                  "lcpll";
        rockchip,grf = <&hdptxphy0_grf>;
        #phy-cells = <0>;
        status = "disabled";

        hdptxphy_hdmi_clk0: clk-port {
            #clock-cells = <0>;
            status = "okay";
        };
    };

     hdptxphy_hdmi1: hdmiphy@fed70000 {
        compatible = "rockchip,rk3588-hdptx-phy-hdmi";
        reg = <0x0 0xfed70000 0x0 0x2000>;
        clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX1>;
        clock-names = "ref", "apb";
        resets = <&cru SRST_HDPTX1>, <&cru SRST_P_HDPTX1>,
             <&cru SRST_HDPTX1_INIT>, <&cru SRST_HDPTX1_CMN>,
             <&cru SRST_HDPTX1_LANE>, <&cru SRST_HDPTX1_ROPLL>,
             <&cru SRST_HDPTX1_LCPLL>;
        reset-names = "phy", "apb", "init", "cmn", "lane", "ropll",
                  "lcpll";
        rockchip,grf = <&hdptxphy1_grf>;
        #phy-cells = <0>;
        status = "disabled";

        hdptxphy_hdmi_clk1: clk-port {
            #clock-cells = <0>;
            status = "okay";
        };
    };

    hdptxphy1_grf: syscon@fd5e4000 {
        compatible = "rockchip,rk3588-hdptxphy-grf", "syscon";
        reg = <0x0 0xfd5e4000 0x0 0x100>;
    };

    usbdp_phy0: phy@fed80000 {
        compatible = "rockchip,rk3588-usbdp-phy";
        reg = <0x0 0xfed80000 0x0 0x10000>;
        rockchip,u2phy-grf = <&usb2phy0_grf>;
        rockchip,usb-grf = <&usb_grf>;
        rockchip,usbdpphy-grf = <&usbdpphy0_grf>;
        rockchip,vo-grf = <&vo0_grf>;
        clocks = <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>,
             <&cru CLK_USBDP_PHY0_IMMORTAL>,
             <&cru PCLK_USBDPPHY0>,
             <&u2phy0>;
        clock-names = "refclk", "immortal", "pclk", "utmi";
        resets = <&cru SRST_USBDP_COMBO_PHY0_INIT>,
             <&cru SRST_USBDP_COMBO_PHY0_CMN>,
             <&cru SRST_USBDP_COMBO_PHY0_LANE>,
             <&cru SRST_USBDP_COMBO_PHY0_PCS>,
             <&cru SRST_P_USBDPPHY0>;
        reset-names = "init", "cmn", "lane", "pcs_apb", "pma_apb";
        status = "disabled";

        usbdp_phy0_dp: dp-port {
            #phy-cells = <0>;
            status = "disabled";
        };

        usbdp_phy0_u3: u3-port {
            #phy-cells = <0>;
            status = "disabled";
        };
    };


3、【可选】
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588s-evb.dtsi
&sdmmc {
    max-frequency = <150000000>;
    no-sdio;
    no-mmc;
    bus-width = <4>;
    cap-mmc-highspeed;
    cap-sd-highspeed;
    disable-wp;
    sd-uhs-sdr104;
    vmmc-supply = <&vcc_3v3_sd_s0>;
    vqmmc-supply = <&vccio_sd_s0>;
    status = "disabled";

};

修改为:
&sdmmc {
       max-frequency = <200000000>;
       no-sdio;
       no-mmc;
       bus-width = <4>;
       cap-mmc-highspeed;
       cap-sd-highspeed;
       disable-wp;
       sd-uhs-sdr104;
       vmmc-supply = <&vcc_3v3_s0>;
       vqmmc-supply = <&vccio_sd_s0>;
       pinctrl-names = "default";
       pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>;
       status = "okay";

};


4、【确认可选】电源部分处理:
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588s-evb4-lp4x.dtsi
&i2c0 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&i2c0m2_xfer>;

    vdd_cpu_big0_s0: vdd_cpu_big0_mem_s0: rk8602@42 {
        compatible = "rockchip,rk8602";
        reg = <0x42>;
        vin-supply = <&vcc5v0_sys>;
        vsel-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
        regulator-compatible = "rk860x-reg";
        regulator-name = "vdd_cpu_big0_s0";
        regulator-min-microvolt = <550000>;
        regulator-max-microvolt = <1050000>;
        regulator-ramp-delay = <2300>;
        rockchip,suspend-voltage-selector = <1>;
        regulator-boot-on;
        regulator-always-on;
        regulator-state-mem {
            regulator-off-in-suspend;
        };
    };

    vdd_cpu_big1_s0: vdd_cpu_big1_mem_s0: rk8603@43 {
        compatible = "rockchip,rk8603";
        reg = <0x43>;
        vin-supply = <&vcc5v0_sys>;
        vsel-gpios = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
        regulator-compatible = "rk860x-reg";
        regulator-name = "vdd_cpu_big1_s0";
        regulator-min-microvolt = <550000>;
        regulator-max-microvolt = <1050000>;
        regulator-ramp-delay = <2300>;
        rockchip,suspend-voltage-selector = <1>;
        regulator-boot-on;
        regulator-always-on;
        regulator-state-mem {
            regulator-off-in-suspend;
        };
    };

};

&i2c2 {
    status = "okay";

    //vdd_npu_s0: vdd_npu_mem_s0: rk8602@42 {
    //    compatible = "rockchip,rk8602";
    //    reg = <0x42>;
    //    vin-supply = <&vcc5v0_sys>;
    //    regulator-compatible = "rk860x-reg";
    //    regulator-name = "vdd_npu_s0";
    //    regulator-min-microvolt = <550000>;
    //    regulator-max-microvolt = <950000>;
    //    regulator-ramp-delay = <2300>;
    //    rockchip,suspend-voltage-selector = <1>;
    //    regulator-boot-on;
    //    regulator-always-on;
    //    regulator-state-mem {
    //        regulator-off-in-suspend;
    //    };
    //};

};

&i2c3 {
    status = "okay";

    es8388: es8388@11 {
        status = "okay";
        #sound-dai-cells = <0>;
        compatible = "everest,es8388", "everest,es8323";
        reg = <0x11>;
        clocks = <&mclkout_i2s0>;
        clock-names = "mclk";
        pinctrl-names = "default";
        pinctrl-0 = <&i2s0_mclk>;
    };

    es7202: es7202@32 {
        status = "okay";
        #sound-dai-cells = <0>;
        compatible = "ES7202_PDM_ADC_1";
        power-supply = <&vcc_1v8_s0>;    /* only 1v8 or 3v3, default is 3v3 */
        reg = <0x32>;
    };
};

&i2c4 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&i2c4m3_xfer>;

    gt1x: gt1x@14 {
        compatible = "goodix,gt1x";
        reg = <0x14>;
        pinctrl-names = "default";
        pinctrl-0 = <&touch_gpio>;
        goodix,rst-gpio = <&gpio1 RK_PB4 GPIO_ACTIVE_HIGH>;
        goodix,irq-gpio = <&gpio1 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
        power-supply = <&vcc3v3_lcd_n>;
    };
};

&i2c5 {
    status = "okay";

    ls_stk3332: light@47 {
        compatible = "ls_stk3332";
        status = "disabled";
        reg = <0x47>;
        type = <SENSOR_TYPE_LIGHT>;
        irq_enable = <0>;
        als_threshold_high = <100>;
        als_threshold_low = <10>;
        als_ctrl_gain = <2>; /* 0:x1 1:x4 2:x16 3:x64 */
        poll_delay_ms = <100>;
    };

    ps_stk3332: proximity@47 {
        compatible = "ps_stk3332";
        status = "disabled";
        reg = <0x47>;
        type = <SENSOR_TYPE_PROXIMITY>;
        //pinctrl-names = "default";
        //pinctrl-0 = <&gpio3_c6>;
        //irq-gpio = <&gpio3 RK_PC6 IRQ_TYPE_LEVEL_LOW>;
        //irq_enable = <1>;
        ps_threshold_high = <0x200>;
        ps_threshold_low = <0x100>;
        ps_ctrl_gain = <3>; /* 0:x1 1:x2 2:x5 3:x8 */
        ps_led_current = <4>; /* 0:3.125mA 1:6.25mA 2:12.5mA 3:25mA 4:50mA 5:100mA*/
        poll_delay_ms = <100>;
    };

    mpu6500_acc: mpu_acc@68 {
        compatible = "mpu6500_acc";
        reg = <0x68>;
        irq-gpio = <&gpio3 RK_PB4 IRQ_TYPE_EDGE_RISING>;
        irq_enable = <0>;
        poll_delay_ms = <30>;
        type = <SENSOR_TYPE_ACCEL>;
        layout = <8>;
    };

    mpu6500_gyro: mpu_gyro@68 {
        compatible = "mpu6500_gyro";
        reg = <0x68>;
        irq_enable = <0>;
        poll_delay_ms = <30>;
        type = <SENSOR_TYPE_GYROSCOPE>;
        layout = <8>;
    };
};

&i2c6 {
    status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&i2c6m0_xfer>;

    vdd_npu_s0: vdd_npu_mem_s0: rk8602@42 {
        compatible = "rockchip,rk8602";
        reg = <0x42>;
        vin-supply = <&vcc5v0_sys>;
        vsel-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;
        regulator-compatible = "rk860x-reg";
        regulator-name = "vdd_npu_s0";
        regulator-min-microvolt = <550000>;
        regulator-max-microvolt = <950000>;
        regulator-ramp-delay = <2300>;
        rockchip,suspend-voltage-selector = <1>;
        regulator-boot-on;
        regulator-always-on;
        regulator-state-mem {
            regulator-off-in-suspend;
        };
    };
};

    
&i2c8 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&i2c8m2_xfer>;

    usbc0: fusb302@22 {
        compatible = "fcs,fusb302";
        reg = <0x22>;
        interrupt-parent = <&gpio0>;
        interrupts = <RK_PC6 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&usbc0_int>;
        vbus-supply = <&vbus5v0_typec>;
        status = "okay";

        ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                reg = <0>;
                usbc0_role_sw: endpoint@0 {
                    remote-endpoint = <&dwc3_0_role_switch>;
                };
            };
        };

        usb_con: connector {
            compatible = "usb-c-connector";
            label = "USB-C";
            data-role = "dual";
            power-role = "dual";
            try-power-role = "sink";
            op-sink-microwatt = <1000000>;
            sink-pdos =
                <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
            source-pdos =
                <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;

            altmodes {
                #address-cells = <1>;
                #size-cells = <0>;

                altmode@0 {
                    reg = <0>;
                    svid = <0xff01>;
                    vdo = <0xffffffff>;
                };
            };

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;
                    usbc0_orien_sw: endpoint {
                        remote-endpoint = <&usbdp_phy0_orientation_switch>;
                    };
                };

                port@1 {
                    reg = <1>;
                    dp_altmode_mux: endpoint {
                        remote-endpoint = <&usbdp_phy0_dp_altmode_mux>;
                    };
                };
            };
        };
    };

    hym8563: hym8563@51 {
        compatible = "haoyu,hym8563";
        reg = <0x51>;
        #clock-cells = <0>;
        clock-frequency = <32768>;
        clock-output-names = "hym8563";
        pinctrl-names = "default";
        pinctrl-0 = <&hym8563_int>;
        interrupt-parent = <&gpio0>;
        interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
        wakeup-source;
        status = "okay";
    };

    adp5585: mfd-gpio@34 {
            compatible = "adi,adp5585";
            reg = <0x34>;
            status = "okay";

            adp5585_gpio: gpio-normal@34 {
                    compatible = "adp5585-gpio";
                    gpio-controller;
                    #gpio-cells = <2>;
            };
        
            // adp5585pwm: pwm@34 {
                    // compatible = "adp5585-pwm";
                    // #pwm-cells = <3>;
               // };
    };
};


原始程序来自:
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rp-rk3588s-board.dtsi
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
 *
 */

/dts-v1/;

/* merage dtsi in rk3588s-evb4-lp4-v10-linux.dts */

#include "dt-bindings/usb/pd.h"
#include "rk3588s.dtsi"
#include "rk3588s-evb.dtsi"
#include "rk3588-rk806-single.dtsi"
#include "rk3588-linux.dtsi"

/ {
    model = "Rockchip RK3588S EVB4 LP4X V10 Board";
    compatible = "rockchip,rk3588s-evb4-lp4x-v10", "rockchip,rk3588";
};

&i2c0 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&i2c0m2_xfer>;

    vdd_cpu_big0_s0: vdd_cpu_big0_mem_s0: rk8602@42 {
        compatible = "rockchip,rk8602";
        reg = <0x42>;
        vin-supply = <&vcc5v0_sys>;
        vsel-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
        regulator-compatible = "rk860x-reg";
        regulator-name = "vdd_cpu_big0_s0";
        regulator-min-microvolt = <550000>;
        regulator-max-microvolt = <1050000>;
        regulator-ramp-delay = <2300>;
        rockchip,suspend-voltage-selector = <1>;
        regulator-boot-on;
        regulator-always-on;
        regulator-state-mem {
            regulator-off-in-suspend;
        };
    };

    vdd_cpu_big1_s0: vdd_cpu_big1_mem_s0: rk8603@43 {
        compatible = "rockchip,rk8603";
        reg = <0x43>;
        vin-supply = <&vcc5v0_sys>;
        vsel-gpios = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
        regulator-compatible = "rk860x-reg";
        regulator-name = "vdd_cpu_big1_s0";
        regulator-min-microvolt = <550000>;
        regulator-max-microvolt = <1050000>;
        regulator-ramp-delay = <2300>;
        rockchip,suspend-voltage-selector = <1>;
        regulator-boot-on;
        regulator-always-on;
        regulator-state-mem {
            regulator-off-in-suspend;
        };
    };
};

&i2c6 {
    status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&i2c6m0_xfer>;

    vdd_npu_s0: vdd_npu_mem_s0: rk8602@42 {
        compatible = "rockchip,rk8602";
        reg = <0x42>;
        vin-supply = <&vcc5v0_sys>;
        vsel-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;
        regulator-compatible = "rk860x-reg";
        regulator-name = "vdd_npu_s0";
        regulator-min-microvolt = <550000>;
        regulator-max-microvolt = <950000>;
        regulator-ramp-delay = <2300>;
        rockchip,suspend-voltage-selector = <1>;
        regulator-boot-on;
        regulator-always-on;
        regulator-state-mem {
            regulator-off-in-suspend;
        };
    };
};


5、【可选==完全一样的】
Z:\rk3588s_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588s-evb4-lp4x.dtsi
    vcc_1v1_nldo_s3: vcc-1v1-nldo-s3 {
        compatible = "regulator-fixed";
        regulator-name = "vcc_1v1_nldo_s3";
        regulator-always-on;
        regulator-boot-on;
        regulator-min-microvolt = <1100000>;
        regulator-max-microvolt = <1100000>;
        vin-supply = <&vcc5v0_sys>;
    };


Z:\rk3588s_20230620\05临时了kernel\arch\arm64\boot\dts\rockchip\rd-rk3588s-ahd.dts
    vcc_1v1_nldo_s3: vcc-1v1-nldo-s3 {
        compatible = "regulator-fixed";
        regulator-name = "vcc_1v1_nldo_s3";
        regulator-always-on;
        regulator-boot-on;
        regulator-min-microvolt = <1100000>;
        regulator-max-microvolt = <1100000>;
        vin-supply = <&vcc5v0_sys>;
    };

效果图:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式学习——进程间通信方式(1)——有名管道和匿名管道

一、基本概念 我们要知道管道为什么叫做管道&#xff0c;管道就好比我们生活中的水管&#xff0c;水总是从一端流向另一端&#xff0c;你总不能从水龙头往里灌水吧&#xff0c;它只能出水。管道也是类似的&#xff0c;数据从管子的一端传入&#xff0c;在另一端进行数据的读取…

电脑使用技巧:C盘大文件如何清理?

随着时间的推移&#xff0c;电脑C盘可能会因为各种大文件的堆积而变得容量不足&#xff0c;影响系统运行速度。在这篇文章中&#xff0c;小编将分享几种C盘大文件清理的小妙招&#xff0c;让你的电脑流畅运行。 方法一&#xff1a;使用系统自带的磁盘清理 Windows系统提供了内…

画册翻页电子版是如何制作的?

​随着科技的不断发展&#xff0c;电子出版逐渐成为主流&#xff0c;画册翻页电子版也应运而生。它不仅保留了传统画册的精美风格&#xff0c;还融入了现代电子产品的便捷性。那么&#xff0c;画册翻页电子版究竟是如何制作的呢&#xff1f; 1.要制作电子杂志,首先需要选择一款…

峟思传感器:基坑监测的主要内容与技术

在现代城市建设和土木工程中&#xff0c;基坑监测扮演着至关重要的角色。基坑监测是指在基坑开挖和施工过程中&#xff0c;对基坑及其周边环境进行实时观测和分析的技术手段&#xff0c;以确保工程的安全性和有效性。本文将详细介绍基坑监测的主要内容及其所采用的关键技术。 点…

前端js下载文件时后缀名多出一个下划线(已解决)

问题&#xff1a;前端js下载文件时后缀名多出一个下划线 在打印的时候发现文件名啥啥啥的都没问题&#xff0c;创建的元素似乎也没问题。 但是呢结果&#xff1f;多了个下划线。 原因 细心的你可能发现了a标签的download的内容是双层双引号。具体原因可能是谷歌浏览器做了安全…

解读 Story Protocol:IP 与区块链的潜力与障碍

撰文&#xff1a;100y.eth 编译&#xff1a;J1N&#xff0c;Techub News 8 月&#xff0c;据 The Block 报道&#xff0c;专注于知识产权&#xff08;IP&#xff09;的区块链 Story 宣布完成 a16z Crypto 领投 8000 万美元 B 轮融资&#xff0c;参投方包括 Polychain Capital&…

VBA技术资料MF204:右键多按钮弹出菜单中使用图标

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

MySQL常见面试总结

MySQL基础 什么是关系型数据库&#xff1f; 顾名思义&#xff0c;关系型数据库&#xff08;RDB&#xff0c;Relational Database&#xff09;就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系&#xff08;一对一、一对多、多对多&…

【大数据】元数据是解锁数据价值的关键

在信息爆炸的数字时代&#xff0c;数据无处不在&#xff0c;它以多种形式存在&#xff0c;从文本文档到数字图片&#xff0c;从交易记录到科学测量。然而&#xff0c;如果没有合适的数据管理和理解&#xff0c;这些数据的价值就会大打折扣。如何提高数据价值呢&#xff1f;这就…

IDA Pro基本使用

IDA Pro基本使用 1.DllMain的地址是什么? 打开默认在的位置1000D02E就是DllMain地址 按空格键可以看到图形化界面选择options、general勾选对应的选项在图像化也能看到 2.使用Imports 窗口并浏览到 gethostbyname&#xff0c;导入函数定位到什么地址? 这里可以打开Impo…

2024 Python3.10 系统入门+进阶(十六):正则表达式

目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…

文件防泄密措施有哪些?教你10个权威方法,有效防止文件泄密!【聚焦职场安全】

【聚焦职场安全】数字化办公&#xff0c;文件防泄密已成为企业不可忽视的重要环节。 文件泄密不仅会导致企业核心竞争力的丧失&#xff0c;还可能引发法律纠纷和经济损失。 接下来&#xff0c;我将为您揭晓10个权威且实用的文件防泄密措施&#xff0c;这些方法简单易行&#…

斯坦福STANFORD RESEARCH SR860 DSP 锁相放大器SR830

斯坦福研究 SR860 具有无与伦比的模拟性能、先进的新型数字信号处理功能、完全现代、直观的用户界面以及广泛的计算机连接选项&#xff0c;是任何同步检测应用的理想选择。从消除开关模式噪声的重型环形变压器到将锁定功能带入手机的 iOS 连接&#xff0c;再到可消除更多噪声并…

DrawDB本地Windows环境部署结合内网穿透远程设计数据库

文章目录 前言1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 前言 我们在开发项目时很多时候都会使用到数据库&#xff0c;所以选择一个好用的数据库设计工具会让工作效率翻倍。在当今数字化时代&#xff0c;数据库管理是许多企业…

超全攻略,教你验证第三方电子合同平台的真伪

不了解电子合同不用担心&#xff0c;通过本篇文章&#xff0c;您可以深入了解电子合同以及第三方平台有效性。 如何辨别第三方电子合同平台的真伪&#xff0c;可以从合法性、技术安全、平台、功能、服务等几个方面入手&#xff1a; 1.合法性方面&#xff1a; 资质认证&#…

Azure Kinect 人体跟踪关节

Azure Kinect 人体跟踪关节 azure kinect dk 提取人体骨骼 要在Azure Kinect DK上提取人体骨骼&#xff0c;你需要使用Azure Kinect SDK和OpenPose库。以下是一个简化的代码示例&#xff0c;展示如何集成这两个库来提取骨骼关键点&#xff1a; 首先&#xff0c;确保你已经安装…

linux 下域名解析错误

本文参考这里 作者&#xff1a;程序那点事儿 日期&#xff1a;2024/01/31 16:25 ping raw.githubusercontent.com&#xff0c;ping这个域名时&#xff0c;发现返回的是本地ip 原因是&#xff0c;配置了本地网关地址 192.168.xx.1 用命令查看默认网卡的网关&#xff1a;nmcli …

刷题训练之队列与宽搜

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握字符串算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题…

【PyTorch实战·1】多模态图片生成(文心一言大模型)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a;PyTorch实战_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 &#x1f3c0; 专栏持续更新中~…

信安 实验1 用Wireshark分析典型TCP/IP体系中的协议

实验1 用Wireshark分析典型TCP/IP体系中的协议 实验目的 通过Wireshark软件分析典型网络协议数据包&#xff0c;理解典型协议格式和存在的问题&#xff0c;为后续学习和相关实验打下基础。 实验内容 &#xff08;1&#xff09;安装Wireshark&#xff0c;熟悉功能菜单。 &…