본문 바로가기
임베디드 개발/TMS320F2838x (C28x)

변수를 특정 메모리 영역(섹션 또는 주소)에 배치하기 [공개]

by eteo 2023. 2. 28.

 

 

특정 영역에 배치하기

 

MEMORY
{
	// ...
   CPU1TOCPU2RAM   : origin = 0x03A000, length = 0x000800
   CPU2TOCPU1RAM   : origin = 0x03B000, length = 0x000800
	// ...
}

SECTIONS
{
 	// ...
   MSGRAM_CPU1_TO_CPU2 : > CPU1TOCPU2RAM, type=NOINIT
   MSGRAM_CPU2_TO_CPU1 : > CPU2TOCPU1RAM, type=NOINIT
	// ...
}

 

#pragma DATA_SECTION(readData, "MSGRAM_CPU1_TO_CPU2")

typedef struct
{
    uint32_t u16;
    float    f;
} test_t;

test_t readData;

 

 

 

 

 

 

특정 주소에 배치하는 방법

 

SECTIONS
{
	MUTEX_TEST : > 0x03A000
}

 

#pragma DATA_SECTION(readData, "MUTEX_TEST")

typedef struct
{
    uint32_t u16;
    float    f;
} test_t;

test_t readData;

 

 

 

 

 

여러 변수를 특정 BASE address부터 이어서 배치하는 방법

 

 

SECTIONS
{
   GROUP : > 0x03A000
   {
   	MUTEX_TEST
   	MUTEX_TEST1
   	MUTEX_TEST2
   }
}

 

#pragma DATA_SECTION(readData, "MUTEX_TEST")
#pragma DATA_SECTION(readData1, "MUTEX_TEST1")
#pragma DATA_SECTION(readData2, "MUTEX_TEST2")

typedef struct
{
    uint32_t u16;
    float    f;
} test_t;

test_t readData;
test_t readData1;
test_t readData2;