arm 64位架构
文章平均质量分 84
arm 64位架构与汇编指令
孔祥锐
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存屏障与设备内存属性完全指南
理解内存屏障和设备内存属性的关键在于认识到硬件设备与普通内存的本质区别普通内存:注重性能,允许重排、合并、缓存设备内存:注重正确性,需要严格顺序、独立访问、及时完成记忆口诀屏障选择:要顺序用DMB,要完成用DSB,改配置用ISB设备属性:nG不合并,nR不重排,nE不提前核心原则:对待硬件要像对待VIP客户,说话要按顺序,一次说一件事,要确认对方听到通过正确使用内存屏障和设备内存属性,可以确保系统与硬件设备的可靠交互,避免各种难以调试的时序问题。原创 2025-09-23 16:16:37 · 511 阅读 · 0 评论 -
gic 中断触发类型
若两次跳变间隔小于CPU响应时间,GIC可能仅记录一次中断(需硬件防抖)。// 驱动调用pci_alloc_irq_vectors()申请MSI中断。——像胶水一样粘住CPU直到处理完成,但操作不当会淹没系统。中断源需维持电平直到CPU处理完成(如外设DMA传输中)。无信号丢失,适用于共享中断线(多个设备共用一根中断线)。:中断信号从低到高(或高到低)的电平跳变瞬间触发。替代物理信号线,CPU收到特定内存消息后触发中断。降低共享中断冲突(每个设备独占中断向量)。无物理线约束,支持数千个中断号。原创 2025-07-04 14:43:48 · 1039 阅读 · 0 评论 -
CPU、SOC、MPU、MCU--详细分析四者的区别
cpu通常用于通用计算机,例如台式机/笔记本(x86);而soc通常用于嵌入式设备,例如:手机,智能驾舱、导航、ipad、工控设备等等。原创 2025-02-21 11:14:44 · 2266 阅读 · 0 评论 -
【GIC】一文看懂GICv3(转载)
由于SOC中外设及与其相关的中断数量众多,且各中断又有多种不同的配置方式,为了减轻CPU的负担,现代处理器中断的配置和管理一般都通过。转载 2025-02-19 11:06:26 · 731 阅读 · 0 评论 -
六、armv8 安全状态与非安全状态
EL3是sec-world和non-sec world之间的gateway, 也就是说sec 想变成 non-sec,一定要经过EL3这条路。这同样可以说明跑在EL3下的管理程序为什么叫做 Secure monitor。根据这张图片,EL1 sec如何变成 EL1 non-sec?除非从EL3改变了安全状态,否则安全状态不会随着异常级别的更改而更改。原创 2024-10-31 15:41:11 · 1027 阅读 · 0 评论 -
五、翻译控制寄存器(TCR_ELn、VTCR_EL2)与页表基地址(TTBR*_ELn、VTTBR_ELn)
•地址对齐:位A[47:x]直接对应于翻译表基地址中的相应位;•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译表遍历都将映射到安全PA(Physical Address)空间。•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译都会访问安全PA(Physical Address)空间。•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译表遍历都将映射到非安全PA空间。•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译都会访问非安全PA空间。原创 2024-11-01 14:57:22 · 1069 阅读 · 0 评论 -
四、虚拟化配置寄存器(HCR_EL2)
在没有引入VHE模式下type2的hypervisor,host的kernel运行在el1而虚拟化拓展部分运行在el2上,分层设计在系统运行时会造成很多不必要的上下文切换,带来不少设计上的复杂性和性能开销。此时只需要HCR_EL2.H2E == 1这一比特被置位,即vhe使能,那Host OS对所有EL1寄存器的访问操作都被硬件转换为对相应EL2寄存器的访问。但是,重定向又会带来一个新的问题,那就是Hypervisor完全可能在某些情况下,例如当执行任务切换时, 访问真正EL1的寄存器。原创 2024-10-30 15:50:29 · 1364 阅读 · 0 评论 -
三、系统控制寄存器(SCTLR_ELn)
系统控制寄存器(SCTLR)是一个用来控制标准内存、配置系统能力、提供处理器核状态信息的寄存器。包括 SCTLR_EL1、 SCTLR_EL2和 SCTLR_EL3。原创 2024-10-30 13:57:22 · 542 阅读 · 0 评论 -
二、ARMv8寄存器之系统寄存器
例如,单独的辅助控制寄存器(ACTLR)以ACTLR_EL1,ACTLR_EL2和ACTLR_EL3的形式存在。AArch64中系统寄存器会以”_ELn“的方式名命,寄存器的名称会告诉你可以访问它的最低异常级别。MSR TTBR0_EL1, x0 // 把x0 的值写入TTBR0_EL1寄存器。MRS x0, TTBR0_EL1 // 把 TTBR0_EL1 的值保存到x0。_EL1:处理器处于EL1、EL2、EL3时可以访问。TTBR0_EL1可以从EL1、EL2和EL3访问。原创 2024-10-30 13:43:02 · 1172 阅读 · 0 评论 -
一、ARMv8寄存器之通用、状态、特殊寄存器
通用寄存器。这类寄存器主要是用来暂存数据和参与运算。通过load\store指令操作。状态寄存器。AArch64体系结构使用PSTATE寄存器表示当前处理器状态。特殊寄存器。有专门的用途,用于控制处理器的行为,或表示CPU的状态。系统寄存器。除了以上寄存器,ARMv8体系结构还定义了很多系统寄存器,用来完成对处理器不同功能的配置。对应ARMv7的cp15寄存器。原创 2024-10-30 11:19:24 · 2333 阅读 · 0 评论
分享