Toybrick

楼主: 008kai

TB-RK3399ProD optee---找不到tee的驱动结点/dev/tee0和/dev/teepriv0

008kai

注册会员

积分
115
11#
 楼主| 发表于 2022-1-29 20:59:30 | 只看该作者

据我所知道的optee的版本号有3.7  3.10等,1.1.0是不是过于古老了?还是命名规范不同造成的?我可不可以使用官方提供的optee os,然后编译自己的3.7或者3.8版本的optee client 和optee xtest?
回复

使用道具 举报

008kai

注册会员

积分
115
12#
 楼主| 发表于 2022-2-3 18:12:39 | 只看该作者

我想编译3.7版本的optee test、optee example,optee example依赖optee os,我该使用哪个版本的optee os?我没找到有1.1版本的optee os
回复

使用道具 举报

zhangzj

超级版主

积分
1117
13#
发表于 2022-2-8 09:32:09 | 只看该作者
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

注册会员

积分
115
14#
 楼主| 发表于 2022-2-8 17:23:00 | 只看该作者
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

超级版主

积分
1117
15#
发表于 2022-2-9 09:02:15 | 只看该作者
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

注册会员

积分
115
16#
 楼主| 发表于 2022-2-9 21:36:27 | 只看该作者
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

注册会员

积分
115
17#
 楼主| 发表于 2022-2-9 22:49:23 | 只看该作者
本帖最后由 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

注册会员

积分
115
18#
 楼主| 发表于 2022-2-12 18:50:35 | 只看该作者
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

超级版主

积分
1117
19#
发表于 2022-2-16 09:02:11 | 只看该作者
你这个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

注册会员

积分
115
20#
 楼主| 发表于 2022-2-17 20:29:41 | 只看该作者
本帖最后由 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进入系统
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表