自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 ARM64 Trust Firmware [五]

本篇主要介绍ATF中Runtime service的定义,注册,初始化和调用过程

2025-02-19 17:49:02 910

原创 ARM64 Trust Firmware [四]

完成第二阶段 BL2 的操作后就加载并进入 BL31,BL31 位于 DRAM 中,EL3 模式。

2025-02-18 16:49:25 951

原创 ARM64 Trust Firmware [三]

bl2_main 通过 bl2_load_images 将 bl3x 的 image 加载到 DRAM 中,然后触发 smc 到 smc 异常中,再跳转到 bl31 执行运行时固件。完成第一阶段 BL1 的操作后就加载并进入 BL2, 在一般配置下 BL2 运行在 Secure-EL1。

2025-02-17 17:13:23 412

原创 ARM64 Trust Firmware [二]

ATF 前面已经说了,是 ARM 的可信固件,是 ARM 官方提供的一个固件代码,提供了统一的接口标准。,官网提供了 TF-A,还提供了比如正对 Cortex-M 单片机的 TF-M,也提供了比如安全世界 OS - OPTEE 等。在 TF-A 的源代码中,一共分为 3 个部分的 bootloader:bl1、bl2、bl2u和bl31:这里的 bl1、bl2、bl2u、bl31都属于安全固件,bl32 (TEE OS)和 bl33(U-boot)都是 ATF 需要启动的其他第三方固件。1. BL1。

2025-02-17 14:13:48 1040

原创 ARM64 Trust Firmware [一]

ARMv8 Trust Firmware

2025-02-13 17:44:25 1116

原创 RK3568上电启动流程详解.2 [十五]

所以 DRAM 内存地址范围0x00000000 - 0x00200000 和 0x08400000 - 0x09400000 是 Reserve 区域,内核是不能使用的。我使用的 RK3568 开发板片上 DRAM 为 2G,其地址范围为0x00000000 - 0x80000000,这部分是在 TPL 初始化 DRAM 时探测的。0x00000000 - 0x00100000 DRAM 内存给到了 ATF;0x00100000 - 0x00200000 DRAM 内存给到了 SHM;

2025-01-23 18:45:55 526

原创 RK3568上电启动流程详解 [十四]

RK3568启动流程详解

2025-01-21 17:08:42 1154

原创 关于C语言const变量能不能修改的问题

嵌入式开发面试中大家应该经常被问到在 C 语言中一个用 const 修饰的变量是否可以被修改,然后面试者回答:“可以”,面试官说:“你可以走了”。那如何回答关于 const 是否可以被修改的问题呢?但是我们通过对比发现,当定义这两个局部 const 变量后,text 段的大小变大了,也就是说这两个变量在 text 段中,当然这个说法不完全正确,应该说在函数运行时,局部变量会被压入栈,所以上述的 const 变量是在栈中被修改的。我们看到这两个局部的初始化和未初始化的 const 的变量都是可以被修改的。

2025-01-08 14:09:39 313

原创 IO Virtualization with Virtio.part 2 [十三]

通过对virtio_device_id 中的 device 和 vendor 的值进行比较,我们找到对应的 virtio 驱动,由于这里我们使用 i2c virtio 为例,所以调用 virtio_i2c_probe 进行 virtio i2c 设备的初始化。在和 virtio mmio 设备交互时我们会读取 VIRTIO_MMIO_DEVICE_ID 和 VIRTIO_MMIO_VENDOR_ID,并将其值写入 virtio_device_id 中,这个就会用作后面和 virtio 设备驱动的匹配参数。

2025-01-07 16:53:42 956

原创 IO Virtualization with Virtio.part 1 [十二]

Linux IIC驱动

2024-12-31 16:40:18 1010

原创 Let up bring up a linux.part2 [十一]

将linux的rootfs运行起来进入shell的世界

2024-12-06 17:53:03 597

原创 Let us bring-up a Linux.part 1 [十]

用虚拟机启动一个Linux

2024-12-05 17:19:09 1257

原创 GICv3 Virtualization support.part 2 [九]

GICv3虚拟化支持,虚拟中断的注入

2024-11-26 19:52:30 960

原创 GICv3 Virtualization support.part 1 [八]

Hypervisor下的GICv3虚拟化实现

2024-11-23 00:08:04 1145

原创 Emulate Memory-mapped I/O (MMIO) [七]

X-Hyper的MMIO支持

2024-11-19 22:48:59 844

原创 vcpu and vpsci support [六]

X-Hyper的CPU虚拟化和VPSCI支持

2024-11-18 17:51:08 1075

原创 MMU Stage 2 Translation [五]

ARM64 内存虚拟化 - Stage 2 Translation

2024-11-12 23:20:03 915

原创 spinlock xmalloc and kalloc [四]

spinlock xmalloc and kalloc

2024-11-08 16:04:19 1135 1

原创 Let‘s make X-Hyper speak [三]

Let's make X-Hyper speak [三]

2024-11-06 17:44:14 485

原创 Let‘s get into the world of EL2 [二]

Let's get into the world of EL2

2024-11-06 11:17:05 1463 4

原创 A Bare Metal Aarch64 Hypervisor [一]

从零开始一步步设计并编写一个基于Aarch64 的 Bare Metal Hypervisor,然后从简单的示例开始,托管小的虚拟机,到逐步深入到托管完整的Linux操作系统。

2024-11-05 14:22:27 560 1

原创 ARM64 Linux及Perf工具在Linux (Ubuntu)开发环境中的编译和运行

ARM64 Linux及Perf工具在Linux (Ubuntu)开发环境中的编译和运行

2024-11-01 17:09:45 337

原创 用户态动态内存分配算法TLSF的原理及其实现(图文详解释)

动态内存管理算法TLSF实现原理图文详解释

2024-11-01 14:54:59 448

原创 Linux RT_MUTEX 图文详解释

Linux rt_mutex实现逻辑

2024-10-31 10:32:01 544 1

原创 图文详解RISCV上电流程:(以SiFive FU740-C000为例)

图文详解RISCV上电流程:(以SiFive FU740-C000为例)

2024-07-19 11:14:19 463 1

原创 ARM64 PMU (Performance Monitor )

ARM64 性能监控模块的底层原理和实验,可以为perf PMU打下基础

2024-07-19 10:59:58 1326

原创 Linux IIC/SPI驱动及其虚拟化,保姆级教程

Linux IIC/SPI驱动及其虚拟化,保姆级教程,让你彻底了解Linux下的IIC/SPI驱动,同时详解其虚拟化的实现

2024-07-19 10:43:50 1353

原创 图文详解Linux EPOLL

Linux EPOLL超详细解读,图文并茂,原文请关注知乎-晏舒,同作者

2024-07-19 10:34:19 1044

原创 图文详解PCI/PCIe协议

PCI/PCIe总线

2024-07-19 10:29:48 6523 1

空空如也

空空如也

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

TA关注的人

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