임베디드
RTOS 공개 시리즈 보기
메모리 파티션은 표준 C malloc()과 비교한 이전 기사에서 소개되었습니다. 기능이 만들어졌습니다. 파티션은 파티션 풀에서 얻은 메모리 영역입니다. 이는 작업이 결정적이고 안정적인 방식으로 데이터 저장소를 확보하고 해제할 수 있는 유연한 수단을 제공합니다.
파티션 사용
Nucleus SE에서 파티션 풀은 빌드 시 구성됩니다. 응용 프로그램에 대해 최대 16개의 파티션 풀이 구성될 수 있습니다. 파티션 풀이 구성되어 있지 않으면 파티션 풀과 관련된 데이터 구조 또는 서비스 호출 코드가 애플리케이션에 포함되지 않습니다.
파티션 풀은 단순히 고정된 크기의 파티션으로 분할된 메모리 영역입니다. 사용자는 각 풀의 파티션 크기와 수를 완전히 제어할 수 있습니다. 작업은 할당된 메모리 파티션을 요청하고 저장 영역에 대한 포인터를 받을 수 있습니다. 파티션 외부에 데이터를 쓰지 않는 것은 태스크의 책임입니다. API 함수에 대한 포인터를 전달하여 모든 작업에서 파티션을 할당 해제할 수 있습니다. 더 이상 사용할 수 없을 때 파티션 할당을 요청하면 API 호출 및 Nucleus SE 구성에서 선택한 옵션에 따라 오류 또는 작업 일시 중단이 발생할 수 있습니다.
메모리 파티션 구성
파티션 풀 수
Nucleus SE의 대부분의 측면과 마찬가지로 파티션 풀의 구성은 주로 #define에 의해 제어됩니다. nuse_config.h의 문 . 주요 설정은 NUSE_PARTITION_POOL_NUMBER입니다. , 애플리케이션에 대해 구성된 파티션 풀 수를 결정합니다. 기본 설정은 0이며(즉, 파티션 풀이 사용되지 않음) 최대 16까지 값을 설정할 수 있습니다. 잘못된 값은 nuse_config_check.h의 테스트에 의해 생성되는 컴파일 시간 오류를 발생시킵니다. (이것은 nuse_config.c에 포함되어 있습니다. 따라서 이 모듈로 컴파일됨) 결과로 #error 컴파일 중입니다.
0이 아닌 값을 선택하는 것은 파티션 풀에 대한 "마스터 활성화"입니다. 그 결과 일부 데이터 구조가 그에 따라 정의되고 크기가 조정됩니다. ROM의 데이터 구조는 각 파티션 풀을 특징짓는 적절한 값으로 초기화해야 합니다. 다음 기사에서 데이터 구조에 대해 자세히 알아보십시오. API 활성화 설정도 활성화합니다.
API 사용
Nucleus SE의 모든 API 기능(서비스 호출)에는 활성화된 #define이 있습니다. nuse_config.h의 기호 . 파티션 풀의 경우 다음과 같습니다.
NUSE_PARTITION_ALLOCATE
NUSE_PARTITION_DEALLOCATE
NUSE_PARTITION_POOL_INFORMATION
NUSE_PARTITION_POOL_COUNT
기본적으로 모두 FALSE로 설정되어 있습니다. , 따라서 각 서비스 호출을 비활성화하고 구현 코드의 포함을 금지합니다. 애플리케이션에 대한 파티션 풀을 구성하려면 사용하려는 API 호출을 선택하고 활성화 기호를 TRUE로 설정해야 합니다. .
다음은 기본 nuse_config.h에서 발췌한 것입니다. 파일:
파티션 풀 API 기능이 활성화되고 파티션 풀이 구성되지 않은 경우 컴파일 시간 오류가 발생합니다(NUSE_Partition_Pool_Count() 제외). 항상 허용됨). 코드가 활성화되지 않은 API 호출을 사용하는 경우 애플리케이션에 구현 코드가 포함되지 않았기 때문에 링크 시간 오류가 발생합니다.
파티션 풀 서비스 호출
Nucleus RTOS는 다음 기능을 제공하는 파티션 풀과 관련된 7개의 서비스 호출을 지원합니다.
파티션 할당:NU_Allocate_Partition() . NUSE_Partition_Allocate()에 의해 구현됨 Nucleus SE에서.
파티션 할당 취소:NU_Deallocate_Partition() . NUSE_Partition_Deallocate()에 의해 구현됨 Nucleus SE에서.
지정된 파티션 풀에 대한 정보 제공:NU_Partition_Pool_Information() . NUSE_Partition_Pool_Information()에 의해 구현됨 Nucleus SE에서.
애플리케이션에 대해 (현재) 구성된 파티션 풀 수 반환:NU_Established_Partition_Pools() . NUSE_Partition_Pool_Count()에 의해 구현됨 Nucleus SE에서.
애플리케이션에 새 파티션 풀 추가(만들기):NU_Create_Partition_Pool() . Nucleus SE에서는 구현되지 않습니다.
응용 프로그램에서 파티션 풀 제거(삭제):NU_Delete_Partition_Pool() . Nucleus SE에서는 구현되지 않습니다.
응용 프로그램의 모든 파티션 풀(현재)에 대한 포인터 반환:NU_Partition_Pool_Pointers() . Nucleus SE에서는 구현되지 않습니다.
이러한 각 서비스 호출의 구현을 자세히 조사합니다.
재설정 기능은 제공되지 않습니다(Nucleus RTOS 또는 Nucleus SE에서). 이것은 의도적입니다. 한 작업이 파티션을 할당하고 포인터를 다른 작업(나중에 할당 해제할 것입니다)에 전달하는 것은 매우 일반적인 관행입니다. 파티션 풀을 재설정하면 모든 파티션이 사용되지 않은 것으로 표시되지만 파티션을 사용하고 있을 수 있는 모든 작업을 추적하고 알릴 수 있는 방법은 없습니다.
파티션 할당 및 할당 해제 서비스
파티션 풀에서 수행할 수 있는 기본 작업은 파티션을 할당하고(즉, 파티션을 사용된 것으로 표시하고 해당 주소를 반환) 파티션을 할당 해제(즉, 파티션을 사용하지 않은 것으로 표시)하는 것입니다. Nucleus RTOS와 Nucleus SE는 각각 이러한 작업에 대해 두 가지 기본 API 호출을 제공하며 여기에서 설명합니다.
파티션 할당
파티션 할당을 위한 Nucleus RTOS API 호출은 매우 유연하여 작업을 즉시 완료할 수 없는 경우 무기한 또는 시간 초과로 일시 중단할 수 있습니다. 즉, 현재 모든 파티션이 할당된 풀에서 파티션을 할당하려고 합니다. Nucleus SE는 작업 일시 중단이 선택 사항이고 타임아웃이 구현되지 않는다는 점을 제외하고는 동일한 서비스를 제공합니다.
파티션 할당을 위한 Nucleus RTOS API 호출
서비스 요청 프로토타입:
STATUS NU_Allocate_Partition(NU_PARTITION_POOL *풀,
VOID **return_pointer, UNSIGNED 일시 중단),
반품:
NU_SUCCESS – 통화가 성공적으로 완료되었습니다.
NU_NO_PARTITION – 사용 가능한 파티션이 없습니다.
NU_INVALID_POOL – 파티션 풀 포인터가 잘못되었습니다.
NU_INVALID_POINTER – 데이터 반환 포인터가 NULL입니다.
NU_INVALID_SUSPEND – 작업이 아닌 스레드에서 일시 중단을 시도했습니다.
NU_TIMEOUT – 지정된 시간 초과 기간 동안 일시 중단 후에도 파티션을 사용할 수 없습니다.
NU_POOL_DELETED – 작업이 일시 중단되는 동안 파티션 풀이 삭제되었습니다.
할당을 위한 Nucleus SE API 호출
이 API 호출은 Nucleus RTOS API의 주요 기능을 지원합니다.
서비스 요청 프로토타입:
STATUS NUSE_Partition_Allocate(NUSE_PARTITION_POOL 풀, ADDR *return_pointer, U8 정지);
매개변수:
풀 – 사용할 파티션 풀의 인덱스(ID)
return_pointer – ADDR 유형의 변수에 대한 포인터 할당된 파티션의 주소를 수신할 것입니다.
중단 – 작업 일시 중단에 대한 사양 NUSE_NO_SUSPEND일 수 있습니다. 또는 NUSE_SUSPEND
반품:
NUSE_SUCCESS – 통화가 성공적으로 완료되었습니다.
NUSE_NO_PARTITION – 사용 가능한 파티션이 없습니다.
NUSE_INVALID_POOL – 파티션 풀 인덱스가 잘못되었습니다.
NUSE_INVALID_POINTER – 데이터 반환 포인터가 NULL입니다.
NUSE_INVALID_SUSPEND – 작업이 아닌 스레드에서 또는 차단 API 호출이 활성화되지 않은 경우 일시 중단이 시도되었습니다.
임베디드
CNC 프로그래밍은 오늘날 제조의 핵심입니다. 최신 CNC 기계는 프로그램으로 실행되기 때문에 작업자는 사용할 수 있는 코드 유형과 사용 방법을 알아야 합니다. CNC 소프트웨어에서 사용하는 가장 일반적인 프로그래밍 언어는 G 코드이며 M 코드에도 특정 응용 프로그램이 있습니다. CNC 가공에서 G 코드와 M 코드는 중요한 역할과 기능을 합니다. G 코드:CNC 프로그래밍의 G 코드는 기계의 움직임을 제어하여 부품을 이동하는 기계의 방향과 위치를 나타냅니다. M 코드:CNC 프로그래밍의 M 코드는 특정 작업이나 프로그램의 시작
나사 밀링 커터에는 와이어 탭보다 유리한 많은 장점이 있습니다. 나사 밀링 커터는 와이어 탭보다 10배 이상 빠르고 정밀도가 높습니다. 표면 조도가 좋고 동일한 피치로 칼로 크고 작은 구멍을 가공할 수 있습니다. 드릴링, 밀링 및 모따기가 한 번에 형성됩니다. 부러진 후에는 와이어 탭처럼 빠지지 않으며 공작 기계 저항도 작습니다. 나사 밀링 커터 소개: 전통적인 나사 가공 방법은 주로 나사 선삭 도구를 사용하여 나사를 돌리거나 탭, 다이를 사용하여 수동으로 탭하고 버클을 만드는 것입니다. 수치 제어 처리 기술의 발전, 특히 3