Toybrick

标题: TB-RK3399ProD optee---找不到tee的驱动结点/dev/tee0和/dev/teepriv0 [打印本页]

作者: 008kai    时间: 2022-1-17 16:14
标题: TB-RK3399ProD optee---找不到tee的驱动结点/dev/tee0和/dev/teepriv0
本帖最后由 008kai 于 2022-1-17 16:18 编辑

rk3399pro支持optee,optee的镜像被打包进了trust.img,为什么在dev目录下找不到tee的驱动结点/dev/tee0和/dev/teepriv0?
作者: zhangzj    时间: 2022-1-18 08:47
3399pro上面的节点是:/dev/opteearmtz00
作者: 008    时间: 2022-1-18 09:45
zhangzj 发表于 2022-1-18 08:47
3399pro上面的节点是:/dev/opteearmtz00

安卓固件上我看到了/dev/opteearmtz00,但是在Debin上没有见到该节点,只有在安卓上支持optee吗?
作者: 008    时间: 2022-1-18 09:49
zhangzj 发表于 2022-1-18 08:47
3399pro上面的节点是:/dev/opteearmtz00

toybrick@debian10:/dev$ ls
block            loop3               rtc0    tty30  tty59        vcs4
bus              loop4               shm     tty31  tty6         vcs5
cec0             loop5               snd     tty32  tty60        vcs6
char             loop6               stderr  tty33  tty61        vcs7
console          loop7               stdin   tty34  tty62        vcsa
cpu_dma_latency  mali0               stdout  tty35  tty63        vcsa1
disk             media0              tty     tty36  tty7         vcsa2
dri              media1              tty0    tty37  tty8         vcsa3
fb0              mem                 tty1    tty38  tty9         vcsa4
fd               memory_bandwidth    tty10   tty39  ttyFIQ0      vcsa5
full             mmcblk1             tty11   tty4   ttyS0        vcsa6
fuse             mmcblk1boot0        tty12   tty40  ttyS4        vcsa7
hdmi_hdcp1x      mmcblk1boot1        tty13   tty41  uhid         vendor_storage
hwrng            mmcblk1p1           tty14   tty42  uinput       vhci
i2c-0            mmcblk1p2           tty15   tty43  urandom      video0
i2c-1            mmcblk1p3           tty16   tty44  usbmon0      video1
i2c-2            mmcblk1p4           tty17   tty45  usbmon2      video2
i2c-4            mmcblk1rpmb         tty18   tty46  usbmon3      video3
i2c-6            network_latency     tty19   tty47  usbmon4      video4
i2c-7            network_throughput  tty2    tty48  usbmon5      video5
i2c-8            null                tty20   tty49  usbmon6      video6
i2c-9            port                tty21   tty5   usbmon7      video7
iio:device0      ppp                 tty22   tty50  v4l          video8
initctl          ptmx                tty23   tty51  v4l-subdev0  video9
input            pts                 tty24   tty52  v4l-subdev1  vpu_service
kmsg             ram0                tty25   tty53  v4l-subdev2  watchdog
log              random              tty26   tty54  v4l-subdev3  zero
loop-control     rfkill              tty27   tty55  vcs          zram0
loop0            rga                 tty28   tty56  vcs1
loop1            rkvdec              tty29   tty57  vcs2
loop2            rtc                 tty3    tty58  vcs3

如果我想在Debin上创建/dev/opteearmtz00驱动结点,我该做哪些工作呢?
作者: zhangzj    时间: 2022-1-18 11:25
008 发表于 2022-1-18 09:49
toybrick@debian10:/dev$ ls
block            loop3               rtc0    tty30  tty59        vcs4
b ...

全部开机串口发出来看下。
kernel config把CONFIG_TEE_SUPPORT开起来应该就可以了。
作者: 008kai    时间: 2022-1-19 11:04
zhangzj 发表于 2022-1-18 11:25
全部开机串口发出来看下。
kernel config把CONFIG_TEE_SUPPORT开起来应该就可以了。 ...

可以啦,谢谢
在linux/arch/arm64/configs/rockchip_linux_deconfig添加如下内容:
CONFIG_OPTEE=y
CONFIG_TEE=y
CONFIG_TEE_SUPPORT=y
重新编译内核./make.sh linux prod
开机就可以看到/dev/opteearmtz00结点啦
作者: 008kai    时间: 2022-1-19 11:38
zhangzj 发表于 2022-1-18 11:25
全部开机串口发出来看下。
kernel config把CONFIG_TEE_SUPPORT开起来应该就可以了。 ...

toybrick@debian10:~$ dmesg|grep "tee"
[    1.118416] tz_tee_probe: name="armv7sec", id=0, pdev_name="armv7sec.0"
[    1.119027] TEE core: Alloc the misc device "opteearmtz00" (id=0)
[    1.119755] TEE Core: Register the misc device "opteearmtz00" (id=0,minor=62)
我还有一个疑问,name="armv7sec",指的是使用了32位的optee吗?
作者: zhangzj    时间: 2022-1-20 08:39
008kai 发表于 2022-1-19 11:38
toybrick@debian10:~$ dmesg|grep "tee"
[    1.118416] tz_tee_probe: name="armv7sec", id=0, pdev_nam ...

这个log没关系,3399pro是64bit,optee也会是64bit
作者: 008    时间: 2022-1-20 17:39
zhangzj 发表于 2022-1-20 08:39
这个log没关系,3399pro是64bit,optee也会是64bit

官方提供 的trust.img,op-tee是哪个版本的?
作者: zhangzj    时间: 2022-1-27 08:56
008 发表于 2022-1-20 17:39
官方提供 的trust.img,op-tee是哪个版本的?

3399Pro是V1.1.0
作者: 008kai    时间: 2022-1-29 20:59
zhangzj 发表于 2022-1-27 08:56
3399Pro是V1.1.0

据我所知道的optee的版本号有3.7  3.10等,1.1.0是不是过于古老了?还是命名规范不同造成的?我可不可以使用官方提供的optee os,然后编译自己的3.7或者3.8版本的optee client 和optee xtest?
作者: 008kai    时间: 2022-2-3 18:12
zhangzj 发表于 2022-1-27 08:56
3399Pro是V1.1.0

我想编译3.7版本的optee test、optee example,optee example依赖optee os,我该使用哪个版本的optee os?我没找到有1.1版本的optee os
作者: zhangzj    时间: 2022-2-8 09:32
008kai 发表于 2022-1-29 20:59
据我所知道的optee的版本号有3.7  3.10等,1.1.0是不是过于古老了?还是命名规范不同造成的?我可不可以 ...

由于兼容性问题,3399pro的optee一直没升级,因此就是官方的V1.1.0。

如果想用mainline的版本也可以,optee os V3.8.0及以上的版本已经加入了3399平台的支持。如下提交:
de5333ed plat-rockchip: add rk3399 and px30 flavors

你需要做以下工作:
1.编译mainline optee os,生成tee pager bin,替换掉rkbin/bin/rk33/rk3399pro_bl32_V*.bin
2.rockchip平台采用atags传参,optee会将自己用的内存地址和大小传给uboot,uboot将这块内存reserved,对kernel是不可见的。但是mainline的optee os没有支持atags传参,因此你需要再uboot中指定reserved的内存,或者在kernel中reserved memory。
作者: 008kai    时间: 2022-2-8 17:23
zhangzj 发表于 2022-2-8 09:32
由于兼容性问题,3399pro的optee一直没升级,因此就是官方的V1.1.0。

如果想用mainline的版本也可以,op ...

toybrick提供的linux版本是4.4.139,我编译了optee os,并且生成了自己的trust.img,但是系统不能正常启动,这和Linux版本有关系吗?我需不需要使用更高版本的linux内核?
作者: zhangzj    时间: 2022-2-9 09:02
008kai 发表于 2022-2-8 17:23
toybrick提供的linux版本是4.4.139,我编译了optee os,并且生成了自己的trust.img,但是系统不能正常启动 ...

如果是用V3.8.0及以上的optee os,则linux kernel驱动也需要用新版本的,toybrick  4.4 kernel应该已经支持(驱动位于/drivers/tee),只需要使能起来即可。

1.config使能
CONFIG_OPTEE=y
CONFIG_TEE=y

2.dts使能,添加optee node
        firmware {
                optee: optee {
                        compatible = "linaro,optee-tz";
                        method = "smc";
                };  
        };  

3. 确认驱动是否加载成功
新版本驱动节点为/dev/tee0和/dev/teepriv0


以上是驱动的开启方法,你说起不来是启动到哪里,如果还没跑到uboot,那就是optee os编译出来的bin有问题
作者: 008kai    时间: 2022-2-9 21:36
zhangzj 发表于 2022-2-8 09:32
由于兼容性问题,3399pro的optee一直没升级,因此就是官方的V1.1.0。

如果想用mainline的版本也可以,op ...

不好意思,我对如何在u-boot或者Linux设置预留地址不太明白,您可以告诉我如何设置吗?我使用的是RB-RK3399ProD开发板,我尝试在u-boot中的rk3399pro-npu-evb.dts中添加如下结点:
reserved-memory {
      #address-cells = <2>;
      #size-cells = <2>;
      ranges;

      reserved: optee@0x00800000 {
         reg = <0x0 0x00800000 0x0 0x00400000>;
      };
   };
以上做法有哪里不对吗?此外optee os v3.8.0的编译选项中没有rk3399pro,只有rk3399,这对编译出来的tee-pager.bin有影响吗?最后,如果我使用optee os v3.8.0,atf需不需要也升级到更高的版本来将rkbin中的rk3399pro_bl31_v*.elf替换掉?
作者: 008kai    时间: 2022-2-9 22:49
本帖最后由 008kai 于 2022-4-25 11:36 编辑
zhangzj 发表于 2022-2-9 09:02
如果是用V3.8.0及以上的optee os,则linux kernel驱动也需要用新版本的,toybrick  4.4 kernel应该已经支 ...

下面是我的启动信息,初始化bl32就被挂起了:
GPT part:  0, name:            uboot, start:0x2000, size:0x2000
GPT part:  1, name:            trust, start:0x4000, size:0x2000
GPT part:  2, name:       boot_linux, start:0x6000, size:0x30000
GPT part:  3, name:           rootfs, start:0x36000, size:0x3a07fdf
find part:uboot OK. first_lba:0x2000.
find part:trust OK. first_lba:0x4000.
LoadTrust Addr:0x4000
No find bl30.bin
Load uboot, ReadLba = 2000
Load OK, addr=0x200000, size=0xf48c4
RunBL31 0x40000
NOTICE:  BL31: v1.3(debug):42583b6
NOTICE:  BL31: Built : 07:55:13, Oct 15 2019
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(1190): pd status 3e
INFO:    BL31: Initializing runtime services
INFO:    BL31: Initializing BL32



作者: 008kai    时间: 2022-2-12 18:50
zhangzj 发表于 2022-2-8 09:32
由于兼容性问题,3399pro的optee一直没升级,因此就是官方的V1.1.0。

如果想用mainline的版本也可以,op ...

optee os V3.8以上的版本已经加入了对rk3399平台的支持,将PLATFORM设置为rk3399,这样编译出来的tee.pager.bin适合在tk3399pro平台上使用吗?
作者: zhangzj    时间: 2022-2-16 09:02
你这个bl32都没跑起来,暂时跟reserved memory没关系。先把bl32跑起来再解决reserved memory。

3399pro和3399的bl32是一样的。所以3399编译出来的tee_pager.bin可以在3399pro上面使用

1. mainline上面的更新可能会有问题,建议将commit点checkout到刚支持3399的那个commit。

2. rkbin中bl32的加载地址需要和optee os中的加载地址一样
rkbin/RKTRUST/RK3399PROTRUST.ini中的BL32的ADDR
10 [BL32_OPTION]
11 SEC=1
12 PATH=bin/rk33/rk3399pro_bl32_v2.10.bin
13 ADDR=0x08400000
作者: 008kai    时间: 2022-2-17 20:29
本帖最后由 008kai 于 2022-2-17 20:30 编辑
zhangzj 发表于 2022-2-16 09:02
你这个bl32都没跑起来,暂时跟reserved memory没关系。先把bl32跑起来再解决reserved memory。

3399pro和3 ...

我将optee os中的plat-rockchip/conf.mk文件做出如下修改:

ifeq ($(PLATFORM_FLAVOR),rk3399)
include core/arch/arm/cpu/cortex-armv8-0.mk
$(call force,CFG_TEE_CORE_NB_CORE,6)
$(call force,CFG_ARM_GICV3,y)

CFG_TZDRAM_START ?= 0x08400000
CFG_TZDRAM_SIZE  ?= 0x02000000
CFG_SHMEM_START  ?= 0x0a4000000
CFG_SHMEM_SIZE   ?= 0x00400000

rkbin/RKTRUST/RK3399PROTRUST.ini中的BL32的ADDR
[BL32_OPTION]
SEC=1
PATH=bin/rk33/rk3399pro_bl32_v1.21.bin
ADDR=0x08400000

打包生成trust.img并烧写进开发板,但是此时开发板会一直停在烧写模式,无法reset进入系统
作者: zhangzj    时间: 2022-2-18 08:57
008kai 发表于 2022-2-17 20:29
我将optee os中的plat-rockchip/conf.mk文件做出如下修改:

ifeq ($(PLATFORM_FLAVOR),rk3399)

log
作者: 008kai    时间: 2022-2-18 11:17
zhangzj 发表于 2022-2-18 08:57
log

下面是输出的log信息:无法进入系统

find part:uboot OK. first_lba:0x2000.
find part:trust OK. first_lba:0x4000.
LoadTrust Addr:0x4000
No find bl30.bin
Load uboot, ReadLba = 2000
Load OK, addr=0x200000, size=0xf491c
RunBL31 0x40000
NOTICE:  BL31: v2.6(release):v2.6-391-gb22f18e36-dirty
NOTICE:  BL31: Built : 20:08:06, Feb 17 2022
INFO:    GICv3 with legacy support detected.
INFO:    ARM GICv3 driver initialized in EL3
INFO:    Maximum SPI INTID supported: 287
INFO:    plat_rockchip_pmu_init(1625): pd status 3e
INFO:    BL31: Initializing runtime services
INFO:    BL31: Initializing BL32
D/TC:0   get_aslr_seed:1376 Bad fdt: -9
D/TC:0   plat_get_aslr_seed:109 Warning: no ASLR seed
D/TC:0   add_phys_mem:572 TEE_SHMEM_START type NSEC_SHM 0x0a400000 size 0x00400000
D/TC:0   add_phys_mem:572 TA_RAM_START type TA_RAM 0x08600000 size 0x01e00000
D/TC:0   add_phys_mem:572 VCORE_UNPG_RW_PA type TEE_RAM_RW 0x08461000 size 0x0019f000
D/TC:0   add_phys_mem:572 VCORE_UNPG_RX_PA type TEE_RAM_RX 0x08400000 size 0x00061000
D/TC:0   add_phys_mem:572 ROUNDDOWN((0xF8000000 + 0x06E00000), CORE_MMU_PGDIR_SIZE) type IO_SEC 0xfee00000 size 0x00200000
D/TC:0   add_phys_mem:572 ROUNDDOWN((0xF8000000 + 0x071A0000), CORE_MMU_PGDIR_SIZE) type IO_NSEC 0xff000000 size 0x00200000
D/TC:0   add_phys_mem:572 ROUNDDOWN((0xF8000000 + 0x07330000), CORE_MMU_PGDIR_SIZE) type IO_SEC 0xff200000 size 0x00200000
D/TC:0   add_va_space:611 type RES_VASPACE size 0x00a00000
D/TC:0   add_va_space:611 type SHM_VASPACE size 0x02000000
D/TC:0   dump_mmap_table:729 type TEE_RAM_RX   va 0x08400000..0x08460fff pa 0x08400000..0x08460fff size 0x00061000 (smallpg)
D/TC:0   dump_mmap_table:729 type TEE_RAM_RW   va 0x08461000..0x085fffff pa 0x08461000..0x085fffff size 0x0019f000 (smallpg)
D/TC:0   dump_mmap_table:729 type SHM_VASPACE  va 0x08600000..0x0a5fffff pa 0x00000000..0x01ffffff size 0x02000000 (pgdir)
D/TC:0   dump_mmap_table:729 type RES_VASPACE  va 0x0a600000..0x0affffff pa 0x00000000..0x009fffff size 0x00a00000 (pgdir)
D/TC:0   dump_mmap_table:729 type TA_RAM       va 0x0b000000..0x0cdfffff pa 0x08600000..0x0a3fffff size 0x01e00000 (pgdir)
D/TC:0   dump_mmap_table:729 type NSEC_SHM     va 0x0ce00000..0x0d1fffff pa 0x0a400000..0x0a7fffff size 0x00400000 (pgdir)
D/TC:0   dump_mmap_table:729 type IO_SEC       va 0x0d200000..0x0d3fffff pa 0xfee00000..0xfeffffff size 0x00200000 (pgdir)
D/TC:0   dump_mmap_table:729 type IO_NSEC      va 0x0d400000..0x0d5fffff pa 0xff000000..0xff1fffff size 0x00200000 (pgdir)
D/TC:0   dump_mmap_table:729 type IO_SEC       va 0x0d600000..0x0d7fffff pa 0xff200000..0xff3fffff size 0x00200000 (pgdir)
D/TC:0   core_mmu_xlat_table_alloc:494 xlat tables used 1 / 5
D/TC:0   core_mmu_xlat_table_alloc:494 xlat tables used 2 / 5
I/TC:
I/TC: No non-secure external DT
D/TC:0 0 get_console_node_from_dt:70 No console directive from DTB
I/TC: OP-TEE version: 3.11.0-777-g169eac19-dev (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)) #2 Fri Feb 18 03:14:40 UTC 2022 aarch64
I/TC: Primary CPU initializing
D/TC:0 0 boot_init_primary_late:1257 Executing at offset 0 with virtual load address 0x8400000
D/TC:0 0 call_preinitcalls:21 level 2 mobj_mapped_shm_init()
D/TC:0 0 mobj_mapped_shm_init:449 Shared memory address range: 8600000, a600000
D/TC:0 0 call_initcalls:40 level 1 register_time_source()
D/TC:0 0 call_initcalls:40 level 1 teecore_init_pub_ram()
D/TC:0 0 call_initcalls:40 level 3 platform_init()
D/TC:0 0 platform_secure_ddr_region:35 protecting region 1: 0x8400000-0xa400000
D/TC:0 0 call_initcalls:40 level 3 check_ta_store()
D/TC:0 0 check_ta_store:408 TA store: "Secure Storage TA"
D/TC:0 0 check_ta_store:408 TA store: "REE"
D/TC:0 0 call_initcalls:40 level 3 verify_pseudo_tas_conformance()
D/TC:0 0 call_initcalls:40 level 3 tee_cryp_init()
D/TC:0 0 call_initcalls:40 level 4 tee_fs_init_key_manager()
D/TC:0 0 call_initcalls:40 level 6 dt_driver_release_provider()
D/TC:0 0 call_initcalls:40 level 6 mobj_init()
D/TC:0 0 call_initcalls:40 level 6 default_mobj_init()
D/TC:0 0 call_finalcalls:59 level 1 release_external_dt()
I/TC: Primary CPU switching to normal world boot
INFO:    BL31: Initializing BL32 success!!
INFO:    bl31_prepare_next_image_entry
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x200000
INFO:    SPSR = 0x3c9


U-Boot 2017.09 (Feb 18 2022 - 10:00:44 +0800)

Model: Rockchip RK3399 Evaluation Board
PreSerial: 2
DRAM:  3.9 GiB
Sysmem: init
Relocation Offset is: f5bd0000
Using default environment

dwmmc@fe320000: 1, sdhci@fe330000: 0
Bootdev(atags): mmc 0
MMC0: HS400, 150Mhz
PartType: EFI
rockchip_get_boot_mode: Could not found misc partition
boot mode: normal
init_resource_list: failed to get boot part, ret=-1
init_resource_list: failed to get resource part, ret=-1
Distro DTB: /extlinux/toybrick.dtb
105926 bytes read in 51 ms (2 MiB/s)
I2c0 speed: 400000Hz
PMIC:  RK8090 (on=0x40, off=0x00)
vdd_center 900000 uV
vdd_cpu_l 900000 uV
Warn: can't find connect driver
Warn: can't find connect driver
Failed to found available display route
Warn: can't find connect driver
Warn: can't find connect driver
Failed to found available display route
TEEC: malloc init fail!
TEEC: OpteeClientMemInit fail!
toybrick_SnMacAc_check read sn_mac_ac fail
toybrick_SnMacAc_check write rpmb
TEEC: malloc init fail!
TEEC: OpteeClientMemInit fail!
toybrick_SnMacAc_check trusty_write_toybrick_SnMacAc wrong!
RKUSB: LUN 0, dev 0, hwpart 0, sector 0x0, count 0x3a3e000

作者: 008kai    时间: 2022-2-21 11:12
zhangzj 发表于 2022-2-18 08:57
log

从打印的log来看,应该改是u-boot/lib/optee_client_Api中的代码出现了问题,u-boot中的关于optee client的这部分代码需要去掉嘛?
作者: zhangzj    时间: 2022-2-22 08:47
008kai 发表于 2022-2-21 11:12
从打印的log来看,应该改是u-boot/lib/optee_client_Api中的代码出现了问题,u-boot中的关于optee client ...

可以去掉,因为client和optee os版本不匹配了。
1. 把uboot中optee相关的宏disable掉
CONFIG_OPTEE_CLIENT=y
CONFIG_OPTEE_V1=y
2. 把依赖optee client的这个代码去掉
arch/arm/mach-rockchip/boot_mode.c
toybrick_check_SnMacAc();
作者: 008kai    时间: 2022-2-22 11:19
zhangzj 发表于 2022-2-22 08:47
可以去掉,因为client和optee os版本不匹配了。
1. 把uboot中optee相关的宏disable掉
CONFIG_OPTEE_CLIEN ...

按照您所说的做出对应修改,即把把uboot中optee相关的宏disable掉,然后将arch/arm/mach-rockchip/boot_mode.c 中的toybrick_SnMacAc_check()函数中的内容注释掉,编译u-boot时报错:
common/built-in.o: In function `android_bootloader_boot_flow':
/home/hyy/rk3399pro_optee/u-boot/common/android_bootloader.c:1123: undefined reference to `trusty_read_vbootkey_enable_flag'
drivers/usb/gadget/built-in.o: In function `rkusb_do_vs_write':
/home/hyy/rk3399pro_optee/u-boot/drivers/usb/gadget/f_rockusb.c:387: undefined reference to `trusty_write_toybrick_seed'
drivers/usb/gadget/built-in.o: In function `rkusb_do_vs_read':
/home/hyy/rk3399pro_optee/u-boot/drivers/usb/gadget/f_rockusb.c:514: undefined reference to `trusty_read_toybrick_cpu_id'
/home/hyy/rk3399pro_optee/u-boot/drivers/usb/gadget/f_rockusb.c:530: undefined reference to `trusty_read_toybrick_cpu_id'
Segmentation fault (core dumped)
make: *** [Makefile:1276: u-boot] Error 139

似乎还有其他文件依赖optee client,我将上述显示未定义的函数在对应的文件中全部注释掉,u-boot编译通过,我将生成的u-boot.img烧写进开发板,发现此时开发板移植不断重启,打印log如下:
atags_set_bootdev: ret0)
GPT part:  0, name:            uboot, start:0x2000, size:0x2000
GPT part:  1, name:            trust, start:0x4000, size:0x2000
GPT part:  2, name:       boot_linux, start:0x6000, size:0x30000
GPT part:  3, name:           rootfs, start:0x36000, size:0x3a07fdf
find part:uboot OK. first_lba:0x2000.
find part:trust OK. first_lba:0x4000.
LoadTrust Addr:0x4000
No find bl30.bin
Load uboot, ReadLba = 2000
Load OK, addr=0x200000, size=0xeb59c
RunBL31 0x40000
NOTICE:  BL31: v2.6(release):v2.6-391-gb22f18e36-dirty
NOTICE:  BL31: Built : 20:08:06, Feb 17 2022
INFO:    GICv3 with legacy support detected.
INFO:    ARM GICv3 driver initialized in EL3
INFO:    Maximum SPI INTID supported: 287
INFO:    plat_rockchip_pmu_init(1625): pd status 3e
INFO:    BL31: Initializing runtime services
INFO:    BL31: Initializing BL32
D/TC:0   get_aslr_seed:1376 Bad fdt: -9
D/TC:0   plat_get_aslr_seed:109 Warning: no ASLR seed
D/TC:0   add_phys_mem:572 TEE_SHMEM_START type NSEC_SHM 0x0a400000 size 0x00400000
D/TC:0   add_phys_mem:572 TA_RAM_START type TA_RAM 0x08600000 size 0x01e00000
D/TC:0   add_phys_mem:572 VCORE_UNPG_RW_PA type TEE_RAM_RW 0x08461000 size 0x0019f000
D/TC:0   add_phys_mem:572 VCORE_UNPG_RX_PA type TEE_RAM_RX 0x08400000 size 0x00061000
D/TC:0   add_phys_mem:572 ROUNDDOWN((0xF8000000 + 0x06E00000), CORE_MMU_PGDIR_SIZE) type IO_SEC 0xfee00000 size 0x00200000
D/TC:0   add_phys_mem:572 ROUNDDOWN((0xF8000000 + 0x071A0000), CORE_MMU_PGDIR_SIZE) type IO_NSEC 0xff000000 size 0x00200000
D/TC:0   add_phys_mem:572 ROUNDDOWN((0xF8000000 + 0x07330000), CORE_MMU_PGDIR_SIZE) type IO_SEC 0xff200000 size 0x00200000
D/TC:0   add_va_space:611 type RES_VASPACE size 0x00a00000
D/TC:0   add_va_space:611 type SHM_VASPACE size 0x02000000
D/TC:0   dump_mmap_table:729 type TEE_RAM_RX   va 0x08400000..0x08460fff pa 0x08400000..0x08460fff size 0x00061000 (smallpg)
D/TC:0   dump_mmap_table:729 type TEE_RAM_RW   va 0x08461000..0x085fffff pa 0x08461000..0x085fffff size 0x0019f000 (smallpg)
D/TC:0   dump_mmap_table:729 type SHM_VASPACE  va 0x08600000..0x0a5fffff pa 0x00000000..0x01ffffff size 0x02000000 (pgdir)
D/TC:0   dump_mmap_table:729 type RES_VASPACE  va 0x0a600000..0x0affffff pa 0x00000000..0x009fffff size 0x00a00000 (pgdir)
D/TC:0   dump_mmap_table:729 type TA_RAM       va 0x0b000000..0x0cdfffff pa 0x08600000..0x0a3fffff size 0x01e00000 (pgdir)
D/TC:0   dump_mmap_table:729 type NSEC_SHM     va 0x0ce00000..0x0d1fffff pa 0x0a400000..0x0a7fffff size 0x00400000 (pgdir)
D/TC:0   dump_mmap_table:729 type IO_SEC       va 0x0d200000..0x0d3fffff pa 0xfee00000..0xfeffffff size 0x00200000 (pgdir)
D/TC:0   dump_mmap_table:729 type IO_NSEC      va 0x0d400000..0x0d5fffff pa 0xff000000..0xff1fffff size 0x00200000 (pgdir)
D/TC:0   dump_mmap_table:729 type IO_SEC       va 0x0d600000..0x0d7fffff pa 0xff200000..0xff3fffff size 0x00200000 (pgdir)
D/TC:0   core_mmu_xlat_table_alloc:494 xlat tables used 1 / 5
D/TC:0   core_mmu_xlat_table_alloc:494 xlat tables used 2 / 5
I/TC:
I/TC: No non-secure external DT
D/TC:0 0 get_console_node_from_dt:70 No console directive from DTB
I/TC: OP-TEE version: 3.11.0-777-g169eac19-dev (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)) #4 Mon Feb 21 03:00:48 UTC 2022 aarch64
I/TC: Primary CPU initializing
D/TC:0 0 boot_init_primary_late:1257 Executing at offset 0 with virtual load address 0x8400000
D/TC:0 0 call_preinitcalls:21 level 2 mobj_mapped_shm_init()
D/TC:0 0 mobj_mapped_shm_init:449 Shared memory address range: 8600000, a600000
D/TC:0 0 call_initcalls:40 level 1 register_time_source()
D/TC:0 0 call_initcalls:40 level 1 teecore_init_pub_ram()
D/TC:0 0 call_initcalls:40 level 3 platform_init()
D/TC:0 0 platform_secure_ddr_region:35 protecting region 1: 0x8400000-0xa400000
D/TC:0 0 call_initcalls:40 level 3 check_ta_store()
D/TC:0 0 check_ta_store:408 TA store: "Secure Storage TA"
D/TC:0 0 check_ta_store:408 TA store: "REE"
D/TC:0 0 call_initcalls:40 level 3 verify_pseudo_tas_conformance()
D/TC:0 0 call_initcalls:40 level 3 tee_cryp_init()
D/TC:0 0 call_initcalls:40 level 4 tee_fs_init_key_manager()
D/TC:0 0 call_initcalls:40 level 6 dt_driver_release_provider()
D/TC:0 0 call_initcalls:40 level 6 mobj_init()
D/TC:0 0 call_initcalls:40 level 6 default_mobj_init()
D/TC:0 0 call_finalcalls:59 level 1 release_external_dt()
I/TC: Primary CPU switching to normal world boot
INFO:    BL31: Initializing BL32 success!!
INFO:    bl31_prepare_next_image_entry
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x200000
INFO:    SPSR = 0x3c9


U-Boot 2017.09-g22af63bad7-dirty (Feb 22 2022 - 11:09:20 +0800)

Model: Rockchip RK3399 Evaluation Board
PreSerial: 2
DRAM:  3.9 GiB
Sysmem: init
Relocation Offset is: f5bda000
Using default environment

dwmmc@fe320000: 1, sdhci@fe330000: 0
Bootdev(atags): mmc 0
MMC0: HS400, 150Mhz
PartType: EFI
rockchip_get_boot_mode: Could not found misc partition
boot mode: normal
init_resource_list: failed to get boot part, ret=-1
init_resource_list: failed to get resource part, ret=-1
Distro DTB: /extlinux/toybrick.dtb
106116 bytes read in 51 ms (2 MiB/s)
I2c0 speed: 400000Hz
PMIC:  RK8090 (on=0x40, off=0x00)
vdd_center 900000 uV
vdd_cpu_l 900000 uV
Warn: can't find connect driver
Warn: can't find connect driver
Failed to found available display route
Warn: can't find connect driver
Warn: can't find connect driver
Failed to found available display route
CLK: (uboot. arml: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
CLK: (uboot. armb: enter 24000 KHz, init 24000 KHz, kernel 0N/A)
  aplll 816000 KHz
  apllb 24000 KHz
  dpll 800000 KHz
  cpll 24000 KHz
  gpll 800000 KHz
  npll 600000 KHz
  vpll 24000 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
Could not find misc partition
ANDROID: reboot reason: "(none)"
Not AVB images, AVB skip
load_android_image: Can't find part: boot
Android image load failed
Android boot failed, error -1.
do_boot_rockchip: Could not find rootfs part
Card did not respond to voltage select!
mmc_init: -95, time 9
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:3...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
237 bytes read in 54 ms (3.9 KiB/s)
1:      rockchip-kernel-4.4
Retrieving file: /initramfs-toybrick-2.0.img
16096158 bytes read in 177 ms (86.7 MiB/s)
Retrieving file: /extlinux/Image
20918280 bytes read in 226 ms (88.3 MiB/s)
append: earlycon=uart8250,mmio32,0xff1a0000 initrd=/initramfs-toybrick-2.0.img root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootwait rootfstype=ext4
Retrieving file: /extlinux/toybrick.dtb
106116 bytes read in 52 ms (1.9 MiB/s)
"Synchronous Abort" handler, esr 0x96000010
* Relocate offset = 00000000f5bda000
* ELR(PC)    =   0000000000222cb8
* LR         =   0000000000222dfc
* SP         =   00000000f3dcb9b0

* ESR_EL2    =   0000000096000010
        EC[31:26] == 100101, Exception from a Data abort, from current exception level
        IL[25] == 1, 32-bit instruction trapped

* DAIF       =   00000000000003c0
        D[9] == 1, DBG masked
        A[8] == 1, ABORT masked
        I[7] == 1, IRQ masked
        F[6] == 1, FIQ masked

* SPSR_EL2   =   0000000040000349
        D[9] == 1, DBG masked
        A[8] == 1, ABORT masked
        I[7] == 0, IRQ not masked
        F[6] == 1, FIQ masked
        M[4] == 0, Exception taken from AArch64
        M[3:0] == 1001, EL2h

* SCTLR_EL2  =   0000000030c51835
        I[12] == 1, Icaches enabled
        C[2] == 1, Dcache enabled
        M[0] == 1, MMU enabled

* HCR_EL2    =   000000000800003a
* VBAR_EL2   =   00000000f5dda800
* TTBR0_EL2  =   00000000f7ff0000

x0 : 000000000a200000 x1 : 000000000000003a
x2 : 000000000a200000 x3 : 00000000f5e71710
x4 : 0000000000000010 x5 : 0000000000000000
x6 : 0000000000000010 x7 : 0000000000000044
x8 : 00000000f5ec3768 x9 : 0000000000000008
x10: 00000000f3e3e1a0 x11: 00000000f3dd9260
x12: 0000000000000000 x13: 0000000000000200
x14: 000000000000000e x15: 00000000ffffffff
x16: 00000000c683ff6f x17: 00000000c265984a
x18: 00000000f3dd1d10 x19: 00000000f5ec34e8
x20: 00000000f3dcbd00 x21: 0000000000800800
x22: 0000000000000016 x23: 00000000f5ec35e0
x24: 00000000f5ec35d8 x25: 00000000f3dcbd40
x26: 00000000f5ead3c8 x27: 0000000000000002
x28: 00000000f3e41f20 x29: 00000000f3dcbba0

SP:
f3dcb9b0:  00000000 00000000 00000000 00000000
f3dcb9c0:  00000000 00000000 f5e99af3 00000000
f3dcb9d0:  00000000 00000000 00000000 00000000
f3dcb9e0:  f5e99b3a 00000000 f5e99b60 00000000
f3dcb9f0:  f5e99bad 00000000 f5e99bfa 00000000
f3dcba00:  f5e99c3a 00000000 f5e99c7a 00000000
f3dcba10:  f5e99cb7 00000000 00000000 00000000
f3dcba20:  00000000 00000000 f5e99cf4 00000000
f3dcba30:  f3dcbba0 00000000 f5ddaa0c 00000000
f3dcba40:  f5ec34e8 00000000 0000000b 00000000
f3dcba50:  f7ff0000 00000000 0800003a 00000000
f3dcba60:  30c51835 00000000 f3dcb9b0 00000000
f3dcba70:  40000349 00000000 f5dda800 00000000
f3dcba80:  000003c0 00000000 96000010 00000000
f3dcba90:  f5dfccb8 00000000 0a200000 00000000
f3dcbaa0:  0000003a 00000000 0a200000 00000000


Call trace:
  PC:   [< 00222cb8 >]
  LR:   [< 00222dfc >]

Stack:
        [< 00222cb8 >]
        [< 00216058 >]
        [< 002086f0 >]
        [< 0020e8b4 >]
        [< 0020e9ec >]
        [< 0020ed48 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00215208 >]
        [< 00214954 >]
        [< 00214e24 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00214ce0 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00214ce0 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00214ce0 >]
        [< 00214ce0 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00214ce0 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00215208 >]
        [< 00214954 >]
        [< 00214e24 >]
        [< 00214ce0 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 00229794 >]
        [< 0022a1e0 >]
        [< 00215068 >]
        [< 00215208 >]
        [< 0021490c >]
        [< 002296e4 >]
        [< 002132f8 >]
        [< 00215e44 >]
        [< 0027a620 >]
        [< 00215fd0 >]
        [< 00201b2c >]

Copy above stack info to a file(eg. dump.txt), and
execute command in your U-Boot project: ./scripts/stacktrace.sh dump.txt

Resetting CPU ...

DDR Version 1.24 20191016
In
soft reset
SRX
Channel 0: LPDDR3, 800MHz
CS = 0
MR0=0x58
MR1=0x58
MR2=0x58
MR3=0x58
MR4=0x2
MR5=0x1
MR6=0x5
MR7=0x0
MR8=0x1F
MR9=0x1F
MR10=0x1F
MR11=0x1F
MR12=0x1F
MR13=0x1F
MR14=0x1F
MR15=0x1F
MR16=0x1F
CS = 1
MR0=0x58
MR1=0x58
MR2=0x58
MR3=0x58
MR4=0x82
MR5=0x1
MR6=0x5
MR7=0x0
MR8=0x1F
MR9=0x1F
MR10=0x1F
MR11=0x1F
MR12=0x1F
MR13=0x1F
MR14=0x1F
MR15=0x1F
MR16=0x1F
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=32 Size=2048MB
Channel 1: LPDDR3, 800MHz
CS = 0
MR0=0x58
MR1=0x58
MR2=0x58
MR3=0x58
MR4=0x2
MR5=0x1
MR6=0x5
MR7=0x0
MR8=0x1F
MR9=0x1F
MR10=0x1F
MR11=0x1F
MR12=0x1F
MR13=0x1F
MR14=0x1F
MR15=0x1F
MR16=0x1F
CS = 1
MR0=0x58
MR1=0x58
MR2=0x58
MR3=0x58
MR4=0x2
MR5=0x1
MR6=0x5
MR7=0x0
MR8=0x1F
MR9=0x1F
MR10=0x1F
MR11=0x1F
MR12=0x1F
MR13=0x1F
MR14=0x1F
MR15=0x1F
MR16=0x1F
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=32 Size=2048MB
256B stride
ch 0 ddrconfig = 0x101, ddrsize = 0x2020
ch 1 ddrconfig = 0x101, ddrsize = 0x2020
pmugrf_os_reg[2] = 0x3AA0DAA0, stride = 0xD
OUT
Boot1: 2019-03-14, version: 1.19
CPUId = 0x0
ChipType = 0x10, 310
SdmmcInit=2 0
BootCapSize=100000
UserCapSize=29820MB
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 = 68658
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


作者: 008kai    时间: 2022-2-22 11:29
zhangzj 发表于 2022-2-22 08:47
可以去掉,因为client和optee os版本不匹配了。
1. 把uboot中optee相关的宏disable掉
CONFIG_OPTEE_CLIEN ...

哥,您能不能写一个详细的移植optee的过程,我在这方面的水平不太行,不胜感激
作者: 008kai    时间: 2022-2-22 15:16
zhangzj 发表于 2022-2-22 08:47
可以去掉,因为client和optee os版本不匹配了。
1. 把uboot中optee相关的宏disable掉
CONFIG_OPTEE_CLIEN ...

大佬,如果论坛上回复不方便,可以通过邮箱请教,下面是我的邮箱:
yunyangxdu@163.com
作者: zhangzj    时间: 2022-2-22 19:15
uboot崩溃打印出来的堆栈下面有提示如何debug,根据提示操作可以打印出调用函数堆栈,trace到哪个函数崩溃

Copy above stack info to a file(eg. dump.txt), and
execute command in your U-Boot project: ./scripts/stacktrace.sh dump.txt
作者: 008kai    时间: 2022-2-22 20:14
zhangzj 发表于 2022-2-22 19:15
uboot崩溃打印出来的堆栈下面有提示如何debug,根据提示操作可以打印出调用函数堆栈,trace到哪个函数崩溃
...

SYMBOL File: ./u-boot.sym

Call trace:

Stack:
       [< 00216058 >]  bootm_find_images+0x40/0xd8
       [< 002086f0 >]  do_booti+0x134/0x194
       [< 0020e8b4 >]  label_boot+0x534/0x580
       [< 0020e9ec >]  handle_pxe_menu+0xec/0x174
       [< 0020ed48 >]  do_sysboot+0x1e4/0x1f4
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 00214954 >]  parse_string_outer+0xdc/0xf4
       [< 00214e24 >]  run_list_real+0x4b8/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00214ce0 >]  run_list_real+0x374/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00214ce0 >]  run_list_real+0x374/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00214ce0 >]  run_list_real+0x374/0x72c
       [< 00214ce0 >]  run_list_real+0x374/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00214ce0 >]  run_list_real+0x374/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 00214954 >]  parse_string_outer+0xdc/0xf4
       [< 00214e24 >]  run_list_real+0x4b8/0x72c
       [< 00214ce0 >]  run_list_real+0x374/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 00229794 >]  do_run+0x58/0x80
       [< 0022a1e0 >]  cmd_process+0xd8/0x10c
       [< 00215068 >]  run_list_real+0x6fc/0x72c
       [< 00215208 >]  parse_stream_outer+0x170/0x67c
       [< 0021490c >]  parse_string_outer+0x94/0xf4
       [< 002296e4 >]  run_command_list+0x38/0x90
       [< 002132f8 >]  main_loop+0x5c/0x6c
       [< 00215e44 >]  run_main_loop+0xc/0x10
       [< 0027a620 >]  initcall_run_list+0x58/0x94
       [< 00215fd0 >]  board_init_r+0x20/0x24
       [< 00201b2c >]  relocation_return+0x4/0x0
这。。。看不懂呀
作者: zhangzj    时间: 2022-2-23 09:02
uboot关掉AVB试看看
CONFIG_ANDROID_AVB=n
作者: 008kai    时间: 2022-2-23 19:13
zhangzj 发表于 2022-2-23 09:02
uboot关掉AVB试看看
CONFIG_ANDROID_AVB=n

仍然是不断重启。
我在Kernel中的rk3399pro-toybrick-prod-linux.dts文件添加以下内容,用以设置reserved memory
        firmware {
                opteeptee {
                        compatible = "linaro,optee-tz";
                        method = "smc";
                };
        };

        reserved-memory {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;

                reservedptee@0x08400000 {
                        no-map;
                        reg = <0x08400000 0x02000000>;
                };
        };
我这样写有问题嘛?

作者: 008kai    时间: 2022-2-25 10:59
zhangzj 发表于 2022-2-23 09:02
uboot关掉AVB试看看
CONFIG_ANDROID_AVB=n

我尝试使用github上最新的u-boot重新构建,但是我不知道该使用哪个defconfig文件,evb-rk3399_defconfig??我将toybrick提供的u-boot中的rk3399pro_defconfig文件添加到github上的u-boot中,编译时出现以下信息:
Update the device-tree stdout alias from U-Boot (OF_STDOUT_VIA_ALIAS) [N/y/?] n
Extra Options (DEPRECATED) (SYS_EXTRA_OPTIONS) []
Text Base (SYS_TEXT_BASE) [] (NEW)
应该是需要提供Text Base地址,我觉得是u-boot的烧录地址,如果不正确请指正我。我输入了0x00400000。
编译会报错:
drivers/usb/host/ohci.h:153:3: error: #error "CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS undefined!"
# error "CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS undefined!"
   ^~~~~
drivers/usb/host/ohci.h:188:20: error: ‘CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS’ undeclared here (not in a function)
   __u32 portstatus[CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS];
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/host/ohci-generic.c:15:3: error: #error "Generic OHCI driver requires CONFIG_USB_OHCI_NEW"
# error "Generic OHCI driver requires CONFIG_USB_OHCI_NEW"
   ^~~~~
make[1]: *** [scripts/Makefile.build:279: drivers/usb/host/ohci-generic.o] Error 1
make: *** [Makefile:1698: drivers/usb/host] Error 2

这是什么原因呢,如何修改?




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3