TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280049: CLA无法正常调用,DEBUG界面CLA,Load Symbols后显示no symbols are defined

Part Number:TMS320F280049Other Parts Discussed in Thread:C2000WARE

专家你好,我使用CCS配置CLA,生成后套用C盘软件安装目录里C2000Ware_5_00_00_00里的cla_ex1_asin模板。asin

使用模板能够正常调试CLA,也能在CLA里单步调试,能正常使用。

但是将模板的主要代码asin.cla、cla_ex1_asin_shared.h,还有其他代码移植到我的工程后无法正常调试和使用CLA。

具体现象如下:1.Cla1ProgRunStart能够将CLA程序从Flash拷贝到RAMLS0,memory中有显示相关代码。

                         2.在DEBUG界面CLA,Load Symbols后显示no symbols are defined

                         3.运行CLA_runTest()时y数组没有变化,y数值依然是初始值0。

board.c部分相关代码如下:

#include "board.h"

//*****************************************************************************
//
// Board Configurations
// Initializes the rest of the modules. 
// Call this function in your application if you wish to do all module 
// initialization.
// If you wish to not use some of the initializations, instead of the 
// Board_init use the individual Module_inits
//
//*****************************************************************************
void Board_init()
{
	EALLOW;

	PinMux_init();
	SYNC_init();
	ASYSCTL_init();
	CLA_init();
	MEMCFG_init();
	ADC_init();
	AIO_init();
	CPUTIMER_init();
	EPWM_init();
	GPIO_init();
	PGA_init();
	INTERRUPT_init();

	EDIS;
}

//*****************************************************************************
//
// CLA Configurations
//
//*****************************************************************************

void myCLA0_init(){
	//// Configure all CLA task vectors// On Type-1 and Type-2 CLAs the MVECT registers accept full 16-bit task addresses as// opposed to offsets used on older Type-0 CLAs//
#pragma diag_suppress=770//// CLA Task 1//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_1, (uint16_t)&Cla1Task1);CLA_setTriggerSource(CLA_TASK_1, CLA_TRIGGER_SOFTWARE);//// CLA Task 2//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_2, (uint16_t)&Cla1Task2);CLA_setTriggerSource(CLA_TASK_2, CLA_TRIGGER_SOFTWARE);//// CLA Task 3//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_3, (uint16_t)&Cla1Task3);CLA_setTriggerSource(CLA_TASK_3, CLA_TRIGGER_SOFTWARE);//// CLA Task 4//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_4, (uint16_t)&Cla1Task4);CLA_setTriggerSource(CLA_TASK_4, CLA_TRIGGER_SOFTWARE);//// CLA Task 5//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_5, (uint16_t)&Cla1Task5);CLA_setTriggerSource(CLA_TASK_5, CLA_TRIGGER_SOFTWARE);//// CLA Task 6//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_6, (uint16_t)&Cla1Task6);CLA_setTriggerSource(CLA_TASK_6, CLA_TRIGGER_SOFTWARE);//// CLA Task 7//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_7, (uint16_t)&Cla1Task7);CLA_setTriggerSource(CLA_TASK_7, CLA_TRIGGER_SOFTWARE);//// CLA Task 8//CLA_mapTaskVector(myCLA0_BASE, CLA_MVECT_8, (uint16_t)&Cla1Task8);CLA_setTriggerSource(CLA_TASK_8, CLA_TRIGGER_SOFTWARE);//// Disable background task//CLA_disableBackgroundTask(myCLA0_BASE);
#pragma diag_warning=770
	//// Enable the IACK instruction to start a task on CLA in software// for all  8 CLA tasks. Also, globally enable all 8 tasks (or a// subset of tasks) by writing to their respective bits in the// MIER register//
	CLA_enableIACK(myCLA0_BASE);CLA_enableTasks(myCLA0_BASE, CLA_TASKFLAG_ALL);
}


void CLA_init()
{
#ifdef _FLASH
#ifndef CMDTOOL // Linker command tool is not usedextern uint32_t Cla1ProgRunStart, Cla1ProgLoadStart, Cla1ProgLoadSize;extern uint32_t Cla1ConstRunStart, Cla1ConstLoadStart, Cla1ConstLoadSize;//// 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 );


#endif //CMDTOOL
#endif //_FLASH

	myCLA0_init();
}


//*****************************************************************************
//
// INTERRUPT Configurations
//
//*****************************************************************************
void INTERRUPT_init(){
	
	// Interrupt Setings for INT_myCLA01
	Interrupt_register(INT_myCLA01, &cla1Isr1);
	Interrupt_enable(INT_myCLA01);
	
	// Interrupt Setings for INT_myCLA02
	Interrupt_register(INT_myCLA02, &cla1Isr2);
	Interrupt_enable(INT_myCLA02);
	
	// Interrupt Setings for INT_myCLA03
	Interrupt_register(INT_myCLA03, &cla1Isr3);
	Interrupt_enable(INT_myCLA03);
	
	// Interrupt Setings for INT_myCLA04
	Interrupt_register(INT_myCLA04, &cla1Isr4);
	Interrupt_enable(INT_myCLA04);
	
	// Interrupt Setings for INT_myCLA05
	Interrupt_register(INT_myCLA05, &cla1Isr5);
	Interrupt_enable(INT_myCLA05);
	
	// Interrupt Setings for INT_myCLA06
	Interrupt_register(INT_myCLA06, &cla1Isr6);
	Interrupt_enable(INT_myCLA06);
	
	// Interrupt Setings for INT_myCLA07
	Interrupt_register(INT_myCLA07, &cla1Isr7);
	Interrupt_enable(INT_myCLA07);
	
	// Interrupt Setings for INT_myCLA08
	Interrupt_register(INT_myCLA08, &cla1Isr8);
	Interrupt_enable(INT_myCLA08);
	
	// Interrupt Setings for INT_timer2
	Interrupt_register(INT_timer2, &portTICK_ISR);
	Interrupt_disable(INT_timer2);
	
	// Interrupt Setings for INT_myADCA_1
	Interrupt_register(INT_myADCA_1, &adcA1ISR);
	Interrupt_enable(INT_myADCA_1);
	
	// Interrupt Setings for INT_myADCB_1
	Interrupt_register(INT_myADCB_1, &INT_myADCB_1_ISR);
	Interrupt_enable(INT_myADCB_1);
	
	// Interrupt Setings for INT_myADCB_4
	Interrupt_register(INT_myADCB_4, &INT_myADCB_4_ISR);
	Interrupt_enable(INT_myADCB_4);
	
	// Interrupt Setings for INT_myADCC_1
	Interrupt_register(INT_myADCC_1, &INT_myADCC_1_ISR);
	Interrupt_enable(INT_myADCC_1);
	
	// Interrupt Setings for INT_myADCC_2
	Interrupt_register(INT_myADCC_2, &INT_myADCC_2_ISR);
	Interrupt_enable(INT_myADCC_2);
	
	// Interrupt Setings for INT_myADCC_3
	Interrupt_register(INT_myADCC_3, &INT_myADCC_3_ISR);
	Interrupt_enable(INT_myADCC_3);
	
	// Interrupt Setings for INT_myADCC_4
	Interrupt_register(INT_myADCC_4, &INT_myADCC_4_ISR);
	Interrupt_enable(INT_myADCC_4);
}

main.c代码如下:

//#############################################################################
//
//
//#############################################################################

//
// Included Files
//
#include "driverlib.h"
#include "board.h"
#include "device.h"
#include "clocktree.h"
#define MSGCOUNT10000
const char gcs8_Software_Version[19] = {'V','A','S','8','6','2','S','0','0','1',0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//VAS341C110;
const char gcs8_Hardware_Version[14] = {'V','A','1','0','5','1','-','0','0','1','T'};//VA1064A-002A;
const char gcs8_PCB_Version[12] = {'V','A','1','0','5','1','-','0','0','1','T'};//VA1060A-003A;


#include "cla_ex1_asin_shared.h"
//
// Defines
//
#define WAITSTEPasm(" RPT #255 || NOP")

//
// Globals
//

//
//Task 1 (C) Variables
// NOTE: Do not initialize the Message RAM variables globally, they will be
// reset during the message ram initialization phase in the CLA memory
// configuration routine
//
#ifdef __cplusplus
#pragma DATA_SECTION("CpuToCla1MsgRAM");
float fVal;
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
float fResult;
#else
#pragma DATA_SECTION(fVal,"CpuToCla1MsgRAM");
float fVal;
#pragma DATA_SECTION(fResult,"Cla1ToCpuMsgRAM");
float fResult;
#endif //__cplusplus
float y[BUFFER_SIZE];

//
//Task 2 (C) Variables
//

//
//Task 3 (C) Variables
//

//
//Task 4 (C) Variables
//

//
//Task 5 (C) Variables
//

//
//Task 6 (C) Variables
//

//
//Task 7 (C) Variables
//

//
//Task 8 (C) Variables
//

//
//Common (C) Variables
//The Exponential table
//
#ifdef __cplusplus
#pragma DATA_SECTION("CLADataLS1")
#else
#pragma DATA_SECTION(CLAasinTable,"CLADataLS1")
#endif //__cplusplus
float CLAasinTable[]={0.0, 1.0, 0.0,0.000000636202, 0.999877862610, 0.007815361896,0.000005099694, 0.999510644409, 0.015647916155,0.000017268312, 0.998895919094, 0.023514960332,0.000041121765, 0.998029615282, 0.031434003631,0.000080794520, 0.996905974725, 0.039422875916,0.000140631089, 0.995517492804, 0.047499840611,0.000225244584, 0.993854840311, 0.055683712914,0.000339579512, 0.991906765146, 0.063993984848,0.000488979852, 0.989659972212, 0.072450958820,0.000679263611, 0.987098979366, 0.081075891529,0.000916805182, 0.984205946802, 0.089891150305,0.001208627040, 0.980960476685, 0.098920384204,0.001562502549, 0.977339379243, 0.108188712551,0.001987071928, 0.973316400729, 0.117722933997,0.002491973784, 0.968861907789, 0.127551759665,0.003087995053, 0.963942521723, 0.137706074532,0.003787242692, 0.958520694794, 0.148219231941,0.004603341138, 0.952554219267, 0.159127386977,0.005551660294, 0.945995657913, 0.170469875522,0.006649579796, 0.938791682505, 0.182289647088,0.007916796475, 0.930882303984, 0.194633761132,0.009375683410, 0.922199974574, 0.207553958472,0.011051710808, 0.912668537890, 0.221107321885,0.012973941175, 0.902201997769, 0.235357042896,0.015175614174, 0.890703070035, 0.250373315541,0.017694840102, 0.878061473098, 0.266234382514,0.020575425537, 0.864151902887, 0.283027765009,0.023867860513, 0.848831624374, 0.300851714968,0.027630504055, 0.831937595031, 0.319816937941,0.031931014547, 0.813283013821, 0.340048646894,0.036848083955, 0.792653161200, 0.361689022958,0.042473551274, 0.769800358920, 0.384900179460,0.048914992206, 0.744437830278, 0.409867752228,0.056298910750, 0.716232177740, 0.436805274317,0.064774696786, 0.684794109766, 0.465959540059,0.074519565699, 0.649666934178, 0.497617226179,0.085744766889, 0.610312179660, 0.532113122767,0.098703445606, 0.566091493186, 0.569840443472,0.113700678529, 0.516243664372, 0.611263845480,0.131106395009, 0.459855210927, 0.656936015611,0.151372169232, 0.395822366759, 0.707518998893,0.175053263659, 0.322801460177, 0.763811905770,0.202837883870, 0.239143420888, 0.826787304376,0.235586468765, 0.142806299514, 0.897639596948,0.274385149825, 0.031236880585, 0.977850174820,0.320619535938, -0.098791845166, 1.069276441800,0.376078169620, -0.251407364538, 1.174275392129,0.443100143614, -0.431959397725, 1.295878193174,0.524789871827, -0.647485610469, 1.438041695773,0.625336471263, -0.907400624736, 1.606018804842,0.750500589935, -1.224540947101, 1.806917563896,0.908377657341, -1.616794995066, 2.050569262035,1.110633894185, -2.109729648039, 2.350920816737,1.374584721437, -2.740985157716, 2.728353889708,1.726848242753, -3.567962877198, 3.213722960014,2.210117561056, -4.682006534082, 3.855770086891,2.896554011854, -6.236312386687, 4.735651038017,3.916505715382, -8.505488022524, 5.997790945975,5.526855868703, -12.026617159136, 7.922628470498,8.298197116322, -17.983705080358, 11.123941286820,13.741706072449, -29.488929624542, 17.203344479111,27.202707817485, -57.466598393615, 31.741016484669,83.158101335898, -171.803399517566, 90.149831709374
};

float asin_expected[BUFFER_SIZE]={1.570796, 1.393789, 1.320141, 1.263401, 1.215375,1.172892, 1.134327, 1.098718, 1.065436, 1.034046,1.004232, 0.9757544, 0.9484279, 0.9221048, 0.8966658,0.8720123, 0.8480621, 0.8247454, 0.8020028, 0.7797828,0.7580408, 0.7367374, 0.7158381, 0.6953120, 0.6751316,0.6552721, 0.6357113, 0.6164289, 0.5974064, 0.5786270,0.5600753, 0.5417370, 0.5235988, 0.5056486, 0.4878751,0.4702678, 0.4528166, 0.4355124, 0.4183464, 0.4013104,0.3843968, 0.3675981, 0.3509074, 0.3343180, 0.3178237,0.3014185, 0.2850964, 0.2688521, 0.2526802, 0.2365756,0.2205333, 0.2045484, 0.1886164, 0.1727327, 0.1568929,0.1410927, 0.1253278, 0.1095943, 0.09388787, 0.07820469,0.06254076, 0.04689218, 0.03125509, 0.01562564
};

uint16_t pass = 0;
uint16_t fail = 0;

//
// Function Prototypes
//
void CLA_runTest(void);
__interrupt void cla1Isr1();
__interrupt void cla1Isr2();
__interrupt void cla1Isr3();
__interrupt void cla1Isr4();
__interrupt void cla1Isr5();
__interrupt void cla1Isr6();
__interrupt void cla1Isr7();
__interrupt void cla1Isr8();


void main(void)
{demo_mea();Device_init();Device_initGPIO();Interrupt_initModule();Interrupt_initVectorTable();Can_Drv_Init();Can_SetConfig();Hardware_initialization_and_enable();//// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)//EINT;ERTM;

//Can_Test();
//Ccp_Init();

//EcuM_Init();//// Run the test//CLA_runTest();for(;;){}
//while(1)
//{
//
//}//// Stop application after completion.//asm("ESTOP0");
}

//
// CLA_runTest - Execute CLA task tests for specified vectors
//
void CLA_runTest(void)
{int16_t i;float error;for(i = 0; i < BUFFER_SIZE; i++){fVal= (float)(BUFFER_SIZE - i)/(float)BUFFER_SIZE;CLA_forceTasks(myCLA0_BASE,CLA_TASKFLAG_1);WAITSTEP;y[i] = fResult;error = fabsf(asin_expected[i]-y[i]);if(error < 0.1f){pass++;}else{fail++;}}

#if 0CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_2);WAITSTEP;CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_3);WAITSTEP;CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_4);WAITSTEP;CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_5);WAITSTEP;CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_6);WAITSTEP;CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_7);WAITSTEP;CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_8);WAITSTEP;
#endif
}




//
// cla1Isr1 - CLA1 ISR 1
//

__interrupt void cla1Isr1 ()
{//// Acknowledge the end-of-task interrupt for task 1//Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP11);//// Uncomment to halt debugger and stop here//// asm(" ESTOP0");
}

//
// cla1Isr2 - CLA1 ISR 2
//
__interrupt void cla1Isr2 ()
{asm(" ESTOP0");
}

//
// cla1Isr3 - CLA1 ISR 3
//
__interrupt void cla1Isr3 ()
{asm(" ESTOP0");
}

//
// cla1Isr4 - CLA1 ISR 4
//
__interrupt void cla1Isr4 ()
{asm(" ESTOP0");
}

//
// cla1Isr5 - CLA1 ISR 5
//
__interrupt void cla1Isr5 ()
{asm(" ESTOP0");
}

//
// cla1Isr6 - CLA1 ISR 6
//
__interrupt void cla1Isr6 ()
{asm(" ESTOP0");
}

//
// cla1Isr7 - CLA1 ISR 7
//
__interrupt void cla1Isr7 ()
{asm(" ESTOP0");
}

//
// cla1Isr8 - CLA1 ISR 8
//
__interrupt void cla1Isr8 ()
{//// Acknowledge the end-of-task interrupt for task 8//Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP11);//// Uncomment to halt debugger and stop here//
//asm(" ESTOP0");
}

//
// End of File
//

28004x_generic_flash_lnk.cmd代码如下:

MEMORY
{
PAGE 0 :/* BEGIN is used for the "boot to Flash" bootloader mode*/BEGIN	: origin = 0x080000, length = 0x000002RAMM0	: origin = 0x0000F6, length = 0x00030ARAMLS0	: origin = 0x008000, length = 0x001000RAMLS3		: origin = 0x00A000, length = 0x000800
/*RAMLS4		: origin = 0x00A000, length = 0x000800 */RESET	: origin = 0x3FFFC0, length = 0x000002/* Flash sectors *//* BANK 0 */FLASH_BANK0_SEC0  : origin = 0x080002, length = 0x000FFE	/* on-chip Flash */FLASH_BANK0_SEC1  : origin = 0x081000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC2  : origin = 0x082000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC3  : origin = 0x083000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC4  : origin = 0x084000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC5  : origin = 0x085000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC6  : origin = 0x086000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC7  : origin = 0x087000, length = 0x001000	/* on-chip Flash */
//FLASH_BANK0_SEC8  : origin = 0x088000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC8  : origin = 0x088000, length = 0x000100	/* on-chip Flash */FLASH_BANK0_SEC81 : origin = 0x088100, length =0x000F00	/* on-chip Flash */ //drcFLASH_BANK0_SEC9  : origin = 0x089000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC10 : origin = 0x08A000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC11 : origin = 0x08B000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC12 : origin = 0x08C000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC13 : origin = 0x08D000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC14 : origin = 0x08E000, length = 0x001000	/* on-chip Flash */FLASH_BANK0_SEC15 : origin = 0x08F000, length = 0x001000	/* on-chip Flash *//* BANK 1 */FLASH_BANK1_SEC0  : origin = 0x090000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC1  : origin = 0x091000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC2  : origin = 0x092000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC3  : origin = 0x093000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC4  : origin = 0x094000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC5  : origin = 0x095000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC6  : origin = 0x096000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC7  : origin = 0x097000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC8  : origin = 0x098000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC9  : origin = 0x099000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC10 : origin = 0x09A000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC11 : origin = 0x09B000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC12 : origin = 0x09C000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC13 : origin = 0x09D000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC14 : origin = 0x09E000, length = 0x001000	/* on-chip Flash */FLASH_BANK1_SEC15 : origin = 0x09F000, length = 0x000FF0	/* on-chip Flash */

//FLASH_BANK1_SEC15_RSVD : origin = 0x09FFF0, length = 0x000010  /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

PAGE 1 :BOOT_RSVD: origin = 0x000002, length = 0x0000F1/* Part of M0, BOOT rom will use this for stack */RAMM1: origin = 0x000400, length = 0x0003F8/* on-chip RAM block M1 */
//RAMM1_RSVD: origin = 0x0007F8, length = 0x000008/* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */RAMLS1: origin = 0x009000, length = 0x000800RAMLS2: origin = 0x009800, length = 0x000800RAMLS5: origin = 0x00A800, length = 0x001800
/*RAMLS5: origin = 0x00A800, length = 0x002800//shc-yuanlaiRAMLS6: origin = 0x00B000, length = 0x000800RAMLS7: origin = 0x00B800, length = 0x000800 */RAMGS0: origin = 0x00C000, length = 0x002000RAMGS1: origin = 0x00E000, length = 0x002000RAMGS2: origin = 0x010000, length = 0x002000RAMGS3: origin = 0x012000, length = 0x001FF8
//RAMGS3_RSVD : origin = 0x013FF8, length = 0x000008/* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */CLA1_MSGRAMLOW: origin = 0x001480, length = 0x000080CLA1_MSGRAMHIGH  : origin = 0x001500, length = 0x000080
}


SECTIONS
{codestart: > FLASH_BANK0_SEC8,PAGE = 0, ALIGN(4)  /*BEGIN*/.mcuver1: > FLASH_BANK0_SEC81,PAGE = 0, ALIGN(4).text: >> FLASH_BANK0_SEC10 | FLASH_BANK0_SEC11 | FLASH_BANK0_SEC12 | FLASH_BANK0_SEC13 | FLASH_BANK0_SEC14 | FLASH_BANK0_SEC15 | FLASH_BANK1_SEC0 | FLASH_BANK1_SEC1  ,PAGE = 0, ALIGN(4)/*| FLASH_BANK0_SEC8*/.cinit: > FLASH_BANK0_SEC9,PAGE = 0, ALIGN(4).switch: > FLASH_BANK0_SEC9,PAGE = 0, ALIGN(4).reset: > RESET,PAGE = 0, TYPE = DSECT /* not used, */.stack: > RAMM1,PAGE = 1

#if defined(__TI_EABI__).init_array: > FLASH_BANK0_SEC9,PAGE = 0,ALIGN(4).bss: > RAMLS5,PAGE = 1.bss:output: > RAMLS3,PAGE = 0.bss:cio: > RAMLS0,PAGE = 0.data: > RAMLS5,PAGE = 1.sysmem: > RAMLS5,PAGE = 1/* Initalized sections go in Flash */.const: > FLASH_BANK0_SEC12,PAGE = 0,ALIGN(4)
#else.pinit: > FLASH_BANK0_SEC9,PAGE = 0,ALIGN(4).ebss: > RAMLS5,PAGE = 1.esysmem: > RAMLS5,PAGE = 1.cio: > RAMLS0,PAGE = 0.econst: > FLASH_BANK0_SEC12,PAGE = 0, ALIGN(4)
#endiframgs0: > RAMGS0,PAGE = 1ramgs1: > RAMGS1,PAGE = 1ramgs2: > RAMGS2,PAGE = 1ramgs3: > RAMGS3,PAGE = 1

#if defined(__TI_EABI__)/* CLA specific sections */Cla1Prog: LOAD = FLASH_BANK0_SEC11,RUN = RAMLS0,LOAD_START(Cla1ProgLoadStart),RUN_START(Cla1ProgRunStart),LOAD_SIZE(Cla1ProgLoadSize),PAGE = 0, ALIGN(4)
#else/* CLA specific sections */Cla1Prog: LOAD = FLASH_BANK0_SEC11,RUN = RAMLS0,LOAD_START(_Cla1ProgLoadStart),RUN_START(_Cla1ProgRunStart),LOAD_SIZE(_Cla1ProgLoadSize),PAGE = 0, ALIGN(4)
#endifCla1ToCpuMsgRAM  : > CLA1_MSGRAMLOW,PAGE = 1CpuToCla1MsgRAM  : > CLA1_MSGRAMHIGH,  PAGE = 1

#if defined(__TI_EABI__).TI.ramfunc: LOAD = FLASH_BANK0_SEC9,RUN = RAMLS0,LOAD_START(RamfuncsLoadStart),LOAD_SIZE(RamfuncsLoadSize),LOAD_END(RamfuncsLoadEnd),RUN_START(RamfuncsRunStart),RUN_SIZE(RamfuncsRunSize),RUN_END(RamfuncsRunEnd),PAGE = 0, ALIGN(4)
#else.TI.ramfunc: LOAD = FLASH_BANK0_SEC9,RUN = RAMLS0,LOAD_START(_RamfuncsLoadStart),LOAD_SIZE(_RamfuncsLoadSize),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),RUN_SIZE(_RamfuncsRunSize),RUN_END(_RamfuncsRunEnd),PAGE = 0, ALIGN(4)
#endif.scratchpad: > RAMLS1,PAGE = 1.bss_cla: > RAMLS1,PAGE = 1Cla1DataRam: > RAMLS2,PAGE = 1cla_shared: > RAMLS1,PAGE = 1CLADataLS1: > RAMLS1,PAGE = 1

#if defined(__TI_EABI__).const_cla: LOAD = FLASH_BANK0_SEC10,RUN = RAMLS3,RUN_START(Cla1ConstRunStart),LOAD_START(Cla1ConstLoadStart),LOAD_SIZE(Cla1ConstLoadSize),PAGE = 0, ALIGN(4)
#else.const_cla: LOAD = FLASH_BANK0_SEC10,RUN = RAMLS3,RUN_START(_Cla1ConstRunStart),LOAD_START(_Cla1ConstLoadStart),LOAD_SIZE(_Cla1ConstLoadSize),PAGE = 0, ALIGN(4)
#endif
}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

慧晨 史:

目前已经能够connect Target CLA进行单步调试,之前不能连接可能是我把init_cla()注释掉了。目前的问题是cla获取到shared.h里的宏定义为0,导致之后的值都为零,而且将宏定义换成10进制数进行赋值也是0。

,

Ben Qin:

你好,能否提供下报错截图?

,

慧晨 史:

,

慧晨 史:

下图是我的工程从Flash拷贝到RAM成功的截图:

1842 x 823

下图是模板工程调用cla时汇编指令的截图:(而我的工程却都是0)

1842 x 823

,

慧晨 史:

问题已经找到了,我将CLA的program放置到LS0,程序能正常运行出结果了。可能下图有关:

1632 x 922

图中没有标出F28004x,是否以支持其他RAMLSx,但CCS的MEMCFG却可以配置成CLA PROGRAM MEMORY,在配置时需要注意。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049: CLA无法正常调用,DEBUG界面CLA,Load Symbols后显示no symbols are defined
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1