ARM ---day1

一、 基本概念

1. RISC和CISC?

RISC:Reduced Instruction Set Computer,精简指令集

芯片简单、成本低、体积小、功耗小

CISC:Complex Instruction Set Computer,复杂指令集

性能强、芯片复杂、成本高、体积高、功耗大

x86:复杂指令集架构

ARM:精简指令集架构

2. Cortex-A7内核中有多少个通用寄存器?

非工作模式情况下:16个通用寄存器(R0-R15)

工作模式情况下:40个通用寄存器

3. PC、LR、SP、CPSR、SPSR寄存器作用?

pc(R15寄存器):programmer counter 程序计数器,本质上是一个指针,指向代码正在执行的当前指令的下一条指令。pc指向哪,程序运行到哪。

lr(R14寄存器):lined regiter 链接寄存器,保存函数返回地址。

sp(R13寄存器):stack pointer 栈指针寄存器,用于管理栈区空间,永远指向栈顶。

CPSR:current programmer status register 当前程序状态寄存器,存放程序运行到某一步时相关的状态(溢出、进位、借位)。

SPSR:save programmer status register 保存程序状态寄存器,当异常发生时,保存CPSR寄存器的值。

4. MMU、Cache作用?

MMU:Memory Mangement Unit 内存管理单元,将程序中的虚拟内存空间映射到实际物理内存空间,提高物理内存利用率。(学习ARM裸机,关闭MMU;学linux驱动,打开MMU)。

CACHE:高速缓存,提高CPU访问数据的速度

DCACHE:data cache,数据缓存

ICACHE:instruction cache,指令缓存

5. nor flash和nand flash区别?

NOR Flash 和 NAND Flash 都属于广义 ROM,都是非易失性存储器;

但它们不是传统的只读 ROM,而是可擦写的 Flash ROM。

nor flash:每一个字节都可以被寻址,带有地址总线、数据总线和控制总线,数据访问时可以像RAM一样(51单片机)

nand flash:块设备数据,通常以512byte去访问(一次性读/写512byte),不带地址(电脑、SOC)

6. ARM处理器的7种工作模式?

User:非特权模式,大部分任务执行在这种模式

FIQ:当一个高优先级(fast)中断产生时将会进入这种模式

IRQ:当一个低优先级(normal)中断产生时将会进入这种模式

Supervisor:当复位或软中断指令执行时将会进入这种模式

Abort:当存取异常时将会进入这种模式

Undef:当执行未定义指令时将会进这种模式

System:使用和User模式相同寄存器集的特权模式

Cortex-A特有模式:

Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式

7. ARM异常处理流程?(重点)

当异常产生时,ARM core:

拷贝CPSR到SPSR_<mode> 备份

设置适当的CPSR位:

改变处理器状态进入ARM态

改变处理器模式进入相应异常模式 低五位

设置中断禁止位禁止相应中断(如果需要)

保存返回地址到LR_<mode>

设置PC为相应的异常向量 给地址

返回时,异常处理需要:

从SPSR_<mode>恢复CPSR

从LR_<mode>恢复PC

Note:这些操作只能在ARM态执行

8. 异常向量和异常向量表?

异常向量:跳转到异常服务函数指令的++++地址++++

异常向量表:++++数组++++,数组中存放的是跳转到对应异常服务函数的指令

9. AHB和APB总线?

AHB:Advanced High Bus,先进高速总线,连接一些通信速度比较快的外设(USB、网口、RAM)(北桥芯片)

APB:Advanced Peripheral Bus,先进外设总线,连接一些通信速度比较慢的外设(Timer、GPIO、UART)(南桥芯片)

10. i.mx6ull芯片内核版本?

cortexA7

相关推荐
qdprobot1 小时前
齐护AIOT科创社团学习套件桌面总程AiTall V3版人工智能Mixly图形化编程AI小智物联网AI具身智能应用椴木科创作品
人工智能·物联网·学习
晚风吹长发1 小时前
探索软件测试——用例篇
大数据·linux·服务器·压力测试·测试·测试方法
遇乐的果园1 小时前
前端学习笔记-vue列表处理
前端·vue.js·学习
小弥儿1 小时前
GitHub今日热榜 | 2026-07-16:AI知识库与反AI味设计成今日双主线
人工智能·学习·github
CHANG_THE_WORLD1 小时前
Linux C 多线程 TCP 并发服务器:从 `accept()` 到资源管理深度剖析
linux·服务器·c语言
菩提树下的打坐1 小时前
CI 中的测试分层:让金字塔真正落地
学习·ci/cd
运维大师2 小时前
【Linux运维极简教程】10-日志管理与故障排查
linux·运维·服务器
菩提树下的打坐2 小时前
flaky 测试治理:用工程化方式根治“上次过这次不过“
学习
Z5998178412 小时前
c#软件开发学习笔记--事务、索引
笔记·学习·c#