自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 EBBR规范对嵌入式Bootloader的要求

EBBR规范对嵌入式Bootloader的要求

2023-02-26 16:42:53 269

原创 U-boot 对UEFI的支持

U-boot 对UEFI的支持 如何?

2023-02-26 16:36:17 3568

原创 EDK2设备驱动模型

重点介绍了UEFI设备驱动模型,Controlller、Device Path、Image handle等内容,以及他们之间的关联。

2023-02-26 16:09:12 2890 1

原创 EDK2驱动框架之—Protocol

edk2中protocol的介绍,使用,实现等等。

2023-02-26 15:46:14 1521

原创 EDK2之debug

在UEFI开发中,非常重要的一个部分就是添加串口调试信息打印,这个通过DEBUG宏来完成。

2023-02-26 15:24:50 2324 2

原创 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

原创 FD镜像文件生成过程分析

EDK2中FD二进制文件生成过程研究。

2023-02-26 15:05:25 480

原创 【Android13中host端解析ramdisk.img】

Android中提取ramdisk.img内容。

2023-02-08 17:45:11 605

原创 基础篇(三).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

原创 ARMv8/ARMv9总纲—学习路线

ARMv8\ARMv9架构学习路线。

2022-11-01 23:11:03 547

原创 [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

原创 建立一个 git 本地仓库

本地创建一个远程仓库,管理自己的实验代码,自娱自乐。

2022-07-19 22:50:46 7173

原创 QEMU + ARMv8 环境搭建

使用qemu 模拟ARMv8 平台运行,进行ARMv8代码实验。

2022-06-29 18:29:51 4590

原创 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

ARM裸机知识.doc

ARM裸机知识.doc

2021-03-08

空空如也

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

TA关注的人

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