• 2024-03-1120240310-日记(包含0306-0309)
    为了证明0306号那天我是真准备写的。今天仍然是无所事事的一天,好像因为起得越来越晚,对象颇有微词了。昨天猫又在房间里跑酷,其实也算没怎么睡好。也是今天突然得知,入宅又变更到周五凌晨了。0307因为昨天刚得知还需要周五凌晨入住宅,所以对象的爹从老家赶过来,是晚上十点四十到
  • 2024-03-10ARM MMU和cache简介 --20240310
    参考博客:与程序员相关的CPU缓存知识MMU:memorymanagementunit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(mainmemory)的两级也表控制,并且是由协处理器CP15的寄存器1的M位来决定是enabled还是disabled。MMU的主要作用是负责从CPU内核发出的虚拟地址到物
  • 2024-03-10cache操作函数 --20240310
    Baremetal不讨论多级cache的情况下,裸驱两种关于dcache的操作:flush_dcache_all();//将cache里面的东西刷入内存invalidate_dcache_all();//将数据缓存中的所有内容无效化(invalidate)。该指令一般用于确保缓存中的数据与主内存中的数据同步flush_dcache_all()函数通常在嵌入
  • 2024-03-10printf函数与缓冲区 --20240310
    在linux下,printf输出到控制台经历了app->libc(stdio.h)->syscall->console驱动 下面是<<linux内核完全注释>>一书中的一段描述:继续看下write函数的实现:以下是write()函数的基本定义:#include<unistd.h>ssize_twrite(intfd,constvoid*buf,size_tcount);//ssize_t
  • 2024-03-10共用体与位域 --20240310
    共用体共用体(Union)是一种特殊的数据类型,它允许在同一个内存位置存储不同的数据类型。共用体的所有成员共享同一块内存空间,因此同一时间只能存储其中一个成员的值。共用体的定义和结构体类似,使用关键字union,后面跟着成员列表。每个成员可以是不同的数据类型,但共用体的所有成员都
  • 2024-03-10内存屏障 --20240310
    内存屏障(MemoryBarrier)是一种硬件或软件机制,用于协调并发访问共享资源时的数据一致性。它可以控制处理器和缓存对内存操作的顺序和时序,从而确保共享变量的读写操作按照预期方式进行。 在多线程或多核处理器系统中,为了避免竞态条件(RaceCondition)等问题,常常需要使用内存屏障来
  • 2024-03-10位运算 --20240310
    位运算在linux内核或裸驱中使用十分常见,下面是两种使用方式在此记录: 对寄存器进行操作:举个例子,1、清除bit8-bit10,并将bit8-bit10设置为0x2reg=(reg&(~(0x7<<8))|(0x2<<8));2、将bit4置一和置零reg=(reg&(~(0x1<<4)))|(0x0<<4);//bit4置零reg=
  • 2024-03-10SMMU简介 --20240310
    名词解析:TCU:translationcontrolunitTBU:tanslationbufferunitIOVA:IOvirtualaddressIPA:intermediatephysicaladdress SMMU基础概念:MMU是用于CPU访问资源(DDR、外设等)做地址转换,SMMU是用于外设(可以发起访问的master设备)访问资源(DDR、外设等)做地址转换的。 TCU用来
  • 2024-03-10TZC400简述 --20240310
    TZC400是ARM公司提供的一个IP核,用于实现在系统级集成电路(SoC)中的安全性和可信任性。TZC400是TrustZoneAddressSpaceController400的缩写,是ARM的TrustZone技术的一部分。TrustZone是ARM公司开发的一种硬件安全扩展技术,旨在为SoC提供硬件级别的隔离和安全性。