/* ldr pc, [pc, #<label - instr + 4>] * LDR (immediate) - ARMv7M ARM section A7.7.42 * 1111;1 00 0; 0 10 1; <Rn - 1111>; <Rt - 1111>; <imm12> (Encoding T3) */#define LDR_PC_PC_IMM_OPCODE(instr, label) \ ((uint32_t) (0xF000F8DFUL | ((((uint32_t) (label) - ((uint32_t) (instr) + 4)) & 0xFFFUL) << 16))
这段代码是往PC寄存器中 存放数值么?其中0XF000F8DFUL是PC寄存器的值?
我可以在这个问题下 继续问你一个关于mbed uvsior的问题么?在uvisor中全局变量默认归属于public BOX,这样也就不安全了,一般secure BOX在进行相关功能实现时,不可避免需要用到全局变量,为了将这些全局变量设置为专属于secure BOX ,比如我定义了一个my_box_context类型的结构类型的全局变量,
一般都是通过 #define uvisor_ctx ((my_box_context *)__uvisor_ctx) 就可以实现将my_box_context 绑定到secure BOX。不知道这样理解是否正确。
uvisor 存在很久了,后续会有逐步升级的安全方案,不是特别建议在目前阶段深入下去.
此宏定义本身仅是一个结构声明, 需要用到 UVISOR_BOX_CONFIG 进行绑定, 具体可参见:https://github.com/ARMmbed/mbed-os-example-uvisor-number-store
是啊,感觉资料好少,不过现在换课题也来不及了,只能硬着头皮干下去了。我想继续问一下uVisor内存分配的一些问题。
在应用程序中使能 uVisor后,一般会用到,一下几个函数
通常在public BOX使用
UVISOR_SET_PAGE_HEAP(18*1024, 5);//分配一个90K的内存池。
在secue BOX使用
UVISOR_BOX_HEAPSIZE(6*1024);UVISOR_BOX_MAIN(aes_client_box_main,osPriorityNormal,4*1024);UVISOR_BOX_CONFIG(aes_client_box,acl,256,aes_box_client);
我想问一下,这些内存之间的关系
1)UVISOR_BOX_HEAPSIZE获得内存空间是来自于public BOX中分配的90K的内存池么?如果不是,那此90K的内存空间只是通过
secure_malloc,secure_calloc来获取么?
2)UVISOR_BOX_MAIN以及UVISOR_BOX_CONFIG中分配的内存空间是来自于UVISOR_BOX_HEAPSIZE分配的内存空间么?
之前写程序时,感觉UVISOR_BOX_MAIN是,UVISOR_BOX_CONFIG不是?不知道理解对不对