示例代碼獲取和集成
本示例中的驅(qū)動(dòng)只實(shí)現(xiàn)了對(duì)內(nèi)存的讀寫(xiě)操作,并提供了測(cè)試使用的TA和CA。
讀者可使用如下指令從GitHub上獲取到示例源代碼:
git clone https://GitHub.com/shuaifengyun/opentee_driver.git
下載完代碼后就需要將該TA和CA集成到OP-TEE中,需修改OP-TEE源代碼build目錄下的qemu.mk(開(kāi)發(fā)者板級(jí)對(duì)應(yīng)的mk文件)和common.mk文件,同時(shí)也需要將安全驅(qū)動(dòng)集成到OP-TEE的內(nèi)核中。
然后編譯整體OP-TEE后就能夠使用該份示例代碼來(lái)驗(yàn)證本書(shū)提供的安全驅(qū)動(dòng)示例是否運(yùn)行正常。
獲取到示例代碼后將opentee_driver/my_test目錄全部復(fù)制到op-tee的根目錄下,再切換到根目錄的build目錄中,然后使用git apply命令合入補(bǔ)丁文件后就可完成測(cè)試使用的TA和CA集成到OP-TEE,合入全部補(bǔ)丁的操作步驟如下:
1)將示例代碼中的my_test_common_3.0.0.patch文件和my_test_qemu_3.0.0.patch文件復(fù)制到build目錄中,將0001-Integrate-secure-driver-test-into-op-tee.patch文件復(fù)制到optee_os目錄中。
2)切換到build目錄,使用如下命令合入補(bǔ)丁:
git apply my_test_common_3.0.0.patch
git apply my_test_qemu_3.0.0.patch
3)切換到optee_os目錄,使用如下命令合入安全驅(qū)動(dòng)在內(nèi)核中的補(bǔ)丁:
git am 0001-Integrate-secure-driver-test-into-op-tee.patch
將補(bǔ)丁合入完成后就可使用make -f qemu.mk all編譯整個(gè)工程,然后使用make -f qemu.mk run-only來(lái)啟動(dòng)OP-TEE,在啟動(dòng)的正常世界狀態(tài)的終端執(zhí)行secStorTest命令就能實(shí)現(xiàn)該示例的CA對(duì)TA的調(diào)用。示例代碼的運(yùn)行效果如圖22-3所示。
3.2 驅(qū)動(dòng)實(shí)現(xiàn)
開(kāi)發(fā)一個(gè)安全驅(qū)動(dòng)時(shí),需要在optee_os/core/drivers目錄中建立該安全驅(qū)動(dòng)的源文件,在源文件中實(shí)現(xiàn)驅(qū)動(dòng)的初始化函數(shù)、操作設(shè)備的接口函數(shù)(read、write、ioctl),具體的接口函數(shù)由開(kāi)發(fā)者自行定義。
若該驅(qū)動(dòng)需要在系統(tǒng)啟動(dòng)過(guò)程中執(zhí)行一些初始化操作則可使用driver_init宏進(jìn)行定義, 編譯完成后需要被執(zhí)行的內(nèi)容將會(huì)被保存到鏡像文件的initcall段中, 這些使用driver_init宏定義的內(nèi)容將在OP-TEE啟動(dòng)時(shí)被調(diào)用。 (相當(dāng)于提前為驅(qū)動(dòng)的調(diào)用準(zhǔn)備了環(huán)境與初始條件)
示例源代碼中的driver_test.c文件需要放在optee_os/core/drivers目錄中,然后修改optee_os/core/drivers目錄下的sub.mk文件,將driver_test.c文件添加編譯系統(tǒng)中。在sub. mk文件中添加如下內(nèi)容:
srcs-y += driver_test.c
若需要使用宏的方式來(lái)控制該驅(qū)動(dòng)的編譯,可將添加到sub.mk的內(nèi)容修改成“srcs-$(CFG_XXX) += driver_test.c”,然后在optee_os/mk/config.mk文件中定義CFG_XXX變量,通過(guò)將CFG_XXX變量賦值成y或n來(lái)控制該驅(qū)動(dòng)是否需要被編譯進(jìn)系統(tǒng)。 (這個(gè)還是蠻有用的)
該驅(qū)動(dòng)對(duì)應(yīng)的頭文件driver_test.h文件需保存到optee_os/core/inlcude/drivers目錄中,該文件中聲明了該驅(qū)動(dòng)暴露給外界調(diào)用的接口和相關(guān)結(jié)構(gòu)體。
實(shí)現(xiàn)完驅(qū)動(dòng)接口實(shí)現(xiàn),現(xiàn)在來(lái)實(shí)現(xiàn)添加系統(tǒng)服務(wù)
-
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1844瀏覽量
85355 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3034瀏覽量
74137 -
設(shè)備
+關(guān)注
關(guān)注
2文章
4522瀏覽量
70719 -
代碼
+關(guān)注
關(guān)注
30文章
4801瀏覽量
68735
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論