对具有TrustZone的ARM处理器来说,为了保证运行其在EL3,安全侧和非安全侧的不同软件系统,其一般分为多个部分被bootloader分别进行加载运行,其流程在Linaro的Trust Firmware中有介绍,其基本流程如下图所示
当系统复位之后,先通过第一级的Bootloader 这里叫做 BL1进行启动其会加载BL2的系统加载器,而BL2 会将BL31 Trust Firmware, BL32 安全OS, BL33 Linux加载到内存的位置中,然后切换到BL32执行,BL32执行完初始化之后会通过BL31 的代码切换到BL33 进行对Linux系统的初始化工作,然后整个系统上的不同安全区域的系统就都正常运行起来了。
而当系统正常运行时,其基本结构如下图所示
Linux只能通过其TrustZone的驱动程序来切换到安全OS,其中Linux向TrustZone传递数据的方式大部分是通过内存来完成的,而TrustZone向Linux的数据传递也大多通过内存来进行。