正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.5讲 GPIO中断实验-通用中断驱动编写

前言:

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

引用:

正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com

《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》

正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档

说明:

本文是 “正点原子[第二期]Linux之ARM(MX6U)裸机篇--第15.5 讲” 的读书笔记。第15讲主要是介绍I.MX6U处理器GPIO中断控制实验。本节将参考正点原子的视频教程第15讲和配套的正点原子开发指南文档进行学习。在第15.5讲视频教程中,正点原子会讲解如何实现自己的通用中断驱动编写。

0. 概述

本章实验的功能和之前按键控制蜂鸣器的实验一样,只是按键采用中断的方式来处理。当按下KEY0以后就打开蜂鸣器,再次按下蜂鸣器KEY0就关闭蜂鸣器。

1. 移植SDK

将NXP SDK里的文件 core_ca7.h 拷贝到本章实验目录中的 "imx6ul' 文件夹中,参考正点原子提供的示例源码"9_int"中的 core_ca7.h 进行修改。主要留下和GIC相关的内容,我们重点是需要使用 core_ca7.h 中的的10个API函数,这10个函数如下表所示:

函数描述
GIC_Init初始化GIC。
GIC_EnableIRQ使能指定外设中断。
GIC_DisableIRQ关闭指定的外设中断
GIC_AcknowledgeIRQ返回中断号。
GIC_DeactivateIRQ无效化指定中断。
GIC_GetRunningPriority获得当前正在运行的中断优先级。
GIC_SetPriorityGrouping设置抢占中断优先级位数。
GIC_GetPriorityGrougping获取抢占中断优先级位数。
GIC_SetPriority设置指定中断的优先级。
GIC_GetPriority获取指定中断的优先级。

移植好以后,吸怪 imx6ul.h ,在里面加上一行代码。

#include "core_ca7.h" 

在正点原子的哔哩哔哩网站第15.5 视频教程里,正点原子哥说自己移植NXP SDK里面的 core_ca7.h 花了一天时间,因为里面勾连引用了很多NXP SDK里的符号声明和定义等,我这里就直接偷懒从正点原子提供的示例源码里拷贝已经移植好的 core_ca7.h 来使用了。

core_ca7.h 的主要内容如下,我们关心的是前面列出来的10个GIC相关的 GIC_xxx 函数,这10个函数可以对GIC中断控制器进行配置,GIC中断控制器在之前的15.3,15.4两讲的博文里,已经分析过GIC中断控制器分为两个逻辑模块,GIC Distributor 分发器端和 GIC CPU Interface 内核接口端。GIC中断控制函数通过写对应的GIC寄存器(寄存器可以从ARM GICV2.0 手册中查到),来实现对中断的使能,关闭,应答,中断优先级配置。

  • 初始化GIC
  • 使能指定外设中断
  • 关闭指定外设中断
  • 返回中断号
  • 无效化指定中断
  • 获取当前正在运行的中断优先级
  • 设置抢占中断优先级位数
  • 获取抢占中断优先级位数
  • 设置指定中断的优先级
  • 获取指定中断的优先级

Struct GIC_Type 中定义的GIC分发器端寄存器和GIC CPU接口端寄存器,和《ARM Generic Interrupt Controller(ARM GIC控制器)V2.0.pdf》中介绍的GIC 内存映射分布是对应的。

然后是NXP SDK 在 core_ca7.h 文件里定义的 ‘GIC_xx()’ API 接口函数,通过上面的C语言嵌入式汇编语言的写法 '__MRC()' , '__MCR()' 来写相应的 GIC 寄存器来配置:GIC初始化,使能指定外设中断,关闭指定外设中断,获取中断ID号,获取指定中断优先级,设置指定中断优先级。

以下面一个函数为例分析NXP SDK 里的 core_ca7.h 里的函数宏展开之后如何读取GIC中断控制的的寄存器:

 

2. 编写bsp_int通用中断处理驱动

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:友元

友元(friend)是 C 中的一个关键字,用于建立类之间的友好关系;通过友元关系,一个类可以授权其他类或函数访问其私有成员或受保护成员,从而突破了 C 中的封装性;友元可以是类或函数,可…

css案例 tab上下滚动,左右滚动

效果图&#xff1a; 完整代码&#xff1a; <template><view class"content"><view class"content-item"><view class"content-title"><h4>美食热搜</h4><ul><li>火鸡面</li><li>糖…

Java---类和对象第一节

目录 1.面向对象初步认识 1.1什么是面向对象 1.2面向对象和面向过程的区别 2.类的定义和使用 2.1简单认识类 2.2类的定义格式 2.3类的实例化 2.4类和对象的说明 3.this关键字 3.1访问本类成员变量 3.2调用构造方法初始化成员变量 3.3this引用的特性 4.对象的构造以…

MES系统与WMS集成方法(满分100学习资料)

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是关于MES系…

运用分支结构与循环结构写一个猜拳小游戏

下面我们运用平常所学的知识来写一个小游戏&#xff0c;这样能够加强我们学习的趣味性&#xff0c;并且能够更加的巩固我们所学的知识。 游戏代码&#xff1a; 直接放代码&#xff1a;&#xff08;手势可以使用数字来代替&#xff0c;比如0对应石头&#xff0c;1对应剪刀&…

Sass深度解析:性能优化的秘密

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

Linux的基础IO:软硬连接 动态库 静态库

目录 软硬连接 硬链接的作用 静态库 制作静态库 安装自定义静态库 动态库 制作动态库 协助OS查找动态库的五种方法 总结 动态库加载 软硬连接 创建硬链接指令&#xff1a;ln 目标文件 链接者 创建软链接指令&#xff1a;ln -s 目标文件 链接者 删除链接指令&…

【管理咨询宝藏96】企业数字化转型的中台战略培训方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏96】企业数字化转型的中台战略培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 数字化转型是指&…

苹果电脑MAC清理系统空间工具CleanMyMacX4.15.3中文版下载

苹果电脑以其出色的性能、优雅的设计和高效的操作系统而受到许多用户的喜爱。然而&#xff0c;随着时间的推移和使用量的增加&#xff0c;你可能会发现你的Mac开始变得缓慢和响应迟缓。这通常是因为硬盘空间被大量占用&#xff0c;影响了系统的整体性能。幸运的是&#xff0c;有…

03.Linux文件操作

1.操作系统与Linux io框架 1.1 io与操作系统 1.1.1 io概念 io 描述的是硬件设备之间的数据交互&#xff0c;分为输⼊ (input) 与输出 (output)。 输⼊&#xff1a;应⽤程序从其他设备获取数据 (read) 暂存到内存设备中&#xff1b;输出&#xff1a;应⽤程序将内存暂存的数据…

蛋糕店做配送小程序的作用是什么

蛋糕烘焙除了生日需要&#xff0c;对喜吃之人来说往往复购率较高&#xff0c;除线下实体店经营外&#xff0c;更多的商家选择线上多种方式获客转化、持续提高生意营收&#xff0c;而除了进驻第三方平台外&#xff0c;构建品牌私域自营店铺也同样重要。 运用【雨科】平台搭建蛋…

zookeeper安装集群模式

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 ZooKeeper是一个分…

【大数据】分布式数据库HBase下载安装教程

目录 1.下载安装 2.配置 2.1.启动hadoop 2.2.单机模式 2.3.伪分布式集群 1.下载安装 HBase和Hadoop之间有版本对应关系&#xff0c;之前用的hadoop是3.1.3&#xff0c;选择的HBase的版本是2.2.X。 下载地址&#xff1a; Index of /dist/hbase 配置环境变量&#xff1a…

Codigger:Vim的革新者,提升开发体验和功能性

深知Vim在编程和文本编辑领域的卓越地位&#xff0c;因此&#xff0c;在设计和开发过程中&#xff0c;Codigger始终将保留Vim的核心功能和高度定制能力作为首要任务。然而&#xff0c;Vim的复杂性和高度定制性也让很多新用户望而却步。为了降低这种使用门槛&#xff0c;Codigge…

Adobe Premiere Pro安装

一、安装包下载 链接&#xff1a;https://pan.baidu.com/s/1aYqTSQQutDguKYZE-yNHiw?pwd72l8 提取码&#xff1a;72l8 二、安装步骤 1.鼠标右击【Pr2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Pr2024(64bit)】。 2.打开…

基于大模型的idea提炼:围绕论文和引用提炼idea之ResearchAgent

前言 对本博客比较熟悉的朋友知道&#xff0c;我司论文项目组正在基于大模型做论文的审稿(含CS英文论文审稿、和金融中文论文审稿)、翻译&#xff0c;且除了审稿翻译之外&#xff0c;我们还将继续做润色/修订、idea提炼(包含论文检索)&#xff0c;是一个大的系统&#xff0c;包…

comfyui安装deforum启动不了,多半是ffmpeg的问题

如果报错中出现imageio 和 ffmpeg 的字样&#xff0c;去装requirement也没啥用 这里最好到cmd中&#xff0c;进入comfyui的python环境&#xff0c;运行以下两句&#xff1a; import imageio imageio.plugins.ffmpeg.download() 图例&#xff1a; 如果节点不报错了&#xff0…

GPS与精致农业 无人机应用 农业遥感 农业类

全球定位系统是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS系统最基本的特点是以“多星、高轨、高频、测量-测距”为体制&#xff0c;以高精度的原子钟为核心。GPS作为新一代卫星导航与定位系统&#xff0c;不仅具有全球性、全…

codeforces round 149 div2(a,b,c,d)

手速场&#xff0c;可惜我傻逼卡 c c c了 题目链接 A #include<bits/stdc.h>using namespace std;#define int long long #define PII pair<int,int>void solve() {int n,k;cin>>n>>k;if(n<k){cout<<1<<\n;cout<<n<<\n;}…

[机器学习-05] Scikit-Learn机器学习工具包进阶指南:协方差估计和交叉分解功能实战【2024最新】

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…