4.17号驱动

news2024/7/6 17:39:16

中断子系统

1. 中断工作原理

1.1 异常处理流程

保存现场(cpu自动完成)

保存cpsr寄存器中的值,到spsr_寄存器中

修改cpsr寄存器中的值

        修改状态位(T位)

        根据需要禁止相应的中断位(I/F)

        修改对应模式位

保存函数的返回地址到lr寄存器中

修改pc指向异常向量表

恢复现场(手动完成)

1.2 按键处理异常

2. 基于Linux中断中断子系统工作原理

3. 中断子系统API

#include <linux/interrupt.h>
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
        const char *name, void *dev)
函数功能:注册中断子系统
参数:
    irq:软中断号
    handler:中断处理函数
        中断处理函数原型:irqreturn_t irq_handler_t(int irqno, void *dev)
    flags:中断触发方式
        IRQF_TRIGGER_RISING:上升沿触发方式
        IRQF_TRIGGER_FALLING:下降沿触发方式
        IRQF_TRIGGER_HIGH:高电平触发方式
        IRQF_TRIGGER_LOW:低电平触发方式
    name:中断名字
    dev:向中断处理函数中传递参数
返回值: 
    成功返回0,失败返回错误码  

 

void *free_irq(unsigned int irq, void *dev);
 函数功能:注销中断子系统
 参数:
     irq:软中断号
     dev:向中断处理函数中传递参数
 返回值:无

4. 编写设备树

4.1 查看硬件电路图连接

4.2 编写设备树思路

4.3 分析设备树

4.4 参考内核帮助文档

4.5 编写设备树

定时器

1. 定时器工作原理

1.1 如何查看内核中定时器频率

在linux内核源码中.config文件中,CONFIG_HZ这个变量表示定时器频率

ARM架构 =====> CONFIG_HZ=100

x86架构 =====> CONFIG_HZ=250

1.2 定时时间加1表示多少

ARM架构 ==> 频率:CONFIG_HZ=100 ==> 周期:0.01s = 10ms

x86架构 ==> 频率:CONFIG_HZ=250 ==> 周期:0.004s = 4ms

1.3 如何获取当前内核时间

jiffies内核时钟节拍数

表示内核启动时,这个时间就随着内核的时间进行增加

jiffies变量就可以获取当前内核时间

1.4 定时1s钟如何表示

ARM架构 ==> jiffies + 100

x86架构 ==> jiffies + 250

2. 定时器API接口

 分配定时器对象
#include <linux/timer.h>
struct timer_list {
    struct hlist_node   entry; //定时器在内核钟构成链表
    unsigned long       expires; //定时时间
    void   (*function)(struct timer_list *); //定时器处理函数
    u32         flags; //默认0
};
struct timer_list mytimer;

初始化定时器
mytimer.expires = jiffies + 100;//定时器事件1s
timer_setup(&mytimer,定时器处理函数, 0) 

启动定时器
void add_timer(struct timer_list *timer) //启动定时器
int mod_timer(struct timer_list *timer, unsigned long expires) //再次启动定时器

注销定时器
int del_timer(struct timer_list *timer)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1602589.html

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

相关文章

Realsense D455 调试

1 Realsense D455 配置&#xff1a; RGB&#xff1a;彩色相机&#xff0c;FOV&#xff08;h&#xff0c;v&#xff09;&#xff08; 90*65 &#xff09;红外点阵发射&#xff1a;位于上图中RGB右边&#xff0c;发射特定模式的红外光&#xff0c;通常是一种点阵图案&#xff0c…

深度学习架构(CNN、RNN、GAN、Transformers、编码器-解码器架构)的友好介绍。

一、说明 本博客旨在对涉及卷积神经网络 &#xff08;CNN&#xff09;、递归神经网络 &#xff08;RNN&#xff09;、生成对抗网络 &#xff08;GAN&#xff09;、转换器和编码器-解码器架构的深度学习架构进行友好介绍。让我们开始吧&#xff01;&#xff01; 二、卷积神经网络…

Dryad Girl Fawnia

一个可爱的Dryad Girl Fawnia的三维模型。她有ARKit混合形状,人形装备,多种颜色可供选择。她将是一个完美的角色,幻想或装扮游戏。 🔥 Dryad Girl | Fawnia 一个可爱的Dryad Girl Fawnia的三维模型。她有ARKit混合形状,人形装备,多种颜色可供选择。她将是一个完美的角色…

网络攻防演练:一场针锋相对的技术博弈与安全防护实践

随着ChatGPT5的即将上线&#xff0c;其安全防护能力面临更为严峻的考验。网络攻防演练作为检验系统安全性能、提升防御体系的关键环节&#xff0c;对于确保ChatGPT5的安全稳定运行具有重要意义。本文将深入探讨网络攻击与防守之间的动态关系&#xff0c;并提供在网络攻防演练中…

【Leetcode每日一题】 分治 - 颜色分类(难度⭐⭐)(57)

1. 题目解析 题目链接&#xff1a;75. 颜色分类 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路解析 本算法采用三指针法&#xff0c;将数组划分为三个区域&#xff0c;分别用于存放值为0、1和2的元素。通过…

vivado 设置 VIO 核以执行测量、查看 VIO 核状态

设置 VIO 核以执行测量 您添加到自己的设计中的 VIO 核会显示在“硬件 (Hardware) ”窗口中的目标器件下。如果未显示这些 VIO 核 &#xff0c; 请右键 单击器件并选择“ Refresh Hardware ”。这样将重新扫描 FPGA 或 ACAP 并刷新“ Hardware ”窗口。 注释 &#xff…

【免费】基于SOE算法的多时段随机配电网重构方法

1 主要内容 该程序是完全复现《Switch Opening and Exchange Method for Stochastic Distribution Network Reconfiguration》&#xff0c;也是一个开源代码&#xff0c;网上有些人卖的还挺贵&#xff0c;本次免费分享给大家&#xff0c;代码主要做的是一个通过配电网重构获取…

“面包板”是什么?有啥用?

同学们大家好&#xff0c;今天我们继续学习杨欣的《电子设计从零开始》&#xff0c;这本书从基本原理出发&#xff0c;知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例&#xff0c;可以说是全面系统地介绍了电子设计所需的知识…

一种范围可调式测径仪 满足生产各规格检测!

摘要&#xff1a;范围可调式测径仪&#xff0c;满足各种外径尺寸的产品检测&#xff0c;囊括产线的所有规格&#xff0c;性价比更高的测径仪。 关键词&#xff1a;测径仪,范围可调测径仪,在线测径仪 引言 生产线中&#xff0c;各种外径尺寸的线材、棒材、管材都有生产&#xff…

【SAP NWDI】服务开启:SLD,CM,CMS(二)

一、启用System Landscape Directory 二、启用 NWDI using CMS

CAN的底层驱动

框架图 拆解链路模型 CAN子系统 can_controller Core 包含协议控制器和接收/发送移位寄存器。它可处理所有 ISO 11898-1: 2015 协议功能,并支持 11 位和 29 位标识符。

一、基础算法-快速排序

1.快速排序 快速排序主要利用了分治的思想&#xff0c;具体步骤为&#xff1a; step1 确定分界点&#xff0c;常用为q[left],q[right],q[mid]&#xff0c;也可以是随机的 step2 调整区间&#xff0c;将比分界点小的放左边&#xff0c;大的放右边 step3 利用递归处理左右两端 …

嵌入式Linux串口通信

嵌入式板子就和普通用的单片机比如stm32开发板&#xff0c;51开发板差不多&#xff0c;他们的串口都很类似&#xff0c;都是直接连上然后在PC机器上用串口软件打开就好了。 我使用的嵌入式开发板上面有8个rs485串口&#xff0c;2个rs232串口以及一个网口&#xff0c;刚开始开发…

代码随想录算法训练营第三十七天| LeetCode 738.单调递增的数字、总结

一、LeetCode 738.单调递增的数字 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html 状态&#xff1a;已解决 1.思路 如何求得小于等于N的最大单调递增的整数&#xff1f;98&am…

<计算机网络自顶向下> 多路复用与解复用

多路复用/解复用 端口号区分进程到进程多路解复用工作原理 解复用作用&#xff1a;TCP或者UDP实体采用哪些信息&#xff0c;将报文段的数据部分交给正确的socket&#xff0c;从而交给正确的进程主机收到IP数据报 每个数据报有源IP地址和目标地址每个数据报承载一个传输层报文段…

C++从入门到精通——const与取地址重载

const与取地址重载 前言一、const正常用法const成员函数问题const对象可以调用非const成员函数吗非const对象可以调用const成员函数吗const成员函数内可以调用其它的非const成员函数吗非const成员函数内可以调用其它的const成员函数吗总结 二、取地址及const取地址操作符重载概…

PPTX与PPT文件有什么区别?这2个办公技巧一定要知道!

每一次点击鼠标&#xff0c;每一次敲击键盘&#xff0c;我们都在与各种软件进行互动。其中&#xff0c;PPTX 和 PPT 无疑是职场中最常见的两种办公文档格式。那么&#xff0c;你是否清楚 PPTX 和 PPT 这两者之间的区别呢&#xff1f; 或许你会说&#xff0c;这不过是文件后缀名…

通过抖音短视频获客 只需要六步

抖音是当前最受欢迎的短视频平台之一&#xff0c;拥有庞大的用户群体和强大的社交矩阵&#xff0c;已经成为企业打造品牌口碑和快速获客的一种有效方式。那么&#xff0c;如何利用抖音短视频快速获客&#xff0c;打造品牌口碑呢&#xff1f;小马识途营销顾问简要分析如下&#…

【已解决】html页面刷新后css样式消失

登录失败后显示主页面时样式消失&#xff0c;如&#xff1a; 原因&#xff1a;index的样式引入css前面没有加斜杠 解决办法&#xff1a;添加斜杠 <link th:href"{/asserts/css/bootstrap.min.css}" rel"stylesheet"><link th:href"{/a…

【Git教程】(十四)基于特性分支的开发 — 概述及使用要求,执行过程及其实现,替代方案 ~

Git教程 基于特性分支的开发 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 创建特性分支3.2 在 master 分支上集成某一特性3.3 将 master 分支上所发生的修改传递给特性分支 4️⃣ 替代方案4.1 直接在部分交付后的合并版本上继续后续工作4.2 到发行版即将成型时再集成特…