3399驗(yàn)證情況記錄

設(shè)備樹(shù)處理

tf卡上拿到設(shè)備樹(shù)dtb羊异,然后反編譯出來(lái)設(shè)備樹(shù)dts:

linux/scripts/dtc/dtc  -I dtb -O dts rk3399-rock-pi-4c.dtb > rk3399-rock-pi-4c.dts

內(nèi)核編譯

sudo apt-get install libncurses-dev flex bison libssl-dev git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz ${local_dir}
export ARCH=arm64
export CROSS_COMPILE=${local_dir}/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
make defconfig
make -j6

內(nèi)核/設(shè)備樹(shù)替換

內(nèi)核

替換${ROOT_OF_TF}/boot/Image指向的內(nèi)核鏡像事秀。

設(shè)備樹(shù)

可以修改armbinEnv.txt中的fdtfile=rockchip/rk3399-rock-pi-4c.dtb彤断。

PS:uboot這塊沒(méi)有細(xì)看,先沿用原來(lái)的易迹,重心放在內(nèi)核上宰衙。

開(kāi)機(jī)

此時(shí)可以進(jìn)入系統(tǒng)

Unknown command 'kaslrseed' - try 'help'
Moving Image from 0x2080000 to 0x2200000, end=40f0000
## Loading init Ramdisk from Legacy Image at 06000000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
   Data Size:    22787598 Bytes = 21.7 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 01f00000
   Booting using the fdt blob at 0x1f00000
   Loading Ramdisk to f0950000, end f1f0b60e ... OK
   Loading Device Tree to 00000000f08d5000, end 00000000f094ffff ... OK

Starting kernel ...

efi_free_pool: illegal free 0x00000000f0f0d040
efi_free_pool: illegal free 0x00000000f0f0a040
[    7.265273] systemd[1]: Failed to start Armbian ZRAM config.

Armbian 22.11.1 Jammy ttyS2 

rockpi-4c login: 
rockpi-4c login: 
rockpi-4c login: 
rockpi-4c login: root
Password: 
Last login: Wed Nov 30 20:21:30 UTC 2022 on ttyS2

有線網(wǎng)卡

此時(shí)沒(méi)有網(wǎng)卡,原因就是沒(méi)驅(qū)動(dòng)(猜的)睹欲。
看設(shè)備樹(shù)供炼,找網(wǎng)卡

259     ethernet@fe300000 {                                                                                                                                                                                          
 260         compatible = "rockchip,rk3399-gmac";
 261         reg = <0x00 0xfe300000 0x00 0x10000>;
 262         interrupts = <0x00 0x0c 0x04 0x00>;
 263         interrupt-names = "macirq";
 264         clocks = <0x08 0x69 0x08 0x67 0x08 0x68 0x08 0x66 0x08 0x6a 0x08 0xd5 0x08 0x166>;
 265         clock-names = "stmmaceth\0mac_clk_rx\0mac_clk_tx\0clk_mac_ref\0clk_mac_refout\0aclk_mac\0pclk_mac";
 266         power-domains = <0x1c 0x16>;
 267         resets = <0x08 0x89>;
 268         reset-names = "stmmaceth";
 269         rockchip,grf = <0x1d>;
 270         snps,txpbl = <0x04>;
 271         status = "okay";
 272         assigned-clocks = <0x08 0xa6>;
 273         assigned-clock-parents = <0x1e>;
 274         clock_in_out = "input";
 275         phy-supply = <0x1f>;
 276         phy-mode = "rgmii";
 277         pinctrl-names = "default";
 278         pinctrl-0 = <0x20>;
 279         snps,reset-gpio = <0x21 0x0f 0x01>;
 280         snps,reset-active-low;
 281         snps,reset-delays-us = <0x00 0x2710 0xc350>;
 282         tx_delay = <0x28>;
 283         rx_delay = <0x11>;
 284         phandle = <0xcc>;
 285     };

根據(jù)網(wǎng)卡的兼容信息找驅(qū)動(dòng)

grep "rk3399-gmac" driver -rn

匹配到二進(jìn)制文件 ./ethernet/stmicro/stmmac/dwmac-rk.ko
匹配到二進(jìn)制文件 ./ethernet/stmicro/stmmac/dwmac-rk.o
匹配到二進(jìn)制文件 ./ethernet/stmicro/stmmac/dwmac-rk.mod.o
./ethernet/stmicro/stmmac/dwmac-rk.mod.c:44:MODULE_ALIAS("of:N*T*Crockchip,rk3399-gmac");
./ethernet/stmicro/stmmac/dwmac-rk.mod.c:45:MODULE_ALIAS("of:N*T*Crockchip,rk3399-gmacC*");
./ethernet/stmicro/stmmac/dwmac-rk.c:1483:  { .compatible = "rockchip,rk3399-gmac", .data = &rk3399_ops },

然后再找Makefile

obj-$(CONFIG_DWMAC_ROCKCHIP)    += dwmac-rk.o

得到內(nèi)核配置項(xiàng) CONFIG_DWMAC_ROCKCHIP
進(jìn)行 menuconfig窘疮,發(fā)現(xiàn)這個(gè)配置是M袋哼,改成*的時(shí)候提示有依賴就是M,順著提示全部改為*闸衫,然后make -j8得到kernel image(boot/arch/arm64/boot/Image)涛贯,拷貝到TF上,啟動(dòng)系統(tǒng)蔚出。

root@rockpi-4c:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 62:65:5b:e8:57:6f  txqueuelen 1000  (Ethernet)
        RX packets 643  bytes 44267 (44.2 KB)
        RX errors 0  dropped 55  overruns 0  frame 0
        TX packets 14  bytes 4606 (4.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 31  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@rockpi-4c:~# ifconfig eth0 172.29.157.6 netmask 255.255.254.0
root@rockpi-4c:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.29.157.6  netmask 255.255.254.0  broadcast 172.29.157.255
        ether 62:65:5b:e8:57:6f  txqueuelen 1000  (Ethernet)
        RX packets 1335  bytes 89014 (89.0 KB)
        RX errors 0  dropped 128  overruns 0  frame 0
        TX packets 20  bytes 6580 (6.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 31  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@rockpi-4c:~# ifconfig eth0 172.29.157.7 netmask 255.255.254.0                                                                                                                                                    
root@rockpi-4c:~# ping 172.29.157.6
PING 172.29.157.6 (172.29.157.6) 56(84) bytes of data.
64 bytes from 172.29.157.6: icmp_seq=1 ttl=64 time=1.18 ms
64 bytes from 172.29.157.6: icmp_seq=2 ttl=64 time=0.739 ms
64 bytes from 172.29.157.6: icmp_seq=3 ttl=64 time=0.778 ms
64 bytes from 172.29.157.6: icmp_seq=4 ttl=64 time=0.596 ms

網(wǎng)卡驅(qū)動(dòng)起來(lái)了弟翘。

PS:后續(xù)流程差不多,這一步記錄詳細(xì)點(diǎn)身冬。

wifi

目前來(lái)看衅胀,wifi設(shè)備已經(jīng)被初始化岔乔,并且嘗試了與驅(qū)動(dòng)進(jìn)行匹配酥筝;驅(qū)動(dòng)在匹配時(shí)出現(xiàn)了問(wèn)題 —— 目前看起來(lái)像是固件加載出現(xiàn)問(wèn)題。

dmesg信息比對(duì)

5.15內(nèi)核 wifi正常啟動(dòng):
  1 [   10.729431] brcmfmac: F1 signature read @0x18000000=0x15294345                                      
  2 [   10.739167] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9      
  3 [   10.740580] usbcore: registered new interface driver brcmfmac
  4 [   10.762214] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.radxa,rockpi4c.bin failed with error -2
  5 [   10.790987] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.radxa,rockpi4c.txt failed with error -2
  6 [   10.905414] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9                                                                                                                 
  7 [   10.915353] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/9 wl0: Jun 16 2017 12:38:26 version 7.45.96.2 (66c4e21@sh-git) (r) FWID 01-1813af84

內(nèi)核5.15信息
 14 [    2.034984] usbcore: registered new interface driver brcmfmac
 15 [    2.568174] brcmfmac: F1 signature read @0x18000000=0x15294345
 16 [    2.573287] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
 17 [    2.573608] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.bin failed with error -2
 18 [    2.573617] brcmfmac mmc0:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43456-sdio.bin
 19 [    5.583245] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

比較發(fā)現(xiàn)雏门,5.15內(nèi)核有固件加載成功的信息Firmware: BCM4345/9 wl0: Jun 16 2017 12:38:26 version 7.45.96.2 (66c4e21@sh-git) (r) FWID 01-1813af84嘿歌。

打開(kāi)調(diào)試信息

486 static int __init brcmfmac_module_init(void)                                                        
  487 {
  488     int err;
  489 
  490     pr_debug("******** fucking life ***************");                                              
  491     pr_debug("**fucking life: brcmf_msg_level is 0x%x **", brcmf_msg_level);                        
  492     pr_debug("**fucking life: change brcmf_msg_level **");                                          
  493 
  494     brcmf_msg_level |= BRCMF_TRACE_VAL;
  495     brcmf_msg_level |= BRCMF_INFO_VAL;                                                              
  496     brcmf_msg_level |= BRCMF_DATA_VAL;
  497     brcmf_msg_level |= BRCMF_CTL_VAL;
  498     brcmf_msg_level |= BRCMF_TIMER_VAL;                                                             
  499     brcmf_msg_level |= BRCMF_HDRS_VAL;                                                              
  500     brcmf_msg_level |= BRCMF_BYTES_VAL;                                                             
  501     brcmf_msg_level |= BRCMF_INTR_VAL;                                                              
  502     brcmf_msg_level |= BRCMF_GLOM_VAL;                                                              
  503     brcmf_msg_level |= BRCMF_EVENT_VAL;
  504     brcmf_msg_level |= BRCMF_BTA_VAL;                                                               
  505     brcmf_msg_level |= BRCMF_FIL_VAL;
  506     brcmf_msg_level |= BRCMF_USB_VAL;
  507     brcmf_msg_level |= BRCMF_SCAN_VAL;                                                              
  508     brcmf_msg_level |= BRCMF_CONN_VAL;                                                              
  509     brcmf_msg_level |= BRCMF_BCDC_VAL;
  510     brcmf_msg_level |= BRCMF_SDIO_VAL;                                                              
  511     brcmf_msg_level |= BRCMF_MSGBUF_VAL ;                                                           
  512     brcmf_msg_level |= BRCMF_PCIE_VAL;                                                              
  513     brcmf_msg_level |= BRCMF_FWCON_VAL;
  514 
  515     pr_debug("**fucking life: new brcmf_msg_level is 0x%x **", brcmf_msg_level);   

拿到更為詳細(xì)的日志信息:

  1 [    2.034599] brcmfmac: ******** fucking life ***************                                                                                                                                                    
  2 [    2.034606] brcmfmac: **fucking life: brcmf_msg_level is 0x0 **
  3 [    2.034612] brcmfmac: **fucking life: change brcmf_msg_level **
  4 [    2.034618] brcmfmac: **fucking life: new brcmf_msg_level is 0x1ffffe **
  5 [    2.034743] brcmfmac: brcmfmac_module_init No platform data available.
  6 [    2.034790] brcmfmac: brcmf_usb_register Enter
  7 [    2.034886] usbcore: registered new interface driver brcmfmac
  8 [    2.034893] brcmfmac: brcmf_pcie_register Enter
  9 [    2.553430] brcmfmac: brcmf_ops_sdio_probe Enter
 10 [    2.553438] brcmfmac: brcmf_ops_sdio_probe Class=0
 11 [    2.553444] brcmfmac: brcmf_ops_sdio_probe sdio vendor ID: 0x02d0
 12 [    2.553450] brcmfmac: brcmf_ops_sdio_probe sdio device ID: 0xa9bf
 13 [    2.553456] brcmfmac: brcmf_ops_sdio_probe Function#: 1
 14 [    2.553622] brcmfmac: brcmf_ops_sdio_probe Enter
 15 [    2.553629] brcmfmac: brcmf_ops_sdio_probe Class=0
 16 [    2.553636] brcmfmac: brcmf_ops_sdio_probe sdio vendor ID: 0x02d0
 17 [    2.553642] brcmfmac: brcmf_ops_sdio_probe sdio device ID: 0xa9bf
 18 [    2.553648] brcmfmac: brcmf_ops_sdio_probe Function#: 2
 19 [    2.553664] brcmfmac: brcmf_ops_sdio_probe F2 found, calling brcmf_sdiod_probe...
 20 [    2.553714] brcmfmac: brcmf_sdiod_probe set F2 blocksize to 512
 21 [    2.553755] brcmfmac: brcmf_sdio_probe Enter
 22 [    2.554226] brcmfmac: F1 signature read @0x18000000=0x15294345
 23 [    2.554394] brcmfmac: brcmf_chip_recognition found AXI chip: BCM4345/9
 24 [    2.556224] brcmfmac: brcmf_chip_cores_check  [1 ] core 0x800:51 base 0x18000000 wrap 0x18100000
 25 [    2.556234] brcmfmac: brcmf_chip_cores_check  [2 ] core 0x812:54 base 0x18001000 wrap 0x18101000
 26 [    2.556242] brcmfmac: brcmf_chip_cores_check  [3 ] core 0x83e:9  base 0x18002000 wrap 0x18102000
 27 [    2.556251] brcmfmac: brcmf_chip_cores_check  [4 ] core 0x83c:14 base 0x18003000 wrap 0x18103000
 28 [    2.556258] brcmfmac: brcmf_chip_cores_check  [5 ] core 0x829:21 base 0x18004000 wrap 0x18104000
 29 [    2.556266] brcmfmac: brcmf_chip_cores_check  [6 ] core 0x135:0  base 0x00000000 wrap 0x18107000
 30 [    2.556274] brcmfmac: brcmf_chip_cores_check  [7 ] core 0x240:0  base 0x00000000 wrap 0x00000000
 31 [    2.556280] brcmfmac: brcmf_chip_set_passive Enter
 32 [    2.557289] brcmfmac: brcmf_chip_get_raminfo RAM: base=0x198000 size=819200 (0xc8000) sr=0 (0x0)
 33 [    2.557359] brcmfmac: brcmf_chip_setup ccrev=51, pmurev=27, pmucaps=0x39d05f1b
 34 [    2.557368] brcmfmac: brcmf_get_module_param Enter, bus=0, chip=17221, rev=9
 35 [    2.557481] brcmfmac: brcmf_sdiod_sgtable_alloc nents=35
 36 [    2.557500] brcmfmac: brcmf_sdio_kso_init Enter
 37 [    2.557523] brcmfmac: brcmf_sdio_drivestrengthinit No SDIO driver strength init needed for chip BCM4345/9 rev 9 pmurev 27
 38 [    2.557932] brcmfmac: brcmf_sdio_probe completed!!
 39 [    2.557945] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
 40 [    2.557955] brcmfmac: brcmf_fw_get_firmwares enter: dev=mmc0:0001:1
 41 [    2.557968] brcmfmac: brcmf_ops_sdio_probe F2 init completed...
 42 [    2.558152] brcmfmac: brcmf_ops_sdio_probe Enter
 43 [    2.558159] brcmfmac: brcmf_ops_sdio_probe Class=2
 44 [    2.558166] brcmfmac: brcmf_ops_sdio_probe sdio vendor ID: 0x02d0
 45 [    2.558172] brcmfmac: brcmf_ops_sdio_probe sdio device ID: 0xa9bf
 46 [    2.558177] brcmfmac: brcmf_ops_sdio_probe Function#: 3
 47 [    2.558634] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac43456-sdio.bin failed with error -2
 48 [    2.558645] brcmfmac mmc0:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43456-sdio.bin
 49 [    3.411816] brcmfmac: brcmf_fw_complete_request firmware brcm/brcmfmac43456-sdio.bin not found
 50 [    3.411845] brcmfmac: brcmf_sdio_firmware_callback Enter: dev=mmc0:0001:1, err=-2
 51 [    3.411858] brcmfmac: brcmf_sdio_firmware_callback failed: dev=mmc0:0001:1, err=-2
 52 [    3.411934] brcmfmac: brcmf_ops_sdio_remove Enter
 53 [    3.411946] brcmfmac: brcmf_ops_sdio_remove sdio vendor ID: 0x02d0
 54 [    3.411958] brcmfmac: brcmf_ops_sdio_remove sdio device ID: 0xa9bf
 55 [    3.411970] brcmfmac: brcmf_ops_sdio_remove Function: 2

我擦,我發(fā)現(xiàn)這么處理這個(gè)問(wèn)題不一定能夠解決茁影,我應(yīng)該嘗試把5.15內(nèi)核中這個(gè)wifi的驅(qū)動(dòng)拿過(guò)來(lái)宙帝,放在5.10上去用,然后根據(jù)效果再?zèng)Q定如何進(jìn)行下一步募闲。

root@rockpi-4c:/sys/bus/mmc/devices/mmc0:0001/mmc0:0001:1# ls -l
total 0
-r--r--r-- 1 root root 4096 Dec  1 10:33 class
--w------- 1 root root 4096 Dec  1 10:33 coredump
-r--r--r-- 1 root root 4096 Dec  1 10:33 device
lrwxrwxrwx 1 root root    0 Dec  1 10:32 driver -> ../../../../../../../bus/sdio/drivers/brcmfmac
drwxr-xr-x 3 root root    0 Dec  1 10:32 ieee80211
-r--r--r-- 1 root root 4096 Dec  1 10:33 info1
-r--r--r-- 1 root root 4096 Dec  1 10:33 info2
-r--r--r-- 1 root root 4096 Dec  1 10:33 info3
-r--r--r-- 1 root root 4096 Dec  1 10:33 info4
-r--r--r-- 1 root root 4096 Dec  1 10:33 modalias
drwxr-xr-x 3 root root    0 Dec  1 10:32 net
lrwxrwxrwx 1 root root    0 Dec  1 10:33 of_node -> ../../../../../../../firmware/devicetree/base/mmc@fe310000/wifi@1
drwxr-xr-x 2 root root    0 Dec  1 10:32 power
-r--r--r-- 1 root root 4096 Dec  1 10:33 revision
lrwxrwxrwx 1 root root    0 Jan 18  2013 subsystem -> ../../../../../../../bus/sdio
-rw-r--r-- 1 root root 4096 Jan 18  2013 uevent
-r--r--r-- 1 root root 4096 Dec  1 10:33 vendor

驅(qū)動(dòng)信息步脓。

硬解驅(qū)動(dòng)bug
brcmf_ops_sdio_probe ------> brcmf_sdiod_probe ----------> brcmf_sdio_probe -----------> brcmf_fw_get_firmwares  --------> request_firmware_nowait ----------------> brcmf_fw_request_done ----------->  brcmf_fw_request_firmware -------------> brcmf_sdio_firmware_callback

問(wèn)題解決,按照上面的流程分析代碼浩螺,發(fā)現(xiàn)邏輯貌似沒(méi)有問(wèn)題靴患;做了若干嘗試發(fā)現(xiàn)有可能是加載固件的時(shí)機(jī)太早,此時(shí)文件系統(tǒng)還沒(méi)準(zhǔn)備好要出,嘗試:

  673 #include <linux/delay.h>                                                                            
  674                                                                                                     
  675 int brcmf_fw_get_firmwares(struct device *dev, struct brcmf_fw_request *req,                        
  676             |  void (*fw_cb)(struct device *dev, int err,                                           
  677                     |struct brcmf_fw_request *req))                                                 
  678 {                                                                                                   
  679     struct brcmf_fw_item *first = &req->items[0];                                                   
  680     struct brcmf_fw *fwctx;                                                                         
  681     int ret;                                                                                        
  682     int heartbeat = 0;                                                                              
  683                                                                                                     
  684     brcmf_dbg(TRACE, "enter: dev=%s\n", dev_name(dev));                                             
  685     if (!fw_cb)                                                                                     
  686         return -EINVAL;                                                                             
  687                                                                                                     
  688     if (!brcmf_fw_request_is_valid(req))                                                            
  689         return -EINVAL;                                                                             
  690                                                                                                     
  691     fwctx = kzalloc(sizeof(*fwctx), GFP_KERNEL);                                                    
  692     if (!fwctx)                                                                                     
  693         return -ENOMEM;                                                                             
  694                                                                                                     
  695     fwctx->dev = dev;                                                                               
  696     fwctx->req = req;                                                                               
  697     fwctx->done = fw_cb;                                                                            
  698                                                                                                     
  699     brcmf_dbg(TRACE, "sleep to wati for fs online");                                                
  700     while(heartbeat++ < 10)                                                                         
  701     {                                                                                               
  702     |   msleep(1000);                                                                               
  703     |   brcmf_dbg(TRACE, "heart beating ..........");                                                                                                                                                           
  704     }                                                                                               
  705     brcmf_dbg(TRACE, "now wake up");                                                                
  706                                                                                                     
  707     ret = request_firmware_nowait(THIS_MODULE, true, first->path,                                   
  708                 |   | fwctx->dev, GFP_KERNEL, fwctx,                                                
  709                 |   | brcmf_fw_request_done);                                                       
  710     if (ret < 0)                                                                                    
  711         brcmf_fw_request_done(NULL, fwctx);
  712                                                                                                     
  713     return 0;                                                                                       
  714 }

加載固件之前鸳君,等10秒(其實(shí)不用這么久),效果:

Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... [    6.968892] systemd[1]: Failed to start Armbian ZRAM config.
[    7.839553] systemd[1]: Failed to start Armbian ZRAM config.
[   14.976177] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43456-sdio for chip BCM4345/9
[   14.976935] brcmfmac: brcmf_fw_alloc_request: fwreq-items[0].path = brcm/brcmfmac43456-sdio.clm_blob
[   15.012302] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/9 wl0: Jun 16 2017 12:38:26 version 7.45.96.2 (66c4e21@sh-git) (r) FWID 01-1813af84

Armbian 22.11.1 Jammy ttyS2

固件成功加載患蹂。

iw dev wlan0 scan ssid |grep - 
        SSID: ChinaNet-DC4T
        SSID: asus
        SSID: kylinos
        SSID: kylinos
        SSID: asus
        SSID: 123456
        SSID: kylinos
        SSID: Kylin_11F
        SSID: huanghexinchan
        SSID: huanghe_5G
        SSID: kylinos
        SSID: TP-LINK_944CB8
        SSID: huanghexinchan
        SSID: 
                 * SSID List
                 * UTF-8 SSID
        SSID: hw_manage_f200
        SSID: kylinos
        SSID: \x00\x00\x00\x00\x00\x00\x00\x00
        SSID: FAST_2.4G_E16F
        SSID: \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
        SSID: Kylin_11F
        SSID: 
                 * SSID List
                 * UTF-8 SSID
        SSID: kylinos
        SSID: EZVIZ_F77790454
        SSID: huanghexinchan
        SSID: 360\xe8\xa1\x8c\xe8\xbd\xa6\xe8\xae\xb0\xe5\xbd\x95\xe4\xbb\xaa-0867
        SSID: kylinos
        SSID: kylinos
        SSID: HONOR V30
        SSID: Kylin_11F

無(wú)線網(wǎng)卡可以操作或颊。

Bluetooth

[    2.635076] Bluetooth: hci0: BCM: chip id 130
[    2.637480] Bluetooth: hci0: BCM: features 0x0f
[    2.660672] Bluetooth: hci0: BCM4345C5
[    2.660685] Bluetooth: hci0: BCM4345C5 (003.006.006) build 0000
[    2.663316] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[    2.663329] Bluetooth: hci0: BCM: 'brcm/BCM4345C5.hcd'
[    2.663334] Bluetooth: hci0: BCM: 'brcm/BCM.hcd'
[    2.860103] cfg80211: failed to load regulatory.db


內(nèi)核信息串口輸出

[    1.863048] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.865744] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 42, base_baud = 1500000) is a 16550A
[    1.865898] serial serial0: tty port ttyS0 registered
[    1.866586] ff1a0000.serial: ttyS2 at MMIO 0xff1a0000 (irq = 43, base_baud = 1500000) is a 16550A
[    1.866851] printk: console [ttyS2] enabled

但是內(nèi)核輸出還是看不見(jiàn)砸紊。

pcie

[    1.828517] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    1.828555] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    1.828573] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000

[    2.306158] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    2.306175] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    2.306182] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000
[    2.308572] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    2.308590] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    2.308597] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000
[    2.309449] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    2.309468] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    2.309475] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000

hdmi輸出

2251     hdmi@ff940000 {
2252         compatible = "rockchip,rk3399-dw-hdmi";
2253         reg = <0x00 0xff940000 0x00 0x20000>;
2254         interrupts = <0x00 0x17 0x04 0x00>;
2255         clocks = <0x08 0x174 0x08 0x71 0x08 0x70 0x08 0x16f 0x08 0x07>;
2256         clock-names = "iahb\0isfr\0cec\0grf\0vpll";
2257         power-domains = <0x1c 0x15>;
2258         reg-io-width = <0x04>;
2259         rockchip,grf = <0x1d>;
2260         #sound-dai-cells = <0x00>;
2261         status = "okay";
2262         ddc-i2c-bus = <0xad>;
2263         pinctrl-names = "default";
2264         pinctrl-0 = <0xae>;
2265         phandle = <0xac>;
2266 
2267         ports {
2268 
2269             port {
2270                 #address-cells = <0x01>;
2271                 #size-cells = <0x00>;
2272                 phandle = <0x11e>;
2273 
2274                 endpoint@0 {
2275                     reg = <0x00>;
2276                     remote-endpoint = <0xaf>;
2277                     phandle = <0xa6>;
2278                 };
2279 
2280                 endpoint@1 {
2281                     reg = <0x01>;                                                                                                                                                                                
2282                     remote-endpoint = <0xb0>;
2283                     phandle = <0xa0>;
2284                 };
2285             };
2286         };
2287     };

配置項(xiàng)

    6 rockchipdrm-y := rockchip_drm_drv.o rockchip_drm_fb.o \
    7         rockchip_drm_gem.o rockchip_drm_vop.o rockchip_vop_reg.o
    8 rockchipdrm-$(CONFIG_DRM_FBDEV_EMULATION) += rockchip_drm_fbdev.o
    9 
   10 rockchipdrm-$(CONFIG_ROCKCHIP_ANALOGIX_DP) += analogix_dp-rockchip.o
   11 rockchipdrm-$(CONFIG_ROCKCHIP_CDN_DP) += cdn-dp-core.o cdn-dp-reg.o
   12 rockchipdrm-$(CONFIG_ROCKCHIP_DW_HDMI) += dw_hdmi-rockchip.o                                                                                                                                                    
   13 rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi-rockchip.o
   14 rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o
   15 rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o
   16 rockchipdrm-$(CONFIG_ROCKCHIP_RGB) += rockchip_rgb.o
   17 rockchipdrm-$(CONFIG_ROCKCHIP_RK3066_HDMI) += rk3066_hdmi.o
   18 
   19 obj-$(CONFIG_DRM_ROCKCHIP) += rockchipdrm.o

簡(jiǎn)單處理,這些配置項(xiàng)全部改為*囱挑。


效果


image.png

image.png

音頻

設(shè)備樹(shù):

2234     hdmi-sound {                                                                                                                                                                                                 
2235         compatible = "simple-audio-card";
2236         simple-audio-card,format = "i2s";
2237         simple-audio-card,mclk-fs = <0x100>;
2238         simple-audio-card,name = "hdmi-sound";
2239         status = "okay";
2240         phandle = <0x11d>;
2241         
2242         simple-audio-card,cpu {
2243             sound-dai = <0xab>;
2244         };
2245         
2246         simple-audio-card,codec {
2247             sound-dai = <0xac>;
2248         };
2249     };

3408     sound {                                                                                                                                                                                                      
3409         compatible = "audio-graph-card";
3410         label = "Analog";
3411         dais = <0xc3>;
3412     };

配置項(xiàng):

    6 obj-$(CONFIG_SND_SIMPLE_CARD_UTILS) += snd-soc-simple-card-utils.o                                                                                                                                              
    7 obj-$(CONFIG_SND_SIMPLE_CARD)       += snd-soc-simple-card.o
    8 obj-$(CONFIG_SND_AUDIO_GRAPH_CARD)  += snd-soc-audio-graph-card.o

簡(jiǎn)單處理醉顽,全加上。


效果目前沒(méi)有驗(yàn)證平挑,感覺(jué)問(wèn)題不大徽鼎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市弹惦,隨后出現(xiàn)的幾起案子否淤,更是在濱河造成了極大的恐慌,老刑警劉巖棠隐,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件石抡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡助泽,警方通過(guò)查閱死者的電腦和手機(jī)啰扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嗡贺,“玉大人隐解,你說(shuō)我怎么就攤上這事〗氩牵” “怎么了煞茫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摄凡。 經(jīng)常有香客問(wèn)我续徽,道長(zhǎng),這世上最難降的妖魔是什么亲澡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任钦扭,我火速辦了婚禮,結(jié)果婚禮上床绪,老公的妹妹穿的比我還像新娘客情。我一直安慰自己,他們只是感情好癞己,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布膀斋。 她就那樣靜靜地躺著,像睡著了一般末秃。 火紅的嫁衣襯著肌膚如雪概页。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天练慕,我揣著相機(jī)與錄音惰匙,去河邊找鬼技掏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛项鬼,可吹牛的內(nèi)容都是我干的哑梳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绘盟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸠真!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起龄毡,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吠卷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沦零,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祭隔,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年路操,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疾渴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屯仗,死狀恐怖搞坝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魁袜,我是刑警寧澤桩撮,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站慌核,受9級(jí)特大地震影響距境,放射性物質(zhì)發(fā)生泄漏申尼。R本人自食惡果不足惜垮卓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望师幕。 院中可真熱鬧粟按,春花似錦、人聲如沸霹粥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)后控。三九已至庙曙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浩淘,已是汗流浹背捌朴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工吴攒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砂蔽。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓洼怔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親左驾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镣隶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容