0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从单片机转到ARM —— ARM架构基础知识小结

GReq_mcu168 来源:玩转单片机 2020-08-05 10:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单片机转到ARM,主要需要学习ARM的架构,ARM相比单片机多了一些外设和总线。在仅仅是裸奔的情况下,如果熟悉了ARM架构,那么可以认为使用任何ARM架构的芯片和用单片机将没有区别。 ARM架构之所以更复杂,当然是为了跑更快以及更好地支持片上系统,所以在某种程度上来说对片上系统不是很了解的话那对于ARM架构的理解也不会那么深。

ARM架构基础知识小结

通用寄存器

R13通常被用作栈指针,进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常程序时,将保存在R13所指的栈中的寄存器值弹出。R14又被称为连接寄存器(LinkRegister,LR),即PC的返回值。R15又被记作PC。ARM指令是字对齐的,PC的值的第0位和第1位总为0。也就是说是32位对齐。

就Cortex-M3来说,拥有R0-R15的寄存器组。其中R13作为堆栈指针SP。SP有两个,分别为R13(MSP)和R13(PSP)即主堆栈指针(MSP)和进程堆栈指针(PSP),但在同一时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。这些寄存器都是32位的。

ARM的各个模式

ARM有以下7种模式:

用户模式(User,usr) :正常程序执行的模式

快速中断模式(FIQ,fiq) :用于高速数据传输和通道处理

外部中断模式(IRQ,irq) :用于通常的中断处理

特权模式(Supervisor,svc) :供操作系统使用的一种保护模式

数据访问中止模式(Abort,abt) :用于虚拟存储及存储保护

未定义指令中止模式(Undefined,und):用于支持通过软件以及硬件的协处理器

系统模式(System,sys) :用于运行特权级的操作系统任务

其中除了用户模式之外都称之为特权模式(privileged modes),而在privileged modes中除了系统模式其它都称为异常模式,即exception mode,意思是“这模式什么时候会发生不好说……”,比如说来了个外部中断也会进入异常模式,但是此时系统是运行完好的。 其中SVC用于在系统刚启动的启动文件BOOT程序中,跳转到kernel之前必须为SVC,SVC具有最高权限,可以对任何寄存器进行操作。在裸机程序中我们有时候会一直处于SVC模式下。 关于什么时候会进入用户模式或者系统模式,比如进入linux kernel之后会设置成sys模式,比如任务调度等等都会在sys模式中,而执行用户编写的应用程序时,系统是处于usr模式中。以上需要在linux中找出证据验证。 其中FIQ、IRQ为中断模式,有中断发生时会进入FIQ模式或者IRQ模式,至于到底是进入哪个模式是由开发者设定的。理论上FIQ模式的响应速度比IRQ模式要快。 其中abt模式通常发生于在访问地址没有对齐时的情况,此时会跳转到abt所属的中断向量地址中去。und模式应该是取到指令之后发现指令不能用,此时会跳转到abt所属的中断向量地址中去。

启动文件

这一部分只要了解一下协处理器CP15的相关作用以及ARM或者THUMB汇编再看一下网上的例程以及解释应该不难理解。在启动文件中我们可以做任何事情,但是通常我们可以做这些:改变程序大小端排序,关闭看门狗,屏蔽中断,设置各个时钟,设置从SLEEP或者IDLE启动时的程序,初始化SDRAM,设置各模式指向的堆栈,设置好中断向量表,判断是从NOR还是NAND FLASH启动,将文件拷到SDRAM中,运行Main。以上也说明了为什么需要一个汇编写的启动文件,设置各个模式下的SP指针以及初始化中断向量的跳转(ARM的中断较多设置也较灵活)也只有汇编干比较合适了。甚至在SOC(片上系统)中每个任务都有自己的堆栈,所以改变堆栈指针的那一部分程序也是放在汇编里做的。总之了解启动文件是一个非常好的切入点。

MMU

关于MMU,因为多种存储设备的物理地址不同以及不连贯性,将其地址安放在合理的连续虚拟地址上是很必要的,所以MMU出现了。MMU即将不同的地址放在合适的虚拟地址中,以便调度。比如要跑LINUX必须要有MMU的支持才行。

ARM920T的三种类型地址

虚拟地址(VA)、变换后的虚拟地址(MVA)、物理地址(PA)

以下是一个当一个指令被请求时地址所做操作的例子:

1.指令VA(IVA)被ARM920T发出

2. 它被ProcID(当前进程所在的进程空间块的编号)转换成指令MVA(IMVA),指令CACHE(ICACHE)和MMU看到的就是IMVA。

3. 如果在IMMU上的保护模块确认IMVA不会被中断,并且IMVA标签也在ICACHE中,指令数据会读出并返回到ARM920T内核中。

4. 如果IMVA tag并不在ICACHE中,那么IMMU会产生出一个指令PA(IPA)。地址会给AMBA总线接口以获取外部数据。

如何使用FCSEPID

920T内核发出的地址都是0-32MB的范围,4GB的逆序空间被分成了1238个进程空间块,每个进程空间块大小为32MB。每个进程空间块中可以包含一个进程。系统128个进程空间块的编号0-127,编号为I的进程空间块中的进程实际使用的虚拟地址空间为(I*0x02000000)到(I*0x02000000+0x01FFFFFF)。所以VA通常高7位都为0时 MVA = VA |(PID << 25)。    当VA高7位不为0时 MVA = VA,这种VA是本进程用于访问别的进程中的数据和指令的虚拟地址,注意这时被访问的进程标识符不能为0。

注意:当FCSE_PID为0时,即当前复位,则当前920T和CACHES及MMU之间是平面映射的关系(很巧妙:))。

TLB是什么

TLB即translate look-aside buffer,快表就是存储几个常用的页表,以提高系统运行的速度。在更新页表之前要使其无效,其操作的寄存器为R8,R8为只写寄存器,如果读它则会造成不可估计的后果。

AP赋值表

DOMAIN的赋值则是在C3中的,32bit共有16个域,每个域分两个bit,这两个bit控制当前域的权限。而以上四个bit是为了选择0-15个域的其中一个。

关于C、B赋值

以下有关于两种写缓存,写通以及写回。写回法是指CPU在执行写操作时,被写的数据只写入cache,不写入主存,仅当需要替换时,才把已经修改的cache块写回到主存中。写通法是指CPU在执行写操作时,必须把数据同时写入cache和主存。

AHB/APB是什么

AHB(AdvancedHigh performance Bus),主要用于系统高性能、高时速速率模块间通信。APB(AdvancedPeripheral Bus),主要用于慢速片上外设与ARM核的通讯。AHB私有外设总线,只用于CM3内部的AHB外设,它们是:NVIC,FPB,,DWT和ITM。APB私有外设总线,既用于CM3内部的APB设备,也用于外部设备(这里的“外部”是对内核而言)。CM3允许器件制造商再添加一些片上APB外设到APB私有总线上,它们通过APB接口来访问。

四种耗电模式

NORMAL、SLOW、IDLE、SLEEP先配置主PLL MPLL给CPU用。在上电复位的时候PLL是不稳定的,所以在PLLCON在被软件配置之前Fin直接是跳过MPll给FCLK,所以不配置PLLCON也是可以正常工作。即使工作在正常状态下,也可以对MPLLCON进行配置,配置之后等待PLL Lock-time过后内部各模块的CLK才可以被正常供应。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663480
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9499

    浏览量

    388679
  • 寄存器
    +关注

    关注

    31

    文章

    5589

    浏览量

    129057

原文标题:从单片机转到ARM —— ARM架构基础知识小结

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机的误区

    怎么使用,根本也记不住寄存器的用途。 单片机完成一个具体的功能涉及到哪些寄存器,都会有例子给出,有些单片机,生产厂家也会给出相关的子程序,你只需要调用就可以。 等你把这些基础知识学完以后,几乎可以完成
    发表于 11-14 07:46

    什么是ARM架构?你需要知道的一切

    智能手机到工业边缘计算机,ARM®架构为全球数十亿台设备提供动力。ARM®以其效率优先的设计和灵活的许可模式而闻名,已迅速移动处理器扩展
    的头像 发表于 09-11 14:48 749次阅读
    什么是<b class='flag-5'>ARM</b><b class='flag-5'>架构</b>?你需要知道的一切

    一文了解Arm神经超级采样 (Arm Neural Super Sampling, Arm NSS) 深入探索架构、训练和推理

    本文将从训练、网络架构到后处理和推理等方面,深入探讨 Arm 神经超级采样 (Arm Neural Super Sampling, Arm NSS) 的工作原理,希望为机器学习 (ML
    的头像 发表于 08-14 16:11 2484次阅读

    ARM入门学习方法分享

    架构。学习ARM的开始可以学习RISC和CISC架构基础知识开始。 二、学习汇编语言:ARM
    发表于 07-23 10:21

    一文回顾 Arm架构 40 年的创新历程

    1980 年代为 BBC Micro 打造的低功耗 ARM1 处理器,到如今的人工智能 (AI) 设备,Arm 架构始终立于世界上最具变革性技术的核心。40 年来,
    的头像 发表于 07-09 18:41 2399次阅读
    一文回顾 <b class='flag-5'>Arm</b><b class='flag-5'>架构</b> 40 年的创新历程

    同一水平的 RISC-V 架构的 MCU,和 ARM 架构的 MCU 相比,运行速度如何?

    ARM 架构与 RISC-V 架构的 MCU 在同一性能水平下的运行速度对比,需架构设计原点、指令集特性及实际测试数据展开剖析。以
    的头像 发表于 07-02 10:29 1211次阅读
    同一水平的 RISC-V <b class='flag-5'>架构</b>的 MCU,和 <b class='flag-5'>ARM</b> <b class='flag-5'>架构</b>的 MCU 相比,运行速度如何?

    图解单片机功能与应用(完整版)

    基础知识的介绍出发,图文并茂,直观、系统地介绍了单片机的内部结构、工作原理和应用技巧。全书分为10章,内容包括51单片机编程资源图解、51单片机
    发表于 06-16 16:52

    ARM Mali GPU 深度解读

    ARM Mali GPU 深度解读 ARM Mali 是 Arm 公司面向移动设备、嵌入式系统和基础设施市场设计的图形处理器(GPU)IP 核,凭借其异构计算架构、能效优化和生态协同,
    的头像 发表于 05-29 10:12 2986次阅读

    Arm 公司面向 PC 市场的 ​Arm Niva​ 深度解读

    :异构集成与 AI 优化 Arm Niva 基于 ​ Armv9.2 架构 ​ 设计,整合了 Cortex-X 超大核、Cortex-A 高效核及
    的头像 发表于 05-29 09:56 1303次阅读

    Arm 公司面向移动端市场的 ​Arm Lumex​ 深度解读

    子系统(CSS)​ ​ 在移动端的落地形态,Lumex 旨在通过高度集成化的软硬件方案,解决移动设备在 AI 性能、能效比与开发效率上的挑战。以下技术架构、性能突破、应用场景、生态系统及战略价值展开分析: 一、技术架构:异构计
    的头像 发表于 05-29 09:54 4054次阅读

    Arm 公司面向汽车市场的 ​Arm Zena​ 深度解读

    汽车市场的落地形态,Zena 旨在解决汽车智能化转型中的算力需求、开发效率与功能安全挑战。以下技术架构、性能优势、应用场景、生态系统及战略意义展开分析: 一、技术架构:异构集成与功能安全强化
    的头像 发表于 05-29 09:51 2072次阅读

    Arm架构何以成为现代计算的基础

    2025 年 4 月,Arm 架构迎来了问世 40 周年。这个始于英国剑桥一隅、怀揣雄心壮志的项目,如今已成为全球广泛采用的计算架构传感器、智能手机、笔记本电脑,到汽车、数据中心等
    的头像 发表于 05-20 10:02 934次阅读

    Arm助力开发者加速迁移至Arm架构云平台 Arm云迁移资源分享

    随着基于 Arm 架构的云实例日益扩展,越来越多的用户正从传统平台迁移至 Arm 平台上。
    的头像 发表于 04-09 18:23 1022次阅读

    Arm推出GitHub Copilot新扩展程序,助力快速迁移至Arm架构服务器

    工具之一,此次推出的扩展程序能让数百万Copilot用户更容易地访问Arm®架构的技术,并为开发者提供更友好的体验。此外,此次发布亦首次为全球开发者免费提供了完整的
    的头像 发表于 03-04 16:07 855次阅读
    <b class='flag-5'>Arm</b>推出GitHub Copilot新扩展程序,助力快速迁移至<b class='flag-5'>Arm</b><b class='flag-5'>架构</b>服务器

    单片机Debug工具性能对比 单片机调试常用命令

    。以下是对单片机调试工具性能的简要对比以及一些常用的调试命令。 单片机Debug工具性能对比 Keil uVision 性能 :Keil uVision 是一款功能强大的集成开发环境(IDE),支持多种单片机,特别是
    的头像 发表于 12-19 09:56 2162次阅读