산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

Nucleus RTOS/SE 파티션 메모리: 유틸리티 서비스와 데이터 구조

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/SE 파티션 메모리: 유틸리티 서비스와 데이터 구조

파티션 풀 개수 획득

이 서비스는 애플리케이션에 정의된 총 파티션 풀 수를 반환합니다. 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 값을 반환합니다.


임베디드

  1. 클라우드 vs 온프레미스 서버: 올바른 호스팅 솔루션 선택하기
  2. 마이크로소프트 Azure, 블록체인 토큰화 & 데이터 관리 서비스 발표
  3. 디지털 메모리 기초: 어드레싱, 접근 방식, 휘발성
  4. 마이크로프로세서: 저장 프로그램 컴퓨팅의 진화
  5. C++ 구조체 vs 클래스: 임베디드 개발자를 위한 실용 가이드
  6. Nucleus SE의 메일박스: 구성 및 사용 실용 가이드
  7. Nucleus RTOS의 세마포어: 유틸리티 서비스 및 데이터 구조
  8. Nucleus SE의 세마포어: 개요, 구성, API 핵심
  9. 이벤트 플래그 그룹 마스터하기: Nucleus RTOS/SE의 유틸리티 서비스와 데이터 구조
  10. Nucleus SE의 이벤트 플래그 그룹: 구성 및 API 사용 입문 가이드