20230313用友善之臂的Android11跑起来ROC-RK3399-PC(U-boot)

20230313用友善之臂的Android11跑起来ROC-RK3399-PC
2023/3/13 12:30


SDK:友善之臂的Android11:rk3399-android-11-r20211216.tar.xz
https://pan.baidu.com/share/init?surl=XL6x7CGzG03zR238TcBSAA
提取码:1234

【小知识】:ROC-RK3399-PC开发板,TYPE-C0接电脑一般就可以用了!
如果【用鼠标】经常出现莫名其妙的死机,请在TYPE-C1按需接入电源适配器。


1、正常编译,启动异常。
Rockchip_Developer_Guide_Android11_SDK_V1.1.3_CN.pdf
RK3399+Android11
RK3399 挖掘机开发板

(一)整体编译
rk3399-sapphireexcavatoredp-avb

build/envsetup.sh;
lunch rk3399_Android11-userdebug

./build.sh -AUCKu -d rk3399-sapphire-excavator-edp-avb


(二)分步骤编译:
./make.sh rk3399


make ARCH=arm64 rockchip_defconfig android-11.config
make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android10/boot.img rk3399-sapphire-excavator-edp-avb.img -j18


build/envsetup.sh;
lunch rk3399_Android11-eng
make -j36

./build.sh -u

DDR Version 1.27 20211018
In
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 1
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 0 training pass!
channel 1 training pass!
change freq to 416MHz 0,1
Channel 0: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
Channel 1: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
256B stride
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 1
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 0 training pass!
channel 1 training pass!
change freq to 856MHz 1,0
ch 0 ddrconfig = 0x101, ddrsize = 0x2020
ch 1 ddrconfig = 0x101, ddrsize = 0x2020
pmugrf_os_reg[2] = 0x3AA1FAA1, stride = 0xD
OUT
Boot1 Release Time: Jun  2 2020 15:02:17, version: 1.26
CPUId = 0x0
SdmmcInit=2 0
BootCapSize=100000
UserCapSize=14910MB
FwPartOffset=2000 , 100000
##############serialno_str = ZXK0HN7563
UsbBoot ...157114
powerOn 169337
DDR Version 1.27 20211018
In
soft reset
SRX
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 1
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 0 training pass!
channel 1 training pass!
change freq to 416MHz 0,1
Channel 0: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
Channel 1: LPDDR4,416MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
256B stride
channel 0
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 1
CS = 0
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
CS = 1
MR0=0x18
MR4=0x1
MR5=0x6
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 0 training pass!
channel 1 training pass!
channel 0, cs 0, advanced training done
channel 0, cs 1, advanced training done
channel 1, cs 0, advanced training done
channel 1, cs 1, advanced training done
change freq to 856MHz 1,0
ch 0 ddrconfig = 0x101, ddrsize = 0x2020
ch 1 ddrconfig = 0x101, ddrsize = 0x2020
pmugrf_os_reg[2] = 0x3AA1FAA1, stride = 0xD
ddr_set_rate to 328MHZ
ddr_set_rate to 666MHZ
ddr_set_rate to 416MHZ, ctl_index 0
ddr_set_rate to 856MHZ, ctl_index 1
support 416 856 328 666 MHz, current 856MHz
OUT
Boot1 Release Time: May 29 2020 17:36:36, version: 1.26
CPUId = 0x0
ChipType = 0x10, 437
SdmmcInit=2 0
BootCapSize=100000
UserCapSize=14910MB
FwPartOffset=2000 , 100000
mmc0:cmd8,20
mmc0:cmd5,20
mmc0:cmd55,20
mmc0:cmd1,20
mmc0:cmd8,20
mmc0:cmd5,20
mmc0:cmd55,20
mmc0:cmd1,20
mmc0:cmd8,20
mmc0:cmd5,20
mmc0:cmd55,20
mmc0:cmd1,20
SdmmcInit=0 1
StorageInit ok = 69538
SecureMode = 0
SecureInit read PBA: 0x4
SecureInit read PBA: 0x404
SecureInit read PBA: 0x804
SecureInit read PBA: 0xc04
SecureInit read PBA: 0x1004
SecureInit read PBA: 0x1404
SecureInit read PBA: 0x1804
SecureInit read PBA: 0x1c04
SecureInit ret = 0, SecureMode = 0
atags_set_bootdev: ret:(0)
GPT part:  0, name:         security, start:0x2000, size:0x2000
GPT part:  1, name:            uboot, start:0x4000, size:0x2000
GPT part:  2, name:            trust, start:0x6000, size:0x2000
GPT part:  3, name:             misc, start:0x8000, size:0x2000
GPT part:  4, name:             dtbo, start:0xa000, size:0x2000
GPT part:  5, name:           vbmeta, start:0xc000, size:0x2000
GPT part:  6, name:             boot, start:0xe000, size:0x14000
GPT part:  7, name:         recovery, start:0x22000, size:0x37000
GPT part:  8, name:           backup, start:0x59000, size:0xc0000
GPT part:  9, name:            cache, start:0x119000, size:0xc0000
GPT part: 10, name:         metadata, start:0x1d9000, size:0x8000
GPT part: 11, name:    baseparameter, start:0x1e1000, size:0x800
GPT part: 12, name:            super, start:0x1e1800, size:0x614000
GPT part: 13, name:         userdata, start:0x7f5800, size:0x15297c0
find part:uboot OK. first_lba:0x4000.
find part:trust OK. first_lba:0x6000.
Trust Addr:0x6000, 0x58334c42
No find bl30.bin
Load uboot, ReadLba = 4000
Load OK, addr=0x200000, size=0x1001a8
RunBL31 0x40000 @ 118627 us
NOTICE:  BL31: v1.3(release):845ee93
NOTICE:  BL31: Built : 15:51:11, Jul 22 2020
NOTICE:  BL31: Rockchip release version: v1.1
INFO:    GICv3 with legacy support detected. ARM GICV3 driver initialized in EL3
INFO:    Using opteed sec cpu_context!
INFO:    boot cpu mask: 0
INFO:    plat_rockchip_pmu_init(1196): pd status 3e
INFO:    BL31: Initializing runtime services
INFO:    BL31: Initializing BL32
INF [0x0] TEE-CORE:init_primary_helper:337: Initializing (1.1.0-266-gee81607c #1 Mon Aug 17 09:23:30 UTC 2020 aarch64)

INF [0x0] TEE-CORE:init_primary_helper:338: Release version: 1.2

INF [0x0] TEE-CORE:init_teecore:83: teecore inits done
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x200000
INFO:    SPSR = 0x3c9


U-Boot 2017.09 (Mar 12 2023 - 21:56:48 +0800)

Model: Rockchip RK3399 Evaluation Board
PreSerial: 2, raw, 0xff1a0000
DRAM:  3.8 GiB
Sysmem: init
Relocation Offset: f5b7b000, fdt: f3d6f2d8 
Using default environment

mmc@fe320000: 1, sdhci@fe330000: 0
Bootdev(atags): mmc 0
MMC0: HS400, 150Mhz
PartType: EFI
boot mode: recovery (misc)
Android 11.0, Build 2021.6, v2
Found DTB in recovery part
DTB: rk-kernel.dtb (108209)
HASH(c): OK
ANDROID: fdt overlay OK
I2c0 speed: 400000Hz
PMIC:  RK808 
vdd_center 900000 uV
vdd_cpu_l 900000 uV
vdd_log 1100000 uV
Model: Rockchip RK3399 Excavator Board edp avb (Android)
Rockchip UBOOT DRM driver version: v1.0.1
disp info 0, type:11, id:0
xfer: num: 2, addr: 0x50
xfer: num: 2, addr: 0x50
Monitor has basic audio support
base_parameter.mode:1920x1080
mode: 1920x1080
Detailed mode clock 148500 kHz, flags[5]
    H: 1920 2008 2052 2200
    V: 1080 1084 1089 1125
bus_format: 100a
CEA mode used vic=16
final pixclk = 148500000 tmdsclk = 148500000
PHY powered down in 0 iterations
PHY PLL locked 1 iterations
PHY powered down in 0 iterations
PHY PLL locked 1 iterations
sink has audio support
hdmi_set_clk_regenerator: fs=48000Hz ftdms=148.500MHz N=6144 cts=148500
Using display timing dts
Detailed mode clock 200000 kHz, flags[a]
    H: 1536 1548 1564 1612
    V: 2048 2056 2060 2068
bus_format: 100e
AUX CH command reply failed!
AUX CH error happens: 2
AUX CH command reply failed!
AUX CH error happens: 2
AUX CH command reply failed!
AUX CH error happens: 2
failed to get Rx Max Link Rate
failed to init training
unable to do link train
CLK: (uboot. arml: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
CLK: (uboot. armb: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
  aplll 816000 KHz
  apllb 816000 KHz
  dpll 856000 KHz
  cpll 200000 KHz
  gpll 800000 KHz
  npll 600000 KHz
  vpll 148000 KHz
  aclk_perihp 133333 KHz
  hclk_perihp 66666 KHz
  pclk_perihp 33333 KHz
  aclk_perilp0 266666 KHz
  hclk_perilp0 88888 KHz
  pclk_perilp0 44444 KHz
  hclk_perilp1 100000 KHz
  pclk_perilp1 50000 KHz
Net:   eth0: ethernet@fe300000
Hit key to stop autoboot('CTRL+C'):  0 
ANDROID: reboot reason: "recovery"
optee api revision: 2.0
Vboot=0, AVB images, AVB verify
General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

lib/avb/libavb_user/avb_ops_user.c: init lock state error
Error determining whether device is unlocked.
read_is_device_unlocked() ops returned that device is UNLOCKED
Magic is incorrect.
Error validating A/B metadata from disk. Resetting and writing new A/B metadata to disk.
avb_footer.c:41: ERROR: Footer magic is incorrect.
avb_vbmeta_image.c:65: ERROR: Magic is incorrect.
avb_slot_verify.c:773: ERROR: recovery: Error verifying vbmeta image: invalid vbmeta header
Verify recovery with vbmeta.
avb_slot_verify.c:762: ERROR: vbmeta: Error verifying vbmeta image: OK_NOT_SIGNED
General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

General failure 
INF [0x0] TEE-CORE:tee_rpmb_init:1217: RPMB INIT: Verify key failed. Try again.

ERR [0x0] TEE-CORE:tee_rpmb_init:1225: ERROR: Verify RPMB authentication key failed!

lib/avb/libavb_user/avb_ops_user.c: init rollback index error
avb_slot_verify.c:883: ERROR: vbmeta: Error getting rollback index for location.
AVB verify failed
Android boot failed, error -1.

## Booting Rockchip Format Image
Could not find kernel partition, ret=-1
MMC error: The cmd index is 1, ret is -110
Card did not respond to voltage select!
mmc_init: -95, time 10
switch to partitions #0, OK
mmc0(part 0) is current device
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
starting USB...
Bus usb@fe380000: USB EHCI 1.00
Bus usb@fe3a0000: USB OHCI 1.0
Bus usb@fe3c0000: USB EHCI 1.00
Bus usb@fe3e0000: USB OHCI 1.0
Bus dwc3@fe800000: probe failed, error -2
Bus dwc3@fe900000: usb maximum-speed not found
Rockchip Type-C PHY is initialized
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb@fe380000 for devices... 1 USB Device(s) found
scanning bus usb@fe3a0000 for devices... 1 USB Device(s) found
scanning bus usb@fe3c0000 for devices... 1 USB Device(s) found
scanning bus usb@fe3e0000 for devices... 1 USB Device(s) found
scanning bus dwc3@fe900000 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/01-e2-e3-e7-dc-21-c9
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-rockchip
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
Config file not found
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
ethernet@fe300000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@fe300000
=> 
=> 

[END] 2023/3/13 11:44:57


2、根据AIO-3568J的经验,直接使用ROC-RK3399-PC Plus开发板的U-boot来引导Android11了。
https://www.t-firefly.com/product/industry/rocrk3399pcpro
https://www.t-firefly.com/product/industry/rocrk3399pcplus
https://www.t-firefly.com/doc/download/85.html

./make.sh rk3399
./build.sh -u

 

 

 


3、找到修改的地方了!
Z:\rk3399-android11\u-boot\arch\arm\dts\rk3399.dtsi
Z:\rk3399-android11\u-boot\arch\arm\dts\Makefile
Z:\rk3399-android11\u-boot\arch\arm\mach-rockchip\rk3399\rk3399.c
Z:\rk3399-android11\u-boot\configs\rk3399_defconfig
Z:\rk3399-android11\u-boot\make.sh


Z:\rk3399-android11\u-boot\arch\arm\dts\rk3399.dtsi
    sdio0: mmc@fe310000 {
        compatible = "rockchip,rk3399-dw-mshc",
                 "rockchip,rk3288-dw-mshc";
        reg = <0x0 0xfe310000 0x0 0x4000>;
        interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH 0>;
        max-frequency = <150000000>;
        clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
             <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
        clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
        fifo-depth = <0x100>;
        power-domains = <&power RK3399_PD_SDIOAUDIO>;
        resets = <&cru SRST_SDIO0>;
        reset-names = "reset";
        status = "disabled";
    };

    sdmmc: mmc@fe320000 {
        compatible = "rockchip,rk3399-dw-mshc",
                 "rockchip,rk3288-dw-mshc";
        reg = <0x0 0xfe320000 0x0 0x4000>;
        interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH 0>;
        max-frequency = <150000000>;
        clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
             <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
        clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
        fifo-depth = <0x100>;
        power-domains = <&power RK3399_PD_SD>;
        resets = <&cru SRST_SDMMC>;
        reset-names = "reset";
        status = "disabled";
    };
修改为:
    sdio0: dwmmc@fe310000 {
        compatible = "rockchip,rk3399-dw-mshc",
                 "rockchip,rk3288-dw-mshc";
        reg = <0x0 0xfe310000 0x0 0x4000>;
        interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH 0>;
        max-frequency = <150000000>;
        clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
             <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
        clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
        fifo-depth = <0x100>;
        power-domains = <&power RK3399_PD_SDIOAUDIO>;
        resets = <&cru SRST_SDIO0>;
        reset-names = "reset";
        status = "disabled";
    };

    sdmmc: dwmmc@fe320000 {
        compatible = "rockchip,rk3399-dw-mshc",
                 "rockchip,rk3288-dw-mshc";
        reg = <0x0 0xfe320000 0x0 0x4000>;
        interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH 0>;
        max-frequency = <150000000>;
        clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
             <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
        clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
        fifo-depth = <0x100>;
        power-domains = <&power RK3399_PD_SD>;
        resets = <&cru SRST_SDMMC>;
        reset-names = "reset";
        status = "disabled";
    };


【貌似关系不大】
Z:\rk3399-android11\u-boot\arch\arm\dts\Makefile
dtb-$(CONFIG_ARCH_ROCKCHIP) += \
    rk3036-sdk.dtb \
    rk3066a-mk808.dtb \
    rk3126-evb.dtb \
    rk3128-evb.dtb \
    rk3188-radxarock.dtb \
    rk3288-evb.dtb \
    rk3288-fennec.dtb \
    rk3288-firefly.dtb \
    rk3288-miqi.dtb \
    rk3288-phycore-rdk.dtb \
    rk3288-popmetal.dtb \
    rk3288-rock2-square.dtb \
    rk3288-tinker.dtb \
    rk3288-veyron-jerry.dtb \
    rk3288-veyron-mickey.dtb \
    rk3288-veyron-minnie.dtb \
    rk3288-vyasa.dtb \
    rk3308-evb.dtb \
    rk3328-evb.dtb \
    rk3328-nanopi-r2.dtb \
    rk3368-lion.dtb \
    rk3368-sheep.dtb \
    rk3368-geekbox.dtb \
    rk3368-px5-evb.dtb \
    rk3399-evb.dtb \
    rk3399-firefly.dtb \
    rk3399-puma-ddr1333.dtb \
    rk3399-puma-ddr1600.dtb \
    rk3399-puma-ddr1866.dtb \
    rk3399-nanopi4.dtb \
    rv1108-evb.dtb
dtb-$(CONFIG_ARCH_MESON) += \
    meson-gxbb-odroidc2.dtb
修改为:
dtb-$(CONFIG_ARCH_ROCKCHIP) += \
    rk3036-sdk.dtb \
    rk3066a-mk808.dtb \
    rk3126-evb.dtb \
    rk3128-evb.dtb \
    rk3188-radxarock.dtb \
    rk3288-evb.dtb \
    rk3288-fennec.dtb \
    rk3288-firefly.dtb \
    rk3288-miqi.dtb \
    rk3288-phycore-rdk.dtb \
    rk3288-popmetal.dtb \
    rk3288-rock2-square.dtb \
    rk3288-tinker.dtb \
    rk3288-veyron-jerry.dtb \
    rk3288-veyron-mickey.dtb \
    rk3288-veyron-minnie.dtb \
    rk3288-vyasa.dtb \
    rk3308-evb.dtb \
    rk3328-evb.dtb \
    rk3368-lion.dtb \
    rk3368-sheep.dtb \
    rk3368-geekbox.dtb \
    rk3368-px5-evb.dtb \
    rk3399-evb.dtb \
    rk3399-firefly.dtb \
    rk3399-puma-ddr1333.dtb \
    rk3399-puma-ddr1600.dtb \
    rk3399-puma-ddr1866.dtb \
    rv1108-evb.dtb
dtb-$(CONFIG_ARCH_MESON) += \
    meson-gxbb-odroidc2.dtb
dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \


dtb-$(CONFIG_ARCH_ASPEED) += ast2500-evb.dtb

dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb

# Compile embeded kernel dts to dtb, and put it behind of u-boot.dtb
EMBED_KERN_DTB_PATH := $(CONFIG_EMBED_KERNEL_DTB_PATH:"%"=%)
EMBED_KERN_DTS_PATH := $(subst dtb,dts, $(EMBED_KERN_DTB_PATH))
ifneq ($(wildcard $(EMBED_KERN_DTS_PATH)),)
EMBED_KERN_DTB=$(shell echo $(EMBED_KERN_DTB_PATH) | awk -F '/' '{ print $$NF }')
dtb-y += $(EMBED_KERN_DTB)
endif

targets += $(dtb-y)

 


Z:\rk3399-android11\u-boot\arch\arm\mach-rockchip\rk3399\rk3399.c
struct mm_region *mem_map = rk3399_mem_map;

const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
    [BROM_BOOTSOURCE_EMMC] = "/sdhci@fe330000",
    [BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000",
    [BROM_BOOTSOURCE_SD] = "/mmc@fe320000",
};

#ifdef CONFIG_SPL_BUILD
修改为:
struct mm_region *mem_map = rk3399_mem_map;

const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
    [BROM_BOOTSOURCE_EMMC] = "/sdhci@fe330000",
    [BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000",
    [BROM_BOOTSOURCE_SD] = "/dwmmc@fe320000",
};

#ifdef CONFIG_SPL_BUILD


【貌似关系不大】
Z:\rk3399-android11\u-boot\configs\rk3399_defconfig
CONFIG_DEFAULT_DEVICE_TREE="rk3399-evb"
CONFIG_DEBUG_UART=y
CONFIG_FIT=y
CONFIG_SPL_LOAD_FIT=y
# CONFIG_SPL_SYS_DCACHE_OFF is not set
CONFIG_BOOTDELAY=10
CONFIG_SYS_CONSOLE_INFO_QUIET=y

# CONFIG_DISPLAY_CPUINFO is not set
修改为:
CONFIG_DEFAULT_DEVICE_TREE="rk3399-evb"
CONFIG_DEBUG_UART=y
CONFIG_FIT=y
CONFIG_SPL_LOAD_FIT=y
# CONFIG_SPL_SYS_DCACHE_OFF is not set
CONFIG_BOOTDELAY=0
CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y

CONFIG_SYS_CONSOLE_INFO_QUIET=y
# CONFIG_DISPLAY_CPUINFO is not set


【貌似关系不大】
Z:\rk3399-android11\u-boot\make.sh
function select_toolchain()
{
    if grep -q '^CONFIG_ARM64=y' .config ; then
        if ${GCC_ARM64}gcc -v >/dev/null 2>&1; then
            TOOLCHAIN_GCC=${GCC_ARM64}
            TOOLCHAIN_OBJDUMP=${OBJ_ARM64}
            TOOLCHAIN_ADDR2LINE=${ADDR2LINE_ARM64}
        elif [ -d ${TOOLCHAIN_ARM64} ]; then

            absolute_path=$(cd `dirname ${TOOLCHAIN_ARM64}`; pwd)
            TOOLCHAIN_NM=${absolute_path}/bin/${NM_ARM64}
            TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM64}
            TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM64}
            TOOLCHAIN_ADDR2LINE=${absolute_path}/bin/${ADDR2LINE_ARM64}
        else
            echo "ERROR: No toolchain: ${TOOLCHAIN_ARM64}"
            exit 1
        fi
    else
        if [ -d ${TOOLCHAIN_ARM32} ]; then
            absolute_path=$(cd `dirname ${TOOLCHAIN_ARM32}`; pwd)
            TOOLCHAIN_NM=${absolute_path}/bin/${NM_ARM32}
            TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM32}
            TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM32}
            TOOLCHAIN_ADDR2LINE=${absolute_path}/bin/${ADDR2LINE_ARM32}
        else
            echo "ERROR: No toolchain: ${TOOLCHAIN_ARM32}"
            exit 1
        fi
    fi
}
修改为:
function select_toolchain()
{
    if grep -q '^CONFIG_ARM64=y' .config ; then
        if [ -d ${TOOLCHAIN_ARM64} ]; then

            absolute_path=$(cd `dirname ${TOOLCHAIN_ARM64}`; pwd)
            TOOLCHAIN_NM=${absolute_path}/bin/${NM_ARM64}
            TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM64}
            TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM64}
            TOOLCHAIN_ADDR2LINE=${absolute_path}/bin/${ADDR2LINE_ARM64}
        else
            echo "ERROR: No toolchain: ${TOOLCHAIN_ARM64}"
            exit 1
        fi
    else
        if [ -d ${TOOLCHAIN_ARM32} ]; then
            absolute_path=$(cd `dirname ${TOOLCHAIN_ARM32}`; pwd)
            TOOLCHAIN_NM=${absolute_path}/bin/${NM_ARM32}
            TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM32}
            TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM32}
            TOOLCHAIN_ADDR2LINE=${absolute_path}/bin/${ADDR2LINE_ARM32}
        else
            echo "ERROR: No toolchain: ${TOOLCHAIN_ARM32}"
            exit 1
        fi
    fi
}

 


参考资料:
http://www.friendlyarm.com/
Welcome to FriendlyELEC
The website you visited has been changed to a new domain name. 

Please click the link https://www.friendlyelec.com


http://www.friendlyelec.com.cn/nanopi-R5S.asp
https://wiki.friendlyelec.com/wiki/index.php/Main_Page
Main Page


https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4#Download_Android10_Source_Code

https://pan.baidu.com/share/init?surl=oBLn9H31hILJKEPQXgrUog
提取码:yn6r


 

猜你喜欢

转载自blog.csdn.net/wb4916/article/details/129492095