硬件-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(子优先级)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值