添加系統服務
系統服務的添加不是必需的,為方便對底層驅動的管理和對外部設備的擴展,可將安全驅動的接口接入到某個系統服務中,通過系統服務向外界暴露調用接口,以便上層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),
#include<tee/tee_test.h >
上述三個函數的具體實現在tee_test.c文件中,讀者可自行查閱這三個接口函數的實現。
-
驅動
+關注
關注
12文章
1845瀏覽量
85417 -
設備
+關注
關注
2文章
4530瀏覽量
70761 -
代碼
+關注
關注
30文章
4808瀏覽量
68816 -
系統
+關注
關注
1文章
1018瀏覽量
21384
發布評論請先 登錄
相關推薦
評論