主题中讨论的其他器件:C2000WARE
尊敬的专家:
当我在闪存中运行程序时、我在运行 CLA 代码时遇到问题。 当我在 RAM 中运行此程序时、我没有这些问题。
问题描述:
CLA 任务1由 int 6.11 (SD1)触发。 在 ISR "SD1_ISR"中、我已经按照如下所述检查了中断的接收情况、并且它工作正常。 计数器 mess_ok 会进一步递增。
_interrupt void SD1_ISR (void)
{
PieCtrlRegs.PIEACX.ALL = PIEACK_group5;
//Sdfm1Regs.SDIFLGCLR.bit.MIF=1;
mess_ok++;
如果(mess_ok>32000) mess_ok=0;
}
完全一样的是 cla1Isr1 ( 见下面)。
_interrupt void cla1Isr1 ()
{
PieCtrlRegs.PIEACK.ALL =(PIEACK_group10 |PIEACK_group11|PIEACK_group5);
Sdfm1Regs.SDIFLGCLR.bit.MIF=1;
mess_ok++;
if (mess_ok>32000) mess_ok=0;
}
以下 CLA 任务1应在每次 触发事件 int 6.11 (SD1)时执行。
_interrupt void Cla1Task1 (void)
{
UAB[0]= 3;//测试虚拟
}
当程序运行时、mess_ok 的值为/保持为1;
因此、ISR 只执行一次。 但 UAB 的值保持为0。 因此 CLA 任务未执行。 n´t 前面所述、当我在闪存中运行程序时、它不起作用。
是否有人不知道如何解决这个问题?
您好 Artur
我`m 以下 cmd 文件
//如果使用、用户必须在项目链接器设置中定义 CLA_C
// CLA C 编译器
//项目属性-> C2000链接器->高级选项->命令文件
//预处理->--define
#ifdef CLA_C
//为将要使用的 CLA 暂存区定义大小
//由 CLA 编译器生成局部符号和 temps
//还强制引用标记的特殊符号
//暂存区是。
CLA_ScratchPad_size = 0x100;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start
#endif //cla_C
存储器
{
第0页:
/* begin 用于"引导至 SARAM"引导加载程序模式*/
开始:origin = 0x080000,length = 0x000002
RAMM0:origin = 0x000123,length = 0x0002DD
RAMD0:origin = 0x00B000、length = 0x000800
RAMLS0:origin = 0x008000、length = 0x000800
RAMLS1:origin = 0x008800,length = 0x000800
/* RAMLS4:origin = 0x00A000,length = 0x000800 */
/* RAMLS5:origin = 0x00A800,length = 0x000800 */
RAMLS4_5:origin = 0x00A000、length = 0x001000
RAMGS14:origin = 0x01A000,length = 0x001000 //*仅在 F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
RAMGS15:origin = 0x01B000,length = 0x000FF8 //仅在 F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
// RAMGS15_RSVD:origin = 0x01BFF8,length = 0x000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超出有效内存的预取)来保留代码且不用于代码*/
复位:origin = 0x3FFFC0,length = 0x000002
/*闪存扇区*/
FLASHA:origin = 0x080002,length = 0x001FFE /*片上闪存*/
FLASHB:origin = 0x082000、length = 0x002000 //片上闪存*
FLASHC:origin = 0x084000,length = 0x002000 //片上闪存*/
FLASHD:origin = 0x086000、length = 0x002000 //片上闪存*/
FLASHE:origin = 0x088000、length = 0x008000 //片上闪存*/
FLASHF:origin = 0x090000,length = 0x008000 //片上闪存*
FLASHG:origin = 0x098000、length = 0x008000 //片上闪存*/
FLASHH:origin = 0x0A0000,length = 0x008000 //片上闪存*/
FLASHI:origin = 0x0A8000、length = 0x008000 //片上闪存*/
FLASHJ:origin = 0x0B0000,length = 0x008000 //片上闪存*/
FLASHK:origin = 0x0B8000、length = 0x002000 //片上闪存*/
FLASHL:origin = 0x0BA000、length = 0x002000 //片上闪存*/
FLASHM:origin = 0x0BC000、length = 0x002000 //片上闪存*/
FLASHN:origin = 0x0BE000、length = 0x001FF0 /*片上闪存*/
// FLASHN_RSVD:origin = 0x0BFFF0,length = 0x000010 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:有效内存之外的预取)来保留代码,不要将其用于代码*/
第1页:
BOOT_RSVD:origin = 0x000002,length = 0x000121 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400,length = 0x0003F8 //片上 RAM 块 M1 */
// RAMM1_RSVD:origin = 0x0007F8,length = 0x000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超出有效内存的预取),保留并不用于代码*/
RAMLS2:origin = 0x009000,length = 0x000800
RAMLS3:origin = 0x009800,length = 0x000800
RAMGS0:origin = 0x00C000、length = 0x001000
RAMGS1:origin = 0x00D000、length = 0x001000
RAMGS2:origin = 0x00E000、length = 0x001000
RAMGS3:origin = 0x00F000、length = 0x001000
RAMGS4:origin = 0x010000,length = 0x001000
RAMGS5:origin = 0x011000,length = 0x001000
RAMGS6:origin = 0x012000,length = 0x001000
RAMGS7:origin = 0x013000,length = 0x001000
RAMGS8:origin = 0x014000,length = 0x001000
RAMGS9:origin = 0x015000,length = 0x001000
RAMGS10:origin = 0x016000,length = 0x001000
// RAMGS11:origin = 0x017000,length = 0x000FF8 //对于 F28374D、F28376D 器件取消注释*/
// RAMGS11_RSVD:origin = 0x017FF8,length = 0x000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超出有效内存的预取)来保留代码且不用于代码*/
RAMGS11:origin = 0x017000,length = 0x001000 //*仅在 F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
RAMGS12:origin = 0x018000,length = 0x001000 //*仅在 F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
RAMGS13:origin = 0x019000,length = 0x001000 //*仅在 F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
EMIF1_CS0n:origin = 0x8000000,length = 0x10000000
EMIF1_CS2n:origin = 0x00100000,length = 0x00200000
EMIF1_CS3n:origin = 0x00300000,length = 0x00080000
EMIF1_CS4n:origin = 0x00380000,length = 0x00060000
EMIF2_CS0n:origin = 0x90000000,length = 0x10000000
EMIF2_CS2n:origin = 0x00002000,length = 0x00001000
CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080
}
部分
{
/*分配计划领域:*/
.cinit:> FLASHB PAGE = 0,ALIGN (8)
.text:> FLASHB PAGE = 0,ALIGN (8)
codestart:> begin page = 0,align (8)
.stack:>RAMM1 page = 1.
.switch:> FLASHB PAGE = 0,ALIGN (8)
/*分配未初始化的数据段:*/
#if defined (_TI_EABI)
init_array:> FLASHB,PAGE = 0,ALIGN (8)
.bss:> RAMLS2,PAGE = 1.
.bss:输出:> RAMLS2,页= 1
.data :>RAMLS2,page = 1.
.sysmem:> RAMLS2,PAGE = 1.
.const:> FLASHB、PAGE = 0、ALIGN (8)
其他
.pinit:> FLASHB,PAGE = 0,ALIGN (8)
.ebss:> RAMLS2,PAGE = 1
.esysmem:>RAMLS2,PAGE = 1.
.econst:> FLASHB PAGE = 0,ALIGN (8)
#endif
.reset:> reset,page = 0,type = DSECT //未使用,*/
filter_RegsFile:> RAMGS0,PAGE = 1
.em2_cs0:> EMIF2_CS0n,PAGE = 1.
EM2_CS2:> EMIF2_CS2n,PAGE = 1.
/* CLA 特定部分*/
#if defined (_TI_EABI)
Cla1Prog:load = FLASHD,
运行= RAMLS4_5、
Load_start (Cla1funcsLoadStart)、
LOAD_END (Cla1funcsLoadEnd)、
run_start (Cla1funcsRunStart)、
load_size (Cla1funcsLoadSize)、
PAGE = 0、ALIGN (8)
其他
Cla1Prog:load = FLASHD,
运行= RAMLS4_5、
load_start (_Cla1funcsLoadStart)、
load_end (_Cla1funcsLoadEnd)、
run_start (_Cla1funcsRunStart)、
load_size (_Cla1funcsLoadSize)、
PAGE = 0、ALIGN (8)
#endif
CLADataLS0:> RAMLS0,PAGE=0
CLADataLS1:> RAMLS1,PAGE=0
Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
#if defined (_TI_EABI)
.TI.ramfunc:{}负载= FLASHD,
运行= RAMD0、
Load_start (RamfuncsLoadStart)、
load_size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
run_size (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
其他
.TI.ramfunc:{}负载= FLASHD,
运行= RAMD0、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif
其他
ramfuncs:load = FLASHD,
运行= RAMD0、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif
#endif
/*以下部分定义适用于 SDFM 示例*/
filter1_RegsFile:> RAMGS1,PAGE = 1,fill=0x1111
Filter2_RegsFile:> RAMGS2,PAGE = 1,fill=0x2222
Filter3_RegsFile:> RAMGS3,PAGE = 1,fill=0x3333
Filter4_RegsFile:> RAMGS4,PAGE = 1,fill=0x4444
#ifdef CLA_C
/* CLA C 编译器段*/
//
//必须被分配给 CLA 具有写入访问权限的内存
//
CLAscratch:
{*。obj (CLAscratch)
。 += CLA_ScratchPad_size;
*。obj (CLAscratch_end)}> RAMLS1、PAGE = 0
暂存区:>RAMLS1,页=0
.bss_cla:> RAMLS1,page = 0
.const_CLA:负载= FLASHB、
运行= RAMLS1、
run_start (_Cla1ConstRunStart)、
Load_start (_Cla1ConstLoadStart)、
load_size (_Cla1ConstLoadSize)、
PAGE = 0
#endif //cla_C
}
/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*