- 博客(30)
- 资源 (1)
- 收藏
- 关注
转载 AMBA协议之CHI介绍(二)
上一篇中已经介绍了的基本原理和三层通信结构,从其中可了解到网络层和链路层相对比较简单,而协议层则包含了众多的事务,它们可被用于实现CHI的数据读写、等任务。在这些操作中,又需要考虑是否包含,是否包含DMT和DCT等。关于DMT和DCT,其定义如下:(1)(DMT):它允许SN节点跳过HN节点,直接将数据发送给RN节点(2)(DCT):它允许一个RN节点跳过HN节点,直接将数据发送给另一个RN节点。
2025-03-11 00:41:21
44
转载 AMBA协议之CHI介绍(一)
由于SOC一般都包含多级cache,在系统运行时,主存中的数据可能会被加载到一个或多个cache line中。当这些cache line中的数据发生修改后,就会造成其与主存或其它cache line之间数据的不一致。为此,硬件需要对cache line的状态进行维护,以确保这些数据能正确同步一个典型的ARM架构SOC可能包含CPU内部的L1、L2 cache,DSU中的L3 cache和中的SLC cache。
2025-03-11 00:38:07
39
转载 AMBA协议之AXI介绍
总线是设备之间交换数据的通路,在计算机系统中存在着各种各样不同的总线。它们具有不同的连接方式,工作频率,数据传输格式以及应用场景。根据应用场景的不同,其可被分为片外总线和片内总线,其中片外总线主要用于芯片与外部设备之间的连接,如I2C、SPI、USB、PCIE等,而片内总线则被用于芯片内部组件之间的互联,如APB、AHB、AXI、ACE和CHI等。AXI是当前最重要的片内总线协议之一,它从AMBA3。
2025-03-11 00:31:57
38
转载 AMBA协议与总线互联结构概览
现代SOC芯片通常会包含异构处理器,多级缓存单元,片上、片外存储器,以及丰富的外设资源等。它们之间需要通过各种不同总线进行连接,以实现数据传输的高效率、低时延,以及低功耗之间的平衡。为了支撑以上需求,arm推出了AMBA总线协议,它是一组协议标准的集合,如非缓存一致性总线APB、AHB、AXI,以及缓存一致性总线ACE、CHI等。这些总线协议又包含了一系列不同的变体,如AXI-LITE、AXI-STREAM、ACE-LITE等。
2025-03-11 00:25:15
32
原创 trace32调试
在这个回溯信息中,“btd pinconf_set+0x1a8/0x2e0” 表示当前程序执行的位置在名为 “btd pinconf_set” 的函数内部,相对于该函数起始地址的偏移量为 0x1a8 字节处,而整个 “btd pinconf_set” 函数的大小为 0x2e0 字节。btd pinconf_set+0x1a8的地址是个readl函数里面,正在加载x2寄存器,根据上下文x2寄存器的值是。有时候运行时,某个值条件太苛刻或者太久,我们可以再CPU运行时直接修改变量值,以便于直接触发边界值。
2024-11-22 02:48:09
540
原创 【U-Boot驱动模型DM】
DM即drivermodule,也就是驱动模型。后续以数据结构、如何定义、存放位置、如何获取四个部分进行说明。这种方式除了根设备外基本上不使用。(1)通过U_BOOT_DRVINFO宏来进行定义或者直接定义struct driver_info结构体(2)U_BOOT_DRVINFO宏以ns16550_serial为例U_BOOT_DRVINFO实现如下:和上述的U_BOOT_DRIVER类似注:在老版本的uboot中,没有U_BOOT_DRVINFO,而是用U_BOOT_DEVICE替代。
2023-04-04 18:26:50
2793
1
原创 EDK2设备驱动模型
重点介绍了UEFI设备驱动模型,Controlller、Device Path、Image handle等内容,以及他们之间的关联。
2023-02-26 16:09:12
2890
1
原创 EDK2文件系统—新创建一个Fv卷标FS03
当我们新增加一个Fv时,理应会在shell中显式卷标FS03,但是发现没有显式出来,我们无法以文件系统的方式访问Fv3上的文件。这是为什么呢?
2023-02-26 15:21:52
841
原创 EDK2之模块加载—如何从FD中查找出特定固件卷文件FF?
查找FVPeiServices : EFI_PEI_SERVICES表的指针Instance : 要查找的FV实例。一般说来,该值为0时,FV指BFV,PEI Core就存在于BFV中。VolumeHandle :如果FV存在,该参数为该FV的FvHandle。
2023-02-26 15:11:05
649
原创 基础篇(三).A64指令集
A64指令只能运行在AARCH64环境中所有A64汇编指令都是32bit位宽A64支持全部大写或全部小写的书写方式A64指令分类 内存加载和存储指令 多字节内存加载和存储 算术和移位指令 移位操作 位操作指令 条件操作 跳转指令 独占访存指令 内存屏障指令 异常处理指令 系统寄存器访问指令。
2022-11-27 00:24:16
2730
原创 基础篇(二).ARMv8寄存器(2)
我们重点关注的是和启动相关的寄存器,异常处理相关寄存器,以及内存管理相关寄存器。看寄存器很枯燥,后面需要的寄存器,再追加吧。
2022-11-05 02:34:31
6314
1
原创 基础篇(二).ARMv8寄存器(1)
ARMv8架构(针对Core来说)至少有上千个寄存器,更别提Core外SOC级外设寄存器。这两类寄存器的区别是:前者(不管通用寄存器还是系统寄存器)不占用地址空间,而后者是和内存统一编制的,要占用地址空间。下面我们主要针对ARM Core内寄存器进行介绍。通用寄存器。这类寄存器主要是用来暂存数据和参与运算。通过load\store指令操作。状态寄存器。AArch64体系结构使用PSTATE寄存器表示当前处理器状态。特殊寄存器。有专门的用途,用于控制处理器的行为,或表示CPU的状态。系统寄存器。
2022-11-05 00:37:24
3220
原创 基础篇. ARMv8‑A 架构和处理器(2)
ARMv8是ARM公司发布的第一代支持64位处理器的指令集和体系结构。它在扩充64位寄存器的同时对上一代体系结构指令集兼容,因此它提供了运行32位和64位应用程序的环境。
2022-11-03 01:46:11
3998
原创 【内核崩溃kdump(sysdump)和crash分析】
kdump实现了"双内核"布局,Kdump 在内核在内核panic后,立即调用kexec 引导到转储捕获内核(capture kernel),使用 kexec 引导 “覆盖” 当前运行的内核。该“转储捕获内核”的内存区域由主内核的bootargs参数 crashkernel 或dts指定。“转储捕获内核”可以是专门build的单独 Linux 内核image,也可以在支持可重定位内核的系统架构上重用主内核映像。
2022-11-02 01:22:51
4906
原创 基础篇. ARM架构和处理器(3)
Arm Application-profile (A-profile) 架构面向高性能市场,例如 PC、移动、游戏和企业。A-profile 架构的最新版本是 Armv9-A 和 Armv8-A。Arm Application-profile (A-profile) 架构面向高性能市场,例如 PC、移动、游戏和企业。A-profile 架构的最新版本是 Armv9-A 和 Armv8-A。
2022-11-01 23:56:10
457
原创 基础篇.ARM架构介绍(1)
ARM公司主要向客户提供处理器IP。ARM体系结构是一种硬件规范,主要用来约定指令集、芯片内部体系结构等。以指令集为例,ARM体系结构并没规定每一条指令在硬件IP中如何实现,只是约定了每条指令的格式、行为规范、参数等。
2022-11-01 23:41:56
6719
原创 [crash分析2]C语言在ARM64中函数调用时,栈是如何变化的?
做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来分析其变化的来龙去脉。
2022-10-12 10:15:55
2520
3
原创 [crash分析1]C语言在ARM中函数调用时,栈是如何变化的?
可以看到,上述所说的流程没有遵循ATPCS规范,根据反汇编的代码看到也没有遵循ATPCS规则的寄存器使用规则。1.在这里函数的传参一律使用栈传参,因此不涉及寄存器的保存。2.callee的返回地址没有使用LR寄存器,而是使用caller的栈保存子函数返回地址。3.FP寄存器在这里叫栈底寄存器,用来标识当前函数的栈底。每次进入一个子函数时,子函数一开始FP和SP相同,SP随着该子函数的栈变化而变化。
2022-10-12 10:15:12
723
原创 开宗明义—UEFI介绍 (二)
上一篇介绍了UEFI的发展历史,以及对UEFI在ARM嵌入式领域的生态状况做了简单的调研。本篇旨在对UEFI规范和PI规范的内容以及二者之间的关系做一个简单的梳理
2022-10-03 15:34:36
2402
原创 开宗明义—UEFI介绍 (一)
本文主要介绍UEFI的发展历史,以及对UEFI在ARM嵌入式领域的生态状况做了简单的调研。下一篇会对UEFI和PI规范做一些简单介绍
2022-10-03 15:33:50
3051
原创 EDKII Build System篇之—工程配置文件(元数据)
EDKII的Build系统基于Python和C代码,支持跨平台编译。其底层逻辑是:将DEC、DSC、INF、FDF等用户元数据文件通过Build工具转换成Makefile和AutoGen.c、Autogen.h等中间文件。然后基于Makefile进行构建,生成最终FD镜像。本文主要介绍DEC、DSC、INF、FDF等用户元数据文件的写法,以及Build系统的主要执行流程。......
2022-06-25 17:01:02
3236
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人