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

신호

이번 RTOS Revealed에서는 Nucleus SE가 지원하는 태스크 간 통신의 가장 간단한 방법인 신호를 살펴보겠습니다. 작업 간에 간단한 메시지를 전달하는 매우 저렴한 수단을 제공합니다.

신호 사용

신호는 자율적이지 않다는 점에서 다른 모든 유형의 커널 객체와 다릅니다. 신호는 작업과 연관되며 독립적인 존재가 없습니다. 신호가 응용 프로그램에 대해 구성된 경우 각 작업에는 8개의 신호 플래그 세트가 있습니다.

모든 작업은 다른 작업의 신호를 설정할 수 있습니다. 소유자 태스크만 신호를 읽을 수 있습니다. 읽기는 파괴적입니다. 즉, 읽기 프로세스에 의해 신호가 지워집니다. 다른 작업은 작업의 신호를 읽거나 지울 수 없습니다.

Nucleus RTOS에는 다른 작업이 하나 이상의 신호 플래그를 설정할 때 실행되는 기능을 작업이 지정할 수 있는 기능이 있습니다. 이것은 인터럽트 서비스 루틴과 다소 유사합니다. 이 기능은 Nucleus SE에서 지원되지 않습니다. 태스크는 신호 플래그를 명시적으로 조사해야 합니다.

신호 구성

Nucleus SE의 대부분의 측면과 마찬가지로 신호 구성은 주로 #define에 의해 제어됩니다. nuse_config.h의 문 . 주요 설정은 NUSE_SIGNAL_SUPPORT입니다. , 기능을 활성화합니다(응용 프로그램의 모든 작업에 대해). 신호 수를 지정하는 데는 문제가 없습니다. 애플리케이션의 각 작업에 대해 8개의 플래그 집합만 있으면 됩니다.

이 활성화 매개변수를 설정하는 것은 신호에 대한 "마스터 활성화"입니다. 이로 인해 데이터 구조가 그에 따라 정의되고 크기가 조정되며 이에 대한 자세한 내용은 이 기사의 뒷부분에서 설명합니다. API 활성화 설정도 활성화합니다.

API 사용

Nucleus SE의 모든 API 기능(서비스 호출)에는 활성화된 #define이 있습니다. nuse_config.h의 기호 . 신호의 경우 다음과 같습니다.

NUSE_SIGNALS_SENDNUSE_SIGNALS_RECEIVE 

기본적으로 둘 다 FALSE로 설정됩니다. , 따라서 각 서비스 호출을 비활성화하고 구현 코드의 포함을 금지합니다. 애플리케이션에 대한 신호를 구성하려면 사용하려는 API 호출을 선택하고 활성화 기호를 TRUE로 설정해야 합니다. .

다음은 기본 nuse_config.h에서 발췌한 것입니다. 파일:

#define NUSE_SIGNAL_SUPPORT FALSE /* 신호 지원 활성화 */#define NUSE_SIGNALS_SEND FALSE /* 서비스 호출 인에이블러 */#define NUSE_SIGNALS_RECEIVE FALSE /* 서비스 호출 인에이블러 */ 

신호 API 기능이 활성화되고 신호 기능이 활성화되지 않은 경우 컴파일 시간 오류가 발생합니다. 코드가 활성화되지 않은 API 호출을 사용하는 경우 애플리케이션에 구현 코드가 포함되지 않았기 때문에 링크 시간 오류가 발생합니다. 물론 신호 지원을 활성화하고 이러한 API를 사용할 수 없도록 하는 것은 의미가 없기 때문에 두 API 기능을 활성화하는 것은 다소 중복됩니다. 활성화는 다른 Nucleus SE 기능과의 호환성을 위해 포함됩니다.

신호 서비스 호출

Nucleus RTOS는 다음 기능을 제공하는 신호와 관련된 4가지 서비스 호출을 지원합니다.

이러한 각 서비스 호출의 구현을 자세히 조사합니다.

신호 송수신 서비스

작업의 신호 집합에서 수행할 수 있는 기본 작업은 데이터를 작업으로 보내고(모든 작업에서 수행할 수 있음) 데이터 읽기(따라서 소유자만 수행할 수 있는 데이터 지우기)입니다. . Nucleus RTOS와 Nucleus SE는 각각 이러한 작업에 대해 두 가지 기본 API 호출을 제공하며 여기에서 설명합니다.

신호 플래그는 비트이므로 이진수로 가장 잘 시각화됩니다. 표준 C는 역사적으로 이진 상수 표현(8진수 및 16진수만)을 지원하지 않기 때문에 Nucleus SE 배포에는 유용한 헤더 파일인 nuse_binary.h가 포함되어 있습니다. – #define 포함 b01010101 형식의 기호 모든 256개의 8비트 값에 대해. 다음은 nuse_binary.h에서 발췌한 것입니다. 파일:

#define b00000000 ((U8) 0x00)#define b00000001 ((U8) 0x01)#define b00000010 ((U8) 0x02)#define b00000011 ((U8) 0x003)0define b00000101 ((U8) 0x05)

신호 보내기

모든 작업은 응용 프로그램의 다른 작업에 신호를 보낼 수 있습니다. 신호 전송에는 하나 이상의 신호 플래그 설정이 포함됩니다. 이것은 이전에 설정된 플래그에 영향을 미치지 않는 OR 연산입니다.

신호 전송을 위한 Nucleus RTOS API 호출

서비스 요청 프로토타입:

STATUS NU_Send_Signals(NU_TASK *작업, UNSIGNED 신호);

매개변수:

작업 – 설정할 신호 플래그를 소유한 작업의 제어 블록에 대한 포인터

신호 – 설정할 신호 플래그의 값

반품:

NU_SUCCESS – 통화가 성공적으로 완료되었습니다.

NU_INVALID_TASK – 작업 포인터가 잘못되었습니다.

신호 전송을 위한 Nucleus SE API 호출

이 API 호출은 Nucleus RTOS API의 주요 기능을 지원합니다.

서비스 요청 프로토타입:

STATUS NUSE_Signals_Send(NUSE_TASK 작업, U8 신호);

매개변수:

작업 – 설정할 신호 플래그를 소유한 작업의 인덱스(ID)

신호 – 설정할 신호 플래그의 값

반품:

NUSE_SUCCESS – 통화가 성공적으로 완료되었습니다.

NUSE_INVALID_TASK – 작업 인덱스가 유효하지 않습니다.

신호 전송의 Nucleus SE 구현

다음은 NUSE_Signals_Send()의 전체 코드입니다. 기능:

STATUS NUSE_Signals_Send(NUSE_TASK 작업, U8 신호){ #if NUSE_API_PARAMETER_CHECKING if (task>=NUSE_TASK_NUMBER) { return NUSE_INVALID_TASK; } #endif NUSE_CS_Enter(); NUSE_Task_Signal_Flags[태스크] |=신호; NUSE_CS_Exit(); 반환 NUSE_SUCCESS;} 

코드는 매우 간단합니다. 매개변수 검사 후 신호 값은 지정된 작업의 신호 플래그에 OR로 연결됩니다. 작업 차단은 신호와 관련이 없습니다.

신호 수신

태스크는 자체 신호 플래그 세트만 읽을 수 있습니다. 그것을 읽는 과정은 파괴적입니다. 즉, 플래그도 지워집니다.

신호 수신을 위한 Nucleus RTOS API 호출

서비스 요청 프로토타입:

UNSIGNED NU_Receive_Signals(VOID);

매개변수:없음

반환값:신호 플래그 값

신호 수신을 위한 Nucleus SE API 호출

이 API 호출은 Nucleus RTOS API의 주요 기능을 지원합니다.

서비스 요청 프로토타입:

U8 NUSE_Signals_Receive(무효);

매개변수:없음

반환값:신호 플래그 값

수신 신호의 Nucleus SE 구현

다음은 NUSE_Signals_Receive()의 전체 코드입니다. 기능:

U8 NUSE_Signals_Receive(void){ U8 신호; NUSE_CS_Enter(); 신호 =NUSE_Task_Signal_Flags[NUSE_Task_Active]; NUSE_Task_Signal_Flags[NUSE_Task_Active] =0; NUSE_CS_Exit(); 반환 신호;} 

코드는 매우 간단합니다. 플래그 값이 복사되고 원래 값이 지워지고 API 함수에서 복사본이 반환됩니다. 작업 차단은 신호와 관련이 없습니다.


임베디드

  1. 신호
  2. Rutronik:Redpine Signals의 초저전력 무선 MCU
  3. Rutronik:Redpine Signals의 다중 프로토콜 무선 SoC 및 모듈
  4. 단일 원자핵의 자기 검출
  5. 인공 신경망은 무선 통신을 향상시킬 수 있습니다
  6. WiFi 신호를 전기로 변환할 수 있는 새로운 유연한 장치
  7. 양자 역학이 허용하는 가장 약한 무선 신호를 감지하는 새로운 회로
  8. 레이저는 이제 마이크로파를 방출하고 외부 무선 주파수 신호를 수신할 수 있습니다
  9. 2개의 오디오 신호를 매끄럽게 혼합하는 새로운 알고리즘
  10. RF 및 마이크로웨이브 설계 지침