问题答疑
文章平均质量分 58
每更10篇,价格上调10块,99封顶。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
代码改变世界ctw
12年手机安全、汽车安全、芯片安全开发经验。擅长Trustzone/TEE/安全的设计与开发。作有《Armv8/Armv9架构从入门到精通》、《Trustzone/TEE/安全快速入门班》、《Secureboot从入门到精通 训练营》等课程。
展开
-
【目录】ARM/TEE/ATF/SOC微信群-问题集锦
问题列表原创 2023-06-02 20:20:18 · 737 阅读 · 4 评论 -
L1-I Cache miss了时会去L1-D中再lookup一下
然后你强制把RO改成RW,然后修改这块代码段的内容。这是这块数据 会缓存到L1-D, 然后PC执行到这块附近时,可能也会缓存到L1-I。此时L1D、L1-I都是最新指令。),找不到时,即使refill也应该refill到icache,符合逻辑。那,如果发生了自修改代码后,新代码在L1-D中。可能L1-D和L1-I 都存在了, L1-I hit了,也不会去lookup L1-D。1、先说是L1-I Cache miss了,会在L1-D中lookup。2、又说,lookup不会导致L1-D refill。原创 2023-11-06 09:58:48 · 132 阅读 · 0 评论 -
Armv8/Armv9的VIPT的别名问题是如何解决的
https://www.cse.unsw.edu.au/~cs9242/02/lectures/03-cache/node8.htmlhttps://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/Virtual-Memory-System-Architecture–VMSA-/Address-mapping-restrictions原创 2023-10-26 01:01:55 · 385 阅读 · 0 评论 -
有关cache的dirty比特位和Valid比特位的理解
问 :想问一个问题,比如说系统开始在Cache中寻找Cache line命中后发现缓存行无效,然后是将有效的内容直接放到这个Cache line 中呢?还是认为Cache没有命中,按照算法驱逐一个Cache line在将有效数据搬运到这个被驱逐的Cache中呢?想问一下,有没有那种开源的项目是模仿ACE总线或其他一致性总线的?cache匹配时,是说TAG匹配且Valid有效,才是命中。Valid清除后,缓存行无效。可以理解成无效就相当于没有。Valid是有效位,清除后是无效,清除后就视为不存在吧。原创 2023-09-20 19:08:48 · 631 阅读 · 0 评论 -
bl31可以在aarch32上执行吗
你去查看armv8-aarch32的手册,也会发现,TEE OS和secure monitor在同一个exception level中。你去查看armv7的手册,也会发现,TEE OS和secure monitor在同一个exception level中。都在Secure PL1中。问:bl31可以在aarch32上执行吗,我看atf的源码里没有aarch32的启动代码。另外你也可以发现在optee os中也实现了secure monitor的代码,路径。其实这也是架构决定的。原创 2023-09-20 19:06:06 · 118 阅读 · 0 评论 -
ARM9 VIVT cache架构中MMU的缓存属性如何理解
二十五年以前的ARM9就不要学习了。学这么古董的技术有啥意思呢?下次再有人咨询或探讨该类问题,我也懒得回答和探讨了。原创 2023-09-20 19:00:17 · 591 阅读 · 0 评论 -
ATF编译报错,更新工具链后解决
unknown value armv8.5-a’ for -marchcc1: error: unknown value cortex-a55’ for -tune原创 2023-09-20 18:48:03 · 214 阅读 · 0 评论 -
Uboot实现PSCI
uboot如果跑在EL3,是可以支持psci的,但需要考虑的是:Uboot执行完后,不能让其从内存消失。即我们需要在Kernel dts中,把uboot所使用的内存给reserved掉,不让kernel管理这块内存。问 : 8核的A72 多核启动 目前用的spin-table的方式,想尝试一下psci方式,是必须采用ATF 软件架构来做吗, 不用ATF可以吗?👉👉👉 【目录】ARM/TEE/ATF/SOC微信群问题记录 👈👈👈。原创 2023-08-01 22:46:45 · 430 阅读 · 0 评论 -
SMMU输入40位虚拟地址/PE输入48位虚拟地址,如何共用页表
我们现用armv8 cpu + SMMU v3;需到这么一个问题,系统是用的40bits 总线, device + subnoc + smmu + main noc 结构,我的问题是,device 发出的是 VA (虚拟地址),如果我们用的系统 OS, 它的虚拟地址为 48bit 空间。刚刚问了一个kenrel专家,他说申请内存的时候加上 GFP_DMA32 flag, 然后申请到的物理地址都在4G一下,那虚拟地址就是物理地址+offset,也就能保证虚拟地址在40BIT区间呢.原创 2023-07-18 22:29:06 · 363 阅读 · 0 评论 -
TCR中的缓存和共享属性与PTE中的缓存和共享属性的区别是啥?
Translation Table Walk访问页表的缓存策略,这里的页表到底是缓存到cache中,还是缓存到PTW中呢?原创 2023-07-13 02:09:18 · 747 阅读 · 0 评论 -
多核处理器一般有几个看门狗吗? 是一个核对应一个看门狗还是多个核共用一个看门狗啊
在多核处理器中,通常每个核心都有自己的独立看门狗(Watchdog)。这意味着每个核心都有一个专门的看门狗用于监控该核心的运行状态。看门狗是一种硬件计时器,用于监控系统的运行情况。它可以检测到系统是否出现故障或异常,并在检测到问题时采取相应的措施,例如重启系统或执行其他预定义的操作。每个核心都有自己的独立看门狗的好处是可以实现更精细的监控和处理。每个核心都能够独立地监测自身的运行状态,并在需要时采取适当的措施,而不会干扰其他核心的正常操作。原创 2023-07-13 01:48:36 · 369 阅读 · 2 评论 -
如何理解gic控制器中的originating PE Banked和target PE Banked
相对于originating PE,我们先看下gicv3架构,在gic组件中只有一个Distributor组件,其寄存器并不是banked,如果cpu4和cpu5同时都产生一个SGI=1的中断,在distrubutor中事实上是只有1份拷贝的,所以两个中断只会被处理一次。GICv2 中,SGI 对于 originating PE(即生成中断的处理器)和 target PE(即接收中断的处理器)是 banked 的。GICv3 中,SGI 仅仅 target PE(即接收中断的处理器)是 banked 的。原创 2023-06-15 08:00:09 · 141 阅读 · 0 评论 -
gicr_waker的操作在哪里
gicr_waker的操作在哪里原创 2023-06-15 07:39:32 · 112 阅读 · 0 评论 -
在armv8架构中,有哪些是serror
(3)、RAS(Reliability, Availability, and Serviceability)错误:一些对于系统的可靠性、可用性和可维护性有影响的错误可能会触发 SError。(2)、ECC(Error Correction Code)错误:在访问带有错误校验的内存(如ECC内存)时,如果发现错误校验失败,可能会产生SError。2、其实呢,大多数Serror都是实现定义的,真正实现的serror就没有多少个。Serror(也称System Error),是异步异常的一种,一般是来自。原创 2023-06-15 06:59:36 · 642 阅读 · 0 评论 -
Armv8架构,在中断中,又触发了同步异常,那么ELR_ELX寄存器会被覆盖掉吗
然而,当在处理一个异常的过程中,如果再次发生了一个同步异常,那么新的同步异常会更改 ELR_ELx 的值,因为新的异常需要将其当前的 PC 值保存到 ELR_ELx 中。2、在optee_os的代码的异步异常代码中似乎是没有保存ELR_EL1,所以在optee os的irq处理时,如果再次发生同步异常,那么此时ELR_EL1会被覆盖,程序将崩溃。1、如果是在异步异常中断的入口,还没来得及保存ELR_EL1呢,就触发了同步异常,那么此时ELR_EL1会被覆盖,程序将崩溃。3、同步异常是可以抢占同步异常。原创 2023-06-15 06:54:52 · 137 阅读 · 0 评论 -
在kernel中产生serror
serror中的逻辑就是调用“panic()"函数,如果将这里的panic函数注释掉,linux kernel是能进入到console界面的。2、然后再做了一个含有ATF的版本,启动流程是bootrom—spl—atf—uboot—linux kernel。在ATF版本中,在linux kernel启动的时候,在开启daif之后的下一句指令,就会触发serror。其实在开启daif之前,系统里就已经产生了serror信号,然后开启daif后就立即处理serror信号。原创 2023-06-09 17:52:35 · 190 阅读 · 0 评论 -
MMU翻译的时候以哪种level去执行是什么意思
以哪个el去执行是什么意思?执行这条指令就会切到切换指令里指定的el吗?就是使用EL2 Translation regime完成地址翻译。在一个core中,至少有一下Translation regime,原创 2023-06-13 10:29:57 · 596 阅读 · 0 评论 -
wfe进不了standby模式怎么办
请教大佬们一个问题,我在调cpu的热插拔,拔核时调到atf里执行pwr_domain_off时候,本来想法是想让cpu进入wfe,插核时sev唤醒,但是目前现象是wfe不起作用,cpu接着往后跑了,可能原因大概有哪些呢?我那个是因为gtimer一直产生中断,导致wfe睡不下去。zebu上跑起来,然后抓波形,asic看波形能找出来,纯软件看不出来啥了。我是走拔核流程时,本来打算在atf里wfe住,死活进不了wfe,后来在wfe前关了cntkctl_el1,退出wfe在打开就可以了。原创 2023-06-14 11:46:17 · 441 阅读 · 0 评论 -
optee共享内存shadow buffer的作用
当 TEE 需要处理来自 REE 的数据时,为了避免 REE 在处理过程中更改这些数据,OP-TEE 会创建一个在 TEE 中的 “shadow buffer”,并将 REE 的数据复制到这个 “shadow buffer” 中。在信任执行环境 (TEE) 和不受信任的执行环境 (REE) 之间共享数据时,OP-TEE (Open Portable Trusted Execution Environment) 使用了一种叫做 “shadow buffer” 的内存管理机制。原创 2023-06-13 17:48:36 · 202 阅读 · 0 评论 -
PSCI和SCMI之间的关系?
PSCI是一种接口标准,用于协调系统中的不同设备之间的电源状态转换,以实现系统的低功耗和高效能。PSCI定义了一组通用的API,可以让系统中的设备相互通信,以协调电源状态转换。SCMI是一种系统控制和管理接口,用于实现系统中不同设备的通信和管理。SCMI标准包含一组API,可以让系统中的不同设备相互通信和控制,以实现系统的资源管理和优化。简而言之,PSCI和SCMI是两种互补的接口标准,PSCI主要用于协调系统中的电源状态转换,而SCMI则用于实现设备之间的通信和管理。原创 2023-03-18 09:42:16 · 887 阅读 · 0 评论 -
问答:TA如何支持多线程
TA如何支持多线程原创 2023-04-11 18:06:46 · 167 阅读 · 0 评论 -
在ATF的异常处理函数中如何打印log
问题:atf 由于smc 陷入,软件导致的对齐异常,里面进入了 plat_panic_handler ,就直接挂死了,想看错误现成,有什么方法么,我看了下atf 的 DEBUG 和 CRASH_REPORTING 都是开的,没想明白为什么没有错误现场。👉👉👉 【目录】ARM/TEE/ATF/SOC微信群问题记录 👈👈👈。答案:crash打印需要实现crash_putc函数。原创 2023-06-11 00:30:13 · 294 阅读 · 0 评论 -
在ATF中打印引起的Serror
最近在集成tee os到某平台,tee.img需要平台帮忙load到安全内存。然而这部分缺乏平台尝试的支持,所以只能自己干。自己在胡乱改一通之后,感觉已经能把tee.img load到安全内存呢。然后又在ATF中,将安全内存的数据打印出来,和tee.img的二进制做对比,这样不就知道tee.img有没有争正确放置到安全内存中了?bl31中开启了mmu, 安全内存的地址并没有在BL31中做map. 然后去打印没有map的地址的数据,当然是异常。按照如上修改之后,发现serror了。原创 2023-06-09 17:44:21 · 183 阅读 · 0 评论 -
有关exclusive marked address的疑问
此时core4执行了67行,操作的是YYY地址,YYY=0,此时YYY是Marked address,Exclusive Monitor监测此地址。1、core1执行完67行后,操作的是XXX地址。2、core0执行完67行后,操作的是XXX地址。1、core1执行完67行后,操作的是XXX地址。3、接着core1执行69行,写xxx,XXX=1。3、接着core1执行69行,写xxx,XXX=1。XXX=0表示锁释放,XXX=1表示上锁。XXX=0表示锁释放,XXX=1表示上锁。【如果出现下面这个逻辑】原创 2023-06-03 08:13:23 · 84 阅读 · 0 评论 -
有关kernel和userspace刷TLB的问题
是接的往前边的一个问题,flush tlb,如果flush的是kernel区域,就需要有isb指令。我是继续在问题,那flush kernel的tlb,需要执行一下isb。上面的问题,其实也能解释。对ISB的使用一直没有太看懂,在看arm64的源码过程中,发现flush应用层的tlb时,没有用isb,flush kernel的tlb,或flush all时,就会使用isb,这是为啥呢。也不是,现在说的不是cache 即使cache完成了,但流水线可能已经先把指令预取了,要把流水线刷一下,重新读指令。原创 2023-06-03 08:10:17 · 123 阅读 · 0 评论 -
请教下,TZC400, Fast Path IDentity (FPID)这条路径,怎么判断能不能访问某个region
无论是FPID这条路径,还剩NSAID这条path,都是由REGION_ID_ACCESS寄存器配置filter的权限。软件中,是配置REGION_ID_ACCESS_寄存器,决定每一个region的权限。硬件上,应该是FPVNSEL信号做为输入信号,然后由Filter过滤。这俩是二选一,使用不同的信号,即走不同的path。原创 2023-06-02 12:05:02 · 219 阅读 · 0 评论 -
没有TEE是否还需要ATF
问题:另外请教一个问题,Android平台正常启动就是bl1-bl2-bl3x,如果平台不支持tee,或者没有移植tee相关的,那启动流程怎么走,是不走bl31就行,atf阶段还是会有?没有TEE的版本,直接拿掉BL32即可,即:BL1 BL2 BL31 BL33。有TEE的版本的启动流程是:BL1 BL2 BL31 BL32 BL33。👉👉👉 【目录】ARM/TEE/ATF/SOC微信群问题记录 👈👈👈。原创 2023-06-11 00:32:12 · 188 阅读 · 0 评论