自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式学习规划

嵌入式学习规划、嵌入式职业规划、嵌入式入行,免费指导

  • 博客(196)
  • 资源 (2)
  • 收藏
  • 关注

原创 程序员的囧事:那些困扰我们的“蠢”Bug

在编程的世界里,每个程序员都曾经遇到过各种各样的挑战,其中之一就是那些看似复杂却后来却让人感到“蠢”的Bug。你是否有过这种经历?在写代码的时候,遇到了一些bug,无论怎么检查都无法找到问题所在,然后几天后,突然发现困扰自己的问题原来如此简单。本文将分享一些程序员的经典困扰,这些经历既令人苦笑,又教会了我们在编程的路上不断成长。

2023-10-20 10:19:46 211

原创 Armv8/Armv9 Cache知识大纲分享--思维导图

trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费。周贺贺,baron,代码改变世界ctw,Arm精选, 资深安全架构专家,十年手机安全/SOC底层安全开发经验。学习cache就要学习最全的、最新的。关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、

2023-10-05 08:11:31 129

原创 Arm Cache学习资料大汇总

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费周贺贺,baron,代码改变世界ctw,Arm精选, 资深安全架构专家,十年手机安全/SOC底层安全开发经验。

2023-10-05 08:09:58 103

原创 Secureboot从入门到精通

Secureboot也是一个高门槛的知识点,涉及到密码学基础知识、ARM硬件基础知识、SOC硬件基础知识(如SOC内集成的efuse、crypto engine、RPMB等)、BootRom的实现、emmc/ufs/nand/nor等知识、各种规范和标准、ATF(TF-A)等软件、安全业务的设计模式…关键词:trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频。3、汽车电子、手机、服务器等。

2023-10-05 08:08:03 109

原创 Cache系列直播,这次真的来了!

> - L1、L2、L3 cache的替换策略是怎样的?> - 什么类型的内存永远不会进L3 cache?> - L3 cache一般都是多大?> - L3 cache的组织形式一般是怎样的?> - 什么是cache partitioning?> - DSU、DSU-110、DSU-120有什么区别?> - 什么MPAM? 有什么作用?> - 什么是Cache stashing?> - 什么是Cache slices? 有什么好处?> - L1 System memory和L1 Cache

2023-10-05 08:06:39 95

原创 08-《Linux内核设计与实现》读书笔记(八)- 中断下半部的处理

下面对实现中断下半部工作的3种机制进行总结,便于在实际使用中决定使用哪种机制下半部机制上下文复杂度执行性能顺序执行保障软中断 中断 高(需要自己确保软中断的执行顺序及锁机制) 好(全部自己实现,便于调优) 没有tasklet 中断 中(提供了简单的接口来使用软中断) 中 同类型不能同时执行工作队列 进程 低(在进程上下文中运行,与写用户程序差不多) 差 没有(和进程上下文一样被调度)

2023-09-18 22:19:54 34

原创 07-《Linux内核设计与实现》读书笔记(七)- 中断处理

为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制。没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬件状态,需要处理时就处理,否则就跳过。当硬件忙碌的时候,CPU很可能会做许多无用功(每次轮询都是跳过不处理)。中断机制是硬件在需要的时候向CPU发出信号,CPU暂时停止正在进行的工作,来处理硬件请求的一种机制。中断处理对处理时间的要求很高,如果一个中断要花费较长时间,那么中断处理一般分为2部分。

2023-09-18 22:12:36 27

原创 06-《Linux内核设计与实现》读书笔记(六)- 内核数据结构

内核中关于队列定义的头文件位于: include/linux/kfifo.h头文件中定义的函数的实现位于:kernel/kfifo.c内核中关于映射定义的头文件位于: include/linux/idr.h头文件中定义的函数的实现位于:lib/idr.c内核中关于红黑树定义的头文件位于: include/linux/rbtree.h头文件中定义的函数的实现位于:lib/rbtree.c。

2023-09-18 22:07:58 45

原创 05-《Linux内核设计与实现》读书笔记(五)- 系统调用

简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。比如:用户程序通过write()系统调用就可以将数据写入文件,而不必关心文件是在磁盘上还是软盘上,或者其他存储上。2)系统调用使得用户程序有更好的可移植性。只要操作系统提供的系统调用接口相同,用户程序就可在不用修改的情况下,从一个系统迁移到另一个操作系统。

2023-09-18 22:01:03 24

原创 ARM9、Armv9、A9有什么区别?

3、Armv9,是arm最新的架构,是2021推出出的。从2021年之后,arm推出的所有移动领域的core,都是基于armv9架构,看样子是不再会有arm8/armv7架构了。2、A9, 其实就是cortex-A9,它是Armv7架构下的一个微架构,或者说是一个具体的core IP…的产品,属于armv4架构了。著名的S3C2440开发板,就是使用的二十三年以前的ARM920T Core。现在网络上依然保持着大量的讲述arm9的文章或视频,也请各位千万不要被带偏了。1、Arm9是ARM。

2023-09-16 18:40:03 625

原创 04-《Linux内核设计与实现》读书笔记(四)- 进程的调度

现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断。总之,调度是一个平衡的过程。一方面,它要保证各个运行的进程能够最大限度的使用CPU(即尽量少的切换进程,进程切换过多,CPU的时间会浪费在切换上);另一方面,保证各个进程能公平的使用CPU(即防止一个进程长时间独占CPU的情况)。

2023-09-14 21:50:22 32

原创 03-《Linux内核设计与实现》读书笔记(三)- Linux的进程

进程是所有操作系统的核心概念,同样在linux上也不例外。

2023-09-14 21:43:52 28

原创 02-《Linux内核设计与实现》读书笔记(二)- 内核开发的准备

在尝试内核开发之前,需要对内核有个整体的了解。

2023-09-14 21:39:28 25

原创 01-《Linux内核设计与实现》读书笔记(一)-内核简介

本篇简单介绍内核相关的基本概念。

2023-09-14 21:32:57 30

原创 C语言编程100例-目录

C语言练习示例1C语言练习示例2C语言练习示例3C语言练习示例4C语言练习示例5C语言练习示例6C语言练习示例7C语言练习示例8C语言练习示例9C语言练习示例10C语言练习示例11C语言练习示例12C语言练习示例13C语言练习示例14C语言练习示例15C语言练习示例16C语言练习示例17C语言练习示例18C语言练习示例19C语言练习示例20C语言练习示例21C语言练习示例22C语言练习示例23C语言练习示例24C语言练习示例25C语言练习示例26C语言练

2023-09-12 11:14:48 57

原创 《Armv8/armv9架构入门指南》-【第十章】- AArch64异常处理

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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、Non-cacheable,

2023-09-08 16:44:02 89 1

原创 《Armv8/armv9架构入门指南》-【第九章】- ARM 64 位架构的 ABI

>**引流关键词**: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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、N

2023-09-08 16:43:31 89

原创 《Armv8/armv9架构入门指南》-【第八章】- 移植到 A64

>**引流关键词**: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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、N

2023-09-08 16:42:59 55

原创 《Armv8/armv9架构入门指南》-【第七章】- AArch64浮点数和NEON

>**引流关键词**: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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、N

2023-09-08 16:42:27 106

原创 《Armv8/armv9架构入门指南》-【第六章】- A64指令集

>**引流关键词**: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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、N

2023-09-08 16:41:55 89

原创 《Armv8/armv9架构入门指南》-【第五章】- ARMv8 指令集简介

>**引流关键词**: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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、N

2023-09-08 16:41:24 64

原创 《Armv8/armv9架构入门指南》-【第四章】- ARMv8 寄存器

>**引流关键词**: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、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表、N

2023-09-08 16:40:53 92

原创 《Armv8/armv9架构入门指南》-【第三章】- ARMv8 基础知识

要在相同的异常级别之间切换执行状态,您必须切换到更高的异常级别,然后返回到原始的异常级别。对于最高实现的异常级别(Cortex‑A53 和 Cortex‑A57 处理器上的 EL3),在接受异常时用于每个异常级别的执行状态是固定的。与在 ARMv7 (AArch32) 中一样,当发生异常时,处理器将更改为支持处理异常的异常级别(模式)。在 AArch32 状态下,Trusted OS 软件在 Secure EL3 中执行,而在 AArch64 状态下,它主要在Secure EL1 中执行。

2023-09-08 16:40:21 84

原创 《Armv8/armv9架构入门指南》-【第二章】ARMv8‑A 架构和处理器

Cortex‑A57 处理器具有与其他处理器的高速缓存一致性互操作性,包括用于 GPU 计算的 ARM Mali™系列图形处理单元(GPU),并为高性能企业应用程序提供可选的可靠性和可扩展性功能。它可以与 Cortex‑A53 处理器一起使用到 ARM big.LITTLE 配置中,以实现可扩展的性能和更高效的能源使用。Cortex‑A53 处理器是一款中档、低功耗处理器,在单个集群中具有一到四个内核,每个内核都有一个L1 缓存子系统、一个可选的集成 GICv3/4 接口和一个可选的 L2 缓存控制器。

2023-09-08 16:39:49 57

原创 《Armv8/armv9架构入门指南》-【第十九章】ARMv8模型

命令行参数提供所有模型配置。使用‑‑help运行模型以获取可用命令的摘要。表 19‑1显示了这些选项。如果提供了多个‑‑image、 ‑‑data或‑‑nsdata选项,则图像和数据按照它们在命令行中出现的顺序加载,并从最后一个 ELF 的入口点开始模拟指定,如果没有提供 ELF 图像,则为地址 0。您可以指定多个‑‑image、 ‑‑ data或‑‑nsdata选项。

2023-09-08 16:39:19 71

原创 《Armv8/armv9架构入门指南》-【第十八章】调试技术

调试器提供了控制程序执行的能力,使您能够将代码运行到某个点、暂停内核、单步执行代码并恢复执行。可以在特定指令上设置断点,使调试器在内核到达该指令时进行控制。这些工作使用两种不同方法之一。软件断点通过将指令替换为HLT或BRK指令的操作码来工作。如果连接了外部调试器并且相关的安全权限允许进入调试状态,则HLT指令使内核进入调试状态。AArch64 中的BRK指令会产生同步调试异常,但不会导致内核进入调试状态。有关调试状态的详细信息,请参阅第 18‑4 页的调试事件。

2023-09-08 16:38:47 59

原创 《Armv8/armv9架构入门指南》-【第十七章】安全

普通世界只能生成非安全访问,所以只能命中标记为非安全的缓存行,而安全世界可以生成安全的和非安全的访问。安全世界需要访问普通世界使用的内存,安全世界可以在它的转换表描述符中使用NS位,以确保它使用非安全访问来读取数据。支持TrustZone的体系结构使单个物理核心可以以时间分片的方式同时执行普通世界和安全世界的代码,尽管这取决于产生中断的外设的可用性,这些外设可以被配置为仅供安全世界访问。如果你是普通世界的程序员,一般来说,可以忽略安全世界中发生的事情,因为它的操作对你是隐藏的。

2023-09-08 16:38:17 45

原创 《Armv8/armv9架构入门指南》-【第十六章】big.LITTLE 技术

通常,假设任务在相同的集群上恢复前。因此,当调度程序在唤醒时检查任务的负载指标时,在选择执行它的集群之前,该指标具有任务上次运行时的值。HMP 与非对称多处理(AMP) (第14-7页的非对称处理) 的不同之处在于,HMP 系统中的所有处理器都是完全一致的,并且运行相同的操作系统映像。当大内核没有任务要运行时,会检查所有小内核,以查看小内核上当前正在运行的任务是否具有高于向上迁移阈值的负载指标。为了获得最佳的功率和性能效率,软件堆栈主要在节能的 LITTLE 集群上运行,而在大集群上只运行很短的时间。

2023-09-08 16:37:47 93

原创 《Armv8/armv9架构入门指南》-【第十五章】电源管理

尽管空闲电源源管理是由内核上的线程行为驱动的,但OSPM可以将平台置于影响内核本身之外的许多其他组件的状态。同样,如果SoC中的最后一个内核空闲,OSPM可以针对影响整个SoC的电源状态。这会影响在给定状态下关闭的所有组件,包括内核,以及在更深的状态下系统的其他组件,例如GIC或特定于平台的IP。但是,从外部调试器的角度来看,状态不同,因为外部调试请求调试事件保持未决状态,并且无法访问内核电源域中的调试寄存器。在允许集群中的各个内核进入休眠模式的多核系统中,在内核断电时,没有保持一致性的余地。

2023-09-08 16:37:12 56

原创 《Armv8/armv9架构入门指南》-【第十四章】多核处理器

例如,对于某些类型的工作负载,如果将构成工作负载的任务安排在更少的内核上,则可以实现节能。集群内的多核缓存一致性显示了硬件如何保持在同一集群中的多个处理器缓存之间共享的数据之间的一致性。CoreLink CCI-400 Cache Coherent Interface 是 AMBA 4 ACE 的首批实现之一,支持多达两个 ACE 集群,使多达 8 个内核能够看到相同的内存视图并运行 SMP 操作系统,例如 big.小组合,例如 Cortex-A57 处理器和 Cortex-A53 处理器,如图所示。

2023-09-08 16:36:41 110

原创 《Armv8/armv9架构入门指南》-【第十三章】内存排序

ARMv8 架构将上下文定义为系统寄存器的状态,将上下文更改操作定义为缓存、TLB 和分支预测器维护操作,或对系统控制寄存器的更改,例如 SCTLR_EL1、TCR_EL1 和 TTBRn_EL1。只有在上下文同步事件之后才能保证看到这种上下文改变操作的效果。ISB刷新流水线,并从缓存或内存中重新获取指令,并确保在 ISB 之前完成的任何上下文更改操作的效果对ISB之后的任何指令都是可见的。它还确保在ISB之后的任何上下文更改操作指令只在ISB执行后生效,在ISB之前的指令看不到。

2023-09-08 16:36:11 46

原创 《Armv8/armv9架构入门指南》-【第十二章】内存管理单元

48位的地址每一级映射有11个地址位,即每一级有2048个条目,最后的14位在4KB内选择一个字节,直接来自原始地址。有通常的大小和有符号和无符号的变体作为正常的加载和存储指令,但有一个较小的偏移量和受限制的索引选项。这些都是对处理器的提示,在一个特定的实现中是否支持所有的缓存策略,以及哪些缓存数据被认为是连贯的,这都是实施定义的。除了拥有一个指向对象的指针外,可能还有必要保留一个引用计数,以跟踪指向对象的引用或指针或句柄的数量,例如,这样,自动垃圾收集代码就可以取消分配不再被引用的对象了。

2023-09-08 16:35:36 20

原创 《Armv8/armv9架构入门指南》-【第十一章】缓存cache

当核心从特定地址请求指令或数据,但与缓存标签不匹配或标签无效时,会导致缓存未命中,请求必须传递到内存层次结构的下一层,即 L2缓存或外部存储器。它还可能导致缓存行填充。Cortex‑A53 和 Cortex‑A57 处理器通常使用两级或多级缓存实现,即小型 L1指令和数据缓存和更大的统一 L2 缓存,在集群中的多个内核之间共享。外部 L3 缓存实现,例如 ARM CCN‑504 缓存一致性网络(请参阅第 14‑18 页的计算子系统和移动应用程序),可以有更多的方式,即更高的关联性,因为它们的大小要大得多。

2023-09-08 16:35:02 90

原创 Xen启动过程分析

4.之后是分页初始化、IRQ中断初始化、调度程序初始化、异常处理程序表初始化、时间设置、安全机制设置等初始化工作,并且Xen会初始化一个空闲虚拟域(Idle Domain),当没有合适的虚拟域可以运行的时候,Xen会选择空闲虚拟域来运行,这很类似于Linux中的init进程。然后就是x86_32.S文件。可以使用readelf命令来查看编译后生成的Xen的内核,它表明文件类型为可执行文件,并且程序的入口点是Oxl0000(原本这是Linux内核的位置),这表明Xen被引导程序放在了物理内存1M的位置上。

2023-09-08 16:08:37 59

原创 ARMv7中 KVM对虚拟化的实现(五)

由于Xen的自定义I/O模型使用虚拟机中的hypercall进行ARM上的设备模拟,因此Xen并不能运行guest操作系统,除非它们被配置为包含Xen的hypercall层并包含对XenBus半虚拟化驱动程序的支持。相比之下,KVM/ARM使用标准Linux组件支持更快的开发,完全支持SMP,以及可运行未经修改的操作系统的能力。与此相反,我们首次评估了使用真实硬件的ARM虚拟化扩展,提供了与x86的直接比较,并介绍了使用ARM虚拟化扩展(包括SMP支持)的完整hypervisor的设计和实现。

2023-09-08 15:58:09 48

原创 ARMv7中 KVM对虚拟化的实现(四)

在没有VGIC和虚拟时钟的ARM平台上,测量时不包括保存和恢复VGIC状态的开销,结果表明,该操作在ARM的两个world切换时VGIC状态的恢复和保存占用了一半的开销。总的来说,在多核的情况下,在KVM/ARM上的所有应用程序的工作负载比直接在硬件上运行的情况多执行10%的任务量。尽管ARM的world切换开销较高,但是ARM比x86更快,因为x86上的底层硬件IPI比较占据开销,x86上的APIC MMIO操作需要KVM x86执行ARM上不需要的指令解码,而在x86上完成中断的开销较大。

2023-09-08 15:56:47 60

原创 ARMv7中 KVM对虚拟化的实现(三)

我们已经成功地将我们的工作集成到Linux内核中,KVM/ARM现在是Linux平台上的标准ARM hypervisor,因为从39内核开始,每个内核都包含了它。它相对简单且能快速完成虚拟化的需求,这得益于特定的设计,这些设计选择允许它利用Linux内核现有的基础,尽管底层硬件存在一些差异化。我们分享了一些从我们的经验中学到的教训,希望他们可以帮助其他人获得开源社区广泛采用的研究思路。代码可维护性是关键:一个常见的误解是,提供潜在改进或有趣的新特性的研究软件实现可以简单地开源,从而被开源社区快速集成。经常没

2023-09-08 15:53:04 85

原创 ARMv7中 KVM对虚拟化的实现(二)

KVM/ARM是利用LInux内核中现有的基础来实现的,如果重新设计和实现hypervisor复杂的核心功能,这将可能引入一些知名的bug。虽然单独的hypervisor设计方式具有更好的性能和更小的TCB,但是该种方式并不适合ARM架构。ARM硬件在很多方面都比x86更加多样化。不同的设备制造商通常以非标准的方式将硬件组件集成到ARM设备中。ARM硬件缺乏用于硬件探测的功能,例如标准BIOS或APCI总线,并且没有为安装低级软件建立相关机制。但是巨虎所有的ARM平台都支持Linux,通过将KVM/ARM与

2023-09-08 15:51:42 61

原创 ARMv7中 KVM对虚拟化的实现(一)

ARM架构的CPU在移动设备和服务器中使用得越来越普遍,为基于ARM架构的设备提供虚拟化的新需求也越来越大。我们介绍了构建Linux ARM hypervisor KVM/ARM的经验,这是第一个完整的ARM虚拟化系统解决方案,可以在ARM多核硬件上运行未经修改的guest操作系统。KVM/ARM引入了分裂模式虚拟化,运行hypervisor跨CPU模式分割执行,并将其集成到Linux内核中。

2023-09-08 15:49:56 180

原创 虚拟化专题目录

虚拟化,qemu、kvm,type1、type2、嵌套虚拟化

2023-09-08 15:44:36 21

Linux与unix shell编程指南(超清晰版本)

Linux与unix shell编程指南(超清晰版本)

2013-12-29

VMware tools安装说明书

VMware tools安装说明书

2013-12-29

空空如也

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

TA关注的人

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