
ARM体系结构
文章平均质量分 93
嵌入式与Linux那些事
这个作者很懒,什么都没留下…
展开
-
【ARM架构】armv8 系统安全概述
TrustZone 是ARM 架构的一个安全扩展模型,可以用在任何ARM处理器中。Normal world 通过SMC指令访问Secure world。Secure monitor 管理着Normal World和Secure World 的切换。Secure monitor 的代码在禁用中断的上下文执行。内存系统事务中的NS位表示访问的是Secure World 的内存还是Normal World的内存。原创 2023-02-23 22:28:03 · 4274 阅读 · 0 评论 -
secure boot(三)secure boot的签名和验签方案
FIT 格式支持存储镜像的hash值,并且在加载镜像时会校验hash值。这可以保护镜像免受破坏,但是,它并不能保护镜像不被替换。而如果对hash值使用私钥签名,在加载镜像时使用公钥验签则可以保护镜像不被替换。因此,公钥必须保存在一个绝对安全的地方。接下来的内容要求大家了解一些密码学的内容,之前也介绍过一些,可以看这篇文章secure boot (一)FIT Imagesecure boot (二)基本概念和框架计算镜像的hash值利用私钥对hash值签名签名结果存在FIT Image 中。原创 2022-09-21 22:15:26 · 4308 阅读 · 0 评论 -
secure boot (二)基本概念和框架
secure boot是指确保在一个平台上运行的程序的完整性的过程或机制。secure boot会在固件和应用程序之间建立一种信任关系。在启用secure boot功能后,未经签名的固件或程序将不能运行在该设备上。通过这种方式,可以保护操作系统免受恶意攻击。secure boot一般使用公钥/私钥来验证固件和应用程序的签名是否合法。消息摘要又称为数字摘要。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。原创 2022-09-21 22:14:13 · 6949 阅读 · 0 评论 -
secure boot (一)fit image
secure boot 和FIT Image是前段时间接触到的,其实早就该总结下了,奈何懒癌犯了,拖了好久才写出来。之前也有人问我,工作后最大的感受是什么?我的回答是:“快速学习”。就嵌入式来讲,大多数应届生在校期间可能都没做过完整的项目,仅凭在校期间学习的内容很难胜任公司的要求。就底层驱动来讲,虽然我之前也学习过韦东山老师的上s3c2440的课程,但是到了公司才发现,这些内容其实都已经过时了。但并不是说这些内容都没有必要去学习了。在学习的过程中,认为最重要的是培养我们的自学能力。原创 2022-09-21 22:13:08 · 2536 阅读 · 0 评论 -
深入理解Aarch64内存管理
内存管理描述了如何控制操作性系统对内存的访问。每次操作系统或应用程序访问内存时,硬件都会进行内存管理。内存管理是一种给应用程序动态分配内存区域的方法。处理器是用来运行复杂系统的,比如Linux 支持虚拟内存系统。软件在操作系统上运行只能看到虚拟地址,而处理器负责把虚拟地址转换为物理地址。这些物理地址最终都会被内存系统转换为实际的物理位置。下面对本文内容做个简单总结,以下这些问题是我们要明白的。地址翻译中,statge和level有什么区别?statge 指的是把输入地址转换为输出地址的过程。......原创 2022-08-08 18:00:00 · 1744 阅读 · 0 评论 -
【图文】函数调用过程中栈的变化
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄存器,这个寄存器中存储着栈顶的地址。 rbp中存储着栈底的地址。 函数栈空间主要是由这两个寄存器来确定的原创 2021-12-30 07:56:02 · 2183 阅读 · 0 评论 -
超详细分析Bootloader(Uboot)到内核的启动流程(万字长文!)
文章目录Bootloader启动流程分析Bootloader第一阶段的功能硬件设备初始化为加载 Bootloader的第二阶段代码准备RAM空间(初始化nandflash)复制 Bootloader的第二阶段代码到SDRAM空间中(重定位)设置好栈跳转到第二阶段代码的C入口点Bootloader第二阶段的功能。初始化本阶段要使用到的硬件设备检测系统内存映射( memory map)将内核映象和根文件系统映象从 Flash上读到SDRAM空间中为内核设置启动参数调用内核uboot启动内核详解uboot与Lin原创 2020-05-20 22:13:02 · 43522 阅读 · 48 评论 -
markdown中 段首缩进、增加空行
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-10 20:43:00 · 986 阅读 · 0 评论 -
嵌入式裸板学习之基础知识
C语言1.程序编译的过程2.大小端模式**简介:**数据在内存中以字节形式存放,X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以随时在程序中(在ARM Cortex 系列使用REV、REV16、REVSH指令 [1] )进行大小端的切换。**大端模式:**指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的...原创 2019-12-02 21:10:54 · 1021 阅读 · 0 评论 -
嵌入式裸板学习之ARM-THUMB子程序调用规则ATPCS
为了使c语言程序和汇编程序之间能够互相调用,必须为子程序间的调用制定规则,在ARM处理器中,这个规则被称为ATPCS:ARM程序和Thumb程序中子程序调用的规则。基本的ATPCS 规则包括寄存器使用规则、数据械使用规则、参数传递规则。 ARM 处理器中有r0~r15共16个寄存器,它们的用途有一些约定的习惯,并依据这些用途定义了别名,如下表所示:寄存器的使用规...原创 2019-10-04 21:08:29 · 1756 阅读 · 1 评论 -
详解汇编语言B和LDR指令与相对跳转和绝对跳转的关系
相对跳转和绝对跳转为什么要有相对跳转和绝对跳转?B和LDR跳转范围为什么两者的跳转范围不同?如何区分?原创 2020-05-07 22:43:08 · 10661 阅读 · 34 评论 -
辨析NOR FLASH地址左右移的问题
norflash芯片手册command如下:下...转载 2020-03-15 18:23:35 · 2625 阅读 · 0 评论 -
S3C2440中断寄存器有关
1.中断分两大类:内部中断和外部中断。2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。寄存器:EX...转载 2020-03-15 14:25:41 · 1268 阅读 · 0 评论 -
S3C2440从NAND Flash启动和NOR FLASH启动的问题
1.为什么NAND FLASH不能直接运行程序 NAND FLASH本身是连接到了控制器上而不是系统总线上。CPU运行机制为:CPU启动后是要取指令执行的,如果是SROM、NOR FLASH 等之类的,CPU 通过地址线发个地址就可以取得指令并执行,NAND FLASH不行,因为NAND FLASH 是管脚复用,它有自己的一套时序,这样CPU无法取得可以执行的代码,也就不能初始化系统了。...原创 2020-03-09 18:12:21 · 8316 阅读 · 51 评论 -
ATPCS规则
1.寄存器使用规则 ARM处理器中有rO-r15共16个寄存器,它们的用途有一些约定的习惯,并依据这些用途定义了别名,如表所示。 寄存器 别名 使用规则 r15 pc ...原创 2019-10-28 21:45:16 · 3838 阅读 · 0 评论 -
汇编指令-CMP、TEQ
cmp:(compare)指令进行比较两个操作数的大小 格式: cmp oprd1,oprd2 比较oprd1和oprd2操作数,然后通过助记符来实现想要的判断。teq: (test equal)测试相等,该指令通常用于比较操作数1和操作数2是否相等。 格式: teq oprd1,oprd2 TEQ指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运...原创 2020-02-15 16:26:51 · 4630 阅读 · 0 评论 -
汇编指令-MOV与ldr区别
MOV 1.可以寄存器与寄存器之间传递数据 2.可以常数传递到寄存器中(常数不能超过32位)LDR 1.可以地址与寄存器之间的数据传递 2.也可以常数传递到寄存器中实例: 1.r1与r2之间传递就只能用MOV: MOV r1,r2 2.常数传递到寄存器可以使用MOV和ldr: MOV r0,#0 ldr r0,=0 3.寄存器与地址0X0000000...原创 2020-02-15 16:26:24 · 4547 阅读 · 0 评论 -
程序计数器PC详解
冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。CPU总是按照P...转载 2019-11-07 22:54:22 · 7429 阅读 · 0 评论