• 笔记整体梳理


    1.整体框架

    使能相关时钟;

    这一部分现在是将所有外设时钟都打开了,不需要因为GPIO而去配置相关时钟的开闭。

    但是默认配置下,开发板的工作频率为396MHz,但其实可以对其时钟进行配置,调整成我们想要的频率。不同外设的时钟源不同,NXP将这些时钟源分成了7组。

    20211109163704

    时钟控制模块(CCM)在设计中产生和控制各个模块的时钟,并管理低功率模式。此模块使用可用的时钟源来生成时钟根目录。

            时钟控制器模块控制以下功能:

    使用可用的时钟源生成时钟根芯片的各个部分:
    PLL1也称为ARM PLL
    PLL2也称为系统PLL
    PLL3也称为USB1 PLL
    PLL4也称为音频PLL
    PLL5也也称为视频PLL
    PLL6也称为ENET PLL
    PLL7也称为USB2 PLL(这个PLL只由USBUTM接口通过直接连接)。
    使用可编程的位来控制时钟根的频率。
    控制低功耗机构。
    为LPCG提供门控时钟的控制信号。
    提供了与SRC的握手,以实现重置性能。
    提供了与GPC的握手,以支持电源门控操作。

     所有外设对于时钟的选择可以通过I.MX6U的时钟树图来了解。

    20211109172530

    设置寄存器IOMUXC_SW_MUX_CTL_PAD_XX_XX

    设置IO的复用功能,使其复用为GPIO功能。


    设置寄存器IOMUXC_SW_PAD_CTL_PAD_XX_XX,

    设置IO的上下拉、速度等等。


    第②步已经将IO复用为了GPIO功能,所以需要配置GPIO,设置输入/输出、是否使用中断、默认输出电平等。

    Cortex-A7中断系统

    中断系统是一个处理器重要的组成部分,中断系统极大的提高了CPU的执行效率。
    Cortex-A7内核有8个异常中断,这8个异常中断的中断向量表如表:

     其中比较重要的就只有IRQ中断,整体的裸机开发也只有使用了这一个中断。

    中断ID

    中断源有很多,为了区分这些不同的中断源肯定要给他们分配一个唯一ID,这些ID就是中断ID。每一个CPU最多支持1020个中断ID,中断ID号为ID0~ID1019。这1020个ID包含了PPI、SPI和SGI,那么这三类中断是如何分配这1020个中断ID的呢?这1020个ID分配如下:

    ID0~ID15:这16个ID分配给SGI。

    ID16~ID31:这16个ID分配给PPI。

    ID32~ID1019:这988个ID分配给SPI,像GPIO中断、串口中断等这些外部中断,至于具体到某个ID对应哪个中断那就由半导体厂商根据实际情况去定义了。

    GIC逻辑分块

     GIC架构分为了两个逻辑块:Distributor和CPU Interface。

    Distributor(分发器端):此逻辑块负责处理各个中断事件的分发问题,也就是中断事件应该发送到哪个CPU Interface上去。分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到CPU接口端。分发器端要做的主要工作如下:

    ①、全局中断使能控制。

    ②、控制每一个中断的使能或者关闭。

    ③、设置每个中断的优先级。

    ④、设置每个中断的目标处理器列表。

    ⑤、设置每个外部中断的触发模式:电平触发或边沿触发。

    ⑥、设置每个中断属于组0还是组1。

    CPU Interface(CPU接口端):CPU接口端听名字就知道是和CPU Core相连接的,每个CPU Core都可以在GIC中找到一个与之对应的CPU Interface。CPU接口端就是分发器和CPU Core之间的桥梁,CPU接口端主要工作如下:

    ①、使能或者关闭发送到CPU Core的中断请求信号。

    ②、应答中断。

    ③、通知中断处理完成。

    ④、设置优先级掩码,通过掩码来设置哪些中断不需要上报给CPU Core。

    ⑤、定义抢占策略。

    ⑥、当多个中断到来的时候,选择优先级最高的中断通知给CPU Core。
     

  • 相关阅读:
    网络设置、ssh服务
    Linux中断概述
    弹性资源组件elastic-resource设计(四)-任务管理器和资源消费者规范
    CountDownLatch和CyclicBarrier的使用
    [MoeCTF 2023]——Web方向详细Write up、Re、Misc、Crypto部分Writeup
    Celery
    虹科分享 | 选择SAS还是NVMe?虹科网络基础带您一探究竟!
    Java基础知识(知识点)
    uni-app, 实现 scroll-view 自动滚动到底部,并控制触发频率
    Python实现电脑自动关机
  • 原文地址:https://blog.csdn.net/qq_66545503/article/details/126693545