【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型

这篇具有很好参考价值的文章主要介绍了【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录
【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型


失败了也挺可爱,成功了就超帅。

前言

本文为ARMv7-M参考手册的阅读笔记

1、简介

ARMv7架构根据不同应用场景和性能 分为三个分支 -A -R -M

ARMv7-A:用于高性能应用型SOC 支持ARM和Thumb指令集 内存管理单元使用 MMU 支持虚拟内存

ARMv7-R:用于实时性要求很高的SOC 支持ARM和Thumb指令集 内存管理单元使用 MPU支持内存保护

ARMv7-M:用于低成本低功耗性能够用的MCU 只支持Thumb指令集(Thumb-2) 如扩展浮点运算单元的MCU 会在此基础上加入浮点指令

ARMv7-M架构支持两种扩展功能:DSP和FP浮点指令
DSP扩展:包含 饱和指令及SIMD指令(单指令多数据)
FP扩展:可选单精度和双精度
基于Cortex-M4带FPU的MCU 支持DSP和FP单精度

2、应用程序级编程模型

2.1 编程模式和访问等级

两种:处理模式和线程模式

程序正常运行在线程模式 执行异常中断时会处于处理模式

程序运行又分为两种访问权限:特权访问和非特权访问

特权:所有资源都可以控制 非特权:有限制

线程模式可以通过程序控制处于特权/非特权运行 处理模式总是特权模式

2.2 数据类型和运算操作

该架构中 支持 字节、半字、字类型的数据。

当加载字节、半字大小的指令时可以通过加载指令指定零/符号扩展

可以对64位整数数据直接操作 一般情况通过两个指令合并它们。

指令集提供了对寄存器中值的一些操作指令:按位逻辑与或非、移位、加减乘 和我们编程语言中支持的运算操作符类似 只不过使用方式不同

使用方式如下:使用内置函数/ARM指令(ARM汇编)

LSL逻辑左移: 将一个寄存器中的值进行逻辑左移

eg:LSL R1, R2, #3  将R2寄存器中的值逻辑左移3位 写入R1中

LSR逻辑右移:将一个寄存器中的值进行逻辑右移

eg:LSR R1, R2, #3  将R2寄存器中的值逻辑右移3位 写入R1中

ASR算术右移:将一个寄存器中的值进行算术右移

eg:ASR R1, R2, #3  将R2寄存器中的值算术右移3位 写入R1中

ROR循环右移:指令把所有位都向右移,最低位复制到进位标志位和最高位

eg:ROR R1, R2, #3  将R2寄存器中的值循环右移3位 写入R1中

RRX循环右移:对寄存器中的内容进行带扩展的循环右移的操作。是一种协处理器指令。按操作数所指定的位数向右循环移位,左端用进位标志位C来填充。其中,操作数可以是寄存器,也可以是立即数(0~31)。例如,MOV R0,R1,RRX#2;将R1中的内容进行带扩展的循环右移两位后传送到R0中。

2.3 寄存器和执行状态

一共有16个32位寄存器 其中13个通用寄存器(R0-R12) 和 3个特殊功能寄存器(SP/LR/PC)

SP:R13 堆栈指针 指向栈顶

LR:R14 链接寄存器 存储程序返回地址

PC:R15 程序计数器 程序执行向地址

程序执行状态寄存器 APSR 32位
armv7-m,# ARM,ARMv7-M架构

1.2.4 异常和中断

中断是异常的一种 可以由异常/中断行为触发 也可通过软件触发

系统异常如 SVC/PendSV systick等

它们的控制都用 中断控制状态寄存器 ICSR决定 后面章节详解

1.2.5 浮点单元寄存器

只有支持该扩展的MCU才有 Cortexm4带FPU的会有

32个单精度寄存器 S0-S31 两两一组 16个双精度寄存器 D0-D15

更多关于浮点扩展先不看了

3、内存模型

3.1 地址空间

后面章节详解

3.2 对齐

支持非对齐访问
非对齐指令
armv7-m,# ARM,ARMv7-M架构

3.3 大小端

支持大端和小端 默认小端
通过SCB系统控制寄存器 可以修改

加载寄存器数据/存储数据到寄存器的指令
armv7-m,# ARM,ARMv7-M架构
对通用寄存器翻转字节的指令
armv7-m,# ARM,ARMv7-M架构

3.4 同步和信号量

在多线程运行下 信号量同步操作时我们常见的 线程间通信的方式
排他访问 指令具有原子操作 很好的满足了信号量的实现
armv7-m,# ARM,ARMv7-M架构
文章来源地址https://www.toymoban.com/news/detail-859561.html

到了这里,关于【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARMV7架构知识点记录

    ​ ARM会定期发布该架构的新版本。它们会添加新功能或对现有行为进行更改。此类更改几乎总是向后兼容的,这意味着在旧版本的体系结构上运行的用户代码将继续在新版本上正确运行。当然,为了利用新特性而编写的代码无法在缺乏这些特性的旧处理器上运行。在体系结构

    2024年02月20日
    浏览(31)
  • armv7l安装miniconda

    armv7l架构的资料相对较少,本文记录安装miniconda及搭建虚拟python环境的过程。 可以看到本设备是armv7l的架构。 请读者根据自己机器的配置,在miniconda官网查找对应的下载版本。注意如果是aarch64架构那miniconda3的版本不要超过4.10。本设备为armv7架构,应该下载的文件是:Minic

    2024年02月04日
    浏览(34)
  • Ubuntu and Debian(ARMv7) grafana prometheus

    Ubuntu and Debian(ARMv7)SHA256: 4d13652e0bb215fae2338123cd0e98d0755b76076d9ea7e652bea0fd039124e4 sudo apt-get install -y adduser libfontconfig1 musl wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.0.10_armhf.deb sudo dpkg -i grafana-enterprise_10.0.10_armhf.deb Download Grafana | Grafana Labs Download | Prometheus

    2024年01月21日
    浏览(34)
  • ARMv7,ARM7,ARMA7有什么区别

    随着ARM的发展,芯片也越来越多,对芯片的称呼也多了。首先,ARMv7属于 内核版本号 ,而ARM 7则为 Soc的称号 。其中,内核的版本号,是有V1到V2 V3等,从小到大,性能越来越好。如下图,ARM7(soc版本号)是ARMV4内核版本下的。 ARM是从 Cortex系列 有了一个大的转折。ARM Cortex系列

    2024年02月06日
    浏览(26)
  • Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力!

    2024年01月24日
    浏览(46)
  • 百度车牌识别AI Linux使用方法-armV7交叉编译

    百度智能云-登录 (baidu.com)         里面有两个版本的armV7和armV8架构。v7架构的性能比较低往往需要交叉编译,v8的板子性能往往比较好,可以直接在板子上编译。         解压到ubuntu里面。这里介绍v7架构的。 ubuntu下安装软件包。根据提示可以安装其他的包 zlib Home Site

    2024年02月06日
    浏览(29)
  • 如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流

    为什么要在板子瑞芯微rv1126核心板上面安装nginx服务器,是因为我的项目需要用到拉到连接在板子上面的摄像头,由于是摄像头是直连摄像头的只能通过板子上面的wifi热点设备,先连接这个热点才能获取到这个网络摄像头,那么就需要板子做一个推流的服务器让摄像头的画面

    2024年02月15日
    浏览(34)
  • 【ARM Cortex-M 系列 3 番外篇 -- ARMv6, ARMv7, ARMv8, ARMv9 架构差异及精简指令集 与 复杂指令集 介绍】

    上篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 异常处理及 hardfault 处理分析 ARM架构是一种处理器架构,全称为高级精简指令集计算机(Advanced RISC Machine)。它是英国ARM公司设计的一种精简指令集( RISC )处理器架构,和复杂指令集( CISC )处理器架构相对。 CISC 与 RISC 差异

    2024年02月08日
    浏览(34)
  • unity android包(armV7+arm64)启动黑屏崩溃,在splash动画开始前

    1、先交代下问题背景。打包一直是用的armV7架构,前段时间老板提到加上arm64。没想到公司其中一台手机居然崩溃,unity的splash动画都没播,但是也没闪退,就是黑屏。看到一串红色崩溃日志。 2、解决方式。把原来安装的armV7架构包删掉,再装armV7+arm64架构的包就可以了。参考

    2023年04月26日
    浏览(39)
  • 玩客云 armv7l armbian 编译安装opencv2和opencv-contrib-python

    玩客云刷机系统为Armbian 23.11.1 Jammy with Linux 6.4.13-edge-meson,很多包不好直接安装和下载,因此只能由源码编译 以opencv-contrib-python-4.6.0.66 ( opencv-python-4.9.0.80一样操作) 下载源码 cd ~/downloads tar -zcvf opencv-contrib-python-4.6.0.66.tar.gz cd opencv-contrib-python-4.6.0.66 采用setup.py安装 等待完成即

    2024年02月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包