文章目录

  • 一 关于arm
    • 1 arm的三种含义
    • 2 两种指令集
      • 2.1 CISC
      • 2.2 RISC
    • 3 arm公司
    • 4 arm型号
      • 4.1 什么是soc
      • 4.2 cortex-a/m/r
    • 5 arm数据与指令类型
  • 二 cortex-A9处理器
    • 1 arm的工作模式
    • 2 cortex-a的寄存器组织概要
  • 三 计算机系统基本组成
    • 1 总述
    • 2 通过公交车理解总线
    • 3 两种总线结构
      • 3.1 单总线结构
      • 3.2 多总线结构
        • 3.2.1 DMA
        • 3.2.2 AHB高速总线 APB(外设)总线
        • 3.2.3 高速缓冲器cache
    • 4两种Flash
      • NorFlash
      • NandFlash

一 关于arm

1 arm的三种含义

(1) 一个公司的名称 Advanced RISC Machine
(2) 一类处理器的统称
(3) 一种技术的名称 (RISC)
ARM是以一家设计处理器的公司,这家公司设计的处理器统称为ARM,它们使用的指令集是RISC(精简指令集)

2 两种指令集

2.1 CISC

复杂指令集(汇编指令)指令数量多、设计复杂、能耗高,比如intel的处理器(电脑)

2.2 RISC

精简指令集,指令数量少,设计相对简单,能耗较低,更多的应用在各种移动终端

3 arm公司

只负责设计芯片(设计处理器的架构+总线),而不生产芯片,将设计版权授权全球各大半导体厂商,让它们去生产

4 arm型号

比如有一块开发板的型号:fs4412,由fs公司设计制造和命名;
开发板的核心板板载了一个soc芯片:exynos4412,这个芯片由三星设计制作和命名;
soc上的cpu内核的型号是:A9(cortex-a9),这个型号的架构是armv7;由arm公司设计和命名;

4.1 什么是soc

system on chip片上系统;狭义的讲就是一个芯片上集成了处理器、存储器、各种接口模块等组成了一个完整的硬件系统。

4.2 cortex-a/m/r

从armv6架构之后,内核的型号命名变化为cortex
(1) cortex-a:高端应用,手机、平板等;
(2) cortex-m:低功耗,单片机;
(3) cortex-r:实时处理器:实时操作系统RTOS;

5 arm数据与指令类型

(1) ARMv7:
ARM采用32位架构;
· Byte:8bits
· Halfword :16bits
· Word:32bits
· Doubleword:64bits(cortex-a处理器)
大部分的arm core提供:
· arm指令集(32bits)
· thumb指令集(16bits)
(2) ARMv8是64位的

二 cortex-A9处理器

1 arm的工作模式

2 cortex-a的寄存器组织概要


三角标记表示各工作模式下独有的寄存器,不能被其它工作模式访问,未被标记的表示所有工作模式共享,在内核中只有一份;比如r0寄存器在内核中只有一份,所有工作模式下访问到的是同一个寄存器,而对于User模式下能访问到的r8寄存器,在FIQ模式下不能访问,而是去访问r8_fiq是寄存器,同样地User模式下也不能访问r8_fiq寄存器;
观察知:
(1) 先不考虑monitor模式,内核中一共有37个寄存器;
(2) FIQ模式下的私有寄存器最多;
(3) 每个模式都有自己的r13和r14,即sp和lr;
(4) pc只有一个;
(5) 只有User模式没有spsr寄存器;因为大部分情况都在user模式运行,当产生中断或者异常时,为了能够及时响应然后处理异常,会自动从user模式切换到其他模式,但是处理完之后需要手动恢复;
一些补充:
(1) cpsr是当前程序状态寄存器,只有一个;
(2) spsr是保存cpsr的寄存器,当user模式切换到其他模式,需要先将user模式的状态保存在对应模式的spsr中,之后cpsr寄存器中保存其他模式的当前程序状态;异常模式的代码执行完之后需要回到User模式,先从spsr把之前User模式的cpsr恢复,这样就完好得切换回原来的模式和状态;
(3) pc是程序计数器,程序执行到哪里,pc就在哪里;
(4) r13即sp栈顶指针,每种模式都有它自己的栈区;
(5) r14即lr返回地址;

三 计算机系统基本组成

1 总述

硬件部分:输入输出设备、处理器(控制器、运算器、寄存器)、存储器(外存、内存、cache)、总线

2 通过公交车理解总线

公交车有什么特点:有起点站和终点站;中途有数个站点;每个站都可以上下人;可以从起点站坐到终点,也可以在某个站下车;或者从某个站点上车,然后在另一个站点或起点站下车;
总线有什么特点:连接CPU和各个IO,内存等;数据可以从CPU送到内存,各个IO,也可以在IO之间传输;

3 两种总线结构

3.1 单总线结构


缺点:
(1) 内存读写的速度一般比IO设备要快,限制了内存的读写速度
(2) 内存和IO设备要进行数据传输必须要经过cpu

3.2 多总线结构

3.2.1 DMA

Direct memory access直接内存访问,解放了cpu,比如需要大量数据传输的时候就可以使用dma

3.2.2 AHB高速总线 APB(外设)总线
3.2.3 高速缓冲器cache

编译器会对程序其进行优化,使一些经常需要访问的数据在运行时从内存拷贝一份到cache中,之后如果cpu要访问这些数据,直接从cache中取,cache比内存的读写速度快,所以从一定程度上提高了程序运行效率。
但是,如果有一个变量的值需要经常发生改变,而且改变的一定是内存的值,而cpu还是去cache中取数据,若更改的频率大于cache刷新的频率,就会出现内存和cache中数据不同步的问题,所以这种情况不适合使用cache,通过volatile声明变量告诉编译器这个变量的值不优化,也就是每次都去访问内存,而不在cache中备份。

4两种Flash

NorFlash

可以直接运行程序,不需要程序对它进行初始化,容量小,价格高,一般用于单片机或者soc的固化的一小部分引导程序

NandFlash

不能直接运行程序,需要初始化,必须和内存结合使用

嵌入式arm(一)学ARM要掌握的预备知识(本篇文章持续更新)相关推荐

  1. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

  2. 软件测试行业一定要懂代码么?想学软测的先看了这篇文章再考虑吧

    300G全套最新软测视频教程分享 链接:https://pan.baidu.com/s/17jkyGn-Wm-zC6QQLkWjrsw 提取码:o94n 无论是刚入测试行业的萌新,还是已经在测试行业闯 ...

  3. Linux系统软件工程师/嵌入式Linux应用开发工程师 知识体系构建 500篇(持续更新)

    订阅了该专栏,相当于订阅了博主的所有付费专栏,预计到2024年年底会写完1000篇文章,涉及20多个分类,构建一个完整的Linux C/C++应用开发体系. 关于我的写作风格和众多CSDN博主不同的一 ...

  4. 新手学习嵌入式开发要学什么

    最近遇到很多处于迷茫中的新手,在纠结要不要去学嵌入式,主要问题在于嵌入式的门槛非常高,经验少.或者非电子专业投身嵌入式行业能否发展下去.现在嵌入式开发行业的确发展很好,大多数从业者都是科班出身,但我们 ...

  5. 跟涛哥一起学嵌入式 20:后ARM时代,嵌入式工程师的自我修养

    1 嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox ...

  6. 细说嵌入式教程的坑——小白学ARM(三)

    细说嵌入式教程的坑--小白学ARM(三) 细说国嵌2440教程的坑 细说国嵌2440教程的坑 这几天是被国嵌2011年的教程整懵逼了.... 小白于2020年6月在某宝买了一块mini2440的开发板 ...

  7. arm体系结构与编程_教程:如何学习嵌入式系统(基于ARM平台)

    一.嵌入式系统的概念 着重理解"嵌入"的概念 主要从三个方面上来理解. 1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是 ...

  8. 如何学习嵌入式系统(基于ARM平台)

    一.嵌入式系统的概念        着重理解"嵌入"的概念 主要从三个方面上来理解.     1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构 ...

  9. 嵌入式,单片机,ARM,Android底层开发之间的关系

    很多人在问我们学这些东西能干什么,这些东西有什么关系,我该学那个? 想知道这些首先得知道这些东西都试试很么. 单片机(Microcontrollers,亦称MCU)包括了CPU.随机存储器RAM.只读 ...

  10. arm汇编指令集_1. 从0开始学ARM安装Keil MDK uVision集成开发环境

    关于ARM的一些基本概念,大家可以参考我之前的文章:<0.到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 0. 如何学习arm? AR ...

最新文章

  1. 为什么不建议学python贴吧_为什么那么多自学Python的后来都放弃了,总结下来就这些原因...
  2. keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件
  3. algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点
  4. mysql 优化300例_mysql的limit优化实例
  5. Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)
  6. 电脑护眼设置_解锁办公新技能 海信护眼平板Q5玩转工作无负担-科技频道
  7. MYSQL互为主从同步(Windows)
  8. C#基础8:类的继承
  9. [转载] numpy用法(logical_and, nonzero,arange, reshape)
  10. linux安装curl扩展
  11. JMS开发(一):基础理论认知
  12. 火山安卓全屏侧滑布局器使用教程
  13. 【严蔚敏数据结构题集】C/C++编程线性表练习题(一)
  14. 人大金仓数据库的备份与还原 KingbaseES V8R6
  15. 中国柔性材料行业发展建议及竞争态势研究报告2021年版
  16. 中国主要山脉及山峰分布
  17. 网站前端开发必会基础知识有哪些?
  18. word 宏命令批量把当前文件夹下的doc另存为docx格式
  19. 华为联合全球伙伴加速上线HMS内容类应用,影音娱乐体验一步尝鲜
  20. Java求一元二次方程的根

热门文章

  1. 英语单词听力测试软件,英语单词发音软件
  2. DNS协议解析与DNS模拟服务器-基于golang实现
  3. 北方工业大学java_在北方工业大学就读是怎样的一种体验?
  4. 基于SSM的Web网页聊天室系统
  5. RCE(命令执行)总结
  6. CCF计算机职业资格认证考试201312-2试题及答案
  7. 在线考试系统微信小程序的实现(一)
  8. PHP快速入门指南-基础篇一
  9. 小学计算机课教学设计加教学反思,小学计算机教育教学反思随笔
  10. MATLAB寻找峰值函数