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

N11 ARM-irq

一、复习进线程

进程间通信:无名管道、有名管道、共享内存、信号(信号量/消息队列)、套接字。

共享内存不自带同步互斥机制:

  • 多个进程同时读写会造成数据混乱
  • 必须配合信号量 / 互斥锁来控制访问顺序

线程:互斥锁、读写锁、自旋锁(忙 等待)、信号量(同步)

读写锁 // 共享数据 int shared_data = 0; // 读写锁 pthread_rwlock_t rwlock; // 写线程函数:写者互斥,与读者也互斥 void* writer(void* arg) { int id = *(int*)arg; // 加写锁 pthread_rwlock_wrlock(&rwlock); printf("写线程 %d 获取写锁,开始修改数据...\n", id); shared_data++; sleep(1); // 模拟写操作耗时 printf("写线程 %d 修改完成,shared_data = %d,释放写锁\n", id, shared_data); // 释放写锁 pthread_rwlock_unlock(&rwlock); return NULL; } // 读线程函数:读者之间共享,与写者互斥 void* reader(void* arg) { int id = *(int*)arg; // 加读锁 pthread_rwlock_rdlock(&rwlock); printf("读线程 %d 获取读锁,读取数据:shared_data = %d\n", id, shared_data); sleep(1); // 模拟读操作耗时 printf("读线程 %d 读取完成,释放读锁\n", id); // 释放读锁 pthread_rwlock_unlock(&rwlock); return NULL; }

自旋锁轻量级锁,比互斥锁更快,适合锁内操作极短的场景,也是共享内存同步常用的高性能锁。

pthread_spinlock_t spin_lock;

网络编程:

ISO七层模型:应用、表示、会话、传输、网络、链路、物理

四层模型:应用、传输、网络、链路接口

MAC地址(网卡硬件地址) IP地址(区分主机) 端口(区分进程)

TTL = 数据包最多跳多少个路由器,到 0 就死。

DHCP(动态主机配置协议)

  • IP 地址
  • 子网掩码
  • 默认网关
  • DNS 服务器地址

Static:静态 IP 配置

网段:A、B、C、D、E

子网掩码:255.255.255.0

IP 地址切成两段:

  • 网络位→ 标识这个网段
  • 主机位→ 标识这个网段里的某台设备

然后判断:两台设备的网络位是否相同 → 相同 = 同一局域网;不同 = 跨网段。

划分网段为1的位必须一致才属于同一局域网。

网络号(子网掩码中为1的位)主机号(子网掩码中为0的位)。

同一网段指的是网络号相同的IP(相互连通)。

二、ARM中断

1、设置异常向量表地址为0(为0则可以重映射) //start.S

中断初始化:

1.重映射异常向量表基地址

2.初始化GIC

中断源:key_init()

引脚相关:配置引脚功能及方向 GPIODIR

设置中断触发方式、使能中断 GPIO_ICR GPIO_IMR

GIC中断使能 GIC_EnableIRQ(IRQn_Type IRQn)

GIC中断优先级设置 GIC_SetPriority(IRQn Type IRQn, uint32_t priority)

清中断标志:GPIO_ISR(GPIO_IMR |= (1<<pin);

get GIC--IAR // 读取 GIC 的 IAR 寄存器,获取当前中断号 deal irq // 根据中断号调用对应的 C 语言处理函数 set GIC--EOIR // 向 GIC 的 EOIR 寄存器写入,告知中断处理完成
数组名用途对应中断类型
irq_handler_array通用中断处理函数表普通外设中断(UART、Timer、I2C、IOMUXC 等独立中断号)
irq_gpio_handler_arrayGPIO 专用中断处理函数表GPIO 分组中断(如GPIO1_IO18_IRQ这类引脚级中断号)
http://www.jsqmd.com/news/536738/

相关文章:

  • 复现瓦斯抽采钻孔间距优化的二维数值模拟研究模型
  • 单相桥式整流电路Matlab/Simulink仿真探索
  • 像素即坐标:镜像视界空间智能计算引擎白皮书
  • Nativefier进阶指南:定制化你的网站桌面应用
  • SciThinker-4B:用AI快速挖掘科研新方向的神器
  • 基于C#的工业测控软件-依赖库
  • VSCode + Clang-Format 真·无缝集成指南:不止是保存时格式化
  • 5个核心优势:为什么Graphiti是下一代AI代理的时态感知知识图框架
  • SGLang-v0.5.6问题解决:部署常见错误排查,小白避坑指南
  • Mind+掌控板实战:5分钟搞定智慧农场光线监控(含SIoT配置避坑指南)
  • Qt布局进阶:除了跨行跨列,QGridLayout里还有这些隐藏技巧和坑
  • 百川2-13B-4bits模型显存监控:OpenClaw长时间运行资源预警
  • 2026 企业 AI 赛道深度观察:三大厂商的落地竞速与格局分化
  • 程序员视角下的范畴论:从数学抽象到代码实践的思维跃迁
  • OpenClaw调试技巧:nanobot任务执行失败的5种排查方法
  • 3大核心技术解密:AnyLoc如何实现革命性的通用视觉定位系统
  • Phi-4-Reasoning-Vision自主部署:无需申请API密钥的本地化多模态推理平台
  • HarmonyOS 6实战:PdfView编辑保存与实时更新技术
  • STM32+Su-03T语音模块实战:空气质量检测与语音播报全流程(附完整代码)
  • 深度解析Ultralytics YOLO:从目标检测到企业级应用的完整实战指南
  • 别再傻傻分不清了!TOD、GPRMC、IRIG-B三种时间同步协议,到底该用哪个?
  • ChatGPT Edu实战指南:如何构建高效的教育对话系统
  • 2026年靠谱的异形铝合金凉亭直销厂家推荐 - 品牌宣传支持者
  • 自动化周报生成:OpenClaw+GLM-4.7-Flash整合多源数据
  • CMOS图像传感器时间暗噪声抑制技术:原理与策略
  • 从STP到MSTP:为什么你的企业网络需要升级生成树协议?(思科设备实测对比)
  • XposedHider深度解析:突破Xposed框架检测的全方位解决方案
  • 不锈钢水管及管件选购指南:不锈钢水管哪家好/不锈钢水管厂家/不锈钢水管公司/不锈钢水管/选择指南 - 优质品牌商家
  • 视觉毕设新手入门:从选题到部署的全链路技术实践指南
  • Flink—Sql接口