C6000 CSL 函数说明
转自:http://bbs.21ic.com/icview-741800-1-1.html
先来看一个例子
代码1
- CSL_FINST(osdRegs->VIDWINMD, OSD_VIDWINMD_VFF0, FRAMEMODE);
- 在cslr.h中,CSL_FINST定义为
代码2
- /* the Field INSert (Token) macro */
- #define CSL_FINST(reg, PER_REG_FIELD, TOKEN) \
- CSL_FINS((reg), PER_REG_FIELD, CSL_##PER_REG_FIELD##_##TOKEN)
将代码1展开来
代码3
- CSL_FINS((osdRegs->VIDWINMD),OSD_VIDWINMD_VFF0, CSL_OSD_VIDWINMD_VFF0_FRAMEMODE);
CSL_FINS的定义为
代码4
- /* the Field INSert macro */
- #define CSL_FINS(reg, PER_REG_FIELD, val) \
- ((reg) = ((reg) & ~CSL_##PER_REG_FIELD##_MASK) \
- | CSL_FMK(PER_REG_FIELD, val))
将代码3继续展开
代码5
- (((osdRegs->VIDWINMD))= (((osdRegs->VIDWINMD))&~CSL_OSD_VIDWINMD_VFF0_MASK) \
- |CSL_FMK(OSD_VIDWINMD_VFF0, CSL_OSD_VIDWINMD_VFF0_FRAMEMODE));
看CSL_FMK的定义
代码6
- /* the Field MaKe macro */
- #define CSL_FMK(PER_REG_FIELD, val) \
- (((val) << CSL_##PER_REG_FIELD##_SHIFT) & CSL_##PER_REG_FIELD##_MASK)
将代码5展开,得最终表达式
代码7
- (((osdRegs->VIDWINMD))= (((osdRegs->VIDWINMD))&~CSL_OSD_VIDWINMD_VFF0_MASK) \
- |(((CSL_OSD_VIDWINMD_VFF0_FRAMEMODE)<<CSL_OSD_VIDWINMD_VFF0_SHIFT)&CSL_OSD_VIDWINMD_VFF0_MASK);
在cslr_osd.h中
代码8
- #define CSL_OSD_VIDWINMD_VFF0_MASK (0x00000002u)
- #define CSL_OSD_VIDWINMD_VFF0_FRAMEMODE (0x00000001u)
- #define CSL_OSD_VIDWINMD_VFF0_SHIFT (0x00000001u)
再来看看寄存器VIDWINMD的定义
将代码7简化
代码9
- VIDWINMD= (VIDWINMD&~2)|((1<<1)&2);
因此,代码1的作用是将寄存器VIDWINMD的位域VFF0设置为FRAMEMODE。
三个参数分别为寄存器变量,寄存器位域,赋予位域的值。
C6000 CSL 函数说明的更多相关文章
- C6000代码层面优化(一)
2014年8月7日,看了一片很长见识的博文,关于DSP如何优化的,有一个问题没有搞通,“百度”一下关键字,居然搜查了一模一样的博文N片,现在也搞不懂这篇博文的原创作者是谁了.反正我感觉直接转摘过去,要 ...
- 如何使用CSL(翻译总结自TI官方文档)
为了使用CSL来进行编译和连接,必须先配置CCS开发环境. 1.指定目标设备 Project/options/complier/preprocessor,在define symbols中输入设备支持符 ...
- CSL概述(翻译总结自TI官方文档)
一.简单介绍 CSL是函数,宏和符号常数的集合,用来控制和配置片上外设.(Chip Support Library) 每一个外设都有自己对应的CSL模块.每个模块有自己的支持符,来表示对于给定的设备, ...
- 基于CCS3.3平台搭建DSP/BIOS系统
本人由于换工作的原因,由ccs3.1平台下转化为ccs3.3平台.先说说本人感觉的区别,ccs3.1下的CSL库集成到DSP/BIOS内,而3.3的CSL库在DSP/BIOS下就没有体现. 1.二话不 ...
- C6455 CSL_EMIF详解
C6455 CSL_EMIF详解 原网址http://www.61ic.com/Article/C6000/C64X/201303/47507.html C6455CSL详解 和DSP6455的EMI ...
- 【DSP开发】DSP程序优化
此文是在http://blog.csdn.net/guanchanghui/article/details/1181851基础上,通过自己的学习理解修改而来.暂且算作是自己的原创吧.如有侵权,联系,立 ...
- C6000系类的内联函数
1.求绝对值函数 (1) _abs() C代码 : int _abs(int src) 汇编: ABS 功能: 求32位数据的绝对值 (2) _labs() C代码: int _labs ...
- TI C6000 数据存储处理与性能优化
存储器之于CPU好比仓库之于车间.车间加工过程中的原材料.半成品.成品等均需入出仓库,生产效率再快,如果仓库周转不善,也必然造成生产阻塞.如同仓库需要合理地规划管理一般,数据存储也需要恰当的处理技巧来 ...
- TI C6000 优化进阶:循环最重要!
软件流水循环 1. C6000流水线(Pipeline) 一个指令的处理过程并不是一步完成,它被分为三个阶段:取指(Fetch).译码(Decode).执行(Excute).将每一个阶段放入独立的流程 ...
随机推荐
- POJ1679 The Unique MST【次小生成树】
题意: 判断最小生成树是否唯一. 思路: 首先求出最小生成树,记录现在这个最小生成树上所有的边,然后通过取消其中一条边,找到这两点上其他的边形成一棵新的生成树,求其权值,通过枚举所有可能,通过这些权值 ...
- Docker容器数据卷
⒈Docker容器中数据如何持久化? ①通过commit命令使容器反向为镜像 ②以容器数据卷的方式将数据抽离 ⒉容器数据卷的作用? ①容器数据的持久化 ②容器间继承.共享数据 ⒊能干嘛? 卷就是目录或 ...
- python模块分析之logging日志(四)
前言 python的logging模块是用来设置日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块 ...
- linux关机时候执行命令脚本或程序
Write a service file and place it in /etc/systemd/system/beforeshuttingdown.service code: [Unit] Des ...
- SharePoint 2013 Workflow Manager 1.0 远程服务器返回错误: (400) 错误的请求。 不支持查询字符串中的 api-version
环境: Windows Server 2012 R2 Standard SharePoint Server 2013 with sp1 通过Web 平台安装程序 5.0,已安装 Workflow Ma ...
- 006_ssl监测及评分
https://testssl.sh/ 一. https://www.ssllabs.com/ssltest/analyze.html?d=jyall.com 监测下jyll.com,不忍直视啊! 二 ...
- 读SRE Google运维解密有感(二)
前言 这是读“SRE Google运维解密”有感第二篇,第一篇参见 这本书最近又读了几章,结合自己的经历,有些地方真的能感同身受,有些地方也惊叹SRE充满辩证的思想,总之SRE是好一本好书,会给你很大 ...
- dell r720服务器raid5安装centos6.5系统
服务器型号R720 已经配置好了raid,需要安装centos6.5系统 1.开机,按F10,进入系统引导界面,选择加载系统选项,并选择redhat 6.7选项 系统提示不支持,选择仍然继续,根据提示 ...
- sqlserver循环
普通while循环 1 循环5来修改学生信息 循环遍历修改记录 DECLARE @i int set @i=0 while @i<5 BEGIN update Student set demo ...
- mac安装RabbitMQ
1 下载 地址 http://www.rabbitmq.com/install-standalone-mac.html 2 rabbitmq的安装目录: /Users/ysyc1/rabbitmq_s ...