• 1、CMD文件配置

CPU与CLA交互的RAM空间,

CLA1_MSGRAMLOW,用于CLA- to -CPU Message RAM; (区间大小128 word)

CLA1_MSGRAMHIGH, 用于CPU- to -CLA Message RAM; (区间大小128 word)

CLA代码、临时变量、全局变量都需要放到RAM中

  • 2、存储器模型说明

不同的数据被放在不同区域说明

未初始化的全局变量放置在".bss_cla";

已经初始化的常量放置在".const_cla";

局部变量和编译临时变量放置在".scratchpad",其大小由编译器决定。

CLA的代码放置在"Cla1Prog"。

CLA没有C系统堆,因此不支持malloc之类的操作。

注意上述区域都在RAM中,在运行时需要从flash中拷贝到ram中。如果没有为".scratchpad"分配足够的空间则会报错。

  • 3、CLA初始化

3.1、把FLASH里面的CAL代码搬运到RAM中运行

// Copy the program and constants from FLASH to RAM before configuring

// the CLA

memcpy((uint32_t *)&Cla1ProgRunStart, (uint32_t *)&Cla1ProgLoadStart,

(uint32_t)&Cla1ProgLoadSize );

memcpy((uint32_t *)&Cla1ConstRunStart, (uint32_t *)&Cla1ConstLoadStart,

(uint32_t)&Cla1ConstLoadSize );

EALLOW;

3.2、初始化CLA1ToCPUMsgRAM、CPUToCLA1MsgRAM

//

// Initialize and wait for CLA1ToCPUMsgRAM

//

MemCfgRegs.MSGxINIT.bit.INIT_CLA1TOCPU = 1;

while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU != 1){};

//

// Initialize and wait for CPUToCLA1MsgRAM

//

MemCfgRegs.MSGxINIT.bit.INIT_CPUTOCLA1 = 1;

while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1 != 1){};

3.3、给予CLA对程序空间、数据空间的控制

// CLA Program will reside in RAMLS0 and data in RAMLS1, RAMLS2

//

MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 1U;

MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0U;

MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 0U;

//

// Select CLA as the master of RAMLS0, RAMSL1, RAMLS2

//

MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1U;

MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1U;

MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1U;

//

// In Flash config, constants are loaded in Flash and then copied to LS3.

// CLA reads the constants from LS3.

//

MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS3 = 1U;

//

// Select CLA as the master of RAMLS3

//

MemCfgRegs.LSxMSEL.bit.MSEL_LS3 = 1U;

3.4 使用任务标签设置任务1和8 的MVECT寄存器地址

// Suppressing #770-D conversion from pointer to smaller integer

// The CLA address range is 16 bits so the addresses passed to the MVECT

// registers will be in the lower 64KW address space. Turn the warning

// back on after the MVECTs are assigned addresses

//

#pragma diag_suppress=770

//

// Assign the task vectors and set the triggers for task 1 and 8

//

Cla1Regs.MVECT1 = (uint16_t)&Cla1Task1;

Cla1Regs.MVECT8 = (uint16_t)&Cla1Task8;

3.5 通过配置CLA1TASKSRCSELx寄存器来决定触发每个任务的事件

DmaClaSrcSelRegs.CLA1TASKSRCSEL1.bit.TASK1 = 0U; //Software

DmaClaSrcSelRegs.CLA1TASKSRCSEL2.bit.TASK8 = 0U; //Software

#pragma diag_warning=770

//

// Enable Tasks 1 and 8. Since task 8 is forced in software, we must

// enable software forcing (IACKE)

3.6、设置MIER(使能寄存器)中的相应位来全局启用要激活的任务

Cla1Regs.MIER.bit.INT1 = 1U;

Cla1Regs.MIER.bit.INT8 = 1U;

Cla1Regs.MCTL.bit.IACKE = 1U;

//

// Force task 8, the one time initialization task

//

Cla1Regs.MIFRC.bit.INT8 = 1U;

//Cla1ForceTask8();

EDIS;

  • 4、添加共享变量头文件

“cla_control_shared.h”

f28004x_cla_defines.h

f28004x_cla_typedefs.h

  • 5、添加.cla文件

CLA文件里面有八个CLA任务,可配置软件强制触发、其他外设触发等

__attribute__((interrupt)) void Cla1Task1 ( void )

{

}

__attribute__((interrupt)) void Cla1Task2 ( void )

{

}

__attribute__((interrupt)) void Cla1Task3 ( void )

{

}

__attribute__((interrupt)) void Cla1Task4 ( void )

{

}

__attribute__((interrupt)) void Cla1Task5 ( void )

{

}

__attribute__((interrupt)) void Cla1Task6 ( void )

{

}

__attribute__((interrupt)) void Cla1Task7 ( void )

{

}

__attribute__((interrupt)) void Cla1Task8 ( void )

{

}

F280049C_CLA配置说明相关推荐

  1. linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明

    根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...

  2. Angular应用中tsconfig.json文件配置说明及配置全局路径映射

    tsconfig.json文件配置说明 1. tsconfig.json文件中的选项配置 2. 配置全局路径映射 1. tsconfig.json文件中的选项配置 TypeScript编译器配置文件的 ...

  3. ESLint 配置说明

    ESLint 有什么用,为什么要使用? ESLint 是一套可自定义规则的JS代码检查与修复工具 目标是保存团队代码的一致性和避免错误并且修复错误.减少团队沟通成本 "no-alert&qu ...

  4. tuxedo文件ubbconfig配置说明

    tuxedo文件ubbconfig配置说明 1.IPCKEY:Tuxedo使用它标识公告板及其他的IPC资源.它不能与该服务器上其他的IPC资源的ID号冲突,其范围是:32769到262126: 2. ...

  5. 增加 oracle服务名,oracle本地服务名配置说明

    本地oracle客户端连接远程oracle数据库服务器配置说明如下: 1.找到本地oracle客户端安装目录,如:%path%\Oracle 2.再找配置文件tnsnames.ora,其目录为 %pa ...

  6. 很详细的Nginx配置说明

    这篇文章主要为大家分享了一篇很详细的Nginx配置说明,主要内容包括Nginx常用功能.Nginx配置文件结构,想要了解Nginx配置的朋友不要错过,参考一下 Nginx是lgor Sysoev为俄罗 ...

  7. express的app.js的详细配置说明

    express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个 ...

  8. redhat php5 安装,完整的linux(RedHat)+php5.3.10+mysql5.5.19+apache2.2.22安装配置说明

    完整的linux(RedHat) +php5.3.10+mysql5.5.19+apache2.2.22安装配置说明 1.安装mysql #mysql完整配置 #groupadd mysql #use ...

  9. bind9 配置说明

    bind9 配置说明 配置语法 named.conf DNS 数据库 实例 为其他机器提供DNS服务 配置语法 named.conf acl 定义访问控制列表 controls 定义rndc命令使用的 ...

最新文章

  1. call_user_func用法
  2. Android 轮询最佳实践 Service + AlarmManager+Thread
  3. 利用winston和morgan记录express日志信息
  4. DFS 之 poj 2386 Lake Counting
  5. Web学习第一天:Servlet+JSP简单Demo
  6. springboot activiti工作流简单示例
  7. matlab二次二阶距,用Matlab改进一次二阶矩法程序.doc
  8. 别样的1024程序员节“无Bug市集”
  9. 员工主动辞职公司也要支付经济补偿金的17种情况
  10. ArcGIS重分类之后统计各类别面积
  11. Android 缩放动画 ScaleAnimation
  12. Linux下查看网络流量常用方法
  13. 职言 | 单纯做业务测试真的行得通吗?
  14. 如何录制英雄联盟 (LoL) 游戏视频
  15. 骁龙855+4800万像素+五大配件,魅族16s开售
  16. 新茶饮式资本扩张,该停脚歇歇了
  17. 数据结构复习题(一)
  18. 2014年北京、广州区域赛总结
  19. uc神马推广一年多少钱,uc信息流推广一个月要多少钱
  20. C语言:用筛选法求100以内的素数

热门文章

  1. Swift 中的类与结构体
  2. CSS开发技巧实用记(一)
  3. 入门IOS客户端开发(一)
  4. 相信历史会记住普通人
  5. JAVA对接海康威视开发文档
  6. 爆炸的符卡洋洋洒洒(dp)
  7. multiboot之ICAP
  8. 恐惧贪婪指数(Fear Greed Index)
  9. 【PAT】【spfa + dfs】1030 Travel Plan (30 分)
  10. Baidu Apollo代码解析之Planning的结构与调用流程(1)