嵌入式学习52-ARM1

news2025/5/31 17:55:06

知识零散:

1.flash:                                                                                                                                                           nor flash    可被寻地址                                                                                                                       nand  flash  不可寻地址

          指令:

                    add   加      Sub 减     cmp 比较大小   orr 置1  bic  清0

                   ASR 算数右移    LSL逻辑左移    Ldv  伪指令

                   16G+128G                                                                                                                                         RAM    ROM(flash)

                  mov  后加s      nvcv位        moveq

1、ARM的工作模式有哪些?(7种)                                                                                                   User非特权模式,大部分任务执行 在这种模式                                                                               FIQ: 当一个高优先级(fast)中断产生时将会进入这种模式                                                          IRQ :当一个低优先级(normal)中断产生时将会进入这种模式                                                     Supervisor:当复位软中断指令执行时将会进入这种模式                                                              Abort:当存取异常时将会进入到这种模式                                                                                       Undef: 当执行 未定义指令 时会进入这种模式                                                                                  System:使用和User模式相同寄存器集的特权模式                                                                                                                             

2、ARM9的通用寄存器有几个?

ARM9通用寄存器有  37个                    r0-r12  存数据

Cortex通用寄存器有  40个

3、异常向量表中irq的异常向量是多少?                                                                                                0x18

4、cpsr中的那几位是用来设置工作模式的?

       切换arm内核的工作模式(低5位 M)

由于内核的工作模式是由cpsr寄存器的低5位来设置的,那么就可以先把cpsr读出来,更改低5位之后再设置进去。这里读取cpsr使用mrs指令,cpsr寄存器用msr指令,需要注意的是在keil环境下写cpsr需要写成:   msr cpsr_c r0;将r0的值写入到cpsr寄存器

psr分为

       cpsr:当前程序状态寄存器

      spsr:保存程序状态寄存器(保护现场)

5、r13,r14,15别名是什么?有什么作用?                                                                                         

R15(PC):
              程序计数器用于存储当前取址指令的地址
 R14(LR):
    链接寄存器一般有以下两种用途:
    1.执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址
      程序需要返回时将LR的值复制到PC即可实现
    2.产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下
      一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回
 R13(SP):
    栈指针
用于存储当前模式下的栈顶地址(栈里都是临时数据)

6.那么是什么立即数呢?

指令要操作的 数据以常量的 形式出现在 指令 中,称为立即数

12位立即数的条件是?

  1. 如果某个数的数值范围是0~255之间,那么这个数一定是立即数;
  2. 把某个数展开成2进制,这个数的最高位1最低位1之间的二进制数序列的位数不能超过8位;
  3. 这个数的二进制序列的右边必须为偶数个连续的 0

例如:0x234 = 0000 0000 0000 0000 0000 0010 0011 0100

最高位1至最低位1之间的二进制数序列:1000 1101没有超过8位

末尾1的右边有2个0,所以0x234是立即数

最高位1至最低位1之间的二进制数序列:0011 1110 1010 1101 从第一个1开始到最后一个1之间超过8位,不满足条件1,所以这个数不是立即数

这是因为ARM中将这 12bits 分为 8bit 常数(0~255)和 4bit 循环右移位值(0~15)

8bit 常数范围(0~255),位移的步进值是以2为单位(即实际位移 2 * rotate 位),可以表示循环有以(0~30)偶数位: 0、2、4、6、8、10、12、14、16、18、20、22、24、26、28、30。在实际存储这个数值的时候,要想办法把这个数压缩到这12位中去。压缩的方法就是找一个数,这个数必须是一个8bit数,之后循环右移2 * rotate位。如果能找打这个数,那么待保存的数就是立即数,否则就不是。

7.RAM                                                                                                                                                 1.  sram                                                                                                                                               2.  dram                                                                                                                                               3.  sdram                                                                                                                                             4.  ddr  ram                                                                                                            

8.ROM

1.rom                                                                                                                                                  2.prom                                                                                                                                                3.eprom                                                                                                                                            4.eeprom                                                                                                                                            5.flash闪存    新一代非易失性存储器

存储大小比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab与ROS(1/2)---Simulink(二)

0. 简介 在上一章中我们详细介绍了ROS与Matlab链接的基础用法。这一章我们将来学习如何使用Matlab当中的Simulink来完成。Simulink对机器人操作系统(ROS)的支持使我们能够创建与ROS网络一起工作的Simulink模型。ROS是一个通信层,允许机器人系统的不同组件以消息的形…

Linux 使用 ifconfig 报错:Failed to start LSB: Bring up/down networking

一、报错信息 在运行项目时报错数据库连接失败,我就想着检查一下虚拟机是不是 Mysql 服务忘了开,结果远程连接都连接不上虚拟机上的 Linux 了,想着查一下 IP 地址看看,一查就报错了,报错信息: Restarting…

【2024年5月备考新增】《软考真题分章练习(含答案解析) - 18 管理科学-运筹学基础 (2)》

21、某种商品价格 P 变动与某指标 A 的变化具有很强的相关性,指标 A 的增长会导致 P 的降低,反之亦然。指标 A 和价格 P 的相关性系数是()。 A.0.18 B.0 C.0.98 D.-0.83 【答案】D 【解析】A 的增长会导致 B 的降低,反比关系,系数必然是一个负数。正比函数 y=kx,当 k>…

Java中创建多线程的方法

继承Thread类,对该类进行new一个实例,对实例调用start方法,重写run方法。 缺点:单继承,无法继承 public class myThread extends Thread {public static void main(String[] args) {myThread myThread new myThread()…

阐述嵌入式系统的基本组成:硬件层、驱动层、操作系统层和应用层

大家好,今天给大家介绍阐述嵌入式系统的基本组成:硬件层、驱动层、操作系统层和应用层,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 嵌入式系统是一种能…

Redis入门到通关之Hash命令

文章目录 ⛄介绍⛄命令⛄RedisTemplate API❄️❄️添加缓存❄️❄️设置过期时间(单独设置)❄️❄️添加一个Map集合❄️❄️提取所有的小key❄️❄️提取所有的value值❄️❄️根据key提取value值❄️❄️获取所有的键值对集合❄️❄️删除❄️❄️判断Hash中是否含有该值 ⛄…

Linux的内存管理子系统

大家好,今天给大家介绍Linux的内存管理子系统,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 Linux的内存管理子系统是Linux内核中一个非常重要且复杂的子系统&#…

深度解析 Spark(进阶):架构、集群运行机理与核心组件详解

关联阅读博客文章:深度解析SPARK的基本概念 引言: Apache Spark作为一种快速、通用、可扩展的大数据处理引擎,在大数据领域中备受关注和应用。本文将深入探讨Spark的集群运行原理、核心组件、工作原理以及分布式计算模型,带领读者…

b站江科大stm32笔记(持续更新)

b站江科大stm32笔记(持续更新) 片上资源/外设引脚定义表启动配置推挽开漏oc/od 门漏极/集电极 电阻的上拉下拉输入捕获输入捕获通道主从触发模式输入捕获基本结构PWMI基本结构PWMPSC ARR CRR输入捕获模式测频率TIM_PrescalerConfig()初始化输入捕获测频法…

[C++][算法基础]Dijkstra求最短路径I(稠密图)

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。 输入格式 第一行包含整数 n 和 m。 接下来 m 行每行包含三个整…

AI图书推荐:如何在课堂上使用ChatGPT 进行教育

ChatGPT是一款强大的新型人工智能,已向公众免费开放。现在,各级别的教师、教授和指导员都能利用这款革命性新技术的力量来提升教育体验。 本书提供了一个易于理解的ChatGPT解释,并且更重要的是,详述了如何在课堂上以多种不同方式…

TQ15EG开发板教程:在MPSOC上运行ADRV9009(vivado2018.3)

首先需要在github上下载两个文件,本例程用到的文件以及最终文件我都会放在网盘里面, 地址放在最后面。在github搜索hdl选择第一个,如下图所示 GitHub网址:https://github.com/analogdevicesinc/hdl/releases 点击releases选择版…

关于ARM的一些问题

一,arm的工作模式有哪些? User:非特权模式 FIQ:高优先级中断进入 IRQ:低优先级中断进入 Supervisor:当复位或软中断指令进入 Abort: 当存取异常时 Undef:当执行未定义指令时会进入这种模式 System:使用和User模式相同…

Asterisk 21.2.0编译安装经常遇到的问题和解决办法之卸载pjsip

目录 会安装也要会卸载make uninstallldconfig 会安装也要会卸载 有些人就只会装。 最常见的场景就是需要卸载之前版本的pjproject。 一般来说,其他版本的 pjproject 会被作为静态链接库安装。这些库跟 Asterisk可能不兼容。 因此,在安装正确版本的pjpro…

基于Pytorch实现图像分类——基于jupyter

分类任务 网络基本构建与训练方法,常用函数解torch.nn.functional模块nn.Module模块 MNIST数据集下载 from pathlib import Path import requestsDATA_PATH Path("data") PATH DATA_PATH / "mnist"PATH.mkdir(parentsTrue, exist_okTrue)U…

C语言之typeof用法实例(九十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

MySQL-触发器:触发器概述、触发器的创建、查看删除触发器、 触发器的优缺点

触发器 触发器1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例 3. 查看、删除触发器3.1 查看触发器3.2 删除触发器 4. 触发器的优缺点4.1 优点4.2 缺点4.3 注意点 注:此为笔者学习尚硅谷-宋红康MySQL的笔记,其中包含个人的笔记和理解&#…

APIGateway的认证

APIGateway的支持的认证如下: 我们从表格中可以看到,HTTP API 不支持资源策略的功能,另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证,这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个…

【C Hash Map from Redis】

将Redis源码中的哈希表底层逻辑提取,并进行最小demo级测试将对应文件抽出,通过宏替换等方式保证源码编译通过main.c编写测试demo ,注册哈希函数和值比较函数(必选项) /* Hash Tables Implementation.** This file imp…

ThingsBoard通过服务端获取客户端属性或者共享属性

MQTT基础 客户端 MQTT连接 通过服务端获取属性值 案例 1、首先需要创建整个设备的信息,并复制访问令牌 ​2、通过工具MQTTX连接上对应的Topic 3、测试链接是否成功 4、通过服务端获取属性值 5、在客户端查看对应的客户端属性或者共享属性的key 6、查看整个…