F280049C_CLA配置说明
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配置说明相关推荐
- linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明
根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...
- Angular应用中tsconfig.json文件配置说明及配置全局路径映射
tsconfig.json文件配置说明 1. tsconfig.json文件中的选项配置 2. 配置全局路径映射 1. tsconfig.json文件中的选项配置 TypeScript编译器配置文件的 ...
- ESLint 配置说明
ESLint 有什么用,为什么要使用? ESLint 是一套可自定义规则的JS代码检查与修复工具 目标是保存团队代码的一致性和避免错误并且修复错误.减少团队沟通成本 "no-alert&qu ...
- tuxedo文件ubbconfig配置说明
tuxedo文件ubbconfig配置说明 1.IPCKEY:Tuxedo使用它标识公告板及其他的IPC资源.它不能与该服务器上其他的IPC资源的ID号冲突,其范围是:32769到262126: 2. ...
- 增加 oracle服务名,oracle本地服务名配置说明
本地oracle客户端连接远程oracle数据库服务器配置说明如下: 1.找到本地oracle客户端安装目录,如:%path%\Oracle 2.再找配置文件tnsnames.ora,其目录为 %pa ...
- 很详细的Nginx配置说明
这篇文章主要为大家分享了一篇很详细的Nginx配置说明,主要内容包括Nginx常用功能.Nginx配置文件结构,想要了解Nginx配置的朋友不要错过,参考一下 Nginx是lgor Sysoev为俄罗 ...
- express的app.js的详细配置说明
express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个 ...
- 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 ...
- bind9 配置说明
bind9 配置说明 配置语法 named.conf DNS 数据库 实例 为其他机器提供DNS服务 配置语法 named.conf acl 定义访问控制列表 controls 定义rndc命令使用的 ...
最新文章
- call_user_func用法
- Android 轮询最佳实践 Service + AlarmManager+Thread
- 利用winston和morgan记录express日志信息
- DFS 之 poj 2386 Lake Counting
- Web学习第一天:Servlet+JSP简单Demo
- springboot activiti工作流简单示例
- matlab二次二阶距,用Matlab改进一次二阶矩法程序.doc
- 别样的1024程序员节“无Bug市集”
- 员工主动辞职公司也要支付经济补偿金的17种情况
- ArcGIS重分类之后统计各类别面积
- Android 缩放动画 ScaleAnimation
- Linux下查看网络流量常用方法
- 职言 | 单纯做业务测试真的行得通吗?
- 如何录制英雄联盟 (LoL) 游戏视频
- 骁龙855+4800万像素+五大配件,魅族16s开售
- 新茶饮式资本扩张,该停脚歇歇了
- 数据结构复习题(一)
- 2014年北京、广州区域赛总结
- uc神马推广一年多少钱,uc信息流推广一个月要多少钱
- C语言:用筛选法求100以内的素数