0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

安全驱动示例代码和实现

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-10-30 16:07 次阅读

示例代码获取和集成

本示例中的驱动只实现了对内存的读写操作,并提供了测试使用的TA和CA。

读者可使用如下指令从GitHub上获取到示例源代码:

git clone https://GitHub.com/shuaifengyun/opentee_driver.git

下载完代码后就需要将该TA和CA集成到OP-TEE中,需修改OP-TEE源代码build目录下的qemu.mk(开发者板级对应的mk文件)和common.mk文件,同时也需要将安全驱动集成到OP-TEE的内核中。

然后编译整体OP-TEE后就能够使用该份示例代码来验证本书提供的安全驱动示例是否运行正常。

获取到示例代码后将opentee_driver/my_test目录全部复制到op-tee的根目录下,再切换到根目录的build目录中,然后使用git apply命令合入补丁文件后就可完成测试使用的TA和CA集成到OP-TEE,合入全部补丁的操作步骤如下:

1)将示例代码中的my_test_common_3.0.0.patch文件和my_test_qemu_3.0.0.patch文件复制到build目录中,将0001-Integrate-secure-driver-test-into-op-tee.patch文件复制到optee_os目录中。

2)切换到build目录,使用如下命令合入补丁:

git apply my_test_common_3.0.0.patch
        git apply my_test_qemu_3.0.0.patch

3)切换到optee_os目录,使用如下命令合入安全驱动在内核中的补丁:

git am 0001-Integrate-secure-driver-test-into-op-tee.patch

将补丁合入完成后就可使用make -f qemu.mk all编译整个工程,然后使用make -f qemu.mk run-only来启动OP-TEE,在启动的正常世界状态的终端执行secStorTest命令就能实现该示例的CA对TA的调用。示例代码的运行效果如图22-3所示。

图片

3.2 驱动实现

开发一个安全驱动时,需要在optee_os/core/drivers目录中建立该安全驱动的源文件,在源文件中实现驱动的初始化函数、操作设备的接口函数(read、write、ioctl),具体的接口函数由开发者自行定义。

若该驱动需要在系统启动过程中执行一些初始化操作则可使用driver_init宏进行定义, 编译完成后需要被执行的内容将会被保存到镜像文件的initcall段中, 这些使用driver_init宏定义的内容将在OP-TEE启动时被调用。 (相当于提前为驱动的调用准备了环境与初始条件)

示例源代码中的driver_test.c文件需要放在optee_os/core/drivers目录中,然后修改optee_os/core/drivers目录下的sub.mk文件,将driver_test.c文件添加编译系统中。在sub. mk文件中添加如下内容:

srcs-y += driver_test.c

若需要使用宏的方式来控制该驱动的编译,可将添加到sub.mk的内容修改成“srcs-$(CFG_XXX) += driver_test.c”,然后在optee_os/mk/config.mk文件中定义CFG_XXX变量,通过将CFG_XXX变量赋值成y或n来控制该驱动是否需要被编译进系统。 (这个还是蛮有用的)

该驱动对应的头文件driver_test.h文件需保存到optee_os/core/inlcude/drivers目录中,该文件中声明了该驱动暴露给外界调用的接口和相关结构体。

实现完驱动接口实现,现在来实现添加系统服务

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动
    +关注

    关注

    11

    文章

    1718

    浏览量

    84371
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72793
  • 设备
    +关注

    关注

    2

    文章

    4172

    浏览量

    69327
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66835
收藏 人收藏

    评论

    相关推荐

    实现多种重映射综合示例_《OpenCV3编程入门》书本配套源代码

    《OpenCV3编程入门》书本配套源代码:实现多种重映射综合示例
    发表于 06-06 15:39 4次下载

    基于Arduino无驱动板程序示例

    基于Arduino无驱动板程序示例
    发表于 12-17 21:16 2次下载

    excel vba代码 示例讲解

    excel vba代码 示例讲解
    发表于 09-07 09:36 24次下载
    excel vba<b class='flag-5'>代码</b> <b class='flag-5'>示例</b>讲解

    MSP430F23x0示例代码

    MSP430F23x0示例代码
    发表于 05-02 17:11 8次下载
    MSP430F23x0<b class='flag-5'>示例</b><b class='flag-5'>代码</b>

    AD593X代码示例

    AD593X代码示例
    发表于 03-23 08:18 14次下载
    AD593X<b class='flag-5'>代码</b><b class='flag-5'>示例</b>

    BeMicro代码示例

    BeMicro代码示例
    发表于 05-10 12:21 0次下载
    BeMicro<b class='flag-5'>代码</b><b class='flag-5'>示例</b>

    单片机实现PT2262解码示例代码

    单片机实现PT2262解码示例代码
    发表于 11-16 15:21 43次下载
    单片机<b class='flag-5'>实现</b>PT2262解码<b class='flag-5'>示例</b><b class='flag-5'>代码</b>

    华为游戏服务示例代码教程案例

    概述 游戏服务kit安卓示例代码集成了华为游戏服务的众多API,提供了示例代码程序供您参考和使用,下面是对示例
    发表于 04-11 11:09 4次下载

    基于keil的AD7366示例代码

    基于keil的AD7366示例代码分享
    发表于 10-08 14:58 1次下载

    教程 5:BLE 安全示例

    教程 5:BLE 安全示例
    发表于 03-15 20:34 0次下载
    教程 5:BLE <b class='flag-5'>安全</b><b class='flag-5'>示例</b>

    RAA489204 示例代码软件手册

    RAA489204 示例代码软件手册
    发表于 06-30 19:23 0次下载
    RAA489204 <b class='flag-5'>示例</b><b class='flag-5'>代码</b>软件手册

    教程 5:BLE 安全示例

    教程 5:BLE 安全示例
    发表于 07-06 19:45 0次下载
    教程 5:BLE <b class='flag-5'>安全</b><b class='flag-5'>示例</b>

    安全驱动示例的测试

    通过TA调用到该示例安全驱动,指令说明如下。 1.向驱动中写入数据 my_test writeDev [offset] [len] offset:表示需将数据写入
    的头像 发表于 10-30 16:32 320次阅读
    <b class='flag-5'>安全</b><b class='flag-5'>驱动</b><b class='flag-5'>示例</b>的测试

    自己编写函数示例代码很难吗?分享几个示例

    Q A 问: Arduino Uno的函数示例 我决定自己编写函数示例代码,因为这应该是Arduino中的基本示例。网络上确实有关于使用函数的文档,但是,如果要尝试使用
    的头像 发表于 11-16 16:05 228次阅读
    自己编写函数<b class='flag-5'>示例</b><b class='flag-5'>代码</b>很难吗?分享几个<b class='flag-5'>示例</b>!

    使用TSIP驱动程序(Azure RTOS)的TLS实现示例

    电子发烧友网站提供《使用TSIP驱动程序(Azure RTOS)的TLS实现示例.pdf》资料免费下载
    发表于 01-31 10:13 3次下载
    使用TSIP<b class='flag-5'>驱动</b>程序(Azure RTOS)的TLS<b class='flag-5'>实现</b><b class='flag-5'>示例</b>