【DSP入门】DSP2803x算法加速利器之CLA

摘要

上一期讲了如何跨过DSP2803x的首个学习门槛,快速入门这个系列芯片。这期给大家介绍一下这款芯片中算法加速利器CLA(Control Law Accelerator):独立可编程 且具备32bit浮点运算的协处理器。

 

什么是CLA

DSP2803x芯片是TI推出的经济型芯片,适用于对成本比较敏感的产品,所以主频相对较低(60MHz),不仅比不上面向高端的DSP28335,甚至还比不上古老的DSP281x。不过TI为了平衡性价比,在DSP2803x中加入了可编程浮点处理器。这个处理器可以独立于主CPU进行浮点运算,然后与主CPU交换数据。此外它还可以直接访问ePWM+HRPWM, Comparator 以及 ADC Result寄存器。如此,我们在编程的时候,可以将浮点运算放入CLA中运行,加快控制算法的计算频率。

 

CLA原理框图

CLA框图如下所示。

CLA任务触发机制(总计支持8个任务):

- 1. 可以通过主CPU用IACK指令触发

- 2. 也可以通过ADCINTx,EPWMx_INT或者CPU Timer 0进行触发.

- 3. 举例:Task 1:ADCINT1 or EPWM1_INT

 

存储区与数据外设共享

- 1. 有两块数据RAM区作为数据共享区:一块CLA可读写,CPU只读;另外一块CLA只读,CPU可读写

- 2.  CLA的程序和数据区可以通过CPU映射到CLA自有的或者CPU中区域

- 3. CLA可以直接访问ePWM+HRPWM, Comparator 和 ADC Result registers

- 4. 注意:除了1, 2, 3点描述的区域外,CLA访问其他区域的数据或者代码是无效的,回读的值为0.

 

主频: 最大频率为SYSCLKOUT的最大频率60Mhz.

 

编程语言

CLA支持的汇编指令相比完全版的TI DSP汇编指令要少了不少。最初CLA只支持用汇编编写,不过只要CGT版本大于6.4.x(具体版本号不太确定了,反正从CCS5开始就已经支持),CLA部分的代码也可以使用C语言进行编写。需要注意的是CLA部分的代码需要以.CLA结尾,这样编译器才能正常解析为汇编。

 

如何使用CLA

  1.  前期准备:可以遵照上一篇提到的方法和链接获取CLA的参考手册和工程源码。【DSP入门】一文带你跨过TI TMS320F2803x 首个学习门槛

  2. 打开TI的CLA范例工程,这边以CLA fir32为例:

    - 其中F28035_CLA_C.cmd为链接文件,里面重定义部分RAM和Flash区域,用于CLA的代码和共享数据存储;

    - fir32.cla:前面章节提到的task1-task8的执行代码

    - fir32_shared_data.c/fir32_shared.h:定义了CLA和CPU共享的

    - fir32_main.c:初始化代码和main loop

    - fir32_run.c/fir32_report.c:为了验证CLA的结果,在CPU中执行相同的浮点算法进行对比。

  3. 对照着芯片手册,查看各部分代码,理清程序脉络,开发自己的应用代码。

  4. 如果汇编基础较好,也可以直接用汇编编写CLA部分代码,这样就能够最大程度发挥CLA的效能。

转载是一种动力 分享是一种美德。欢迎扫码关注本公众号:芯连心嵌入式设计交流

 

### 关于CLA74182的相关解释 #### CLA 的定义与作用 CLA 是 Contributor License Agreement(贡献者许可协议)的缩写,它是一种法律文件,在开发者向开源项目提交代码或其他形式的贡献时起到约束作用[^1]。通过签署 CLA,贡献者同意将其知识产权授权给项目的维护方或基金会,并确认其拥有足够的权利来提供这些贡献。 CLA 主要分为两种类型:个体 CLA 和公司 CLA。对于个人开发者来说,更多情况下会选择签署个体 CLA 来成为某个开源社区或基金会的一员[^2]。 #### Spark 报错中的 `RDDOperationScope.class` 问题 在某些场景下,开发人员可能会遇到类似于以下错误提示的信息: > scalac: missing or invalid dependency detected while loading class file 'RDDOperationScope.class'. 这种错误通常发生在编译 Scala 或运行 Apache Spark 应用程序的过程中。具体原因可能涉及 Jackson 库版本不兼容的问题[^3]。以下是可能导致此问题的原因分析以及解决方法: - **依赖冲突**:如果项目中存在多个不同版本的 Jackson 库,则可能会导致类加载失败。建议检查构建工具(如 Maven 或 SBT)配置文件中的依赖项是否存在重复或冲突的情况。 - **缺失依赖**:确保所有必要的库均已正确引入到项目中。可以通过重新下载所需依赖或将它们显式添加至 `pom.xml` 文件或 `build.sbt` 中解决问题。 - **清理并重建工程**:有时缓存数据也可能引发此类异常现象。尝试执行如下命令清除旧版目标文件后再进行全量构建操作: ```bash mvn clean install ``` 尽管上述内容并未直接提及 “CLA74182”,但从上下文中推测这可能是某种特定编号下的技术文档、案例研究或者是某份详细的 CLA 合同条款名称之一。然而由于缺乏进一步的具体描述信息,目前尚无法确切判断该字符串的确切含义及其关联领域范围。 --- ### 提供一段假设性的 Python 脚本用于检测依赖关系 下面展示了一段简单的脚本来帮助识别潜在的 Java/Scala 类路径上的问题所在位置: ```python import os from subprocess import Popen, PIPE def check_classpath(): process = Popen(['java', '-XshowSettings:properties'], stdout=PIPE, stderr=PIPE) output, error = process.communicate() if b'class path' in output.lower() and not error: print("Class Path Settings:") lines = str(output).split("\\n") for line in lines: if "class" in line.lower(): print(line.strip()) check_classpath() ``` 以上代码片段可以用来打印当前 JVM 运行环境所使用的类别加载器设置情况以便排查是否有任何可疑条目影响正常运作流程。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值