当前位置: 首页 > news >正文

170个可带链接锚文本外链的网站论坛微信上如何创建小程序

170个可带链接锚文本外链的网站论坛,微信上如何创建小程序,兰州网站的建设,吉林市教做网站往期内容 本专栏往期内容#xff0c;interrtupr子系统#xff1a; 深入解析Linux内核中断管理#xff1a;从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…往期内容 本专栏往期内容interrtupr子系统 深入解析Linux内核中断管理从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分配机制详解中断的硬件框架GIC介绍 pinctrl和gpio子系统专栏 专栏地址pinctrl和gpio子系统 编写虚拟的GPIO控制器的驱动程序和pinctrl的交互使用 – 末片有专栏内容观看顺序 input子系统专栏 专栏地址input子系统input角度I2C触摸屏驱动分析和编写一个简单的I2C驱动程序 – 末片有专栏内容观看顺序 I2C子系统专栏 专栏地址IIC子系统具体芯片的IIC控制器驱动程序分析i2c-imx.c-CSDN博客 – 末篇有专栏内容观看顺序 总线和设备树专栏 专栏地址总线和设备树设备树与 Linux 内核设备驱动模型的整合-CSDN博客 – 末篇有专栏内容观看顺序 目录 往期内容前言1.Distributor 寄存器描述1.1 Distributor Control Register, GICD_CTLR1.2 Interrupt Controller Type Register, GICD_TYPER1.3 Distributor Implementer Identification Register, GICD_IIDR1.4 Interrupt Group Registers, GICD_IGROUPRn1.5 Interrupt Set-Enable Registers, GICD_ISENABLERn1.6 Interrupt Clear-Enable Registers, GICD_ICENABLERn1.7 Interrupt Set-Active Registers, GICD_ISACTIVERn1.8 Interrupt Clear-Active Registers, GICD_ICACTIVERn1.9 Interrupt Priority Registers, GICD_IPRIORITYRn1.10 Interrupt Processor Targets Registers, GICD_ITARGETSRn1.11 Interrupt Configuration Registers, GICD_ICFGRn1.12 Identification registers: Peripheral ID2 Register, ICPIDR2 2.CPU interface寄存器描述2.1 CPU Interface Control Register, GICC_CTLR2.2 Interrupt Priority Mask Register, GICC_PMR2.3 Binary Point Register, GICC_BPR2.4 Interrupt Acknowledge Register, GICC_IAR2.5 Interrupt Register, GICC_EOIR 3.GIC编程 前言 GIC分为两部分Distributor和CPU interface它们的寄存器都有相应的前缀“GICD*”、“GICC*”。这些寄存器都是映射为内存接口(memery map)CPU可以直接读写。 介绍了ARM的全局中断控制器GIC的结构与工作原理。GIC分为Distributor和CPU接口两部分分别负责中断的分发和处理。文章详细解读了多个重要寄存器包括Distributor控制寄存器GICD_CTLR、中断优先级寄存器GICD_IPRIORITYRn、中断使能寄存器GICD_ISENABLERn、以及CPU接口控制寄存器GICC_CTLR等。每个寄存器的作用、位域及其功能、偏移地址和如何找到对应的寄存器及位操作规则均有详尽说明。最后还提到NXP提供的IMX6ULL SDK包中的GIC初始化代码示例用于GIC的实际配置和初始化适合基于Cortex A7的GICv2环境。 1.Distributor 寄存器描述 1.1 Distributor Control Register, GICD_CTLR 控制Group 0和Group 1中断的使能和转发。 位域名读写描述1EnableGrp1R/W用于将pending Group 1中断从Distributor转发到CPU interfaces 0group 1中断不转发 1根据优先级规则转发Group 1中断0EnableGrp0R/W用于将pending Group 0中断从Distributor转发到CPU interfaces 0group 0中断不转发 1根据优先级规则转发Group 0中断 1.2 Interrupt Controller Type Register, GICD_TYPER 该寄存器包含对GIC配置的描述信息。 位域名读写描述15:11LSPIR如果GIC实现了安全扩展则此字段的值是已实现的可锁定SPI的最大数量范围为00b00000到310b11111。 如果此字段为0b00000则GIC不会实现配置锁定。 如果GIC没有实现安全扩展则保留该字段。10SecurityExtnR表示GIC是否实施安全扩展 0未实施安全扩展 1实施了安全扩展7:5CPUNumberR表示已实现的CPU interfaces的数量。 已实现的CPU interfaces数量比该字段的值大1。 例如如果此字段为0b011则有四个CPU interfaces。4:0ITLinesNumberR表示GIC支持的最大中断数。 如果ITLinesNumber N则最大中断数为32*(N1)。 中断ID的范围是0到ID的数量– 1。 例如0b00011最多128条中断线中断ID 0-127。 中断的最大数量为10200b11111。 无论此字段定义的中断ID的范围如何都将中断ID 1020-1023保留用于特殊目的 1.3 Distributor Implementer Identification Register, GICD_IIDR 位域名读写描述31:24ProductIDR产品标识ID23:20保留19:16VariantR通常是产品的主要版本号15:12RevisionR通常此字段用于区分产品的次版本号11:0ImplementerR含有实现这个GIC的公司的JEP106代码 [11:8]JEP106 continuation code对于ARM实现此字段为0x4 [7]始终为0 [6:0]实现者的JEP106code对于ARM实现此字段为0x3B 1.4 Interrupt Group Registers, GICD_IGROUPRn 用于设置每个中断的Group属性 位域名读写描述31:0Group status bitsR/W组状态位对于每个位 0相应的中断为Group 0 1相应的中断为Group 13相应的中断为Group 3。 对于一个中断如何设置它的Group 首先找到对应的GICD_IGROUPRn寄存器即n是多少还要确定使用这个寄存器里哪一位。 对于interrtups ID m如下计算 n m DIV 32GICD_IGROUPRn里的n就确定了 GICD_IGROUPRn在GIC内部的偏移地址是多少0x080(4*n) 使用GICD_IPRIORITYRn中哪一位来表示interrtups ID m bit m mod 32。1.5 Interrupt Set-Enable Registers, GICD_ISENABLERn 控制中断的转发使能状态。 位域名读写描述31:0Set-enable bitsR/W对于SPI和PPI类型的中断每一位控制对应中断的转发行为从Distributor转发到CPU interface 读 0表示当前是禁止转发的 1表示当前是使能转发的 写 0无效 1使能转发 对于一个中断如何找到GICD_ISENABLERn并确定相应的位 对于interrtups ID m如下计算 n m DIV 32GICD_ISENABLERn里的n就确定了 GICD_ISENABLERn在GIC内部的偏移地址是多少0x100(4*n) 使用GICD_ISENABLERn中哪一位来表示interrtups ID m bit m mod 32。1.6 Interrupt Clear-Enable Registers, GICD_ICENABLERn 控制中断的禁止转发状态。 位域名读写描述31:0Clear-enable bitsR/W对于SPI和PPI类型的中断每一位控制对应中断的转发行为从Distributor转发到CPU interface 读 0表示当前是禁止转发的 1表示当前是使能转发的 写 0无效 1禁止转发 对于一个中断如何找到GICD_ICENABLERn并确定相应的位 对于interrtups ID m如下计算 n m DIV 32GICD_ICENABLERn里的n就确定了 GICD_ICENABLERn在GIC内部的偏移地址是多少0x180(4*n) 使用GICD_ICENABLERn中哪一位来表示interrtups ID m bit m mod 32。1.7 Interrupt Set-Active Registers, GICD_ISACTIVERn 设置或清除中断的活动状态。 位域名读写描述31:0Set-active bitsR/W读 0表示相应中断不是active状态 1表示相应中断是active状态 写 0无效 1把相应中断设置为active状态如果中断已处于Active状态则写入无效 对于一个中断如何找到GICD_ISACTIVERn并确定相应的位 对于interrtups ID m如下计算 n m DIV 32GICD_ISACTIVERn里的n就确定了 GICD_ISACTIVERn在GIC内部的偏移地址是多少0x300(4*n) 使用GICD_ISACTIVERn 中哪一位来表示interrtups ID m bit m mod 32。1.8 Interrupt Clear-Active Registers, GICD_ICACTIVERn 位域名读写描述31:0Clear-active bitsR/W读 0表示相应中断不是active状态 1表示相应中断是active状态 写 0无效 1把相应中断设置为deactive状态如果中断已处于dective状态则写入无效 对于一个中断如何找到GICD_ICACTIVERn并确定相应的位 对于interrtups ID m如下计算 n m DIV 32GICD_ICACTIVERn里的n就确定了 GICD_ICACTIVERn 在GIC内部的偏移地址是多少0x380(4*n) 使用GICD_ICACTIVERn中哪一位来表示interrtups ID m bit m mod 32。1.9 Interrupt Priority Registers, GICD_IPRIORITYRn 用于设置每个中断的优先级 位域名读写描述31:24Priority, byte offset 3R/W对于每一个中断都有对应的8位数据用来描述它的优先级。 每个优先级字段都对应一个优先级值值越小相应中断的优先级越高23:16Priority, byte offset 2R/W15:8Priority, byte offset 1R/W7:0Priority, byte offset 0R/W 对于一个中断如何设置它的优先级(Priority)首先找到对应的GICD_IPRIORITYRn寄存器即n是多少还要确定使用这个寄存器里哪一个字节。 对于interrtups ID m如下计算 n m DIV 4GICD_IPRIORITYRn里的n就确定了 GICD_IPRIORITYRn在GIC内部的偏移地址是多少0x400(4*n) 使用GICD_IPRIORITYRn中4个字节中的哪一个来表示interrtups ID m的优先级 byte offset m mod 4。 byte offset 0对应寄存器里的[7:0] byte offset 1对应寄存器里的[15:8] byte offset 2对应寄存器里的[23:16] byte offset 3对应寄存器里的[31:24]。1.10 Interrupt Processor Targets Registers, GICD_ITARGETSRn 中断处理目标寄存器 指定中断目标CPU。 位域名读写描述31:24CPU targets, byte offset 3R/W对于每一个中断都有对应的8位数据用来描述这个中断可以发给哪些CPU。 处理器编号从0开始8位数里每个位均指代相应的处理器。 例如值0x3表示将中断发送到处理器0和1。 当读取GICD_ITARGETSR0GICD_ITARGETSR7时读取里面任意字节返回的都是执行这个读操作的CPU的编号。23:16CPU targets, byte offset 2R/W15:8CPU targets, byte offset 1R/W7:0CPU targets, byte offset 0R/W 对于一个中断如何设置它的目标CPU优先级(Priority)首先找到对应的GICD_ITARGETSRn寄存器即n是多少还要确定使用这个寄存器里哪一个字节。 对于interrtups ID m如下计算 n m DIV 4GICD_ITARGETSRn里的n就确定了 GICD_ITARGETSRn在GIC内部的偏移地址是多少0x800(4*n) 使用GICD_ITARGETSRn中4个字节中的哪一个来表示interrtups ID m的目标CPU byte offset m mod 4。 byte offset 0对应寄存器里的[7:0] byte offset 1对应寄存器里的[15:8] byte offset 2对应寄存器里的[23:16] byte offset 3对应寄存器里的[31:24]。1.11 Interrupt Configuration Registers, GICD_ICFGRn 定义中断的触发模式。 位域名读写描述[2F1:2F]Int_config, field FR/W对于每一个中断都有对应的2位数据用来描述它的边沿触发还是电平触发。 对于Int_config [1]即高位[2F 1]含义为 0相应的中断是电平触发 1相应的中断是边沿触发。 对于Int_config [0]即低位[2F]是保留位。 对于一个中断如何找到GICD_ICFGRn并确定相应的位域F 对于interrtups ID m如下计算 n m DIV 16GICD_ICFGRn里的n就确定了 GICD_ICACTIVERn 在GIC内部的偏移地址是多少0xC00(4*n) F m mod 16。1.12 Identification registers: Peripheral ID2 Register, ICPIDR2 位域名读写描述[31:0]-R/W由实现定义[7:4]ArchRevR该字段的值取决于GIC架构版本 0x1GICv1 0x2GICv2。[3:0]-R/W由实现定义 2.CPU interface寄存器描述 2.1 CPU Interface Control Register, GICC_CTLR 此寄存器用来控制CPU interface传给CPU的中断信号。对于不同版本的GIC这个寄存器里各个位的含义大有不同。以GICv2为例有如下2种格式 ​ 以GIC2 with Security Extensions, Non-secure copy 为例GICC_CTLR中各个位的定义如下 位域名读写描述[31:10]-保留[9]EOImodeNSR/W控制对GICC_EOIR和GICC_DIR寄存器的非安全访问 0GICC_EOIR具有降低优先级和deactivate中断的功能 对GICC_DIR的访问是未定义的。 1GICC_EOIR仅具有降低优先级功能 GICC_DIR寄存器具有deactivate中断功能。[8:7]-保留[6]IRQBypDisGrp1R/W当CPU interface的IRQ信号被禁用时该位控制是否向处理器发送bypass IRQ信号 0将bypass IRQ信号发送给处理器 1将bypass IRQ信号不发送到处理器。[5]FIQBypDisGrp1R/W当CPU interface的FIQ信号被禁用时该位控制是否向处理器发送bypass FIQ信号 0将bypass FIQ信号发送给处理器 1旁路FIQ信号不发送到处理器[4:1]-保留[0]-R/W使能CPU interface向连接的处理器发出的组1中断的信号: 0禁用中断信号 1使能中断信号 2.2 Interrupt Priority Mask Register, GICC_PMR 提供优先级过滤功能优先级高于某值的中断才会发送给CPU。 通过此寄存器可设置优先级阈值只有高于该值的中断会被传递给CPU。 位域名读写描述[31:8]-保留[7:0]-R/W优先级高于这个值的中断才会发送给CPU [7:0]共8位可以表示256个优先级。但是某些芯片里的GIC支持的优先级少于256个则某些位为RAZ / WI如下所示 如果有128个级别则寄存器中bit[0] 0b0即使用[7:1]来表示优先级 如果有64个级别则寄存器中bit[1:0] 0b00即使用[7:2]来表示优先级 如果有32个级别则寄存器中bit[2:0] 0b000即使用[7:3]来表示优先级 如果有16个级别则寄存器中bit[3:0] 0b0000即使用[7:4]来表示优先级注意imx6ull最多为32个级别 2.3 Binary Point Register, GICC_BPR 此寄存器用来把8位的优先级字段拆分为组优先级和子优先级组优先级用来决定中断抢占。 位域名读写描述[31:3]-保留[2:0]Binary pointR/W此字段的值控制如何将8bit中断优先级字段拆分为组优先级和子优先级组优先级用来决定中断抢占。 更多信息还得看看GIC手册。 2.4 Interrupt Acknowledge Register, GICC_IAR CPU读此寄存器获得当前中断的interrtup ID。 位域名读写描述[31:13]-保留[12:10]CPUIDR对于SGI类中断它表示谁发出了中断。例如值为3表示该请求是通过对CPU interface 3上的GICD_SGIR的写操作生成的。[9:0]Interrupt IDR中断ID 2.5 Interrupt Register, GICC_EOIR 用于通知GIC该中断已处理完毕。写此寄存器表示某中断已经处理完毕。GICC_IAR的值表示当前在处理的中断把GICC_IAR的值写入GICC_EOIR就表示中断处理完了。 位域名读写描述[31:13]-保留[12:10]CPUIDW对于SGI类中断它的值跟GICD_IAR. CPUID的相同。[9:0]EOIINTIDW中断ID它的值跟GICD_IAR里的中断ID相同 3.GIC编程 gic.cgic.h 使用cortex A7处理器的芯片一般都是使用GIC v2的中断控制器。处理GIC的基地址不一样外对GIC的操作都是一样的。在NXP官网可以找到IMX6ULL的SDK包i.MX 6ULL应用处理器|Arm® Cortex®-A7单核频率为900 MHz。 下载后可以参考这个文件core_ca7.h里面含有GIC的初始化代码。
http://www.w-s-a.com/news/638904/

相关文章:

  • 用js来做网站亳州建设局网站
  • 做网站的公司利润多少呢纺织厂网站模板
  • 网页设计构建的基本流程宜宾seo网站建设
  • 西安网站开发公司价格保定徐水网站建设
  • 学做川菜下什么网站软件著作权和专利的区别
  • 百度网站标题东莞外包公司有哪些
  • 织梦增加网站英文名称网页界面设计特点
  • 企业如何进行网站建设棋牌代理平台
  • 韩国做美食网站有哪些seo优化在线诊断
  • 网站建设规划模板做擦边网站
  • 做网站台式还是笔记本网上下载的免费网站模板怎么用
  • 高校网站群管理系统凡科建站是永久的吗
  • 深圳网站建设服务电话网站通栏设计素材
  • 网站里面的视频功能怎么做网站名注册
  • 网站游戏下载厦门php网站建设
  • 沈阳关键词网站排名一台服务器做两个网站吗
  • 哪个行业该做网站但是没有做dom手表官方网站
  • 网站建设费 大创wordpress中函数get
  • 怎样建设个自己的网站首页有没有专门教做扯面的网站
  • 网站后台怎么添加模板教育类网站开发公司
  • 网站的外链是什么php创建一个网站
  • 语文建设 官方网站网络工程可以从事什么工作
  • 无锡便宜做网站如何下载网站模板
  • 南宁高端网站网络小说网站推广策划方案
  • 苏州网站制作方法建设银行 网站
  • 技术网站推广范例素材网站哪个好
  • 网站找人做的他能登管理员吗网站建设一般多少钱
  • 衡水哪有做网站的wordpress主题站主题
  • 网络建设的流程网站公司注册资本
  • 杭州旅游团购网站建设建立一个网站需要哪些步骤