当前位置: 首页 > news >正文

嵌入式硬件——ARM

一、ARM体系结构

程序编译的过程:

预处理(.c-.i):宏替换,头文件展开,去掉注释,特殊符号的处理

编译(.i-.s):C语言转换成汇编语言

汇编(.s-.o):汇编转成成二进制文件

链接(.o-app):关联各种符号信息,归并文件,将不可执行二进制文件转换成可执行二进制文件

1、最小系统:电源、时钟(晶振)、复位、内存、Flash、输入输出

ROM:只读存储,访问速率慢,掉电数据不丢失

RAM:随机存储,访问速率快,掉电数据丢失

flash:结合RAM和ROM的优点的存储

SRAM:静态随机存储

DRAM:动态随机存储 

SSRAM:同步静态随机存储       

SDRAM:同步动态随机存取存储器

DDRn:双倍速率同步动态随机存取存储器

PROM:可编程ROM

EPROM:可擦除PROM

EEPROM:电可擦除PROM

2、CPU:中央处理单元

CU:处理单元//

ALU:运算单元,实现基本的运算单元

R0-R12:通用寄存器,存储数据

PC:程序计数器,指向正在执行的下下条指令,上电默认做自加运算

LR:链接寄存器,保存函数的返回地址

SP:栈指针寄存器,指向栈顶

CPSR:当前程序状态寄存器,运算的结果为0、正、负等,运算中产生的进位、借位等;中断使能,工作状态、工作模式。
SPSR:保存程序状态寄存器,存放CPSR的备份
Cache: CPU和内存之间的缓存,访问速率远高于内存
MMU: 内存管理单元,做虚拟地址到物理地址的转换

3、处理器

有几个CPU就有几核

多核异构:同一个处理集成不同架构的CPU

SOC:片上系统(下图)

AHB:高速总线

APB:外设总线(低速)

RISC:精简指令集(使用20%的指令实现80%的功能)

CISC:复杂指令集(使用100%的指令实现100%的功能)

cortex-A:低功耗、消费类电子

cortex-R:实时性、军工、汽车

cortex-M:高性能、偏控制

DSP:数字信号处理器

FPGA:现场可编程门阵列

4、三大总线(外设)

地址总线:传输地址(单向)

数据总线:传输数据(双向)

控制总线:读写、忙

5、三级存储系统

6、处理器工作模式

特权模式权限比非特权模式高

FIQ>IRQ

7、程序状态寄存器CPRS SPRS

N:结果是否-,Z:结果是零0

8、异常处理

三级流水线:预处理、解码、执行

ARM汇编语言

二、汇编

1、ARM指令集

数据处理指令

Load/Store指令

跳转指令

程序状态寄存器处理指令:完成CPSR的管理

协处理器指令:完成CPU扩展功能的实现

异常产生指令

2、指令格式

3、数据处理指令

6、进位

7、条件if

练习:求和(if+loop)循环

8、函数(难点)

立即数:一个数(或按位取反)循环右移2^n位后中所有的1能放进低8位中,#代表立即数

ldr sp,=0x40001000:将一个地址加载到寄存器中

函数调用的规则:

前四个参数用r0-r3传递,剩余的参数用栈传递(保护现场,恢复现场)

返回值在r0中

   	preserve8area reset, code, readonlycode32entrystartldr sp, =0x40001000mov r0,#1mov r1,#2import c_addbl c_addnopb startexport asm_add
asm_addstmfd sp!, {r4-r12,lr}add r0,r0,r1ldmfd sp!, {r4-r12,pc}end
int asm_add(int x, int y);int c_add(int a, int b)
{int sum = asm_add(a, b);return sum;
}

5、PSR传送指令

swi #5软中断指令

   	preserve8area reset, code, readonlycode32entryb startnopb deal_swinopnopnopnopnopdeal_swistmfd sp!, {r4-r12,lr}add r0,r0,r1ldmfd sp!, {r4-r12,pc}	startldr sp, =0x40001000mrs r0,cpsr    ;//程序状态寄存器(CPSR)的值读取到通用寄存器 r0bic r0,r0,#0x1f    ;//清除 r0 的低5位(二进制 0b00011111),即 CPSR的模式位orr r0,r0,#0x10    ;//将 r0 的低5位设置为 0x10(二进制 0b10000),即切换到 用户模式msr cpsr_c,r0    ;//将修改后的 r0 值写回 CPSR的控制域(cpsr_c),完成模式切换ldr sp, =0x40000c00swi #5    ;//触发SWI中断(跳转到deal_swi)mov r0,#1mov r1,#2import c_addbl c_add    ;//跳转到c_add函数处,并保存返回地址到lr寄存器nopb start    ;//无条件跳转到start处export asm_add
asm_addstmfd sp!, {r4-r12,lr}add r0,r0,r1ldmfd sp!, {r4-r12,pc}end
http://www.xdnf.cn/news/1287811.html

相关文章:

  • 【虚拟机】VMwareWorkstation17Pro安装步骤
  • 三维工厂设计软件 AutoCAD Plant 3D 安装图文教程
  • Nginx 启用 HTTPS:阿里云免费 SSL 证书详细图文教程(新手0.5小时可完成)
  • C# 基于halcon的视觉工作流-章29-边缘提取-亚像素
  • AI Agent——基于 LangGraph 的多智能体任务路由与执行系统实战
  • 蓝桥杯电子赛----嵌入式赛道备赛LED
  • lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理
  • Python初学者笔记第二十四期 -- (面向对象编程)
  • 计算机网络1-7:第一章 概述 章节小结
  • 用 Apache Iceberg 与 Apache Spark 在 Google Cloud 打造高性能、可扩展的数据湖仓
  • 【Java Web 快速入门】九、事务管理
  • 【论文阅读】RestorerID: Towards Tuning-Free Face Restoration with ID Preservation
  • 【游戏优化笔记】开发中如何减少建筑和树木等环境元素的资源消耗?
  • 【跨服务器的数据自动化下载--安装公钥,免密下载】
  • 【CSS3】录音中。。。
  • 【oracle闪回查询】记录字段短时间被修改的记录
  • 【AI绘画】Stable Diffusion webUI 常用功能使用技巧
  • css之再谈浮动定位float(深入理解篇)
  • react+vite来优化下每次使用hook函数都要引入的情况
  • React (react-amap)高德地图使用(加标记、缩放、缩略图)
  • 荣耀手机无法连接win11电脑,错误消息:“无法在此设备上加载驱动程序 (hn_usbccgpfilter.sys)。”解决方案
  • OBOO鸥柏丨智能会议平板教学查询一体机交互式触摸终端招标投标核心标底参数要求
  • SQL Server增加对UTF-8的支持
  • Baumer高防护相机如何通过YoloV8深度学习模型实现纸箱的实时检测计数(C#代码UI界面版)
  • 谷歌ADK接入文件操作MCP
  • 力扣47:全排列Ⅱ
  • 基于Python的《红楼梦》文本分析与机器学习应用
  • 力扣 hot100 Day71
  • vivo Pulsar 万亿级消息处理实践(2)-从0到1建设 Pulsar 指标监控链路
  • [激光原理与应用-254]:理论 - 几何光学 - 自动对焦的原理