20240112让移远mini-PCIE接口的4G模块EC20在Firefly的AIO-3399J开发板的Android11下跑通【DTS部分】
20240112让移远mini-PCIE接口的4G模块EC20在Firefly的AIO-3399J开发板的Android11下跑通【DTS部分】
2024/1/12 16:20
https://blog.csdn.net/u010164190/article/details/79096345
[Android6.0][RK3399] PCIe 接口 4G模块 EC20 调试记录
https://blog.csdn.net/hnjztyx/article/details/72495433
S5P4418 android 5.1 EC20 R2.0 PCIE接口调试记录
步骤:
1、使用Firefly的AIO-3399【RK3399】开发板,在Android11下调通加USB底板的移远4G模块EC20。
2、将移远mini-PCIE接口的4G模块EC20接入Firefly的AIO-3399,Android11启动之后不能同构4G上网。也没有/dev/ttyUSB2这个设备节点!
3、使用AIO-3399J的DTS【Android10】替换默认的挖掘机的DTS之后,更新的内核可以让移远的EC20通过4G上网。
4、将AIO-3399J的DTS【Android10】合并/替换到挖掘机的DTS之后,更新的内核也可以让移远的EC20通过4G上网。
步骤:根据经验,将AIO-3399J的DTS文件对应到相应的挖掘机的DTS文件之中。
对于:AIO-3399J 和 挖掘机都有的DTS项目,直接使用 AIO-3399J的DTS项目覆盖挖掘机的DTS项目。
对于只在 AIO-3399J 出现的项目,合并到挖掘机对应文件的最后面。
对于只在挖掘机DTS中的项目不处理!
1、
现在可以确认:问题出在DTS设备树的配置部分了!
现在开始比对AIO-3399J和挖掘机的DTS的异同。
Z:\firefly\rockchip-excavator
Makefile
rk3399-android.dtsi
rk3399-dram-default-timing.dtsi
rk3399-excavator-sapphire.dtsi
rk3399-opp.dtsi
rk3399-sapphire-excavator-edp-avb.dts
rk3399-sapphire-excavator-edp.dtsi
rk3399-sapphire.dtsi
rk3399-sched-energy.dtsi
rk3399-vop-clk-set.dtsi
rk3399.dtsi
Z:\firefly\rockchip-firefly
Makefile
rk3399-android.dtsi
rk3399-dram-default-timing.dtsi
rk3399-firefly-aio.dts
rk3399-firefly-aio.dtsi
rk3399-firefly-core.dtsi
rk3399-firefly-demo.dtsi
rk3399-firefly-port.dtsi
rk3399-opp.dtsi
rk3399-sched-energy.dtsi
rk3399-vop-clk-set.dtsi
rk3399.dtsi
干掉同名的文件,差异的文件有:
Z:\firefly\rockchip-excavator
rk3399-excavator-sapphire.dtsi
rk3399-sapphire-excavator-edp-avb.dts
rk3399-sapphire-excavator-edp.dtsi
rk3399-sapphire.dtsi
Z:\firefly\rockchip-firefly
rk3399-firefly-aio.dts
rk3399-firefly-aio.dtsi
rk3399-firefly-core.dtsi
rk3399-firefly-demo.dtsi
rk3399-firefly-port.dtsi
很容易/根据经验/很艰难地比对文件,可以知道:
rk3399-firefly-aio.dts 合并到 rk3399-sapphire-excavator-edp-avb.dts
rk3399-firefly-aio.dtsi 合并到 rk3399-sapphire-excavator-edp.dtsi
rk3399-firefly-core.dtsi 合并到 rk3399-sapphire.dtsi
rk3399-firefly-demo.dtsi 望文生义/根据名字,忽略掉,本文件不处理!
rk3399-firefly-port.dtsi 合并到 rk3399-excavator-sapphire.dtsi
放心,第一次合并/干的时候肯定会出现没有加全/遗漏的问题!
就会出现内核编译不过的问题!那就请根据经验修改吧!
rootroot@rootroot-X99-Turbo:~/3TB/76Android11.0/kernel$
rootroot@rootroot-X99-Turbo:~/3TB/76Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
DTC arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb
CALL scripts/checksyscalls.sh
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: ERROR (phandle_references): /amba/dma-controller@ff6d0000: Reference to non-existent node or label "iram"
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: ERROR (phandle_references): /i2c@ff110000/gc2145@3c/port/endpoint: Reference to non-existent node or label "dvp_in_fcam"
ERROR: Input tree has errors, aborting (use -f to force output)
make[1]: *** [scripts/Makefile.lib:307: arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb] Error 2
make: *** [arch/arm64/Makefile:145: rockchip/rk3399-sapphire-excavator-edp-avb.dtb] Error 2
make: *** Waiting for unfinished jobs....
rootroot@rootroot-X99-Turbo:~/3TB/76Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
DTC arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb
CALL scripts/checksyscalls.sh
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: Warning (sound_dai_property): /rt5640-sound/simple-audio-card,dai-link@1/cpu:sound-dai: cell 1 is not a phandle reference
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: Warning (sound_dai_property): /rt5640-sound/simple-audio-card,dai-link@1/cpu: Missing property '#sound-dai-cells' in node /interrupt-controller@fee00000 or bad phandle (referred from sound-dai[1])
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: Warning (sound_dai_property): /rt5640-sound/simple-audio-card,dai-link@1/codec:sound-dai: cell 1 is not a phandle reference
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: Warning (sound_dai_property): /rt5640-sound/simple-audio-card,dai-link@1/codec: Missing property '#sound-dai-cells' in node /interrupt-controller@fee00000 or bad phandle (referred from sound-dai[1])
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp-avb.dtb: Warning (graph_endpoint): /i2c@ff110000/xc7160b@1b/port/endpoint: graph connection to node '/syscon@ff770000/mipi-dphy-rx0/ports/port@0/endpoint@2' is not bidirectional
LDS arch/arm64/kernel/vdso/vdso.lds
CC arch/arm64/kernel/vdso/vgettimeofday.o
AS arch/arm64/kernel/vdso/note.o
AS arch/arm64/kernel/vdso/sigreturn.o
LD arch/arm64/kernel/vdso/vdso.so.dbg
VDSOSYM include/generated/vdso-offsets.h
CHK include/generated/compile.h
2、等你终于编译通过了,单独更新boot.img之后,就kernel/boot了,但是HDMI显示器黑屏,进不了Android11系统的UI界面!
[ 659.614425] init: starting service 'vendor.audio-hal'...
[ 659.618551] init: starting service 'audioserver'...
[ 659.622310] init: starting service 'surfaceflinger'...
[ 659.622924] init: Could not create socket 'pdx/system/vr/display/client': Failed to bind socket 'pdx/system/vr/display/client': No such file or directory
[ 659.623283] init: Could not create socket 'pdx/system/vr/display/manager': Failed to bind socket 'pdx/system/vr/display/manager': No such file or directory
[ 659.623583] init: Could not create socket 'pdx/system/vr/display/vsync': Failed to bind socket 'pdx/system/vr/display/vsync': No such file or directory
[ 659.627313] init: starting service 'vendor.hwcomposer-2-1'...
[ 659.631574] init: processing action (init.svc.audioserver=running) from (/system/etc/init/audioserver.rc:35)
[ 659.631955] init: Command 'start vendor.audio-hal-4-0-msd' action=init.svc.audioserver=running (/system/etc/init/audioserver.rc:37) took 0ms and failed: service vendor.audio-hal-4-0-msd not found
[ 659.632051] init: Command 'start vendor.audio-hal-2-0' action=init.svc.audioserver=running (/system/etc/init/audioserver.rc:39) took 0ms and failed: service vendor.audio-hal-2-0 not found
[ 659.717087] type=1400 audit(1358499661.996:1072): avc: denied { read } for comm="android.hardwar" name="resolution_white.xml" dev="dm-0" ino=3901 scontext=u:r:hal_graphics_composer_default:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=0
[ 661.782216] type=1400 audit(1358499664.080:1073): avc: denied { read } for comm="Binder:177_2" name="wakeup9" dev="sysfs" ino=24029 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 661.782403] type=1400 audit(1358499664.080:1074): avc: denied { read } for comm="Binder:177_2" name="wakeup7" dev="sysfs" ino=23543 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 661.783030] type=1400 audit(1358499664.080:1075): avc: denied { read } for comm="Binder:177_2" name="wakeup10" dev="sysfs" ino=24085 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 661.783678] type=1400 audit(1358499664.080:1076): avc: denied { read } for comm="Binder:177_2" name="wakeup8" dev="sysfs" ino=23583 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 661.783793] type=1400 audit(1358499664.080:1077): avc: denied { read } for comm="Binder:177_2" name="wakeup13" dev="sysfs" ino=28271 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 661.783882] type=1400 audit(1358499664.080:1078): avc: denied { read } for comm="Binder:177_2" name="wakeup6" dev="sysfs" ino=22974 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 661.783968] type=1400 audit(1358499664.080:1079): avc: denied { read } for comm="Binder:177_2" name="wakeup11" dev="sysfs" ino=24169 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 664.081178] healthd: battery l=50 v=3 t=2.6 h=2 st=3 fc=100 chg=au
[ 664.620523] init: starting service 'vendor.audio-hal'...
[ 664.624465] init: starting service 'audioserver'...
[ 664.628308] init: starting service 'surfaceflinger'...
[ 664.629009] init: Could not create socket 'pdx/system/vr/display/client': Failed to bind socket 'pdx/system/vr/display/client': No such file or directory
[ 664.629350] init: Could not create socket 'pdx/system/vr/display/manager': Failed to bind socket 'pdx/system/vr/display/manager': No such file or directory
[ 664.629657] init: Could not create socket 'pdx/system/vr/display/vsync': Failed to bind socket 'pdx/system/vr/display/vsync': No such file or directory
[ 664.633580] init: starting service 'vendor.hwcomposer-2-1'...
[ 664.637739] init: processing action (init.svc.audioserver=running) from (/system/etc/init/audioserver.rc:35)
[ 664.638007] init: Command 'start vendor.audio-hal-4-0-msd' action=init.svc.audioserver=running (/system/etc/init/audioserver.rc:37) took 0ms and failed: service vendor.audio-hal-4-0-msd not found
[ 664.638139] init: Command 'start vendor.audio-hal-2-0' action=init.svc.audioserver=running (/system/etc/init/audioserver.rc:39) took 0ms and failed: service vendor.audio-hal-2-0 not found
[ 664.719297] type=1400 audit(1358499667.006:1080): avc: denied { read } for comm="android.hardwar" name="resolution_white.xml" dev="dm-0" ino=3901 scontext=u:r:hal_graphics_composer_default:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=0
[ 665.338724] selinux: SELinux: Could not stat /sys/devices/virtual/net/ipsec_test/queues/tx-0: No such file or directory.
[ 665.338772] selinux:
[ 666.786637] type=1400 audit(1358499669.083:1081): avc: denied { read } for comm="Binder:177_2" name="wakeup9" dev="sysfs" ino=24029 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 666.786799] type=1400 audit(1358499669.083:1082): avc: denied { read } for comm="Binder:177_2" name="wakeup7" dev="sysfs" ino=23543 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 666.786985] type=1400 audit(1358499669.083:1083): avc: denied { read } for comm="Binder:177_2" name="wakeup10" dev="sysfs" ino=24085 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 666.787470] type=1400 audit(1358499669.083:1084): avc: denied { read } for comm="Binder:177_2" name="wakeup8" dev="sysfs" ino=23583 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 666.787602] type=1400 audit(1358499669.083:1085): avc: denied { read } for comm="Binder:177_2" name="wakeup13" dev="sysfs" ino=28271 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 666.787694] type=1400 audit(1358499669.083:1086): avc: denied { read } for comm="Binder:177_2" name="wakeup6" dev="sysfs" ino=22974 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 666.787784] type=1400 audit(1358499669.083:1087): avc: denied { read } for comm="Binder:177_2" name="wakeup11" dev="sysfs" ino=24169 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 669.626628] init: starting service 'vendor.audio-hal'...
[ 669.630678] init: starting service 'audioserver'...
[ 669.634637] init: starting service 'surfaceflinger'...
[ 669.635355] init: Could not create socket 'pdx/system/vr/display/client': Failed to bind socket 'pdx/system/vr/display/client': No such file or directory
[ 669.635707] init: Could not create socket 'pdx/system/vr/display/manager': Failed to bind socket 'pdx/system/vr/display/manager': No such file or directory
[ 669.636015] init: Could not create socket 'pdx/system/vr/display/vsync': Failed to bind socket 'pdx/system/vr/display/vsync': No such file or directory
[ 669.639744] init: starting service 'vendor.hwcomposer-2-1'...
[ 669.643761] init: processing action (init.svc.audioserver=running) from (/system/etc/init/audioserver.rc:35)
[ 669.643992] init: Command 'start vendor.audio-hal-4-0-msd' action=init.svc.audioserver=running (/system/etc/init/audioserver.rc:37) took 0ms and failed: service vendor.audio-hal-4-0-msd not found
[ 669.644071] init: Command 'start vendor.audio-hal-2-0' action=init.svc.audioserver=running (/system/etc/init/audioserver.rc:39) took 0ms and failed: service vendor.audio-hal-2-0 not found
[ 669.713773] type=1400 audit(1358499672.010:1088): avc: denied { read } for comm="android.hardwar" name="resolution_white.xml" dev="dm-0" ino=3901 scontext=u:r:hal_graphics_composer_default:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=0
[ 671.781897] type=1400 audit(1358499674.076:1089): avc: denied { read } for comm="Binder:177_2" name="wakeup9" dev="sysfs" ino=24029 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 671.782153] type=1400 audit(1358499674.080:1090): avc: denied { read } for comm="Binder:177_2" name="wakeup7" dev="sysfs" ino=23543 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 671.782687] type=1400 audit(1358499674.080:1091): avc: denied { read } for comm="Binder:177_2" name="wakeup10" dev="sysfs" ino=24085 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
[ 671.783353] type=1400 audit(1358499674.080:1092): avc: denied { read } for comm="Binder:177_2" name="wakeup8" dev="sysfs" ino=23583 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 671.783465] type=1400 audit(1358499674.080:1093): avc: denied { read } for comm="Binder:177_2" name="wakeup13" dev="sysfs" ino=28271 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 671.783556] type=1400 audit(1358499674.080:1094): avc: denied { read } for comm="Binder:177_2" name="wakeup6" dev="sysfs" ino=22974 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
[ 671.783643] type=1400 audit(1358499674.080:1095): avc: denied { read } for comm="Binder:177_2" name="wakeup11" dev="sysfs" ino=24169 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs_power:s0 tclass=dir permissive=0
console:/ $
3、根据经验可能是某一个文件更改之后出现的问题,
很容易/根据经验/很艰难地定位文件,可以知道:
【问题出在这里,整个文件不要合并了!】
rk3399-firefly-aio.dts 合并到 rk3399-sapphire-excavator-edp-avb.dts
【合并一下的3个文件,解决编译的问题!】更新的内核也可以让移远的EC20通过4G上网。
rk3399-firefly-aio.dtsi 合并到 rk3399-sapphire-excavator-edp.dtsi
rk3399-firefly-core.dtsi 合并到 rk3399-sapphire.dtsi
rk3399-firefly-demo.dtsi 望文生义/根据名字,忽略掉,本文件不处理!
rk3399-firefly-port.dtsi 合并到 rk3399-excavator-sapphire.dtsi
4、查找PCIE/PCIE0根据经验更新代码块即可。
rk3399-firefly-port.dtsi 合并到 rk3399-excavator-sapphire.dtsi
wireless-bluetooth {
compatible = "bluetooth-platdata";
clocks = <&rk808 1>;
clock-names = "ext_clock";
//wifi-bt-power-toggle;
uart_rts_gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; /* GPIO2_C3 */
pinctrl-names = "default", "rts_gpio";
pinctrl-0 = <&uart0_rts>, <&bt_reset_gpio>, <&bt_wake_gpio>, <&bt_irq_gpio>;
pinctrl-1 = <&uart0_gpios>;
//BT,power_gpio = <&gpio3 19 GPIO_ACTIVE_HIGH>; /* GPIOx_xx */
BT,reset_gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>; /* GPIO0_B1 */
BT,wake_gpio = <&gpio2 26 GPIO_ACTIVE_HIGH>; /* GPIO2_D2 */
BT,wake_host_irq = <&gpio0 4 GPIO_ACTIVE_HIGH>; /* GPIO0_A4 */
status = "okay";
};
vdd_pcie3v3: vdd3v3-pcie-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_drv>;
regulator-name = "vdd3v3_pcie";
};
vcc3v3_3g: vcc3v3-3g-regulator {
compatible = "regulator-fixed";
enable-active-high;
regulator-always-on;
regulator-boot-on;
gpio = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_3g_drv>;
regulator-name = "vcc3v3_3g";
};
};
&dfi {
status = "okay";
};
&pcie0 {
ep-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
num-lanes = <4>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_clkreqn_cpm>;
};
修改为:
&pcie0 {
ep-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
num-lanes = <4>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_clkreqn_cpm>;
vpcie3v3-supply = <&vdd_pcie3v3>;
status = "okay";
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_xfer &uart0_cts>;
status = "okay";
};
&pinctrl {
sdio-pwrseq {
wifi_enable_h: wifi-enable-h {
rockchip,pins =
<0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
wireless-bluetooth {
uart0_gpios: uart0-gpios {
rockchip,pins =
<2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
bt_reset_gpio: bt-reset-gpio {
rockchip,pins =
<0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
};
bt_wake_gpio: bt-wake-gpio {
rockchip,pins =
<2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
};
bt_irq_gpio: bt-irq-gpio {
rockchip,pins =
<0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
pcie {
pcie_drv: pcie-drv {
rockchip,pins = <0 13 RK_FUNC_GPIO &pcfg_pull_none>;
};
pcie_3g_drv: pcie-3g-drv {
rockchip,pins = <2 6 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};
5、虽然改动居多,但是查找PCIE/PCIE0根据经验更新代码块即可。
rk3399-firefly-aio.dtsi 合并到 rk3399-sapphire-excavator-edp.dtsi
tc358749x: tc358749x@0f {
compatible = "toshiba,tc358749x";
reg = <0x0f>;
//power-gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
power18-gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>;
power33-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
csi-ctl-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
stanby-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
int-gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&hdmiin_gpios>;
status = "disabled";
};
&vopl {
status = "okay";
assigned-clocks = <&cru DCLK_VOP1_DIV>;
assigned-clock-parents = <&cru PLL_VPLL>;
};
&pcie_phy {
status = "okay";
};
&pcie0 {
status = "okay";
};
修改为:
&vopl {
status = "okay";
assigned-clocks = <&cru DCLK_VOP1_DIV>;
assigned-clock-parents = <&cru PLL_VPLL>;
};
&vdd_pcie3v3 {
gpio = <&gpio0 13 GPIO_ACTIVE_HIGH>; //change with power led
};
&vcc3v3_3g {
gpio = <&gpio2 6 GPIO_ACTIVE_HIGH>;
};
&pcie_phy {
status = "okay";
};
&pcie0 {
ep-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&rt5651_sound {
status = "okay";
};
&pinctrl {
cam0 {
cif_pwr: cif-pwr {
rockchip,pins = <1 22 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
pcie {
pcie_drv: pcie-drv {
rockchip,pins = <0 13 RK_FUNC_GPIO &pcfg_pull_none>;
};
pcie_3g_drv: pcie-3g-drv {
rockchip,pins = <2 6 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
lcd-panel {
lcd_panel_reset: lcd-panel-reset {
rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
hdmiin {
hdmiin_gpios: hdmiin_gpios {
rockchip,pins =
<2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>,
<2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>,
<2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>,
<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>,
<2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>,
<2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
6、最后很容易/根据经验/很艰难地定位文件,可以知道是这里的问题【电源的配置】:
rk3399-firefly-core.dtsi 合并到 rk3399-sapphire.dtsi
Z:\3TB\76Android11.0\kernel\arch\arm64\boot\dts\rockchip\rk3399-sapphire.dtsi
&i2s2 {
status = "okay";
};
&io_domains {
status = "okay";
bt656-supply = <&vcc_3v0>;
audio-supply = <&vcca1v8_codec>;
sdmmc-supply = <&vcc_sdio>;
gpio1830-supply = <&vcc_3v0>;
};
&pmu_io_domains {
pmu1830-supply = <&vcc_3v0>;
status = "okay";
};
修改为:
&i2s2 {
status = "okay";
};
&io_domains {
status = "okay";
bt656-supply = <&vcc1v8_dvp>; /* bt656_gpio2ab_ms */
audio-supply = <&vcca1v8_codec>; /* audio_gpio3d4a_ms */
//sdmmc-supply = <&vcc_sd>; /* sdmmc_gpio4b_ms */
sdmmc-supply = <&vcc_sdio>;
gpio1830-supply = <&vcc_3v0>; /* gpio1833_gpio4cd_ms */
};
&pmu_io_domains {
pmu1830-supply = <&vcc_3v0>;
status = "okay";
};
7、使用USB底板的EC20能够上网需要修改的部分:
缘起:使用友善之臂的Android11可以让EC20上网,但是同样的修改步骤,Toybrick的Android11不能让EC20上网。
最后确认是selinux的问题!
开发板:Firefly的AIO-3399J【RK3399】
SDK:rk3399-android-11-r20211216.tar.xz【Android11】
Android11.0.tar.bz2.aa【ToyBrick】
Android11.0.tar.bz2.ab
Android11.0.tar.bz2.ac
https://wiki.t-firefly.com/AIO-3399J/prepare_compile_android.html
AIO-3399J产品规格书 立即购买
AIO-3399J 采用 RK3399 六核(A72x2+A53x4) 64 位处理器,主频高达1.8GHz,集成了四核 Mali-T860 GPU,性能优异。
0、简略步骤:
rootroot@rootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ mv Android11.0 64rk3399-android-11
rootroot@rootroot-X99-Turbo:~/3TB$ cd 64rk3399-android-11
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ cd u-boot
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/u-boot$ ./make.sh rk3399
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/u-boot$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ cd kernel/
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/kernel$ make ARCH=arm64 rockchip_defconfig android-11.config -j36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ source build/envsetup.sh
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ lunch
36. rk3399_Android11-userdebug
Which would you like? [aosp_arm-eng] 36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ make -j36
rootroot@rootroot-X99-Turbo:~/3TB/64rk3399-android-11$ ./build.sh -u
1、
Android11 + Kernel所需要修改的文件:
1、【完全一致/相同】
Z:\rk3399-android-11\device\rockchip\common\4g_modem\manifest.xml
2、复制库文件:
chat
dhcpcd
ip-down
ip-up
libmeig-ril.so
libquec-ril.so
libreference-ril-62.so
libreference-ril.so
Z:\rk3399-android-11\device\rockchip\common\ec20\chat
Z:\rk3399-android-11\device\rockchip\common\ec20\dhcpcd
Z:\rk3399-android-11\device\rockchip\common\ec20\ip-down
Z:\rk3399-android-11\device\rockchip\common\ec20\ip-up
Z:\rk3399-android-11\device\rockchip\common\ec20\libmeig-ril.so
Z:\rk3399-android-11\device\rockchip\common\ec20\libquec-ril.so
Z:\rk3399-android-11\device\rockchip\common\ec20\libreference-ril-62.so
Z:\rk3399-android-11\device\rockchip\common\ec20\libreference-ril.so
3、
Z:\rk3399-android-11\device\rockchip\common\BoardConfig.mk
4、
Z:\rk3399-android-11\device\rockchip\common\device.mk
5、
Z:\rk3399-android-11\device\rockchip\common\ueventd.rockchip.rc
6、
Z:\rk3399-android-11\device\rockchip\rk3399\rk3399_Android11\overlay\frameworks\base\core\res\res\values\config.xml
【不用修改】
Z:\rk3399-android-11\device\rockchip\rk3399\device.mk
7、
Z:\rk3399-android-11\kernel\drivers\net\usb\Makefile
Z:\rk3399-android-11\kernel\drivers\net\usb\qmi_wwan_q.c
8、
Z:\rk3399-android-11\kernel\drivers\usb\serial\option.c
【几乎没有改动】
Z:\rk3399-android-11\kernel\drivers\usb\serial\qcserial.c
Z:\rk3399-android-11\kernel\drivers\usb\serial\usb_wwan.c
9、
Z:\rk3399-android-11\system\core\init\devices.cpp
3、修改selinux部分:
https://blog.csdn.net/taye_year/article/details/125948529
https://codeleading.com/article/76926405628/
RK3568移远4G模块EC20
Z:\3TB\76Android11.0\device\rockchip\common\ueventd.rockchip.rc
Z:\3TB\76Android11.0\device\rockchip\common\sepolicy\private\file_contexts
Z:\3TB\76Android11.0\system\sepolicy\vendor\rild.rc
【相关的资料:】
百度搜索:ifeq ($(strip $(BOARD_HAS_EC20_MODEM)),true)
RK3399 EC20 步骤
Android6.0 RK3399 PCIe 接口 4G模块 EC20 调试记录
rk3568 Android11系统调试ec20模块的gps功能
RK3568-ANDROID11-4G-EC20-(详细步骤)
RK356X android11 移远EC20 modem支持
[ 87.794373] init: Sending signal 9 to service 'ril-daemon' (pid 2176) proce
重复打印'android.hardware.radio@1.1::IRadio/slot1'
+ if(strcmp(descriptor.c_str(),"android.hardware.radio@1.1::IRadio") != 0)
[ 44.972959] init: Control message: Processed ctl.interface_start for 'andro
'android.hardware.radio@1.1::IRadio/slot1' from pid: 154 (/system/bin/hwserv
init: Control message: Processed ctl.interface_start for 'android.hardware.r
type=1400 audit(1704645252.746:494): avc: denied { read write } for comm="ri
BING:[ 44.972959] init: Control message: Processed ctl.interface_start for 'android.hardware.radio@1.1::IRadio/slot1' from pid: 149 (/system/bin/hwservicemanager)
https://blog.csdn.net/longmin96/article/details/122716504
RK3568-ANDROID11-4G-EC20-(详细步骤)
注意:硬件可以先使用USB转接板把模块接到电脑上,使用AT指令把模块调好。
https://blog.csdn.net/longmin96/article/details/122687117
RK3568-ANDROID11-4G-EC20-驱动篇(移远模块)
旋风旋风
https://blog.csdn.net/longmin96/article/details/122687865
RK3568-ANDROID11-4G-EC20-系统篇(移远模块)
首先,要先获得技术支持
步骤一,先在USB模块上完成4G
步骤二,移植到PCIE座子上
https://blog.csdn.net/weixin_51178981/article/details/124804679
NXP(imx8qxp)上android11的EG25-G(4G)模块调试记录
修改selinux的权限
修改/system/core/init/selinux.cpp
diff --git a/init/selinux.cpp b/init/selinux.cpp
index 5a0255acd..ae6f1fce9 100644
--- a/init/selinux.cpp
+++ b/init/selinux.cpp
@@ -104,6 +104,7 @@ EnforcingStatus StatusFromCmdline() {
}
bool IsEnforcing() {
+ return false;
if (ALLOW_PERMISSIVE_SELINUX) {
return StatusFromCmdline() == SELINUX_ENFORCING;
}
https://blog.csdn.net/terry_xiwang/article/details/123137864
RK3568 Android12 移远4G模块EM05-CE 调试心得
4、适配Android部分的时候主要是利用了rk已有的4g modem框架,打开BOARD_HAS_RK_4G_MODEM属性,并将librk-ril.so 替换为Quectel的ril库,这样会少走一些弯路。
5、我用的ril库版本为Quectel_Android_RIL_Driver_V3.3.78,这个版本才能适配Android12。之前用过3.3.57和3.3.62版本的库,加载时都会报错:
【关闭多余的打印LOG】
https://bbs.elecfans.com/jishu_2263076_1_1.html
[问答] 如何调试RK3568-ANDROID11-4G-EC20?
【下载】
https://download.csdn.net/download/seasonfangjing/86247556?utm_source=bbsseo
RK356X android11 移远EC20 modem支持
https://blog.csdn.net/weixin_38420901/article/details/129875533
移远EC20 WINDOWS下安装驱动及开机自动拨号上网
https://download.csdn.net/download/weixin_38420901/87635376
移远EC20 Windows驱动
https://download.csdn.net/download/guoruibin123/19886298
移远EC20 R2.0 全网通4G模块软硬件设计技术资料包(包括模块封装+软硬件设计文档+软件驱动).zip
https://download.csdn.net/download/xieyunfei1999/88332693
移远USB驱动V2.2.2 Quectel-LTE&5G-Windows-USB-Driver-V2.2.2 EC20最新驱动
https://blog.csdn.net/yjz_0314/article/details/134142847
Android11.0系统中适配EC20模块4G及GPS功能
https://download.csdn.net/download/yjz_0314/88490693?spm=1001.2101.3001.9500
Android11.0系统中适配EC20模块4G及GPS功能
https://download.csdn.net/download/seasonfangjing/88073682
RK3588S android13 ec20 modem移植
https://blog.csdn.net/xierong1/article/details/127091908
rk3399调试EC20 4G模块
还有 android 8.1 与5.1区别很大就是 系统权限
Selinux
./device/rockchip/common/sepolicy/rild.te
./system/sepolicy/vendor/rild.te
./system/sepolicy/public/rild.te
./system/sepolicy/prebuilts/api/26.0/public/rild.te
https://www.cnblogs.com/lialong1st/p/11266330.html
https://blog.csdn.net/weixin_30273931/article/details/101681600
RK3399 4G模块移远EC20移植调试
https://download.csdn.net/download/weixin_44498318/18300885
RK3399 安卓Q适配EC20 4G模块资料
https://blog.csdn.net/linux_qian/article/details/90715599/
rk3399添加EC25E/EC20...模组
搞来搞去搞了很久,差点放弃走人的时候,发现竟然是这点事。。。辛酸史如下:
android6.01-----kernel4.4.36-----编译环境ubuntu16.04
一、kernel driver
内核有4种驱动方式,usb serial、CDC ACM、Gobinet、QMI WWAN,本文选用的是usb serial和QMI WWAN两种驱动。
(4)打开dongle功能
/device/rockchip/common/BoardConfig.mk
BOARD_HAVE_DONGLE ?= true
(5)检查
logcat -b radio -v time //查看log
getprop init.svc.ril-daemon //检查ril守护进程Runing
cat init.rc | grep ril-daemon //检查ril-daemon服务是否生效
getenforce //检查SELinux是否开启,<setenforce 0>命令关闭
getprop gsm.version.ril-impl //检查ril版本,出现Quectel_Android_RIL_SR01A41V17,如未出现ril库没有添加上,或者检查phone进程
https://blog.csdn.net/weixin_43069863/article/details/126587254
rk3568 4g 模块调试-ec20(移远模块)
如果无法上网,也可以尝试修改上网状态的选择模式
--- a/frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -237,7 +237,7 @@ public interface RILConstants {
int PREFERRED_NETWORK_MODE = Optional.of(TelephonyProperties.default_network())
.filter(list -> !list.isEmpty())
.map(list -> list.get(0))
- .orElse(NETWORK_MODE_WCDMA_PREF);
+ .orElse(NETWORK_MODE_LTE_GSM_WCDMA);
int BAND_MODE_UNSPECIFIED = 0; //"unspecified" (selected by baseband automatically)
int BAND_MODE_EURO = 1; //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
https://blog.csdn.net/weixin_44498318/article/details/109289482
Android:记录一下RK3399 安卓Q适配EC20 4G模块(附log)
4.2 SELinux权限问题
添加权限:
SELinux权限问题解决方法 - CSDN
Selinux SeAndroid理解 - CSDN
Android : SELinux 简析&修改 - 博客园
默认关闭/开启权限:
ANDROID10 关闭SELINUX权限方法 - 灰信网
参考资料:
http://www.friendlyelec.com.cn/agent.asp
http://www.friendlyelec.com.cn/
https://download.friendlyelec.com/NanoPC-T4
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4/zh#.E4.B8.8B.E8.BD.BDAndroid10.E6.BA.90.E4.BB.A3.E7.A0.81
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.37562e8dcotDm6&id=570312633249&_u=7ju3ku004a
友善NanoPC-T4瑞芯微RK3399开发板ROS双摄4K播放开源AI智能安卓10
WiKi维基教程(固件介绍,使用说明,操作步骤等)
http://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4
系统固件下载
https://dl.friendlyelec.com/nanopct4
原理图(pdf格式)
http://wiki.friendlyelec.com/wiki/images/e/e0/NanoPC-T4-1902-Schematic.pdf
尺寸图(dxf格式)
http://wiki.friendlyelec.com/wiki/images/b/bc/NanoPC-T4_1802_Drawing%28dxf%29.zip
http://www.friendlyelec.com.cn/nanopi-m4.asp
NanoPi M4 | NanoPi M4V2
https://wiki.friendlyelec.com/wiki/index.php/NanoPi_M4/zh
15.3 编译Android10源代码
15.3.1 下载Android10源代码
有以下两种途径获取 Android10 的源代码,都需要联网:
使用网盘里的git repo压缩包
网盘下载地址: 点击进入
https://download.friendlyelec.com/NanoPiM4
https://pan.baidu.com/share/init?surl=oBLn9H31hILJKEPQXgrUog
提取码:yn6r
相关文章:
20240112让移远mini-PCIE接口的4G模块EC20在Firefly的AIO-3399J开发板的Android11下跑通【DTS部分】
20240112让移远mini-PCIE接口的4G模块EC20在Firefly的AIO-3399J开发板的Android11下跑通【DTS部分】 2024/1/12 16:20 https://blog.csdn.net/u010164190/article/details/79096345 [Android6.0][RK3399] PCIe 接口 4G模块 EC20 调试记录 https://blog.csdn.net/hnjztyx/artic…...
日志采集传输框架之 Flume,将监听端口数据发送至Kafka
1、简介 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传 输的系统。Flume 基于流式架构,主要有以下几个部分组成。 主要组件介绍: 1)、Flume Agent 是一个 JVM 进程…...
关于Vue前端接口对接的思考
关于Vue前端接口对接的思考 目录概述需求: 设计思路实现思路分析1.vue 组件分类和获取数值的方式2.http 通信方式 分类 如何对接3.vue 组件分类和赋值方式, 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your p…...
【设计模式之美】SOLID 原则之三:里式替换(LSP)跟多态有何区别?如何理解LSP中子类遵守父类的约定
文章目录 一. 如何理解“里式替换原则”?二. 哪些代码明显违背了 LSP?三. 回顾 一. 如何理解“里式替换原则”? 子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。 里氏替换原则…...
代码随想录第六十三天——被围绕的区域,太平洋大西洋水流问题,最大人工岛
leetcode 130. 被围绕的区域 题目链接:被围绕的区域 步骤一:深搜或者广搜将地图周边的’O’全部改成’A’ 步骤二:遍历地图,将’O’全部改成’X’,将’A’改回’O’ class Solution { private:int dir[4][2] {-1, 0…...
Docker 项目如何使用 Dockerfile 构建镜像?
1、Docker 和 Dockerfile 的重要性 1.1、Docker 简介:讲述 Docker 的起源、它是如何革新现代软件开发的,以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。 本文已收录于,我的…...
实践学习PaddleScience飞桨科学工具包
实践学习PaddleScience飞桨科学工具包 动手实践,在实践中学习!本项目可以在AIStudio平台一键运行!地址:https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错,再执行一次即可。若碰到莫名其妙的…...
Vue 中修改 Element 组件的 下拉菜单(Dropdown) 的样式
Vue 中修改 Element 组件的 下拉菜单(Dropdown) 的样式 今天在项目中碰到一个 UI 改造的需求,需要根据设计图把页面升级成 UI 设计师提供的设计图样式。 到最后页面改造完了,但是 UI 提供的下拉菜单样式全部是黑色半透明的,只能硬着头皮改了。…...
达梦数据库主备集群
1:服务器硬件需求 按实际业务需求,选择合适的服务器,准备 3 台服务器,一台主库服务器,一台备库服务器,一台监视器服务器,服务器参数建议如下: 硬件要求物理内存>16 GB交换区Swa…...
Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决
1、版本介绍: doris版本: 1.2.8Spark Connector for Apache Doris 版本: spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOTspark版本:spark-3.3.1 2、Spark Doris Connector Spark Doris Connector - Apache Doris 目…...
深入理解 go chan
go 里面,在实际程序运行的过程中,往往会有很多协程在执行,通过启动多个协程的方式,我们可以更高效地利用系统资源。 而不同协程之间往往需要进行通信,不同于以往多线程程序的那种通信方式,在 go 里面是通过…...
java+vue基于Spring Boot的渔船出海及海货统计系统
该渔船出海及海货统计系统采用B/S架构、前后端分离进行设计,并采用java语言以及springboot框架进行开发。该系统主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、渔船信息、渔船航班、海货价格、渔船海货、非法举报、渔船黑名单等功能。该系统操…...
Linux第25步_在虚拟机中备份“ST官方的TF-A源码”
TF-A是ARM公司提供的,ST公司通过修改它,做了一个自己的TF-A代码。因为在后期开发中,若硬件被改变了,我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了,我们需要将"S…...
统计学-R语言-4.1
文章目录 前言编写R函数图形的控制和布局par函数layout函数 练习 前言 安装完R软件之后就可以对其进行代码的编写了。 编写R函数 如果对数据分析有些特殊需要,已有的R包或函数不能满足,可以在R中编写自己的函数。函数的定义格式如下所示: …...
C++(1) —— 基础语法入门
目录 一、C初识 1.1 第一个C程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 二、数据类型 2.1 整型 2.2 sizeof 关键字 2.3 实型(浮点型) 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 三…...
构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的支持63个常见模块的PHP8.1.20的RPM包
本文适用:rhel8系列,或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期:2023年 因系统版本不同,构建部署应略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…...
Vue-插槽(Slots)
1. 介绍 在Vue.js中,插槽是一种强大的功能,它允许你创建可重用的模板,并在使用该模板的多个地方插入自定义内容。 插槽为你提供了一种方式,可以在父组件中定义一些“插槽”,然后在子组件中使用这些插槽,插…...
新火种AI|GPT-5前瞻!GPT-5将具备哪些新能力?
作者:小岩 编辑:彩云 Sam Altman在整个AI领域,乃至整个科技领域都被看作是极具影响力的存在,而2023年OpenAI无限反转的宫斗事件更是让Sam Altman刷足了存在感,他甚至被《时代》杂志评为“2023年度CEO”。 也正因此&…...
安防视频监控系统EasyCVR设备分组中在线/离线数量统计的开发与实现
安防视频监控EasyCVR系统具备较强的兼容性,它可以支持国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。EasyCVR平台可覆盖多类型的设备接入&am…...
spring cloud之集成sentinel
写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1:准备 1.1:理论 对于一个系统来说,最重要的就是高可用,那么如何实现高可用呢?你可能会说,集群部署不就可以了,但事实并…...
让车辆做到“耳听八方”,毫米波雷达芯片与系统设计
摘要: 毫米波雷达,是指工作在毫米波波段(一般为30~300GHz频域,波长1~10mm)探测的雷达。毫米波雷达体积小、质量轻、空间分辨率高,穿透“雾烟灰”的能力强,还具备全天候全天时工作的优势。在智能网联汽车体系中,毫米波雷达是系统感知层不可或缺的重要硬件,能让智能驾…...
Python如何实现数据驱动的接口自动化测试
大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取。下面话不多说了,来一起看看详细的介绍吧。 1、需求 某API,GET方法,token,mobile,email三个参数 token为必填项mobil…...
高级分布式系统-第15讲 分布式机器学习--联邦学习
高级分布式系统汇总:高级分布式系统目录汇总-CSDN博客 联邦学习 两种常见的架构:客户-服务器架构和对等网络架构 联邦学习在传统的分布式机器学习基础上的变化。 传统的分布式机器学习:在数据中心或计算集群中使用并行训练,因为…...
小程序基础学习(事件处理)
原理:组件内部设置点击事件,然后冒泡到页面捕获点击事件 在组件内部设置点击事件 处理点击事件,并告诉页面 页面捕获点击事件 页面处理点击事件 组件代码 <!--components/my-info/my-info.wxml--> <view class"title"…...
网络协议与攻击模拟_01winshark工具简介
一、TCP/IP协议簇 网络接口层(没有特定的协议) 物理层:PPPOE宽带拨号(应用场景:宽带拨号,运营商切网过来没有固定IP就需要拨号,家庭带宽一般都采用的是拨号方式)数据链路层网络层…...
【linux学习笔记】网络
目录 【linux学习笔记】网络检查、监测网络ping-向网络主机发送特殊数据包traceroute-跟踪网络数据包的传输路径netstat-检查网络设置及相关统计数据 通过网络传输文件ftp 【linux学习笔记】网络 检查、监测网络 ping-向网络主机发送特殊数据包 最基本的网络连接命令就是pin…...
JUC-线程中断机制和LockSupport
线程中断机制 概念 java提供了一种用于停止线程的协商机制-中断。称为中断标识协商机制。 常用API public void interrupt() 仅仅让线程的中断标志位设置为true。不进行其他操作。public boolean isInterrupted() 获取中断标志位的状态。public static boolean interrupted…...
哈希表与哈希算法(Python系列30)
在讲哈希表数据结构和哈希算法之前,我想先刨析一下数组和python中的列表 首先来讲一下数组,我想在这提出一个疑问: 为什么数组通过索引查询数据的时间复杂度为O(1),也就是不管数组有多大,算法的执行时间都是不变的。…...
『 C++ 』AVL树详解 ( 万字 )
🦈STL容器类型 在STL的容器中,分为几种容器: 序列式容器(Sequence Containers): 这些容器以线性顺序存储元素,保留了元素的插入顺序。 支持随机访问,因此可以使用索引或迭代器快速访问任何位置的元素。 主要的序列式…...
Python下载安装pip方法与步骤_pip国内镜像
前提:下载安装好 python 打开命令提示符winR->cmd(不需要进入 python,直接在终端输入指令执行即可,也可以再 pycharm 终端执行命令)加入要安装ipython,需要执行以下命令: pip install **<…...
pycharm网站开发实例/百度扫一扫识别图片
学习 Python 之 Pygame 开发魂斗罗(一)Pygame回忆Pygame1. 使用pygame创建窗口2. 设置窗口背景颜色3. 获取窗口中的事件4. 在窗口中展示图片(1). pygame中的直角坐标系(2). 展示图片(3). 给部分区域设置颜色5. 在窗口中显示文字6. 播放音乐7. 图片翻转与…...
做平面免费接单网站/品牌网络营销案例
map:数据的插入 在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法:第一种:用insert函数插入pair数据map<int, string> mapStudent;mapStudent.insert(pair<int, string>(1,“student_one”)); 第二种&…...
淘宝客网站制作/百度一下 官方网
NumPy算术运算 NumPy 数组的“加减乘除”算术运算,分别对应 add()、subtract()、multiple() 以及 divide() 函数。 注意:做算术运算时,输入数组必须具有相同的形状,或者符合数组的广播规则,才可以执行运算。 下面看一…...
wordpress htaccess 404/识万物扫一扫
? EDGE的后续发展表明无线网卡的知识应该得到普及和常识?两台计算机如何共享Internet: 只有一个宽带接口并且不想购买无线路由器,使用桥接功能2008年7月30日类别: 无线Internet信息评论: 3浏览: 2601我相信大多数家庭用户都会同时拥有笔记本电…...
php如何自学做网站/新手怎么入行sem
01先来谈谈企业搭建大数据分析平台的背景1、搭建大数据平台离不开BI。在大数据之前,BI就已经存在很久了,简单把大数据等同于BI,明显是不恰当的。但两者又是紧密关联的,相辅相成的。BI是达成业务管理的应用工具,没有BI&…...
wordpress插件搬家/广告代发平台
本文实例讲述了JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法。分享给大家供大家参考,具体如下:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树。通过可编程的对象…...