Tool/software: Code Composer Studio
Hi.
I need to match address shared var when binding them using pragma directive between CPU in the same chip; for now I obtain a causale order by linker. Follow, I report code that I'm using:
- Var_CPU1.h
uint16_t mIPFC_W, mIC1PFC, mIC2PFC, mIC3PFC, mEMVOUT_U, mEMVOUT_V, mEMVOUT_W, mIL1_DCDC, mIL2_DCDC, mIPFC_U, mIPFC_V, mPFCVIN_U, mPFCVIN_V, mPFCVIN_W; #pragma DATA_SECTION(mIPFC_W,"SHARERAMGS15"); #pragma DATA_SECTION(mIC1PFC,"SHARERAMGS15"); #pragma DATA_SECTION(mIC2PFC,"SHARERAMGS15"); #pragma DATA_SECTION(mIC3PFC,"SHARERAMGS15"); #pragma DATA_SECTION(mEMVOUT_U,"SHARERAMGS14"); #pragma DATA_SECTION(mEMVOUT_V,"SHARERAMGS14"); #pragma DATA_SECTION(mEMVOUT_W,"SHARERAMGS14");
- Var_CPU2.h
uint16_t mIPFC_W, mIC1PFC, mIC2PFC, mIC3PFC, mEMVOUT_U, mEMVOUT_V, mEMVOUT_W, mIINV_U, mIINV_V, mIINV_W, mIINV_N, mINVOUT_U, mINVOUT_V, mINVOUT_W; #pragma DATA_SECTION(mIPFC_W,"SHARERAMGS15"); #pragma DATA_SECTION(mIC1PFC,"SHARERAMGS15"); #pragma DATA_SECTION(mIC2PFC,"SHARERAMGS15"); #pragma DATA_SECTION(mIC3PFC,"SHARERAMGS15"); #pragma DATA_SECTION(mEMVOUT_U,"SHARERAMGS14"); #pragma DATA_SECTION(mEMVOUT_V,"SHARERAMGS14"); #pragma DATA_SECTION(mEMVOUT_W,"SHARERAMGS14");
and this is CPU's map result:
How Can I matching var address ? Is there an easy way to tell that to linker ?
Follow, I report cmd file section:
... // USED TO SHARE DATA BETWEEN CPU1&CPU2 RAMGS14 : origin = 0x01A000, length = 0x001000 /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */ RAMGS15 : origin = 0x01B000, length = 0x001000 /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */ ... // DATA EXCHANGE BETWEEN CPU SHARERAMGS14 : > RAMGS14, PAGE = 0 /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */ SHARERAMGS15 : > RAMGS15, PAGE = 0 ...
Maybe, I must specify single var linker section with exact origin address and length for each var; this approach seems me very strange.
Thanks a lot for your help.
