嵌入式学习52-ARM1

知识零散:

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.mzph.cn/news/806719.shtml

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

相关文章

如何设置端口映射?

端口映射是一种网络技术,通过在网络路由器或防火墙上设置规则,将外部网络请求转发到内部特定设备或服务的端口上。这样可以实现不同地区电脑与电脑、设备与设备、电脑与设备之间的信息远程通信,提供更加便捷的网络连接。 2. 天联组网 天联是…

Day:005 | Python爬虫:高效数据抓取的编程技术(爬虫效率)

爬虫之多线程-了解 单线程爬虫的问题 因为爬虫多为IO密集型的程序,而IO处理速度并不是很快,因此速度不会太快如果IO卡顿,直接影响速度 解决方案 考虑使用多线程、多进程 原理: 爬虫使用多线程来处理网络请求,使用线程…

废品回收 小程序+APP

用户实名认证、回收员实名认证、后台审核、会员管理、回收员管理、订单管理、提现管理、地图、档案管理。 支持,安卓APP、苹果APP、小程序 流程: 一、用户端下单,地图选择上门位置、填写具体位置、废品名称、预估重量、选择是企业废旧、家…

MySQL - 掌握MySQL锁的必备知识

1. 多个事务更新同一行数据时是如何加锁避免脏写? 当有多个事务同时并发更新一行数据的时候,不就是会有脏写的问题吗?那么脏写是靠什么防止的呢? 其实就是靠锁机制,依靠锁机制让多个事务更新一行数据的时候串行化,避免同时更新一行数据。 在MySQL里,假设有一行数据摆…

基于JAVA的校园失物招领平台

采用技术 基于JAVA的校园失物招领平台的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员功能 论坛管理 失物认领管理 寻物启事管理 用户管理 失物…

neo4j-01

Neo4j是: 开源的(社区版开源免费)无模式(不用预设数据的格式,数据更加灵活)noSQL(非关系型数据库,数据更易拓展)图数据库(使用图这种数据结构作为数据存储方…

基于java的某超市进销存管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

lovesql 手工sql注入

1.页面 2.万能密码登录成功 我还傻乎乎的以为密码就是flag 但不是 3. 继续注入 判断列数 确定了只有三列 开始尝试联合注入 4.使用联合注入之前先判断显示位 5.之后一步一步的构造,先得到当前数据库名 利用database() 再得到库里有哪些表 …

前端保留两位小数

一、保留两位小数(四舍五入) 解决方案:使用 toFixed(x) 方法可以对小数进行指定位数保留,其中x是要保留的位数用法:num.toFixed(x),其中num为需要操作的数据,x为要保留的位数示例:1…

20240410解决OK3588-C的核心板刷机之后无法启动的问题

20240410解决OK3588-C的核心板刷机之后无法启动的问题 2024/4/10 19:38 1、编译OK3588的LINUX/Buildroot?forlinxubuntu: ~/3588/OK3588_Linux_fs$ sudo ./build.sh BoardConfig-linuxfs-ok3588.mk 2、进行全编译 forlinxubuntu: ~/3588/OK3588_Linux_fs$ sudo ./bu…

互联网轻量级框架整合之MyBatis核心组件

在看本篇内容之前,最好先理解一下Hibernate和MyBatis的本质区别,这篇Hibernate和MyBatis使用对比实例做了实际的代码级对比,而MyBatis作为更适合互联网产品的持久层首选必定有必然的原因 MyBatis核心组件 MyBatis能够成为数据持久层首选框&a…

每日一题(leetcode1702):修改后的最大二进制字符串--思维

找到第一个0之后,对于后面的子串(包括那个0),所有的0都能调上来,然后一一转化为10,因此从找到的第一个0的位置开始,接下来是(后半部分子串0的个数-1)个1,然后…

电力系统卫星授时信号安全隔离装置防护方案

电力系统是国家关键基础设施, 电力安全关系国计民生, 是国家安全的重要保障, 与政治安全、经济安全、 网络安全、社会安全等诸多领域密切关联。电网运行情况瞬息万变,为了在其发生事故时能够及时得到处理,需要统一的时…

vue2 二次封装element 组件,继承组件原属性,事件,插槽 示例

测试页面代码 这里主要记录如何封装element的el-input 并且封装后具有el-input原本的属性 事件 插槽 下面为测试页面即组件调用 <script> import CustomInput from /components/CustomInput.vue;export default {name: TestPage,components: { CustomInput },data() …

jvm中jdk常用的几个命令总结

1.jmap 此命令可以用来查询内存信息&#xff0c;实例个数及占用内存大小 1.1 查看堆内存概要信息&#xff08;内存分配统计&#xff09; jmap -histo[:live] <pid> .-histo&#xff1a;显示堆中对象的统计信息&#xff0c;包括每个类的实例数量、占用内存大小等 :live…

从入门到弃坑:一个后端开发到鸿蒙开发的简单尝试

【摘要】 笔者说&#xff1a;因为本人也从未接触 Android 开发&#xff0c;所以本文也是从小白入门的角度学习 HarmonyOS开发&#xff0c;文中大量的内容和观点其实都可以从官方文档查阅到。写这篇文章大概也是从中精简内容&#xff0c;记录学习 HarmonyOS 的过程。 鸿蒙操作系…

四大生成式模型的比较——GAN、VAE、归一化流和扩散模型

比较四大模型的本质 four modern deep generative models: generative adversarial networks, variational autoencoders, normalizing flows, and diffusion models 待写

基于SpringBoot的“酒店管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“酒店管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统结构图 系统首页界面图 用户注册界面图 个人…

政安晨:【深度学习神经网络基础】(六)—— 前馈神经网络

目录 简述 前馈神经网络结构 计算输出 初始化权重 径向基函数神经网络 径向基函数 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎…

.NET MAUI Android Emulator运行错误 APT2000 系统找不到指定的文件

前言 本地.NET MAUI项目使用Android Emulator&#xff08;安卓模拟器&#xff09;调试运行&#xff0c;提示异常&#xff1a;严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 APT2000 系统找不到指定的文件。 错误原因 文件目录中不能…