转自: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的定义

将代码7简化
代码9

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

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

C6000 CSL 函数说明的更多相关文章

  1. C6000代码层面优化(一)

    2014年8月7日,看了一片很长见识的博文,关于DSP如何优化的,有一个问题没有搞通,“百度”一下关键字,居然搜查了一模一样的博文N片,现在也搞不懂这篇博文的原创作者是谁了.反正我感觉直接转摘过去,要 ...

  2. 如何使用CSL(翻译总结自TI官方文档)

    为了使用CSL来进行编译和连接,必须先配置CCS开发环境. 1.指定目标设备 Project/options/complier/preprocessor,在define symbols中输入设备支持符 ...

  3. CSL概述(翻译总结自TI官方文档)

    一.简单介绍 CSL是函数,宏和符号常数的集合,用来控制和配置片上外设.(Chip Support Library) 每一个外设都有自己对应的CSL模块.每个模块有自己的支持符,来表示对于给定的设备, ...

  4. 基于CCS3.3平台搭建DSP/BIOS系统

    本人由于换工作的原因,由ccs3.1平台下转化为ccs3.3平台.先说说本人感觉的区别,ccs3.1下的CSL库集成到DSP/BIOS内,而3.3的CSL库在DSP/BIOS下就没有体现. 1.二话不 ...

  5. C6455 CSL_EMIF详解

    C6455 CSL_EMIF详解 原网址http://www.61ic.com/Article/C6000/C64X/201303/47507.html C6455CSL详解 和DSP6455的EMI ...

  6. 【DSP开发】DSP程序优化

    此文是在http://blog.csdn.net/guanchanghui/article/details/1181851基础上,通过自己的学习理解修改而来.暂且算作是自己的原创吧.如有侵权,联系,立 ...

  7. C6000系类的内联函数

    1.求绝对值函数 (1) _abs()  C代码  : int _abs(int src)  汇编: ABS  功能: 求32位数据的绝对值   (2) _labs()  C代码: int _labs ...

  8. TI C6000 数据存储处理与性能优化

    存储器之于CPU好比仓库之于车间.车间加工过程中的原材料.半成品.成品等均需入出仓库,生产效率再快,如果仓库周转不善,也必然造成生产阻塞.如同仓库需要合理地规划管理一般,数据存储也需要恰当的处理技巧来 ...

  9. TI C6000 优化进阶:循环最重要!

    软件流水循环 1. C6000流水线(Pipeline) 一个指令的处理过程并不是一步完成,它被分为三个阶段:取指(Fetch).译码(Decode).执行(Excute).将每一个阶段放入独立的流程 ...

随机推荐

  1. POJ1679 The Unique MST【次小生成树】

    题意: 判断最小生成树是否唯一. 思路: 首先求出最小生成树,记录现在这个最小生成树上所有的边,然后通过取消其中一条边,找到这两点上其他的边形成一棵新的生成树,求其权值,通过枚举所有可能,通过这些权值 ...

  2. nginx 配置文件[转]

    #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; ...

  3. Jenkins实现定时、顺序编译

    1      Jenkins实现定时.顺序编译 l  Jenkins 编译流程:更新代码,编译公共服务,编译普通服务(普通服务依赖于公共服务).以下图为例,首先执行 update,再执行 icto_c ...

  4. 读SRE Google运维解密有感(一)

    前言 这几天打算利用碎片时间读了一下"SRE Google运维解密"这本书,目前读了前几章,感觉收获颇多,结合自己的工作经历和书中的要点,写一些感悟和思考 SRE 有关SRE我就不 ...

  5. zabbix系列(九)zabbix3.0实现自动触发zabbix-agent端shell脚本任务

    zabbix实现自动触发远程脚本执行命令 Zabbix触发器(trigger)达到阀值后会有动作(action)执行:发送告警信息或执行远程命令 环境 Server:基于centos6.5 final ...

  6. 通达OA系统故障解决案例记录

    案例1: 现象:在人员访问量大的时候OA系统经卡死,并且经常宕机,需要启动apache服务 优化配置如下: D:\MYOA\conf\http.conf 修改参数如下: <IfModule mp ...

  7. Ex 5_22 在此我们基于以下性质给出一个新的最小生成树算法..._第九次作业

    (a)设环的顶点集为V, e(u,v)为权最重的边,若把V分成两部分V1,V2.其中V1包含u,V2包含v,因为V是一个环,因此,至少存在两条把u和v连接起来的边.因此,除了e之外,至少还存在另一条边 ...

  8. Ex3_15 判断图是否是一个强连通分量 判断点是否在汇点强连通分量中_十一次作业

    (a) 可以用图中的每一个顶点表示街道中的每个十字路口,由于街道都是单行的,所以图是有向图,若从一个十字路口都有一条合法的路线到另一个十字路口,则图是一个强连通图.即要验证的是图是否是一个强连通图. ...

  9. android录音实现不再担心—一个案例帮你解决你的问题

    最近有小伙伴经常android的录音怎么实现,有没有相关的案例.今天给大家推荐一个android中实现录音和播放的小案例. 效果图: 一.实现录音的 Service 关键代码: // 开始录音 pub ...

  10. RzPageControl 关闭按钮