zoukankan      html  css  js  c++  java
  • C6000 CSL 函数说明

    转自:http://bbs.21ic.com/icview-741800-1-1.html

    先来看一个例子
    代码1

    1. CSL_FINST(osdRegs->VIDWINMD, OSD_VIDWINMD_VFF0, FRAMEMODE);
    2. 在cslr.h中,CSL_FINST定义为
      代码2
    1. /* the Field INSert (Token) macro */
    2. #define CSL_FINST(reg, PER_REG_FIELD, TOKEN)                               
    3.     CSL_FINS((reg), PER_REG_FIELD, CSL_##PER_REG_FIELD##_##TOKEN)

    将代码1展开来
    代码3

    1. CSL_FINS((osdRegs->VIDWINMD),OSD_VIDWINMD_VFF0, CSL_OSD_VIDWINMD_VFF0_FRAMEMODE);

    CSL_FINS的定义为
    代码4

    1. /* the Field INSert macro */
    2. #define CSL_FINS(reg, PER_REG_FIELD, val)                                  
    3.     ((reg) = ((reg) & ~CSL_##PER_REG_FIELD##_MASK)                         
    4.     | CSL_FMK(PER_REG_FIELD, val))

    将代码3继续展开
    代码5

    1. (((osdRegs->VIDWINMD))= (((osdRegs->VIDWINMD))&~CSL_OSD_VIDWINMD_VFF0_MASK)
    2.         |CSL_FMK(OSD_VIDWINMD_VFF0, CSL_OSD_VIDWINMD_VFF0_FRAMEMODE));

    看CSL_FMK的定义
    代码6

    1. /* the Field MaKe macro */
    2. #define CSL_FMK(PER_REG_FIELD, val)                                        
    3.     (((val) << CSL_##PER_REG_FIELD##_SHIFT) & CSL_##PER_REG_FIELD##_MASK)

    将代码5展开,得最终表达式
    代码7

    1. (((osdRegs->VIDWINMD))= (((osdRegs->VIDWINMD))&~CSL_OSD_VIDWINMD_VFF0_MASK)
    2.         |(((CSL_OSD_VIDWINMD_VFF0_FRAMEMODE)<<CSL_OSD_VIDWINMD_VFF0_SHIFT)&CSL_OSD_VIDWINMD_VFF0_MASK);

    在cslr_osd.h中
    代码8

    1. #define CSL_OSD_VIDWINMD_VFF0_MASK (0x00000002u)
    2. #define CSL_OSD_VIDWINMD_VFF0_FRAMEMODE (0x00000001u)
    3. #define CSL_OSD_VIDWINMD_VFF0_SHIFT (0x00000001u)

    再来看看寄存器VIDWINMD的定义
    vff0

    将代码7简化
    代码9

    1. VIDWINMD= (VIDWINMD&~2)|((1<<1)&2);

    因此,代码1的作用是将寄存器VIDWINMD的位域VFF0设置为FRAMEMODE。
    三个参数分别为寄存器变量,寄存器位域,赋予位域的值。

  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/ldjrl2013/p/3839651.html
Copyright © 2011-2022 走看看