硬件-DAY08(中断)

一、蜂鸣器学习(中断)

二、BSP工程管理

利用BSP工程管理,使文档显示不杂乱;

 将这些文件分为4类,并保存到4个不同的文件夹里。

        首先在新的工程文件夹里创建一个之后我们编写的类似led驱动,clk驱动等等外设驱动程序都放在这文件夹里面,创建名为bsp文件夹;

  再创建project文件夹,存放 start.s和 main.c 文件,也就是应用文件;

        一个imx6ull文件夹,用来保存NXP的相关库cc.h、fsl_common.h、fsl_iomuxch和 MCIMX6Y2.h 这四个文件;

        最后再创建一个obj文件夹,用来存放编译生成的.o 文件。

三、 按键练习

代码实现(GPIO):

四、中断

4.1 GIC控制器(通用中断控制器)

VFIQ/VIRQ中V指虚拟化的;

多数情况下我们使用IRQ:

作用:

作用是中断优先级排序;
中断屏蔽的控制;
        GIC控制器(v2版本)最多处理8个内核;最多有1020个中断源:

SGI  (软件中断):( 0 - 15 ),由软件产生的中断;用于实现多核通信
PPIs(私有中断):(16 - 31),每个核都有自己独有的中断;这里的私有指内核
SPI(共享中断):(32-1019),外设中断,如定时器、外部中断、串口中断等。

        实际用到的只有(32-159)128个,这128是imx6ull所支持的

        PS:GIC也可以屏蔽不需要的中断
                V2版本的GIC不在ARM内部,V3、V4版本的是64位

4.2 异常向量表

        异常向量表重映射(__set_VBAR)是指在处理器发生异常时,通过改变异常向量表的物理地址与逻辑地址之间的映射关系

        目的:确保系统能够正确响应和处理异常。

异常状态返回地址偏移量:当异常状态发生以后,返回地址和lr中保留的地址偏移量

4.3 协处理器

        协处理器:用于减轻系统微处理器特定处理任务的芯片;

        cortex A7 共16个协处理器,CP0~CP15

        每个soc中都有一个kernel,也是处理器,有时候处理不过来了,ARM就再设计了一堆协处理器,我们大多数情况下只用P15

4.3.1 mcr指令与mrc指令 

用mcr与mrc来访问协处理器;

        eg:mrc p15, 0, r0, c0, c0, 0(mrc指令读取MIDR(主ID)寄存器,读出来的结果放入了寄存器R0中)

mcr写入协处理器;

mrc读取协处理器;

        CPSR分为I位(bit[7](0不屏蔽  1屏蔽))、F位(bit[6] 0不屏蔽 1屏蔽)

协处理器编号p0-p15;

读取出来的寄存器内容:

SCTLR寄存器:

CPS指令

        这里的 effect 分为俩个bit[7](IE使能 cpsie(0)、ID失能cpsid(1)),使用了effect的话就不能省略iflags,i位指irq,f位指frq

PS:在汇编中调main.c中的函数时,要先保护现场

        GIC首地址不确定,由P15保存

获取中断号,并记录 

        C_IAR 读写中断                  C_EOIR  写回去

GPIOx_ICR        //GPIO中的中断配置寄存器

GPIOx_IMR        //GPIO中的中断屏蔽寄存器,0失能,1使能(默认失能)

GPIOx_ISR        //设置中断标记寄存器 ,若为1,则说明该位产生中断,但要手动清零(第几位为1,第几位就中断)

.

4.4  抢占优先级

        Cortex——A7 有32个抢占优先级(谁数小,谁的优先级就高)

        1 1111 ---> 32个

        0(组优先级) xxxx(子优先级)

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

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

相关文章

【Datawhale组队学习202506】YOLO-Master task04 YOLO典型网络模块

系列文章目录 文章目录 系列文章目录前言4.1 DFL 模块4.1.1 DFL的核心思想 4.2 SPP 模块4.2.1 核心思想 4.3 SPPF 模块4.3.1 核心思想 总结 前言 Datawhale是一个专注于AI与数据科学的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开…

springboot中表是以int为主键id的,写了一个生成不重复id的方法

【初衷】 由于系统改造,之前的单应用改成了分布式应用,但是系统底层在搭建的时候部分关联id定义为了int类型,导致分布式id生成的long类型无法插入到int中,且由于是多系统部署,为了把损失降到最低,故此决定…

天气查询API集成指南

天气查询API集成指南 引言 在互联网和移动应用快速发展的今天,天气查询API已经成为开发人员构建各种应用程序时不可或缺的工具之一。无论是为用户提供日常出行建议、帮助农民规划农作时间,还是支持物流行业优化配送路线,实时且准确的天气信息…

AI 产品部署和交付的基础设施——全景解析

当然可以!以下是对“AI产品部署和交付的基础设施”主题的详细内容扩展,适合介绍给同事,帮助大家系统性理解AI落地的全流程和关键要素。 AI产品部署和交付的基础设施——全景解析 各位同事,随着AI技术的飞速发展,AI产品…

Linux C 目录基本操作

需要引用的头文件 #include <unistd.h> unistd.h 为程序提供了对POSIX操作系统API的访问接口&#xff0c;主要用于提供与系统调用相关的功能。 char *getcwd(char *buf, size_t size); 用于获取当前工作目录&#xff08;Current Working Directory&#xff09;的绝对…

关于二分和分治的详细讲解(从属于GESP五级)

本章内容 二分 分治 当你把疑惑一劈为二&#xff0c;困境就只剩下一半。 一、二分查找 1. 何谓“二分”&#xff1f; “二分”本质是一种 对单调现象反复折半 的搜索思想。 单调现象&#xff1a;随变量增大&#xff0c;目标状态只会保持“假→真”或“真→假”一次性跃迁…

程序猿成长之路之数据挖掘篇——聚类算法介绍

作为无监督学习算法的基础&#xff0c;学好聚类算法很关键&#xff0c;我之前介绍过kmeans聚类算法&#xff0c;现在系统的介绍一下聚类算法 1. 什么是分类 日常生活中我们会经常见到分类的情况&#xff0c;如家里大扫除时给物品归类&#xff0c;超市货架上商品分类等。分类就…

PostgreSQL 性能优化与集群部署:PGCE 认证培训实战指南

&#xff5c;深夜被数据库报警惊醒&#xff1f; &#xff5c;海量数据查询卡死业务&#xff1f; &#xff5c;主库宕机导致服务中断&#xff1f; 如果你正被这些PostgreSQL生产难题困扰&#xff0c;是时候系统掌握数据库内核优化与高可用架构了&#xff01;深度求索联合PG分会…

Java 对象映射 数据库表映射 工具类 两个对象/表实现映射转换

场景&#xff1a;需要将一个对象的各个字段中的数据映射到另一个对象的字段数据中&#xff0c;或将一个数据库表映射到另一张表中。 本文使用泛型编程实现了一个对象映射功能的工具类。 需要源对象&#xff0c;映射关系map&#xff0c;目标类。由于是动态的类&#xff0c;所以…

Linux离线搭建Jenkins

Linux离线搭建Jenkins(centos7) Jenkins简介: Jenkins只是一个平台&#xff0c;真正运作的都是插件。这就是jenkins流行的原因&#xff0c;因为jenkins什么插件都有&#xff0c;Hudson是Jenkins的前身&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控程序重…

从零学习linux(2)——管理

一.用户管理 1.用户属性 用户名、口令、用户ID&#xff08;UID&#xff09;、用户主目录&#xff08;HOME&#xff09;、用户shell 2. 3. 4.adduser添加用户 语法&#xff1a;adduser 用户名 如# adduser superw 添加用户名为superw的新用户 5.deluser删除用户 语法&am…

《贵州棒垒球》有什么国家级比赛·棒球1号位

中国国家级棒球比赛盘点 | 小白入门指南 3月 | 中国棒球联赛 (China Baseball League) 国内最高水平职业联赛&#xff0c;各省市职业队角逐冠军&#xff01; 英文&#xff1a;Top-tier professional event with teams nationwide. 5月 | 全国青年棒球锦标赛 (National Youth …

该项目名为“EduPal“,AI推荐

## 完整代码实现 ### 后端代码 (app.py) python import os import json import uuid import requests from datetime import datetime from flask import Flask, render_template, request, jsonify from dotenv import load_dotenv # 加载环境变量 load_dotenv() app …

C++法则15:匹配失败并不是一种错误(Substitution Failure Is Not An Error)。

C法则15&#xff1a;匹配失败并不是一种错误(Substitution Failure Is Not An Error)。 应用例子&#xff1a; SFINAE &#xff1a;关于is_class&#xff0c;is_base_of&#xff0c;C编译器的魔法器&#xff0c;如何实现&#xff0c;is_class&#xff0c;is_base_of。_c is cl…

Ollama客户端 + Docker搭建本地知识库(Mac系统)

一、环境准备 1. 安装Ollama客户端 官网下载&#xff1a;https://ollama.com 验证安装&#xff1a; ollama --version2. 安装Docker Desktop 下载地址&#xff1a;https://www.docker.com/products/docker-desktop 安装后确保Docker状态为"Running" 二、基础搭建…

FastMCP 2.9 版本详解:MCP 原生中间件与类型转换增强

下面我将从三个方面来讲解这个&#xff0c;第一是讲解2.9版本的更新&#xff0c;第二是讲解什么将手动解析底层JSON-RPC 消息&#xff0c;丢失 FastMCP 高层语义&#xff0c;第三是讲一讲&#xff0c;什么叫做中间件。不了解的兄弟们系好安全带&#xff0c;我们准备发车了&…

LTspice仿真6——PWL折线波产生

1.自定义波形 2.自定义波形周期 3.以文件.txt的形式定义折线波 4.通过C语言编程&#xff0c;一系列操作&#xff0c;生成自定义正弦波&#xff08;可自定义性强&#xff09;

FunASR搭建语音识别服务和VAD检测

调整VAD参数 1. 查找VAD模型的配置文件 FunASR中的VAD模型为FSMN-VAD&#xff0c;参数配置类为VADXOptions&#xff0c;可以在以下路径中找到&#xff1a; /workspace/FunASR/runtime/python/onnxruntime/funasr_onnx/utils/e2e_vad.py 其中&#xff0c;VADXOptions类定义了…

多模态大模型(从0到1)

文章目录 一、多模态大模型二、常见模态组合 典型应用场景三、多模态&#xff08;模型 框架&#xff09;1. 多模态模型2. 多模态框架 —— 开源项目推荐&#xff08;可快速上手&#xff09; 四、入门与学习路线1. 理论基础2. 主流多模态模型实战3. 进阶与应用拓展&#x1f4d…

# Vue.js 精确轮播组件实现详解

## &#x1f4d6; 概述 本文详细介绍了一个基于 Vue.js 开发的高精度轮播组件&#xff0c;该组件实现了精确的卡片对齐和平滑滚动效果。组件支持混合布局&#xff08;大卡片网格布局&#xff09;&#xff0c;具备智能位置计算和精确滚动控制功能。 ## ✨ 组件特点 ### &#x1…