20231222给NanoPC-T4(RK3399)开发板的适配原厂Android10的挖掘机方案并跑通AP6398SV

20231222给NanoPC-T4(RK3399)开发板的适配原厂Android10的挖掘机方案并跑通AP6398SV


1、简略步骤:
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ cat Rockchip_Android10.0_SDK_Release.tar.gz0* > Rockchip_Android10.0_SDK_Release.tar.gz
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ tar zxvf Rockchip_Android10.0_SDK_Release.tar.gz
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ .repo/repo/repo sync -l
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ cd u-boot
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10/u-boot$ ./make.sh rk3399
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10/u-boot$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ cd kernel/
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10/kernel$ make ARCH=arm64 rockchip_defconfig android-10.config rk3399.config -j36
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10/kernel$ ll
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android10/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10/kernel$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ source build/envsetup.sh 
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ lunch
     22. rk3399_Android10-userdebug
Which would you like? [aosp_arm-eng] 22
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ make -j36
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ ./mkimage.sh
rootroot@rootroot-X99-Turbo:~/3TB/3399-android10$ ./build.sh -u


AF6554D06A7C09C677BD3DB44A85A4AA  Rockchip_Android10.0_SDK_Release.tar.gz00
6670B93020F599C2E67E7954368B0A5D  Rockchip_Android10.0_SDK_Release.tar.gz01
8EA0D6462402C53554B1E225B3E387A3  Rockchip_Android10.0_SDK_Release.tar.gz02
3C67DC7007F9E70A85F69370D7931D5E  Rockchip_Android10.0_SDK_Release.tar.gz03
C901FB21C1A4417FAB187BB4ACCB569D  Rockchip_Android10.0_SDK_Release.tar.gz04
BE04E2A442636E6983B188C681A52F9F  Rockchip_Android10.0_SDK_Release.tar.gz05
D972C7CB0BF6C527EA592F34FD3396A3  Rockchip_Android10.0_SDK_Release.tar.gz06
A6279BE1EBD29C67C83288C4C1E5302E  Rockchip_Android10.0_SDK_Release.tar.gz07
D23FDBA115E14EC2F9E5D7D0821FE000  Rockchip_Android10.0_SDK_Release.tar.gz08
B883B9689636F3ED97EE1CCC5DFB634A  Rockchip_Android10.0_SDK_Release.tar.gz09


2、刷机之后,用鼠标打开WIFI开关之后,发现缺少AP6275S的固件:nvram_ap6275s.txt
【奇怪呀,开发板上的WIFI/BT模块上有激光刻印的字:AP6398SV,难道它俩是一个型号吗?】
console:/ # 
console:/ # cd /vendor/lib/modules
console:/vendor/lib/modules # 
console:/vendor/lib/modules # 
console:/vendor/lib/modules # ls -l
total 54940
-rw-r--r-- 1 root root  3448960 2023-12-20 09:49 8723cs.ko
-rw-r--r-- 1 root root  5265944 2023-12-20 09:49 8821cs.ko
-rw-r--r-- 1 root root  6720696 2023-12-20 09:49 8822bs.ko
-rw-r--r-- 1 root root 23507712 2023-12-20 09:49 bcmdhd.ko
-rw-r--r-- 1 root root 18025400 2023-12-20 09:49 mali_kbase.ko
-rw-r--r-- 1 root root      569 2023-12-20 09:49 modules.alias
-rw-r--r-- 1 root root      159 2023-12-20 09:49 modules.dep
console:/vendor/lib/modules # 
console:/vendor/lib/modules # ifconfig\
> ^C
130|console:/vendor/lib/modules # ifconfig                                     
eth0      Link encap:Ethernet  HWaddr 6e:a7:de:18:73:b4  Driver rk_gmac-dwmac
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:0 TX bytes:0 
          Interrupt:27 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0 
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:0 TX bytes:0 

console:/vendor/lib/modules # [  171.997853] dhd_module_init: in Dongle Host Driver, version 100.10.545.9 (r826445-20200316-8)
[  171.997895] ======== dhd_wlan_init_plat_data ========
[  171.997901] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter
[  171.997950] dhd_wlan_init_gpio: WL_HOST_WAKE=-1, oob_irq=89, oob_irq_flags=0x414
[  171.997955] dhd_wlan_init_gpio: WL_REG_ON=-1
[  171.997960] dhd_wifi_platform_load: Enter
[  171.997966] Power-up adapter 'DHD generic adapter'
[  171.999709] wifi_platform_set_power = 1, delay: 200 msec
[  171.999805] ======== PULL WL_REG_ON(-1) HIGH! ========
[  171.999823] [WLAN_RFKILL]: rockchip_wifi_power: 1
[  171.999832] [WLAN_RFKILL]: wifi turn on power. -1
[  172.310158] wifi_platform_bus_enumerate device present 1
[  172.310231] ======== Card detection to detect SDIO card! ========
[  172.310256] mmc0:mmc host rescan start!
[  172.330108] bcmsdh_register: register client driver
[  172.330447] bcmsdh_sdmmc_probe: Enter num=1
[  172.331219] bcmsdh_sdmmc_probe: Enter num=2
[  172.331260] bus num (host idx)=0, slot num (rca)=1
[  172.331277] found adapter info 'DHD generic adapter'
[  172.331395] sdioh_attach: set sd_f2_blocksize 256
[  172.331500] sdioh_attach: sd clock rate = 0
[  172.332047] dhdsdio_probe : no mutex held. set lock
[  172.332259] F1 signature read @0x18000000=0x1042aae8
[  172.341241] F1 signature OK, socitype:0x1 chip:0xaae8 rev:0x2 pkg:0x4
[  172.342240] DHD: dongle ram size is set to 1310720(orig 1310720) at 0x170000
[  172.342366] [dhd] dhd_conf_set_chiprev : chip=0xaae8, chiprev=2
[  172.354430] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354521] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354531] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354542] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354552] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354563] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354577] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.354613] [dhd] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[  172.355589] dhd_log_dump_init: kernel log buf size = 512KB; logdump_prsrv_tailsize = 80KB; limit prsrv tail size to = 76KB
[  172.357046] dhd_attach(): thread:dhd_watchdog_thread:7ca started
[  172.357167] dhd_attach(): thread:dhd_dpc:7cb started
[  172.357313] dhd_attach(): thread:dhd_rxf:7cc started
[  172.357332] dhd_deferred_work_init: work queue initialized
[  172.357346] dhd_tcpack_suppress_set: TCP ACK Suppress mode 0 -> mode 2
[  172.357423] get_mem_val_from_file: File [/data/misc/wifi/.memdump.info] doesn't exist
[  172.357447] dhd_get_memdump_info: MEMDUMP ENABLED = 3
[  172.357476] sdioh_cis_read: func_cis_ptr[0]=0x1070
[  172.369706] dhdsdio_probe_init: making DHD_BUS_DOWN
[  172.369992] Dongle Host Driver, version 100.10.545.9 (r826445-20200316-8)
[  172.383245] Register interface [wlan0]  MAC: 08:fb:ea:ea:a3:da
[  172.383245] 
[  172.383448] dhd_dbg_detach_pkt_monitor, 2100
[  172.383464] dhd_bus_devreset: == Power OFF ==
[  172.384594] dhd_bus_stop: making DHD_BUS_DOWN
[  172.384738] bcmsdh_oob_intr_unregister: Enter
[  172.384781] bcmsdh_oob_intr_unregister: irq is not registered
[  172.384806] dhd_bus_devreset: making dhdpub up FALSE
[  172.384829] dhd_txglom_enable: enable 0
[  172.384904] dhd_bus_devreset: making DHD_BUS_DOWN
[  172.384926] dhd_bus_devreset:  WLAN OFF DONE
[  172.385125] wifi_platform_set_power = 0, delay: 0 msec
[  172.385174] ======== PULL WL_REG_ON(-1) LOW! ========
[  172.385191] [WLAN_RFKILL]: rockchip_wifi_power: 0
[  172.385221] [WLAN_RFKILL]: wifi shut off power.
[  172.385258] dhdsdio_probe : the lock is released.
[  172.386321] dhd_module_init: Exit err=0
[  172.388483] init: processing action (wlan.driver.status=ok) from (/vendor/etc/init/hw/init.connectivity.rc:51)
[  172.397500] init: processing action (wlan.driver.status=ok) from (/vendor/etc/init/hw/init.connectivity.rc:51)
[  172.414944] init: Received control message 'interface_start' for 'android.hardware.wifi.supplicant@1.0::ISupplicant/default' from pid: 154 (/system/bin/hwservicemanager)
[  172.415730] init: starting service 'wpa_supplicant'...
[  172.420118] init: Created socket '/dev/socket/wpa_wlan0', mode 660, user 1010, group 1010
[  172.533451] capability: warning: `wpa_supplicant' uses 32-bit capabilities (legacy support in use)
[  172.619585] init: processing action (wlan.driver.status=ok) from (/vendor/etc/init/hw/init.connectivity.rc:51)
[  172.620650] dhd_open: Enter wlan0
[  172.620676] dhd_open : no mutex held. set lock
[  172.620687] 
[  172.620687] Dongle Host Driver, version 100.10.545.9 (r826445-20200316-8)
[  172.620707] [dhd-wlan0] wl_android_wifi_on : in g_wifi_on=0
[  172.620716] wifi_platform_set_power = 1, delay: 200 msec
[  172.620726] ======== PULL WL_REG_ON(-1) HIGH! ========
[  172.620734] [WLAN_RFKILL]: rockchip_wifi_power: 1
[  172.620741] [WLAN_RFKILL]: wifi turn on power. -1
[  172.925945] sdio_reset_comm():
[  172.941334] mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[  172.958564] mmc_host mmc0: Bus speed (slot 0) = 100000Hz (slot req 100000Hz, actual 100000HZ div = 0)
[  173.025038] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)
[  173.031739] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[  173.038819] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[  173.050561] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)
[  173.067462] mmc0: queuing unknown CIS tuple 0x8e (9 bytes)
[  173.410050] mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 100000000Hz, actual 100000000HZ div = 0)
[  173.606337] dwmmc_rockchip fe310000.dwmmc: Successfully tuned phase to 110
[  173.606435] sdioh_start: set sd_f2_blocksize 256
[  173.606677] 
[  173.606677] 
[  173.606677] dhd_bus_devreset: == Power ON ==
[  173.606779] F1 signature read @0x18000000=0x1042aae8
[  173.610545] F1 signature OK, socitype:0x1 chip:0xaae8 rev:0x2 pkg:0x4
[  173.611234] DHD: dongle ram size is set to 1310720(orig 1310720) at 0x170000
[  173.611314] dhd_bus_devreset: making DHD_BUS_DOWN
[  173.611360] dhdsdio_probe_init: making DHD_BUS_DOWN
[  173.611656] [dhd] dhd_conf_read_config : Ignore config file /vendor/etc/firmware/config.txt
[  173.611695] [dhd] dhd_conf_set_path_params : Final fw_path=/vendor/etc/firmware/fw_bcm43752a2_ag.bin
[  173.611717] [dhd] dhd_conf_set_path_params : Final nv_path=/vendor/etc/firmware/nvram_ap6275s.txt
[  173.611737] [dhd] dhd_conf_set_path_params : Final clm_path=/vendor/etc/firmware/clm_bcm43752a2_ag.blob
[  173.611757] [dhd] dhd_conf_set_path_params : Final conf_path=/vendor/etc/firmware/config.txt
[  173.612178] dhdsdio_download_code_file: Open firmware file failed /vendor/etc/firmware/fw_bcm43752a2_ag.bin
[  173.612205] _dhdsdio_download_firmware: dongle image file download failed

[  173.612251] dhd_bus_devreset Failed to download binary to the dongle
[  173.612284] dhd_net_bus_devreset: dhd_bus_devreset: -35
[  173.612314] dhd_dbg_detach_pkt_monitor, 2100
[  173.612342] dhd_net_bus_devreset: dhd_bus_devreset: -35
[  173.612387] wifi_platform_set_power = 0, delay: 0 msec
[  173.612415] ======== PULL WL_REG_ON(-1) LOW! ========
[  173.612437] [WLAN_RFKILL]: rockchip_wifi_power: 0
[  173.612472] [WLAN_RFKILL]: wifi shut off power.
[  173.612493] [dhd-wlan0] wl_android_wifi_on : Failed
[  173.612515] dhd_open : wl_android_wifi_on failed (-35)
[  173.612540] dhd_stop: Enter wlan0
[  173.612565] [dhd-wlan0] wl_android_wifi_off : in g_wifi_on=0, on_failure=1
[  173.612585] dhd_dbg_detach_pkt_monitor, 2100
[  173.612600] dhd_net_bus_devreset: dhd_bus_devreset: -35
[  173.612694] sdioh_disable_func_intr: error for read SDIO_CCCR_IENx : 0xffffff92
[  173.612723] wifi_platform_set_power = 0, delay: 0 msec
[  173.612752] ======== PULL WL_REG_ON(-1) LOW! ========
[  173.612772] [WLAN_RFKILL]: rockchip_wifi_power: 0
[  173.612798] [WLAN_RFKILL]: wifi shut off power.
[  173.612819] [dhd-wlan0] wl_android_wifi_off : out
[  173.624957] dhd_stop: Exit wlan0
[  173.625254] dhd_open : the lock is released.
[  173.625318] dhd_open: Exit wlan0 ret=-1
[  173.625341] Failed to open primary dev ret -1

console:/vendor/lib/modules # 


3、将所缺少的固件通过adb push推进去了!
【如果拿不到合适的,可以使用Firefly的AIO-3568J的开发板中的固件!^_】

Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>adb remount
* daemon not running; starting now at tcp:5037
* daemon started successfully
Not running as root. Try "adb root" first.
remount failed

C:\Users\Administrator>adb root
restarting adbd as root

C:\Users\Administrator>
C:\Users\Administrator>adb remount
W DM_DEV_STATUS failed for scratch: No such device or address
E [liblp]No device named scratch
[liblp]Partition scratch will resize from 0 bytes to 905875456 bytes
[liblp]Updated logical partition table at slot 0 on device /dev/block/by-name/super
[libfs_mgr]Created logical partition scratch on device /dev/block/dm-4
[libfs_mgr]__mount(source=/dev/block/dm-4,target=/mnt/scratch,type=f2fs)=0: Success
Using overlayfs for /system
Using overlayfs for /vendor
Using overlayfs for /product
[libfs_mgr]__mount(source=overlay,target=/system,type=overlay,upperdir=/mnt/scratch/overlay/system/upper)=0
[libfs_mgr]__mount(source=overlay,target=/vendor,type=overlay,upperdir=/mnt/scratch/overlay/vendor/upper)=0
[libfs_mgr]__mount(source=overlay,target=/product,type=overlay,upperdir=/mnt/scratch/overlay/product/upper)=0
remount succeeded

C:\Users\Administrator>


Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware

C:\Users\Administrator>h:

H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>
H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware
H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>adb push fw_bcm43752a2_ag.bin /vendor/etc/firmware/
fw_bcm43752a2_ag.bin: 1 file pushed, 0 skipped. 12.3 MB/s (743607 bytes in 0.058s)

H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>adb push fw_bcm43752a2_ag_apsta.bin /vendor/etc/firmware/
fw_bcm43752a2_ag_apsta.bin: 1 file pushed, 0 skipped. 10.2 MB/s (743607 bytes in 0.070s)

H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>adb push nvram_ap6275s.txt /vendor/etc/firmware/
nvram_ap6275s.txt: 1 file pushed, 0 skipped. 0.2 MB/s (8709 bytes in 0.055s)

H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>adb push clm_bcm43752a2_ag.blob /vendor/etc/firmware/
clm_bcm43752a2_ag.blob: 1 file pushed, 0 skipped. 0.5 MB/s (28865 bytes in 0.056s)

H:\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s_20230212_1059\802确认AP6275S+3个USB接口-evb2_3usb+ap6275s_Image-rk3568_s\LOG\12e确认ap6275s-3usb_20230211_2050\vendor\rockchip\common\wifi\firmware>


4、现在就可以打开WIFI了!
2|console:/sdcard/DCIM # cd /
console:/ # 
console:/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 6e:a7:de:18:73:b4  Driver rk_gmac-dwmac
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:0 TX bytes:0 
          Interrupt:27 

wlan0     Link encap:Ethernet  HWaddr 08:fb:ea:ea:a3:da  Driver bcmsdh_sdmmc
          inet addr:192.168.186.224  Bcast:192.168.186.255  Mask:255.255.255.0 
          inet6 addr: fe80::9e70:9030:3741:b73b/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2130 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:1315 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:2404115 TX bytes:111182 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0 
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:240 TX bytes:240 

console:/ # 


5、也可以/但是建议使用WIFI6的驱动程序:【NanoPC-T4(RK3399)开发板默认使用这个驱动程序】
Z:\3TB\13rk3399-android-10\kernel\arch\arm64\configs\nanopi4_android_defconfig
Z:\3TB\Rockchip_Android10.0_SDK_Release\kernel\arch\arm64\configs\rockchip_defconfig

CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
CONFIG_AP6XXX=m

修改为:
CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
#CONFIG_AP6XXX=m
CONFIG_AP6XXX_WIFI6=m


如果不修改这里,驱动模块会被默认编译成为bcmdhd_wifi6.ko
Z:\3TB\Rockchip_Android10.0_SDK_Release\kernel\drivers\net\wireless\rockchip_wlan\rkwifi\bcmdhd_wifi6\Makefile
# SPDX-License-Identifier: GPL-2.0
# bcmdhd

#MODULE_NAME := bcmdhd_wifi6
MODULE_NAME := bcmdhd

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

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

相关文章

python pip安装依赖的常用软件源

目录 引言 一、什么是镜像源?​​​​​​​ 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中,我们经常需要下载和更新各种软件包和库文件。然而,由于网络环境的限制或者服务器的负载&#…

Vue3中说说Tree shaking特性?举例说明一下?

提起Vue3里面的Tree shaking时候,需要提到它是通过构建工具和模块导入方式实现的。然后我们再说说Tree shaking是什么和作用 一、通过构建工具和模块导入方式实现 1.配置构建工具: 在 Vue 3 项目中,通常使用 webpack 进行构建。为了启用 T…

百度CTO王海峰:文心一言用户规模破1亿

▶ 写在前面▶ 飞桨开发者已达1070万▶ 文心一言用户规模破亿,日提问量快速增长 ▶ 写在前面 “文心一言用户规模突破 1 亿。”12 月 28日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰在第十届 WAVE SUMMIT 深度学习开发者大会上宣布…

数据结构--查找

目录 1. 查找的基本概念 2. 线性表的查找 3. 树表的查找 3.1 二叉排序树 3.1.1 定义: 3.1.2 存储结构: 3.1.3 二叉排序树的查找 3.1.4 二叉排序树的插入 3.1.5 二叉排序树删除 3.2 平衡二叉树(AVL 3.2.1 为什么要有平衡二叉树 3.2.2 定义 3.3 B-树 3.3.1…

【《设计模式之美》】如何取舍继承与组合

文章目录 什么情况下不推荐使用继承?组合相比继承有哪些优势?使用组合、继承的时机 本文主要想了解: 为什么组合优于继承,多用组合少用继承。如何使用组合来替代继承哪些情况适用继承、组合。有哪些设计模式使用到了继承、组合。 …

【Spring Security】快速入门之案例实操

目录 一、简介 1、什么是安全框架 2、主流的安全框架 3、为什么使用Spring Security 二、引言 1、什么是Spring Security 2、Spring Security工作原理 3、特点 三、快速入门 1、引入依赖 2、配置 3、启动测试 4、配置自定义账号密码 四、Web安全配置类 1.HttpSe…

c++输入输出流和文件操作总结

目录 一、c的输入输出流——> 指的是字节流的数据传送;具有类型安全和可扩展性。 二、流的出入路径 三、c流类库 ①概览 ②标准输出流: ③标准输入流: 四、文件操作(ascii文件和二进制文件) 五、字符串流(或称…

企业数据可视化-亿发数据化管理平台提供商,实现一站式数字化运营

近些年来,国内企业数据化管理升级进程持续加速,以物联网建设、人工智能、大数据和5G网络等新技术的发展,推动了数字经济的蓬勃发展,成为维持经济持续稳定增长的重要引擎。如今许多国内中小型企业纷纷摒弃传统管理模式,…

Json和Xml

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第21章《Json和Xml》 二、Xml的介绍 Xml的含义&#xff1a; 可标记性语言&#xff0c;它将数据以一种特别简单文本格式储存。让所有人和几乎所有的计算机都能理解。 XML文件示例&#xff1a; <?xml version"1.…

AGV智能搬运机器人-替代人工工位让物流行业降本增效

在当今快速发展的世界中&#xff0c;物流业面临着巨大的挑战&#xff0c;包括提高效率、降低成本和优化工作流程。为了应对这些挑战&#xff0c;一种新型的自动化设备——智能搬运机器人正在崭露头角。本文将通过一个具体的案例来展示富唯智能转运机器人在实际应用中的价值。 案…

Flask登陆后登陆状态及密码的修改和处理

web/templates/common 是统一布局 登录成功 后flask框架服务器默认由login.html进入仪表盘页面index.html(/),该页面的设置在 (web/controllers/user/index.py)&#xff0c;如果想在 该仪表盘页面 将 用户信息 展示出来&#xff0c;就得想办法先获取到 当前用户的 登陆状态。…

【项目】玩具租赁博客测试报告

目录 一、项目背景 二、项目功能 三、功能测试 一、项目背景 玩具租赁系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。前端主要有十五个页面构成&#xff1a;用户注册、管理员注册、登录页、用户和管理…

1.倒排索引 2.逻辑斯提回归算法

1.倒排索引 https://help.aliyun.com/zh/open-search/retrieval-engine-edition/introduction-to-inverted-indexes 倒排索引&#xff08;Inverted Index&#xff09;是一种数据结构&#xff0c;用于快速查找包含某个特定词或词语的文档。它主要用于全文搜索引擎等应用&#…

Flask 与微信小程序对接

Flask 与微信小程序的对接 在 web/controllers/api中增建py文件&#xff0c;主要是给微信小程序使用的。 web/controllers/init.py # -*- coding: utf-8 -*- from flask import Blueprint route_api Blueprint( api_page,__name__ )route_api.route("/") def ind…

移动端Vant中的Calendar日历增加显示农历(节日、节气)功能

核心&#xff1a; 使用 js-calendar-converter 库实现 npm地址&#xff1a;js-calendar-converter 内部使用原生calendar.js&#xff0c; 中国农历&#xff08;阴阳历&#xff09;和西元阳历即公历互转JavaScript库&#xff0c;具体实现感兴趣的可自行查看其实现源码。 原日…

ElementUI的Table组件行合并上手指南

ElementUI的Table组件行合并 &#xff0c;示例用官网vue3版的文档 <el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%; margin-top: 20px"><el-table-column prop"id" label"ID&qu…

【轻松入门】OpenCV4.8 + QT5.x开发环境搭建

引言 大家好&#xff0c;今天给大家分享一下最新版本OpenCV4.8 QT5 如何一起配置&#xff0c;完成环境搭建的。 下载OpenCV4.8并解压缩 软件版本支持 CMake3.13 或者以上版本 https://cmake.org/ VS2017专业版或者以上版本 QT5.15.2 OpenCV4.8源码包 https://github.com/op…

英语学习软件欧路词典 Eudic mac特点说明

欧路词典 Eudic mac是一款英语学习工具&#xff0c;它包含了丰富的英语词汇、短语和例句&#xff0c;并提供了发音、例句朗读、单词笔记等功能。 欧路词典 Eudic mac软件特点 多语种支持&#xff1a;欧路词典支持多种语言&#xff0c;包括英语、中文、日语、法语等等&#xff…

Havenask 分布式索引构建服务 --Build Service

Havenask 是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎&#xff0c;深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了 Havenask 分布式索引构建服务——Build Service&#xff0c;主打稳定、快速、易管理&#xff0c;是在线系…

第27关 在K8s集群上使用Helm3部署最新版本v2.10.0的私有镜像仓库Harbor

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 在前面的几十关里面&#xff0c;博哥在k8s上部署服务一直都是用的docker hub上的公有镜像&#xff0c;对于企业服务来说&#xff0c;有些我们是不想把服务镜像放在公网上面的&#xff1b; 同时…