![](https://img-blog.csdnimg.cn/7aac0ac1ff33469dac8123301fb6b562.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
代码导读-(芯片/启动/ATF/TEE/Kernel)
文章平均质量分 75
此专栏主要针对于代码导读,点击文中链接直达代码位置。
导读包括但不限于Trustzone/TEE/ATF/optee/Linux Kernel/Uboot/hafnium/xen软件。模块包括但不限于mmu/cache/gic/异常路由/启动流程等...
优惠券已抵扣
余额抵扣
还需支付
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
代码改变世界ctw
ARMv8/ARMv9/TEE/安全/芯片
展开
-
【代码精读】--Kernel/ATF/optee等-目录
optee原创 2022-07-03 12:14:17 · 1699 阅读 · 3 评论 -
Linux kernel crypto的介绍和代码导读
在Linux kernel的module_init阶段会将algif_type_skcipher、algif_type_aead、algif_type_hash、algif_type_rng 四种算法注册.在userspace通过netlink调用了,kernel种的af_alg模块收到消息后, 根据上层传来的算法种类名字来选择走哪一个结构体(alg_type_xxx)的ops函数。也就是添加到af_alg维护的alg_types链表种. alg_types链表种仅有这四个数据.原创 2024-06-21 23:39:18 · 47 阅读 · 0 评论 -
Linux Kernel系统调用的实现和代码导读
系统调用在Kernel中的map表,都在 kernel-4.19/include/uapi/asm-generic/unistd.h 中,表的名字是:sys_call_table,表中成员的示例如下:0123456789......系统调用函数的定义,都是以SYSCALL_DEFINEx的宏定义的,例如:result = 0;原创 2024-06-20 20:41:11 · 47 阅读 · 0 评论 -
Linux Kernel中的arch timer的介绍
counter频率寄存器、物理(虚拟)counter寄存器、物理(虚拟)比较值寄存器、物理(虚拟)Timer value寄存器、物理(虚拟)控制寄存器cntfrq_el0 // counter的频率cntpct_el0 //物理timer的counter值cntvct_el0//虚拟timer的counter值注意:timer寄存器总结,一定要看这里。原创 2024-06-20 18:00:30 · 58 阅读 · 0 评论 -
Linux Kernel中的isb/dsb/dmb的使用示例
isb()dsb()dmb()原创 2024-06-20 17:50:45 · 34 阅读 · 0 评论 -
Linux Kernel中的cache原理和操作示例
1、cache相关API函数的定义实现。2、 cache的指令集。3、cache的使用。原创 2024-06-20 17:40:46 · 34 阅读 · 0 评论 -
Linux Kernel中MMU的代码导读
函数中,设置了页表基地址TTBR0_EL1、TTBR1_EL1、传入了页表、开启了MMU(sctlr_el1寄存器)学习Armv8/Armv9架构中的MMU,我们要从以下5点入手学习,我们去代码中寻找相关的实现。函数中,设置了tcr_el1寄存器,设置了mair寄存器。原创 2024-06-20 10:19:41 · 34 阅读 · 0 评论 -
Linux Kernel中的smc调用的示例(以optee的调用为例)
optee_smc_do_call_with_arg()------>optee->smc.invoke_fn------>invoke_fn = get_invoke_func(&pdev->dev)------>optee_smccc_smc------>optee_smccc_smc()------>arm_smccc_smc(a0, a1, a2, a3, a4, a5, a6, a7, res)------>------>------>------>原创 2024-06-20 13:47:08 · 25 阅读 · 0 评论 -
Linux Kernel异常向量表的设置
---> handler(regs),其实就是调用。1、Linux Kernel中对异常向量表的填充。以为异常向量的第6行为例,其实就是跳转到了。在该函数中,程序将会跳转到。然后你去搜索代码 ,你根本找不到。是一个定义异常向量的宏;该函数是有宏展开实现的。以第6行为例,我们再来看下。展开后的样子,还是先看。---->所以上面的。在该宏中,程序跳转到了。原创 2024-06-16 22:00:14 · 198 阅读 · 0 评论 -
Linux Kernel PSCI 多核启动代码导读
ATF (ARM Trusted Firmware) 对 PSCI (Power State Coordination Interface) 的支持是 ARM 架构中一个关键的特性,主要用于协调和管理系统的电源状态。PSCI 是一种在 ARM 架构中定义的标准接口,它提供了一组统一的方法来控制处理器的电源状态,如开机、关机、休眠和唤醒。原创 2024-06-20 09:56:08 · 602 阅读 · 0 评论 -
Linux Kernel启动init程序(启动Android init程序)
--->Android的init程序被打包在ramdisk中,这里的init可执行文件,就是android编译的init程序,所以这里android的init就起来了。原创 2024-06-20 10:07:08 · 28 阅读 · 0 评论 -
【代码精读】进入optee时中断都是开启的还是关闭的?
在之前讲optee或arm异常中断的章节中,我曾经告诉大家,进入TEE有很多种方式,但只有一种方式中断是开启的,那就是std call(或者也叫yield call)。其余的方式中断都是关闭的。原创 2022-11-14 22:15:17 · 550 阅读 · 1 评论 -
【代码精读】optee中如何添加一个外设
如何在optee os中添加一个驱动呢?1、首先增加一个c文件;2、使用`virt_to_phys`找到该寄存器基地址的虚拟地址,这里类似于Linux Kernel中的ioremap。3、自行封装write/read函数,进行读写。4、编写您自己的业务逻辑。原创 2022-11-13 08:55:25 · 448 阅读 · 0 评论 -
【代码精读】optee的Early TA介绍–如何添加一个Early TA
tee原创 2022-11-13 08:45:23 · 560 阅读 · 0 评论 -
【代码精读】optee的Static TA介绍–如何添加一个Static TA
tee原创 2022-11-13 08:45:51 · 292 阅读 · 0 评论 -
【代码精读】optee的PTA介绍–如何添加一个PTA
tee原创 2022-11-13 08:44:40 · 493 阅读 · 1 评论 -
【代码精读】optee的异常向量表
>**概要**: > - optee os的异常向量表,都实现了哪些? 为什么? 为什么有些没有实现?> - optee os的异常向量表表基地址,是什么时候写入到VBAR_EL1寄存器的。如果是多核呢?从何又是什么时候写入的?原创 2022-11-12 23:54:10 · 242 阅读 · 0 评论 -
【代码精读】optee的进入和退出的方式
>**概要**: 本文详细介绍了optee的进入和退出的机制。> - 进入optee的方式有多少种?分别是怎样的流程?> - 退出optee的方式又有多少种?分别是怎样的流程?> - 进入optee的这些方式种,哪些是开启异常中断的,哪些是关闭异常中断的?原创 2022-11-12 23:56:20 · 406 阅读 · 0 评论 -
【代码精读】optee的线程向量表
我们知道,ATF和Optee的交互都是一条固定的路径。即:ATF跳转到OPTEE时,永远从几个固定的entry处进入,optee退出返回到ATF时,永远返回到opteed_smc_handler()程序(注:产生了target到EL3的中断除外)。那么以上的种种机制是如何实现的呢?答案其实就是,在optee种定义了一个线程向量表,也叫entry向量表,定义了runtime阶段进入optee的唯一入口,即runtime阶段进入optee必需从线程向量表种定义的这些接口进入。 那么这样也就要求了ATF种必原创 2022-11-12 23:55:44 · 348 阅读 · 0 评论 -
【代码精读】在optee中注册一个中断
概要: 在optee os总如何注册一个中断? 有没有类似于request_irq的程序? 注册了该中断后,是哪里将该中断配置成Secure group 1中断的呢,当中断来临时,程序是如何一步一步找到handler的呢原创 2022-11-12 23:54:50 · 393 阅读 · 0 评论 -
【代码精读】optee os的启动
概要: 解读optee os是如何启动的, ATF如何调用到optee的?然后optee os又是如何启动的?optee os的第一条指令是啥?optee os的初始化是啥意思?无非就是配置一些寄存器、创建页表等。…原创 2022-11-12 23:53:23 · 322 阅读 · 0 评论 -
【代码精读】bl32的启动
>**概要**: 本文详细介绍了ATF BL31程序中的bl32的初始化机制。> - 什么是BL32?> - 跳转BL32之前 ,需要准备什么?准备哪些参数?> - 程序是如何跳转到BL32的?原创 2022-11-12 23:50:43 · 733 阅读 · 0 评论 -
【代码精读】ATF启动bl33程序
>**概要**: 本文详细介绍了ATF BL31程序中的是如何准备BL33镜像的,程序又如何跳转到BL33程序的?> - BL33镜像的起始地址是什么?在哪里定义?> - 程序是如何一步一步跳转到BL33的?原创 2022-11-12 23:49:39 · 513 阅读 · 0 评论 -
【代码精读】ATF启动bl32程序
>**概要**: 本文详细介绍了ATF BL31程序中的bl32的初始化机制。> - 什么是BL32?> - 跳转BL32之前 ,需要准备什么?准备哪些参数?> - 程序是如何跳转到BL32的?原创 2022-11-12 23:48:50 · 438 阅读 · 0 评论 -
【代码精读】ATF Runtime模型的介绍
>**概要**: 本文详细介绍了ATF BL31程序中的runtime service机制。> - 什么是runtime service,如何创建一个runtime service?> - runtime service在系统或内存中如何布局的?> - 一个异常进来,程序是如何调用到相应的runtime service中实现的handler函数的?原创 2022-11-12 23:14:19 · 596 阅读 · 0 评论 -
【代码精读】ATF的异常向量表
本文概述了ARMv8/ARMv9的aarch64体系中异常向量表的结构、以及基地寄存器的总结。然后通过导读ATF BL31的异常向量表的实现、以及向量表基地址赋值给VBAR_EL3寄存器。让您更加理解异常的原理。原创 2022-11-12 23:12:33 · 550 阅读 · 0 评论 -
【代码精读】ATF的启动流程
M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,终端安全,secureboot,security,virtulization。,所以呢,默认的情况下有如下两种启动方式。接着bl31_main函数返回,返回到bl31_entrypoint.S中,继续调用。代码,将X1赋给了X20,X20赋值给了X0,X0赋值给了。,程序将继续往下走。原创 2022-11-12 22:50:32 · 1018 阅读 · 0 评论 -
【代码精读】optee的进入和退出的方式
进入optee的2种方式原创 2022-11-06 09:19:24 · 367 阅读 · 0 评论 -
【代码精读】optee的RPC机制
optee的RPC启动原创 2022-11-06 09:12:46 · 718 阅读 · 0 评论 -
【代码精读】optee的线程向量表
optee的线程向量表原创 2022-11-06 09:09:54 · 178 阅读 · 0 评论 -
【代码精读】optee的异常向量表
optee中断原创 2022-11-06 08:56:18 · 461 阅读 · 0 评论 -
【代码精读】optee_os的启动
optee启动代码导读原创 2022-11-06 02:01:04 · 409 阅读 · 0 评论 -
【代码精读】bl32的启动
bl32的启动原创 2022-11-06 01:48:47 · 255 阅读 · 0 评论 -
【培训课程专用】Linux Kernel请求从核启动代码导读--ongoing
Linux Kernel请求从核启动代码导读原创 2022-11-05 10:03:43 · 208 阅读 · 0 评论 -
【培训课程专用】SOC多核启动代码导读--ongoing
SOC多核启动代码导读原创 2022-11-05 10:02:17 · 378 阅读 · 0 评论 -
【代码精读】中断路由代码导读:当cpu运行在ATF来了一个Group0中断
当cpu运行在ATF来了一个Group0中断原创 2022-11-05 09:55:03 · 303 阅读 · 0 评论 -
【代码精读】中断路由代码导读:当cpu运行在ATF来了一个Secure Group1中断
当cpu运行在ATF来了一个Secure Group1中断原创 2022-11-05 09:53:44 · 263 阅读 · 0 评论 -
【代码精读】中断路由代码导读:当cpu运行在ATF来了一个Non secure Group1中断
当cpu运行在ATF来了一个Non secure Group1中断原创 2022-11-05 09:52:25 · 601 阅读 · 0 评论 -
【代码精读】中断路由代码导读:当cpu运行在TEE来了一个Group0中断
当cpu运行在TEE来了一个Group0中断原创 2022-11-05 09:50:59 · 384 阅读 · 0 评论 -
【代码精读】中断路由代码导读:当cpu运行在TEE来了一个Secure Group1中断
当cpu运行在TEE来了一个Secure Group1中断原创 2022-11-05 09:49:35 · 220 阅读 · 0 评论