임베디드 개발/TMS320F2838x (C28x)
변수를 특정 메모리 영역(섹션 또는 주소)에 배치하기 [공개]
eteo
2023. 2. 28. 22:31
특정 영역에 배치하기
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;