自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

baron-周贺贺-代码改变世界ctw

【介绍】: 某外企资深安全工程师、阅码场资深讲师、51CTO编辑、CSDN博客专家... 【研究方向】:安全/虚拟化、Trustzone、TEE、SOC架构、ARM架构、终端安全/手机安全/设备安全/系统安全、Linux Kernel安全、Android

  • 博客(1783)
  • 资源 (95)
  • 问答 (1)
  • 收藏
  • 关注

原创 【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

2022-05-06 08:35:45 5899 2

原创 [目录]-博客笔记导读目录(全部)

编辑backup: 汇总-arm-optee-android-复制黏贴–(网址)============= (以下是正文) =============CA/TA开发(收费区)0-博客笔记导读目录(全部)-backup-202111210-博客笔记导读目录(全部)-backup-202108120-博客笔记导读目录(全部)-backup-202201180-博客笔记导读目录(全部)-20220506backup草稿-博客笔记导读目录(全部)(统计:本文共记录650篇博文)...............

2020-06-30 10:57:13 34993 24

原创 【置顶】ARMv8/ARMv9架构入门到精通-[目录]

周贺贺,baron,代码改变世界,coding_the_world,Arm精选,arm_2023,安全启动,加密启动optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表,Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、V

2020-06-30 10:32:07 22668 11

原创 Python:将指定的html转换成markdown

Python:将指定的html转换成markdown。

2025-09-02 09:08:30 121

原创 Python:将钩子拷贝到所有文件夹下

Python:将钩子拷贝到所有文件夹下。

2025-09-02 09:06:46 122

原创 Python将当前路径下的所有html转换成markdown格式

将当前路径下的所有html转换成markdown格式。实测,6000多个文件,转行不到1分钟。

2025-09-02 09:05:13 235

原创 Linux内核的Crypto API接口

生成数据的唯一哈希值,用于验证数据完整性,如SHA系列、MD5(不推荐)。// 内核中的SHA256使用示例。

2025-09-02 08:53:23 355

原创 ARM架构随机数生成技术

在Linux内核中,随机数生成算法通过rng_alg结构体定义。这个结构体包含了随机数生成器所需的所有操作和属性,是内核加密API中随机数生成的基础。rng_alg结构体 生成函数 种子函数 算法信息。

2025-09-02 08:51:59 340

原创 TrustZone技术详解————这篇是AI写的包括图

一个典型的基于 ARM TrustZone 的系统启动流程涉及多个引导加载程序阶段,逐级建立安全环境并加载非安全操作系统。:TrustZone 并非万无一失的银弹,必须与良好的安全开发实践相结合,才能构建出真正完整的安全解决方案。: TEE 调度器,负责处理来自非安全世界的安全监控调用 (SMC) 并将其分派给对应的 TEE。TrustZone 是 ARM 架构中实现硬件级安全隔离的关键技术,它通过将系统划分为。:负责平台特定的 TrustZone 配置,例如内存和外设的安全属性设置。:配置外设安全属性。

2025-08-06 23:30:35 1077 1

原创 Linux内核设计与实现 - 第17章 设备与模块

【代码】Linux内核设计与实现 - 第17章 设备与模块。

2025-07-27 11:00:00 2047

原创 Linux内核设计与实现 - 第16章 页高速缓存和页回写

【代码】Linux内核设计与实现 - 第16章 页高速缓存和页回写。

2025-07-27 10:15:00 688

原创 Linux内核设计与实现 - 第15章 进程地址空间

每个进程拥有独立的虚拟地址空间32位系统通常为4GB空间(用户/内核空间划分)64位系统地址空间更加庞大地址空间包含:代码段(text)数据段(data)BSS段堆(heap)栈(stack)内存映射区域。

2025-07-27 09:30:00 412

原创 Linux内核设计与实现 - 课程大纲

【代码】Linux内核设计与实现 - 课程大纲。

2025-07-26 23:38:18 373

原创 Linux内核设计与实现 - 第14章 块I/O层

【代码】Linux内核设计与实现 - 第14章 块I/O层。

2025-07-26 23:35:29 738

原创 Linux内核设计与实现 - 第13章 虚拟文件系统(VFS)

设计目标:为不同文件系统提供统一接口核心思想:抽象所有文件系统共性操作关键特性支持多种文件系统共存提供一致的文件操作API实现高效的目录缓存机制。

2025-07-26 23:34:48 467

原创 Linux内核设计与实现 - 第12章 内存管理

内存层次结构:NUMA架构、节点(Node)、区域(Zone)、页(Page)内核地址空间布局:直接映射区、vmalloc区、固定映射区等内存管理核心数据结构- 物理页描述符- 内存区域描述- NUMA节点描述。

2025-07-23 17:39:23 360

原创 Linux内核设计与实现 - 第11章 定时器和时间管理

【代码】Linux内核设计与实现 - 第11章 定时器和时间管理。

2025-07-23 17:38:47 311

原创 Linux内核设计与实现 - 第10章 内核同步方法

【代码】Linux内核设计与实现 - 第10章 内核同步方法。

2025-07-22 08:00:00 512

原创 Linux内核设计与实现 - 第9章 内核同步介绍

【代码】Linux内核设计与实现 - 第9章 内核同步介绍。

2025-07-22 06:00:00 723

原创 Linux内核设计与实现 - 第8课 中断下半部的处理

【代码】Linux内核设计与实现 - 第8课 中断下半部的处理。

2025-07-21 01:16:23 411

原创 Linux内核设计与实现 - 第7章 中断处理

硬件与CPU通信的异步机制打断当前执行流程,处理紧急事件分类:外部中断、异常、软中断。

2025-07-21 01:15:47 471

原创 Linux内核设计与实现 - 第6章 内核数据结构

【代码】Linux内核设计与实现 - 第6章 内核数据结构。

2025-07-19 23:16:15 298

原创 Linux内核设计与实现 - 第5章 系统调用

定义用户空间访问内核功能的唯一合法入口提供硬件抽象接口,保证系统稳定和安全与API区别特性系统调用API执行层级内核态用户态实现方式软中断(int 0x80)函数库性能开销较高较低。

2025-07-19 23:15:15 332

原创 Linux内核设计与实现 - 第4章 进程的调度

核心功能:决定哪个进程获得CPU使用权设计目标最大化CPU利用率提供用户交互响应性保证公平性调度策略实时进程:SCHED_FIFO, SCHED_RR普通进程:SCHED_NORMAL(CFS)

2025-07-18 16:00:51 389

原创 Linux内核设计与实现 - 第3章:Linux的进程

【代码】Linux内核设计与实现 - 第3章:Linux的进程。

2025-07-18 16:00:11 384

原创 Linux内核设计与实现 - 第2章 内核开发的准备

【代码】Linux内核设计与实现 - 第2章 内核开发的准备。

2025-07-16 21:27:16 1035

原创 Linux内核设计与实现 第1章:内核简介

定义:Linux内核是操作系统的核心组件,负责管理系统资源、硬件抽象和进程调度特点开源(GPL协议)单内核设计(Monolithic Kernel)支持动态加载模块高度可配置。

2025-07-16 21:26:21 896

原创 附录C:常见问题与解决方案

本文总结了ARM Trusted Firmware-A(TF-A)开发中的常见问题及解决方案,涵盖编译构建、启动流程、安全功能、平台移植、调试测试和安全认证六大类问题。具体包括架构识别错误、BL2镜像超限、BL31跳转失败、多核启动异常、SMC调用错误、安全存储丢失、DDR初始化崩溃、MMU配置错误、GDB连接超时、性能数据异常以及PSA认证失败等典型故障的排查与修复方法。每个问题均提供针对性解决步骤,如环境变量检查、配置参数修改、调试工具使用和关键代码验证等,为TF-A开发者提供了实用的排错指南。

2025-07-16 18:00:00 1042

原创 附录B:ARM指令集安全扩展速查表

本文总结了ARM架构中与系统安全相关的关键指令,涵盖安全监控调用、内存保护、加密扩展、TrustZone、指针认证等多个安全领域。主要内容包括:1)不同异常等级间的特权切换指令(SMC/HVC/ERET);2)内存安全防护指令(地址转换、缓存清理等);3)加密算法加速指令(AES/SHA/SM4);4)TrustZone安全状态控制指令;5)防范内存攻击的指针认证和内存标记指令;6)安全调试相关指令。该速查表基于ARMv8.7-A架构,为开发者提供了各类安全场景下的指令参考,使用时需结合具体芯片手册验证指令

2025-07-16 15:00:00 897

原创 20.3 RISC-V架构支持

本文探讨了RISC-V与ARM在安全生态系统的差异及TF-A向RISC-V移植的策略。对比分析了两者在指令集架构、硬件安全特性等方面的关键差异,重点阐述了通过架构抽象层设计、关键模块适配和启动流程改造实现TF-A移植的技术方案。文章还展示了OpenSBI与TF-A协同的典型实现案例,并提供了性能测试数据和安全增强方案。最后指出RISC-V安全生态建设的发展方向,包括标准化进程、混合架构安全和开源生态建设,预测其有望在未来几年内达到与ARM相当的安全水平。

2025-07-16 11:15:00 1021

原创 20.2 机密计算扩展

ARM机密计算技术解析:从RME架构到TF-A实现 本文系统介绍了ARM架构下机密计算的技术实现。ARMv9通过Realm Management Extension(RME)构建了四世界隔离模型,包括Root、Secure、Realm和Normal World,使用颗粒保护表(GPT)实现硬件级内存隔离。TF-A框架对RME的支持涉及新增Realm Monitor(RMM)组件和修改启动流程,建立起完整的领域创建与数据认证机制。文章还分析了潜在攻击面并提出启用MTE、最小权限配置等防护建议,最后展望了跨平台

2025-07-16 10:15:00 692

原创 20.1 ARMv9新特性支持

ARMv9架构带来重大升级,TF-A面临多项适配挑战。摘要从三个方面概述关键内容:1)ARMv9引入CCA机密计算、MTE内存安全等新特性;2)TF-A需增强异常级别管理、支持RME领域扩展和MTE集成;3)开发验证建议使用FVP模型,重点测试Realm管理和MTE功能。文档以代码示例和表格形式,详细说明了TF-A在ARMv9适配中的技术实现要点,包括SVE2指令支持、BRBE性能监控等模块的具体处理方案,同时强调向前兼容的版本检测策略。

2025-07-16 09:15:00 1031

原创 19.4 性能测试工具

TF-A固件性能测试是确保系统实时性和效率的关键环节,主要涵盖启动时间、SMC延迟、内存访问等核心指标。测试工具包括硬件计时器、ARM PMU性能计数器及Streamline等专业分析工具。文章详细介绍了启动时间测量、SMC延迟测试等具体方法,并提供了自动化测试框架的实施方案。通过优化案例展示了缓存策略改进和异常级别切换优化等实践方法,最后提出建立性能基准、纳入CI/CD流程等建议。未来发展方向包括ARMv9 PMU扩展和AI自动优化等前沿技术应用。

2025-07-16 08:00:00 659

原创 19.3 安全测试技术

TF-A固件安全测试方法全面解析:涵盖静态分析(Coverity/Clang)、动态测试(模糊测试/运行时检测)、侧信道分析(时序/功耗)和硬件测试(JTAG/故障注入)。通过自动化框架集成安全审计、威胁建模和持续测试流程,确保固件符合PSA Certified等安全标准。关键步骤包括代码漏洞检测、攻击模拟、硬件防护验证及漏洞修复闭环管理,为安全关键系统提供多维度防护验证方案。(149字)

2025-07-16 07:30:00 578

原创 19.2 集成测试方法

本文介绍了ARM Trusted Firmware-A(TF-A)的集成测试方法与框架。主要内容包括:1)集成测试概述,重点验证启动流程、运行时服务和安全交互;2)测试环境搭建,推荐使用ARM FVP、Juno开发板等硬件平台及配套工具链;3)核心测试方法,涵盖启动流程、SMC服务、多核协同等场景;4)自动化测试方案,如Jenkins持续集成和LAVA框架;5)安全专项测试,包括信任链验证和侧信道分析;6)测试结果分析与常见问题排查;7)测试覆盖率提升策略。文章提供了具体的测试用例、代码示例和最佳实践,帮助

2025-07-16 06:45:00 825

原创 附录A:TF-A常用API参考

本文档概述了Trusted Firmware-A (TF-A)的核心API接口,涵盖启动阶段(BL1/BL2)、运行时服务(BL31)、平台抽象层、内存管理、设备树操作、调试日志、安全服务、电源管理和多核通信等功能模块。主要内容包括:启动阶段的镜像加载与安全验证接口,BL31阶段的SMC处理和PSCI电源管理接口,平台初始化与加密服务API,MMU配置与内存分配接口,设备树解析方法,以及日志输出、断言检查等调试工具。这些API为安全固件开发提供了基础框架,实际实现可能因平台和版本而异,建议参考官方文档使用。

2025-07-16 01:30:00 431

原创 19.1 单元测试框架

TF-A单元测试体系采用分层测试策略,基于CppUTest框架实现。测试环境需安装CppUTest依赖,通过特定Make命令编译执行。测试用例包含初始化/清理代码,使用CHECK系列断言验证逻辑。典型测试场景包括SMC处理、MMU配置、电源管理等,通过Mock框架模拟硬件行为。可生成覆盖率报告指导测试完善,建议重点关注边界条件、错误路径和状态转换测试。最佳实践强调测试隔离、可重复性和明确失败信息,测试代码位于/tests/unit目录。该体系与Jenkins CI集成,确保代码质量。

2025-07-15 21:15:00 521

原创 18.4 安全更新机制

本文介绍了可信固件(TF-A)的安全更新机制架构与实现。主要内容包括:1)安全更新流程设计,涵盖签名验证、版本控制和原子性写入;2)防回滚机制实现方案,如eFuse计数器和TPM存储;3)故障恢复策略,包括双Bank机制和恢复流程;4)平台集成要点与安全实践,如密钥管理和攻击防护措施。文章还提供了测试验证方法,并展望了量子安全签名等未来发展方向。该机制通过多组件协同工作,确保固件更新过程的安全性和可靠性。

2025-07-15 20:00:00 715

原创 18.3 防回滚机制

本文系统介绍了防回滚机制在安全启动中的实现。防回滚通过版本控制、安全计数器和硬件熔断等技术,防止系统被降级到存在漏洞的旧版本。重点分析了TF-A框架中的实现方案,包括版本元数据结构、关键组件和工作流程,并提供了eFUSE配置和安全计数器存储的具体示例。文章还详细阐述了安全增强措施、测试验证方法和典型问题排查,最后给出设计部署的最佳实践建议。防回滚作为硬件级安全防护的关键技术,需要与镜像签名等机制协同工作,构建完整的安全启动链保护。

2025-07-15 19:00:00 649

原创 18.2 镜像签名与验证

TF-A安全启动机制通过非对称加密技术实现固件镜像的签名验证,确保系统仅执行授权代码。其核心包括分层PKI体系、多算法支持及抗重放保护。签名流程涉及镜像哈希计算、证书链生成和FIP打包,验证时BL1/BL2逐级检查签名与证书有效性。系统提供密钥管理方案,支持默认密钥配置与安全更新流程,并具备抗量子签名等高级特性。开发中需注意平台适配接口实现,未来将增强ARMv9-CCA支持与后量子密码集成。生产环境建议定期轮换密钥以提升安全性。

2025-07-15 18:30:00 867

Arm精选-铂金VIP课程-总课时1000节+、总时长360h+、总价值3w+

讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整理并清晰讲解,透过事务看本质,帮助学员快速入门和理解。

2025-02-13

《optee系统架构从入门到精通》

课程大纲 01-Trustzone简介 什么是TEE?TEE基础科普 TEE的生态介绍?有哪些TEE厂商?各有什么特点? 02-TEE技术简介 什么是TEE?TEE基础科普 TEE的生态介绍?有哪些TEE厂商?各有什么特点? 03-TEE的生态和应用 这么些年过来,TEE为什么一直不温不火? TEE在手机生态中表现如何?发展趋势如何? TEE在汽车电子领域又是怎样的?是否大有前途? TEE在服务器领域是否有应用? TEE在物联网IOT中是否有需求? TEE还在哪些领域中有需求?(电视机/机顶盒…) 04-TrustzoneTEE的学习方法 什么是trustzone?什么是TEE?什么是架构? Trustzone是硬件吗?是软件吗? 当前主流的软件和硬件是怎么样子的?有什么标准规范吗? 如何学习Trustzone/TEE? 学习Trustzone/TEE的最佳路径是怎样的? 什么是软硬件交互?软硬件是怎样交互的?如何学习软硬件交互的主流框架?

2025-02-10

深度学习armv8armv9 cache的原理

ARM 架构刚开始开发时,处理器的时钟速度和内存的访问速度大致相似。今天的处理器内核要复杂得 多,并且时钟频率可以快几个数量级。然而,外部总线和存储设备的频率并没有达到同样的程度。可以 实现可以与内核以相同速度运行的小片上 SRAM块,但与标准 DRAM 块相比,这种 RAM 非常昂贵, 标准 DRAM 块的容量可能高出数千倍。在许多基于 ARM 处理器的系统中,访问外部存储器需要数十甚 至数百个内核周期。 缓存是位于核心和主内存之间的小而快速的内存块。它在主内存中保存项目的副本。对高速缓冲存储器 的访问比对主存储器的访问快得多。每当内核读取或写入特定地址时,它首先会在缓存中查找。如果它 在高速缓存中找到地址,它就使用高速缓存中的数据,而不是执行对主存储器的访问。通过减少缓慢的 外部存储器访问时间的影响,这显着提高了系统的潜在性能。通过避免驱动外部信号的需要,它还降低 了系统的功耗

2025-01-19

optee返回REE的几种方式

TEE(optee)切换到REE(linux)几种方式 1、开机时,ATF跳转到optee初始化,初始化完成后再回到normal world 2、在uboot或linux driver中,调用fast call切到optee获取信息,然后再回到normal world 3、标准的std调用到optee,此时又分三种情况: 当cpu在执行std任务tee_entry_std(…)时,任务处理完成了,需要切换REE; 当cpu在执行std任务tee_entry_std(…)时,如有REE服务, 这时候会RPC调用切换REE 当cpu在执行std任务tee_entry_std(…)时,来了一个foreign interrupt, 这时候cpu也会切回REE

2025-01-19

optee的RPC设计(模型)详解

1、REE和TEE正向调用/反向调用的流程图 开机之后,启动tee-supplicant后,执行: a b 一次完整的TEE调用流程: 1 2 3 4 5 一次完整的RPC流程 : 6 7 b 8 c 2 一次完整的TEE调用流程(在TEE中又调用了RPC): 1 2 3 4 5 6 7 b 8 c 2 3 4 5 2、REE到TEE的正向调用 ① APP调用CA,CA调用libteec.so,libteec.so调用/dev/tee0节点,进入驱动的ioctl函数 ② ioctl函数中调用optee_do_call_with_arg(),该函数调用smc将CPU通过ATF切换到了optee ③④ optee处理完任务后,调用smc通过ATF返回到驱动中的ioctl(返回到②中刚才切出去的地方) ⑤ ioctl返回到应用程序

2025-01-19

optee4.0.0 qemu-v8的环境搭建篇(ubuntu20.10)

1、拉取代码 repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repourl=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 4.0.0 2、下载工具链 make -f toolchain.mk toolchains 3、编译 make -f qemu_v8.mk all -j8

2025-01-19

Linux Kernel中的系统调用分析

例如: SYSCALL(NR_flock, sys_flock),其实就是定义__arm64_sys_flock函数 SC_COMP(NR_ioctl, sys_ioctl, compat_sys_ioctl),其实就是定义__arm64_compat_sys_ioctl函数 在sys.c中定义并初始化了系统调用的tab表 (kernel-4.19/arch/arm64/kernel/sys.c) #undef __SYSCALL #define __SYSCALL(nr, sym) [nr] = __arm64_##sym, const syscall_fn_t sys_call_table[__NR_syscalls] = { [0 ... __NR_syscalls - 1] = __arm64_sys_ni_syscall, #include <asm/unistd.h> };

2025-01-19

向linux kernel中添加cmdline的四种方式

在android的Makefile中添加 vim build/core/Makefile INTERNAL_KERNEL_CMDLINE := $(strip $(BOARD_KERNEL_CMDLINE) buildvariant=$(TARGET_BUILD_VARIANT) $(VERITY_KEYID)) ifdef INTERNAL_KERNEL_CMDLINE INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(INTERNAL_KERNEL_CMDLINE)" endif

2025-01-19

Trusty qemu + android环境搭建详细步骤

下载源码 mkdir trusty cd trusty repo init -u https://android.googlesource.com/trusty/manifest -b master repo sync -j32 编译 ./trusty/vendor/google/aosp/scripts/build.py generic-arm64 查看编译结果 ls build-root/build-generic-arm64/lk.bin 安装运行依赖 sudo apt install libpixman-1-dev libstdc++-8-dev pkg-config libglib2.0-dev libusb-1.0-0-dev

2025-01-19

多核多cluster多系统之间缓存一致性概述

然后请思考: (1)、core0中的L1和L2 cache有一致性的要求吗?缓存和替换策略是怎样的? (2)、core0 cache 和 core1 cache的一致性是谁来维护? 遵从MESI协议吗? (3)、core0 cache 和 core4 cache的是怎么维护一致性的呢? (4)、custer0 L3 cache 和 cluster1 L3 cache的一致性是谁来维护?遵从什么协议吗? (5)、custer0 L3 cache 和 GPU的L2一致性呢?遵从什么协议? (6)、custer0 L3 cache 和 其它的 I/O device Master 一致性呢?遵从什么协议? (7)、DSU、ACE、CHI、CCI、CMN的概念?

2025-01-19

SOC的多核启动流程详解

1、基础概念 请先自行理解以下4个概念: cold boot warm boot Primary boot Secondary boot 另外还两种配置: 你的reset地址是可编程的,则会配置 PROGRAMMABLE_RESET_ADDRESS=1 ,与之对立的则是你的 reset地址是不可编程的。 你在SOC启动的时候,首先只启动一个core,则会配置 COLD_BOOT_SINGLE_CPU=1 ,与之对立的则 是你的SOC启动的时候,所有core都上电了。

2025-01-19

SMMU学习这一篇就够了

访问非连续的地址 现在系统中很少再预留连续的memory,如果Master需要很多memory,可以通过SMMU把一些非 连续的PA映射到连续的VA,例如给DMA,VPU,DPU使用。 32位转换成64位 现在很多系统是64位的,但是有些Master还是32位的,只能访问低4GB空间,如果访问更大的地址 空间需要软硬件参与交换memory,实现起来比较复杂,也可以通过SMMU来解决,Master发出来 的32位的地址,通过SMMU转换成64位,就很容易访问高地址空间。 限制Master的访问空间 Master理论上可以访问所有的地址空间,可以通过SMMU来对Master的访问进行过滤,只让 Master访问受限的区域,那这个区域也可以通过CPU对SMMU建立页表时动态控制。 用户态驱动 现在我们也看到很多系统把设备驱动做在用户态,调用驱动时不需要在切换到内核态,但是存在一 些安全隐患,就是用户态直接控制驱动,有可能访问到内核空间,这种情况下也可以用SMMU来实 现限制设备的访问空间 设备虚拟化 例如设备虚拟化有多种方式,Emulate,Para-virtualized,以及Pass-t

2025-01-19

optee的共享内存的介绍

1、共享内存的介绍 share memory是一块内存区域, 用于non-secure world和secure world的通信. optee支持两种share memory: 连续的buffer,非连续的buffer optee是按照buffer来管理共享内存的,而不是按照pool来管理的. 每一个buf需要配置如下属性: buffer的起始地址和size 该buffer的cache属性 如果是被map到非连续的buf,则列出它所有的块(chunk) 配置成连续的share buffer CFG_CORE_RESERVED_SHM=y CFG_SHMEM_START and CFG_SHMEM_SIZE 定义起始地址和size 该memory的type是MEM_AREA_NSEC_SHM 在non-secure world需要调用OPTEE_SMC_GET_SHM_CONFIG来获取: share memory的物理地址和size share memory的cached属性

2025-01-19

openssl命令行:RSA的用法- 终极版

1、生成密钥 openssl genrsa -out test2048_priv.pem 2048 openssl rsa -pubout -in test2048_priv.pem -out test2048_pub.pem openssl genrsa -out test3072_priv.pem 3072 openssl rsa -pubout -in test3072_priv.pem -out test3072_pub.pem openssl genrsa -out test4096_priv.pem 4096 openssl rsa -pubout -in test4096_priv.pem -out test4096_pub.pem 2、查看密钥 openssl rsa -in test2048_priv.pem -text -out openssl rsa -in test3072_priv.pem -text -out openssl rsa -in test4096_priv.pem -text -out

2025-01-19

mbedtls移植体验

1、下载mbedtls源码 git clone https://github.com/ARMmbed/mbedtls.git 2、下载编写程序的模板 (我自己的/通用的) git clone https://gitee.com/baron_zz/code_template.git 3、拷贝native_c_template命名为mbedtls_test cp native_c_template mbedtls_test -r 4、将mbedtls 中的libary、include目录拷贝到mbedtls_test 中

2025-01-19

Linux内核驱动面试的100问

什么是Linux内核?与用户空间有何区别? Linux内核的主要功能有哪些? 内核模块是什么?它们是如何工作的? 描述内核空间和用户空间之间的通信机制。 什么是系统调用?请给出几个例子。 如何查看当前系统的内核版本? 解释Linux内核的模块化是如何实现的。 什么是设备树?它在Linux内核中扮演什么角色?

2025-01-19

Linux Kernel中断下半部分实现的三种方式

1、软中断 软中断是一组静态定义的下半部接口,有 32 个,可以在所有处理器上同时执行,类型相同也可以;在编 译时静态注册。 软中断的相关函数: 注册软中断 open_softirq 触发软中断 raise_softirq 执行软中断 do_softirq

2025-01-19

Linux Kernel中的同步机制的介绍

既然是3条指令,那么就有可能并发,也就意味着返回的结果可能不说预期的。 然后在linux kernel的操作系统中,提供访问原子变量的函数,用来解决上述问题。其中部分原子操作的 API如下: atomic_read atomic_add_return(i,v) atomic_add(i,v) atomic_inc(v) atomic_add_unless(v,a,u) ldr x0, &a add x0,x0,#1 str x0,&a atomic_inc_not_zero(v) atomic_sub_return(i,v) atomic_sub_and_test(i,v) atomic_sub(i,v) atomic_dec(v) atomic_cmpxchg(v,old,new)

2025-01-19

linux kernel中的cmdline的详细介绍

1、向linux kernel添加cmdline的四种方式 在linux启动时候,串口log中会打印cmdline 在linux启动完成后,通过 cat /proc/cmdline也是可以看到cmdline. 那么cmdline是如何添加的呢? (1)、 在dts中的bootargs中添加 (2)、在BoardConfig中添加 vim device/xxx/xxx_evb/BoardConfigCommon.mk (3)、在uboot中添加 vim u-boot/common/cmd_bootm.c [ 0.000000] c0 0 (swapper) Kernel command line: earlycon androidboot.selinux=permissive uart_dma keep_dbgclk_on clk_ignore_unused initrd=0xd0000000,38711808 rw crash_page=0x8f040000 initrd=/recoveryrc boot_reason=0x2000 ota_status=0x1001

2025-01-19

Linux Kernel中spinlock的设计与实现

(1)、spinlock的核心字段有owner和next,在初始时,owner=next=0 (2)、当第一个进程抢占spinlock时,会在进程函数本地保存下next的值,也就是next=0,并 将spinlock的next字段加1; (3)、当获取spinlock的进程的本地next和spinlock的owner相等时,该进程就获取到spinlock; (4)、由于第一个进程本地的next=0,并且spinlock的owner为0,所以第一个CPU获取到 spinlock; (5)、接着当第二个进程抢占spinlock,此时spinlock的next值为1,保存到本地,然后将 spinlock的next字段加1。而spinlock的owner字段依然为0,第二个进程的本地next 不等于 spinlock的owner,所以一直自旋等待spinlock; (6)、第三个进程抢占spinlock,得到本地next值为2,然后将spinlock的next字段加1。此时 spinlock的owner字段还是为0,所以第三个进程自旋等待。

2025-01-19

《ATFopteehafniuminuxxen代码精读》

《ATFopteehafniuminuxxen代码精读》

2025-02-14

《optee系统开发精讲》

【学员收益】 1、全体系的掌握optee的核心知识点(多核多线程、启动流程、各类API、TA/PTA/STA、driver、service、各类设计思想、内存管理、中断管理…); 2、掌握TEE OS的设计核心思想(不限与optee,对其它TEE也是如此),能够进入软件架构层次的各项设计; 3、快速熟悉大系统软件的各项组件,能够进行大系统软件之间的设计或排查问题 4、学习和理解理解Armv8/Armv9架构、Trustzone架构 5、技术水平提升N个level, 掌握快速的学习方法;

2025-02-13

《飞书专栏-TEE文档》

《飞书专栏-TEE文档》

2025-02-13

《8天入门ARM架构》

《8天入门ARM架构》

2025-02-13

cache直播训练营回放+cacha专题-单售

cache直播训练营回放+cacha专题-单售

2025-02-13

《Android KeymasterKeymint精讲》

课程大纲: Keystore/Keystore2/keymaster/keymint的概念 keymaster/keymint的版本演进 keymint接口示例 Keystore/keymaster/keymint/Strongbox 软件框架 Keystore软件框架 Keystore算法使用示例 要求进行用户身份验证才能使用密钥 Keystore-strongbox 算法使用示例 AuthToken的使用示例 A/B System AVB 2.0 AVB需求和设计 RootOfTrust 定义 Root of trust binding ROT的介绍 版本绑定 Trusty CA和TA通信的定义 Trusty CA和TA的代码 Keymaster和keymint HAL接口定义 Android attestation Key Android RKP Keystore异常示例 strongbox........

2025-02-13

ATF系统安全从入门到精通

ATF系统安全从入门到精通

2025-02-13

Secureboot从入门到精通 训练营

【适用人群】 安全启动做为大系统启动中的重要环节,各类人群、各个方向的同学前来学习。 [行业]:汽车电子、手机、服务器、云计算、物联网、人工智能 行业的同学; [人群]:本科/研究生/博士、初级工程师、中级工程师、资深工程师、行业大佬,即适合小白入门,也适合大佬查缺补漏; 方向]:电子/计算机专业、芯片架构设计、芯片底层软件、芯片验证、BSP软件开发、内核驱动开发、固件开发、bootrom/bootloader开发、安全、虚拟化、大系统开发等; [行业链]:主机厂、OEM、OEM、tier1、SOC厂家、各级供应商;

2025-02-13

《optee系统架构从入门到精通》

optee的打印log是如何实现的? 在optee_os中的打印log函数是啥?有几种log输出级别控制?能否动态控制? 在TA中的打印log函数是啥?有几种log输出级别控制?能否动态控制? 那如何控制optee os的log输出呢?如何控制TA的log输出呢? 除了uart打印log方案,还有别的方案吗? uart打印log方案中,串口终端会不会出现乱码,如何解决呢? 在optee启动很早期的,uart driver还没初始化呢,这个时候如果需要看log有什么办法实现? 在TA中关闭log后,TA调用到optee_os后,optee_os的log级别是否受TA的trace_level控制? 在TA中控制log的输出,到底是怎样控制的?是靠宏比较?还是靠底层C语言代码检查flag? 如何自己实现一套TA log的输出机制?尽量不依赖平台、不依赖os。

2025-02-13

《optee入门实战版》

说明:trustzone/tee高配版、标准版、实践版,相互独立,互不包含、互不冲突。

2025-02-13

《aarch64汇编从入门到精通》-204页PPT+实验

【适用人群】 1、电子信息大类专业、计算机大类专业; 2、任何从事或想从事底层开发的; 3、嵌入式软件工程师 4、Linux内核驱动工程师 5、系统工程师、BSP工程师、驱动工程师 6、SOC/芯片底层软件开发者 7、汽车电子工程师 8、学生 … 9、既适合资深/高级工程师来查缺补漏,又适合初级工程师入门,也适合ASIC同事跨界学习,软硬件融合

2025-02-13

《8天入门TrustzoneTEE安全架构》

《8天入门TrustzoneTEE安全架构》

2025-02-13

Trustzone/TEE标准版-48节课/19.5h

【课程大纲】 (课程目标) 1、最快速地了解,SOC安全架构、Arm安全架构、Trustzone/TEE分别是什么?应用场景是怎样的? 1、知道我学习什么,我要怎么去学习,从此之后有了一个明确的学习路线。 2、认识一些共同目标的人,相互讨论问题,共同进步。勤学、共学、助学。 3、ARM不再神秘,SOC不在神秘,安全架构不再神秘,Trustzone不在什么,TEE不在神秘,让您短期内就能cover住全局 4、助你技术能力大大提升,质地飞跃,跨级飞跃。 5、有了这些基础知识后,市面上出现的任何SOC、任何软件架构,你都不在害怕,都能在短时间内快速上手。

2025-02-13

学好ARM让领导刮目相看《Armv8Armv9架构从入门到精通(三期)》

5 课程大纲 ARM基础:Arm基础简介、ARM和SOC架构基本原理、ARM的4个异常等级4个安全状态2个执行状态、aarch64的重要寄存器、A64指令集 异常中断&gic:学ARM架构最重要的就是学习异常中断,异常中断是ARM架构的灵魂,学好异常中断再去学习其它模块,就像开挂。多系统、大系统之间的调用/切换靠着就是异常中断。 Trustzone:Trustzone安全架构是Armv8/Armv9架构中的重要一环,ARM架构中的每一个知识点都和安全有着密不可分割的关系,没有安全的学习是不完整的学习。 虚拟化:虚拟化也是ARM架构中的重要组成部分,虚拟化不仅仅是hypervisor,虚拟化不仅仅是normal world侧才有,在安全侧也有虚拟化。 Cache:在工程实践中,我们所遇到的最难的问题、超低概率性的问题,80%以上都是和cache相关的。cache做为ARM架构中最难的一个模块,我们有必要花时间将这部分学透学精,学通后你将信息满满、自信爆棚。 MMU:MMU做为ARM架构中最简单的一个模块,对于软件工程师几乎是透明的,MMU模块的学习是最具有性价比的一个知识点,花

2025-02-13

飞书知识库文档-Arm专栏

我们有短域名,http://armdoc.hehezhou.cn,好记,在公司摸鱼学习更方便。 我们有讨论群、课程群等,交流/沟通/学习更方面。 我们开通权限更方便。不用要求您加入组织,也不用互加飞书好友。仅仅要求您扫码入飞书群,就可以自动获取权限。

2025-02-13

《CATA开发从入门到精通》

【课程大纲】 从无到有编写代码,已完成的大纲如下: 2秒钟快速编写(clone)一组CA/TA程序 安全存储详解以及代码示例 CA到TA双向传参数的四种方式(value、temref、memref),区别?优缺点? 对称密码学算法aes的使用,CBC/ECB/CTR/XTS分组密码的使用,加密解密,pending等 aeskey的操作,如何随机生成aeskey(TEE_GenerateKey),objectHandle和aesbuf有什么区别?如何将handle 认证加密算法,如aes-GCM的使用 非对称密码学算法RSA的使用,包括加密、解密、签名、验签 RSA key的处理,包含如何生成RSA KEY,rsakey object如何转换成可见的数组,如何转换der,如何转换pem,反向又如何转换 ECC/ECDSA的使用 国密sm2 sm3 sm4的使用. 其中sm4包含加密、解密、签名、验签等 encode和decode的实现 TA属性的定制以及API的使用

2025-02-13

《CoresightTraceDebug大合集》64节课16小时,6大主题, 685页PPT

《CoresightTraceDebug大合集》64节课16小时,6大主题, 685页PPT

2025-02-13

《Arm架构-功耗管理精讲与实战》

目录 1、功耗管理背景及挑战 2、功耗管理架构演进及变迁 3、系统分区-电压域和电源域 4、功耗状态及功耗模式 5、功耗管理框架-SCP&PPU&LPI 6、功耗管理软件 7、功耗管理标准接口 8、多核处理器启动 9、睡眠锁与唤醒源 10、功耗管理实战 11、功耗数据与功耗收益评估 12、功耗管理与安全

2025-02-13

《Android15安全架构课程》

2025-02-13

《TrustzoneTEE安全从入门到精通-高配版》

【课程大纲】 (课程目标) 最快速地了解,SOC安全架构、Arm安全架构、Trustzone/TEE分别是什么?应用场景是怎样的? 1、知道我学习什么,我要怎么去学习,从此之后有了一个明确的学习路线。 2、认识一些共同目标的人,相互讨论问题,共同进步。勤学、共学、助学。 3、ARM不再神秘,SOC不在神秘,安全架构不再神秘,Trustzone不在什么,TEE不在神秘,让您短期内就能cover住全局 4、助你技术能力大大提升,质地飞跃,跨级飞跃。 5、有了这些基础知识后,市面上出现的任何SOC、任何软件架构,你都不在害怕,都能在短时间内快速上手。

2025-02-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除