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

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

3天内不再提示

安全驱动如何添加系统服务

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

添加系统服务

系统服务的添加不是必需的,为方便对底层驱动的管理和对外部设备的扩展,可将安全驱动的接口接入到某个系统服务中,通过系统服务向外界暴露调用接口,以便上层TA可以使用该安全驱动。

在本示例中建立的系统服务的源代码为tee_test.c文件,需将该文件保存到optee_os/core/tee目录中,同时将tee_test.h文件保存到optee_os/core/include/tee目录中,然后修改optee_os/core/tee目录中的sub.mk文件,添加“srcs-y += tee_test.c”,将tee_test.c集成到编译系统中。

也可使用宏来控制该系统服务的编译,其实现方法与上一节相同。

在tee_test.c文件中使用service_init宏来定义该系统服务的初始化函数(tee_test_init),该初始化函数将会被编译到OP-TEE的初始化段中,OP-TEE启动时将会执行服务段中包含的函数,调用tee_test_init函数初始化该系统服务。

到这里明白了driver_init和service_init的差异。一个是直接注册驱动的系统调用,一个注册到系统服务。

3.4 添加系统调用

上层的TA运行于OP-TEE的用户空间,如果上层的TA需要调用安全驱动,则需通过调用系统调用接口的方式来调用安全驱动提供的操作接口。

若要在TA中使用本示例中的安全驱动,则还需在OP-TEE中增加该驱动对应的系统调用。包括用户空间接口的定义和内核空间接口的定义,关于OP-TEE中系统调用的实现原理可参阅第16章。(小的马上后面补上)

图片

1.用户空间代码的修改

修改optee_os/lib/libutee/arch/arm/utee_syscalls_asm.S文件,添加如下内容:

UTEE_SYSCALL utee_testDriver_write, TEE_SCN_TESTDRIVER_WRITE,3
        UTEE_SYSCALL utee_testDriver_read, TEE_SCN_TESTDRIVER_READ,3
        UTEE_SYSCALL utee_testDriver_dump, TEE_SCN_TESTDRIVER_DUMP,2

utee_testDriver_xxx是在TA中调用该驱动时使用的函数,

TEE_SCN_TESTDRIVER_XXX是该系统调用对应的索引值。

上层TA调用utee_testDriver_xxx函数后会进入OP-TEE的内核空间,系统通过查找TEE_SCN_TESTDRIVER_XXX对应的接口来找到该功能在OP-TEE内核中的实现。

最后的数字表示调用该接口时需要代入的参数的个数。

修改optee_os/lib/libutee/include/utee_syscalls.h文件,添加如下内容,申明上述三个函数接口。在TA的源代码中包含该头文件后就可调用这三个接口来对该安全驱动进行调用。

TEE_Result utee_testDriver_write(void*buf,size_t blen,size_t offset);
        TEE_Result utee_testDriver_read(void*buf,size_t blen,size_t offset);
        TEE_Result utee_testDriver_dump(void*buf,size_t blen);

修改optee_os/lib/libutee/include/tee_syscall_numbers.h文件,添加上述三个系统调用接口的索引值,并修改TEE_SCN_MAX的值,需要修改和添加的内容如下:

#define TEE_SCN_TESTDRIVER_WRITE              71
#define TEE_SCN_TESTDRIVER_READ           72
#define TEE_SCN_TESTDRIVER_DUMP           73
#define TEE_SCN_MAX                73

2.内核空间代码的修改

修改optee_os/core/arch/arm/tee/arch_svc.c文件中系统调用数组变量tee_svc_syscall_table的内容,将上述系统调用对应的内核层接口添加到该数组中,并包含申明这三个接口的头文件,在该文件中添加的内容如下:

SYSCALL_ENTRY(syscall_testDriver_write),
        SYSCALL_ENTRY(syscall_testDriver_read),
        SYSCALL_ENTRY(syscall_testDriver_dump),
#includetee/tee_test.h >

上述三个函数的具体实现在tee_test.c文件中,读者可自行查阅这三个接口函数的实现。

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

    关注

    12

    文章

    1818

    浏览量

    85104
  • 设备
    +关注

    关注

    2

    文章

    4450

    浏览量

    70492
  • 代码
    +关注

    关注

    30

    文章

    4721

    浏览量

    68213
  • 系统
    +关注

    关注

    1

    文章

    1006

    浏览量

    21291
收藏 人收藏

    评论

    相关推荐

    [分享]windows 2003服务安全设置方法

    系统危险文件的访问权限,只留管理组成员。  此篇文章献给对服务安全和个人PC安全方面有需要的朋友。  详细文章转自:  http
    发表于 12-14 10:20

    基于短消息的移动安全通信系统

    针对目前移动公网中短信系统存在的不安全因素,提出了一种安全短消息通信系统。然后基于实时主动防护与管控的安全角度,介绍了
    发表于 05-06 09:04

    租用服务器后如何进行服务安全防护

    基石,对网站的后续维护和发展起到重要作用,我们在租用服务器之后,如何做好安全防护也成为重中之重。河南耀磊商务总结了6点服务器在安装操作系统完毕之后需要做的
    发表于 08-16 11:27

    如何最大限度地提升自助服务设备的安全性?

    随着市场对消费者自动化服务及自动零售的需求不断提升,选择正确的安全解决方案对自助服务设计来说极为关键。合适的电子门禁解决方案可为自身服务应用提供安全
    发表于 09-24 06:10

    交通安全统筹系统

    156开-1335-心3228自2019年以来公司成立交通安全统筹系统研发专项项目组,两年来, 不断对系统,数据集合,流转等甚至对交通安全增值服务
    发表于 10-28 14:04

    车辆安全统筹信息系统

    156开-1335-心3228自2019年以来公司成立交通安全统筹系统研发专项项目组,两年来, 不断对系统,数据集合,流转等甚至对交通安全增值服务
    发表于 10-28 14:06

    有什么方法可以在Android 8.1中添加一个系统服务

    有什么方法可以在Android 8.1中添加一个系统服务呢?
    发表于 02-14 08:01

    嵌入式Linux的USB驱动添加及应用

    驱动程序添加是嵌入式Linux开发的关键技术之一。本文主要分析为MCF5272 添加USB驱动程序的详细过程, 简述UFTP 协议(USB 文件传输协议), 并给出一个文件传输的应用示
    发表于 04-15 11:58 12次下载

    如何添加NandFlash驱动

    这个文档简单介绍了如何在 H-FLASHER 中添加NAND FLASH 驱动。基于这个文档,用户可以根据 自己的实际需求修改已有的NAND FLASH 驱动程序,或添加新的NAND
    发表于 04-01 10:21 0次下载

    本体驱动的IT服务管理系统模型研究_孙少雄

    本体驱动的IT服务管理系统模型研究_孙少雄
    发表于 03-19 11:28 0次下载

    分析微软在云服务添加的新安全特性

    Office365和Azure云服务将很快会推出新的安全服务和特性,并且报表能力也将加强。 微软正在为Office365和Azure云服务增加一系列新的
    发表于 10-12 17:21 0次下载

    添加或删除windows系统服务管理工具

    添加或删除windows系统服务
    发表于 03-27 14:13 0次下载

    使用系统服务和器件驱动器的迁移步骤介绍

    在本培训模块中,我们将带您了解将使用系统服务和器件驱动器1.0 API的VisualDSP++® Blackfin项目迁移到CrossCore® Embedded Studio及系统
    的头像 发表于 05-21 06:19 1902次阅读
    使用<b class='flag-5'>系统</b><b class='flag-5'>服务</b>和器件<b class='flag-5'>驱动</b>器的迁移步骤介绍

    F1C100S添加USB驱动

    F1C100S添加USB驱动
    的头像 发表于 02-15 14:58 2082次阅读
    F1C100S<b class='flag-5'>添加</b>USB<b class='flag-5'>驱动</b>

    labview怎么添加设备驱动

    添加设备驱动是使用LabVIEW进行设备控制和数据采集的关键步骤之一。本文将向您介绍如何在LabVIEW中添加设备驱动程序。 在开始之前,您需要明确了解所要
    的头像 发表于 01-02 16:10 2116次阅读