N10 ARM中断

一、复习C语言

内存段 存什么东西 读写权限 谁管理
code 代码段 函数指令、机器码 只读 / 执行 系统
rodata (常量区) 整型、字符串等各种常量、switch跳转表 只读 系统
data(数据段) 初始化不为0的全局及静态变量 读写 系统
BSS 段 未初始化及初始化为0的全局及静态变量 读写 系统自动清零
heap 堆(2.8/9G左右) malloc/new 动态内存(程空间中其他部分使用剩余的空间使用时需要手动申请及释放) 读写 程序员自己
stack 栈(8M) 局部变量、函数参数、函数返回地址 读写 系统自动
map(内存映射段) 映射一些库(函数)的地址(库位置/函数偏移地址) 读写 系统
内核空间(1G) kernel操作系统核心功能 受保护 内核

满减栈、空减栈

进程和线程区别

进程:开辟空间大(进程空间全部独立) 开辟/调度效率低 通信复杂

线程:开辟空间小(只有栈是独立的) 开辟/调度效率高 通信简单

二、中断

  • cortex-a7:CPU 核心,负责执行指令、处理中断
  • GIC:中断控制器,是所有外设中断的 "总调度器"
  • 外设模块:GPIO DR、UART、定时器、IIC、ADC 等,产生中断信号
  • req/ack:CPU 与 GPIO 寄存器的读写握手
  • CP15 就是 ARM 用来配置系统的专用协处理器。
寄存器名字 英文全称 属于哪个模块 核心作用(必须记住)
SCTLR System Control Register CP15 c1 系统总控制寄存器 1. bit13(V) :中断向量表位置选择 ・V=0 → 可用 VBAR 映射到 RAM ・V=1 → 固定 0xFFFF00002. bit0 :MMU 开关3. bit12:指令缓存开关
VBAR Vector Base Address Register CP15 c12 中断异常向量表基地址寄存器 1. 存放 RAM 中断向量表的起始地址2. 只有 SCTLR.V=0 时才生效3. 让 CPU 去 RAM 找中断函数
CBAR Configuration Base Address Register CP15 c15 GIC 配置基地址寄存器 1. 保存 GIC 中断控制器的物理基地址2. 读取它 → 才能找到 GICD 和 GICC3. 是配置中断的第一步
GICD_CTLR GIC Distributor Control Register GICD GIC 分发器总开关1. 全局使能 / 关闭所有中断2. 写 1 → 开启 GIC 分发器3. 不打开,所有外设中断都无效
GICC_CTLR GIC CPU Interface Control Register GICC CPU 中断接口总开关1. 让 CPU 能接收 GIC 发来的中断信号2. 写 1 → 开启 CPU 接口3. 和 GICD_CTLR 必须同时打开
相关推荐
逻辑驱动的ken1 小时前
Java高频面试考点场景题22
java·开发语言·jvm·面试·职场和发展·求职招聘·春招
wuminyu11 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
.小小陈.12 小时前
Linux 线程概念与控制:从底层原理到实战应用
linux·运维·jvm
light blue bird14 小时前
工序路径工站物料 BOM 协同组件
jvm
zhaoyong22217 小时前
MySQL 存储过程中字符集与排序规则不匹配导致查询性能下降的解决方案
jvm·数据库·python
sinat_3834373617 小时前
golang如何从Python转型Go开发_golang从Python转型Go开发攻略
jvm·数据库·python
FQNmxDG4S18 小时前
JVM内存模型详解:堆、栈、方法区与垃圾回收
java·jvm·算法
2301_8125396720 小时前
Golang怎么实现网页爬虫抓取数据_Golang如何用colly框架快速构建爬虫采集程序【教程】
jvm·数据库·python
雪碧聊技术1 天前
线程运行原理
jvm
light blue bird1 天前
MES/ERP 工序 BOM 协同多节点工站组件
java·jvm·oracle