Nucleus RTOS/SE 파티션 메모리: 유틸리티 서비스와 데이터 구조
RTOS Revealed 시리즈 보기
이전 RTOS 파티션 메모리 탐구에 이어, 이 기사는 Nucleus RTOS와 그 스트림라인 버전 Nucleus SE에서 효율적인 메모리 관리를 가능하게 하는 실용적 유틸리티와 근간 데이터 구조를 다룹니다.
파티션 풀 유틸리티 서비스
Nucleus RTOS는 파티션 풀을 위한 3가지 전용 API 콜을 제공합니다: 상세 풀 정보 조회, 애플리케이션 내 총 풀 수 결정, 모든 풀 구조체 포인터 획득. 처음 두 함수는 기능 세트 축소로 인한 일부 차이와 함께 Nucleus SE에서 완전히 지원됩니다.
파티션 풀 정보 획득
NU_Partition_Pool_Information 서비스는 지정된 파티션 풀의 포괄적 스냅샷을 반환합니다. Nucleus SE에서는 객체 명명, 일시 중단 순서, 태스크 일시 중단 지원이 없으므로 축소된 데이터 세트를 반환합니다.
파티션 풀 정보를 위한 Nucleus RTOS API 콜
서비스 콜 프로토타입:
STATUS NU_Partition_Pool_Information(NU_PARTITION_POOL *pool, CHAR *name, VOID **start_address, UNSIGNED *pool_size, UNSIGNED *partition_size, UNSIGNED *available, UNSIGNED *allocated, OPTION *suspend_type, UNSIGNED *tasks_waiting, NU_TASK **first_task);
매개변수:
pool – 정보 요청 대상 파티션 풀 포인터.
name – 풀 이름 수신할 8자 버퍼 포인터(null 종결자 포함).
start_address – 풀 데이터 영역 기준 주소 수신 변수 포인터.
pool_size – 전체 풀 크기(바이트) 수신 변수 포인터.
partition_size – 각 파티션 크기 수신 변수 포인터.
available – 현재 자유 파티션 수 수신 변수 포인터.
allocated – 사용 중인 파티션 수 수신 변수 포인터.
suspend_type – 일시 중단 정책 수신 변수 포인터(유효 값: NU_FIFO 또는 NU_PRIORITY).
tasks_waiting – 이 풀에서 일시 중단된 태스크 수 수신 변수 포인터.
first_task – 첫 번째 일시 중단 태스크 포인터 수신 변수 포인터.
반환:
NU_SUCCESS – 작업 성공.
NU_INVALID_POOL – 제공된 풀 포인터 무효.
파티션 풀 정보를 위한 Nucleus SE API 콜
Nucleus SE에서는 아래 스트림라인 인터페이스로 동일한 기능 제공. SE는 태스크 일시 중단을 지원하지 않으므로 관련 필드 생략.
서비스 콜 프로토타입:
STATUS NUSE_Partition_Pool_Information(NUSE_PARTITION_POOL pool, ADDR *start_address, U32 *pool_size, U16 *partition_size, U8 *available, U8 *allocated, U8 *tasks_waiting, NUSE_TASK *first_task)
매개변수:
pool – 파티션 풀 인덱스.
start_address – 풀 데이터 영역 기준 주소 수신 변수 포인터.
pool_size – 전체 풀 크기(바이트) 수신 변수 포인터.
partition_size – 각 파티션 크기 수신 변수 포인터.
available – 자유 파티션 수 수신 변수 포인터.
allocated – 사용 중 파티션 수 수신 변수 포인터.
tasks_waiting – 대기 태스크 수 수신 변수 포인터(태스크 일시 중단 비활성화 시 0).
first_task – 첫 번째 일시 중단 태스크 인덱스 수신 변수 포인터(태스크 일시 중단 비활성화 시 0).
반환:
NUSE_SUCCESS – 작업 성공.
NUSE_INVALID_POOL – 풀 인덱스 무효.
NUSE_INVALID_POINTER – 하나 이상의 포인터 인수가 null.
Nucleus SE의 파티션 풀 정보 구현
SE 구현은 간결합니다: 루틴이 요청 필드를 채우고, 블로킹 API 활성화 시 대기 태스크 수와 첫 태스크 인덱스 설정(그렇지 않으면 0으로 초기화).

파티션 풀 개수 획득
이 서비스는 애플리케이션에 정의된 총 파티션 풀 수를 반환합니다. Nucleus RTOS에서는 풀이 동적으로 생성/파괴되어 개수 변경 가능; Nucleus SE에서는 빌드 타임에 고정.
파티션 풀 개수를 위한 Nucleus RTOS API 콜
서비스 콜 프로토타입:
UNSIGNED NU_Established_Partition_Pools(VOID);
매개변수: 없음.
반환: 현재 활성 파티션 풀 수.
파티션 풀 개수를 위한 Nucleus SE API 콜
서비스 콜 프로토타입:
U8 NUSE_Partition_Pool_Count(void);
매개변수: 없음.
반환: 컴파일 타임에 구성된 파티션 풀 수.
구현
SE 루틴은 단순히 컴파일 타임 상수 NUSE_PARTITION_POOL_NUMBER 값을 반환합니다.