위치로 진입 점

마지막 업데이트: 2022년 1월 20일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

모든 주소는 보안 또는 비보안입니다. ARMV8M 내부의 SAU(Security Attribution Unit)는 MPU와 함께 작동합니다. RT8은 500개의 SAU 지역을 지원합니다. NXP는 보안 OS가 애플리케이션에서 분리되도록 하는 IDAU(구현별 장치 속성 단위)를 통합했습니다.

NXP AN13156 TrustZone 보안 하위 시스템 지침

이 애플리케이션 노트는 TrustZone® 기술이 CPU에 내장된 하드웨어 강제 격리를 통해 보안에 대한 효율적인 시스템 전체 접근 방식을 제공하는 방법을 설명합니다. 또한 RT500에서 보안 및 비보안 상태를 설정하도록 TrustZone을 구성하는 방법과 이러한 상태 사이를 전환하고 다양한 보안 오류를 처리하는 방법을 보여줍니다.

WeGO 소개

ARMv8M용 TrustZone은 플랫폼 보안 아키텍처(PSA)와 결합하여 포괄적인 보안 기반을 제공합니다. 이 하위 시스템에는 보안 버스 컨트롤러, NXP 구현 IDAU(Device Attribution Unit), SAU(Security Attribution Unit) 및 보안 GPIO가 포함됩니다. 핵심 플랫폼에 구축된 TrustZone에는 보안 및 비보안 MPU(메모리 보호 장치)가 있습니다.

  • Cortex-M33 및 플랫폼 보안 아키텍처용 TrustZone에는 다음이 포함됩니다.
  • ARMV8-M 추가 상태
  1. 보안 및 비보안 스택 포인터
  2. 이중 스택 제한 확인
  3. 각 상태에 대한 개인 SysTick 타이머
  • 보안 속성 단위(SAU),
  • 보안 및 비보안 메모리가 있는 메모리 보호 장치(MPU).
  • NXP 모듈에는 다음이 포함됩니다.
  1. 정의된 속성 단위(IDAU 인터페이스 사용)
  2. 보안 버스 제어
  3. 보안 GPIO 컨트롤러
  4. 보안 DMA 컨트롤러

TrustZone에 보안 코드와 비보안 코드를 함께 사용하면 소프트웨어의 공격 표면이 줄어듭니다. 소프트웨어의 보안 부분이 방탄이고 보호되는지 확인하십시오.

NXP AN13156 TrustZone 보안 1

ARMv8M Cortex-M33용 TrustZone

TrustZone은 스마트폰, 태블릿 및 스마트 TV를 보호하기 위해 모든 Cortex A에 사용되는 기술입니다. TrustZone은 분리 및 액세스 제어를 구현하여 신뢰할 수 있는 소프트웨어와 리소스를 격리하여 주요 구성 요소의 공격 표면을 줄이는 수단을 제공합니다. 생성된 신뢰할 수 있는 엔클레이브는 신뢰할 수 있는 소프트웨어를 보호할 수 있으며 중요한 보안 서비스를 저장하고 실행하는 데 이상적입니다. 모범 사례에서는 이 코드가 작아야 합니다.view보안 서비스 조항이 포함된 ed 코드. 엔클레이브는 또한 신뢰할 수 있는 하드웨어를 보호하여 신뢰할 수 있는 소프트웨어를 보강하고 강화할 수 있습니다. 여기에는 암호화 가속기, 난수 생성기 및 보안 저장소를 위한 하드웨어 지원용 모듈이 포함됩니다. 보안은 시스템 관점에서 생각해야 합니다. CPU, 메모리, 주변 장치 및 이러한 장치를 함께 연결하는 모든 IP를 포괄해야 합니다.
격리는 기초일 뿐입니다. 보안은 보호 계층에 관한 것이며 추가 계층을 추가하기 위해 HW 및 SW를 추가합니다.

보안 및 비보안 메모리 속성

메모리는 보안, 비보안(NS) 또는 비보안 호출 가능(NSC)일 수 있습니다. 이는 SAU(Security Attribution Unit)에서 프로그래밍 가능한 것으로 정의하거나 IDAU(Implementation Defined Attribution Unit)는 NXP에서 고정합니다. 보안 위치로 진입 점 데이터는 보안 코드로만 읽을 수 있습니다. 보안 코드는 보안 모드의 CPU에서만 실행할 수 있습니다. NS 데이터는 보안 상태와 비보안 상태 CPU 모두에서 액세스할 수 있습니다. NS 코드는 보안 코드로 실행할 수 없습니다. NSC는 NS 코드가 SG(Secure Gateway) opcode로 분기하여 실행하는 특수 영역입니다. 이것은 NS 코드가 S 함수를 호출하는 유일한 방법입니다. SG가 NSC 영역에서 실행되고 CPU가 NS 상태에 있으면 CPU는 S 상태로 이동합니다.

노트
NSC 영역 밖에서는 SG 명령어만 합법적으로 실행될 수 있으므로 실제 S 기능으로의 분기는 보안 모드에서 수행됩니다.

CPU 상태는 보안 권한, 보안 비권한, 권한(핸들러) 또는 비권한(스레드)일 수 있습니다. S-메모리의 NSC 영역은 보안 기능의 특정 주소를 공개하지 않고 S-메모리의 기능에 액세스하기 위해 S-응용 프로그램 코드에 대한 비니어를 제공합니다. SG 명령을 실행하면 CPU가 CPU-NS에서 CPU-S로 변경된 다음 S-메모리의 보안 기능에 대한 축성된 호출을 실행합니다. CPU-NS가 SG 명령이 아닌 NSC 영역의 주소를 호출하면 예외 오류가 생성됩니다. 예외 오류로 인해 CPU가 보안 상태가 됩니다. 보안 응용 프로그램 코드 개발자는 NSC 영역 내에서 S-응용 프로그램 코드에 대한 함수 호출을 생성하여 NS-응용 프로그램이 S-메모리 내부의 기능을 사용할 수 있도록 합니다.

NXP AN13156 TrustZone 보안 2

ARMv8M 추가 CPU 상태

NXP AN13156 TrustZone 보안 3

효율적인 임베디드 구현을 위해 단일 CPU에서 실행되는 ecure 및 비보안 코드. 비보안 상태의 CPU는 비보안 프로그램 메모리에서만 실행할 수 있습니다. 비보안 상태의 CPU는 두 NS 메모리에서만 데이터에 액세스할 수 있습니다. 안전하고 신뢰할 수 있는 코드의 경우 새로운 보안 스택 포인터와 스택 제한 검사가 있습니다. S 및 NS 지역을 위한 별도의 MPU(메모리 보호 장치)와 각 상태에 대한 개인 SysTick 타이머가 있습니다. 보안 측에서는 인터럽트의 대상 도메인을 구성할 수 있습니다.

보안 버스

보안 버스에는 PPC(Peripheral Protection Checker), MPC(Memory Protection Checker) 및 MSW(Master Security Wrapper)가 포함됩니다. 이것은 PUF와 PRINCE 및 AES 간의 보안 버스와 동일하지 않습니다.

주소로 정의된 보안

CPU0용 Arm TrustZone의 NXP IDAU 구현에는 주소 비트 28을 사용하여 주소 공간을 잠재적인 보안 영역과 비보안 영역으로 나누는 작업이 포함됩니다. 주소 비트 28은 메모리 액세스 하드웨어에서 디코딩되지 않으므로 각 물리적 위치는 그들이 위치한 버스의 두 위치에 나타납니다. 다른 하드웨어는 모든 주소에 대해 어떤 종류의 액세스(비보안 호출 가능 포함)가 허용되는지 결정합니다.

TrustZone 및 시스템 일반 매핑

어트리뷰션 유닛

NXP AN13156 TrustZone 보안 3


모든 주소는 보안 또는 비보안입니다. ARMV8M 내부의 SAU(Security Attribution Unit)는 MPU와 함께 작동합니다. RT8은 500개의 SAU 지역을 지원합니다. NXP는 보안 OS가 애플리케이션에서 분리되도록 하는 IDAU(구현별 장치 속성 단위)를 통합했습니다.

RT500 IDAU 및 보안 속성 유닛

IDAU는 주소 비트 28을 사용하여 두 위치에서 메모리 앨리어싱을 허용하는 간단한 설계입니다. 주소 비트 28이 0이면 메모리는 비보안입니다. 주소 비트 28 = 1인 경우 메모리는 보안입니다. SAU는 8개의 메모리 영역을 허용하고 사용자가 IDAU의 고정 맵을 재정의하여 비보안 영역을 정의할 수 있도록 합니다. 기본적으로 모든 메모리는 보안으로 설정됩니다. IDAU를 유효하게 하려면 최소한 하나의 SAU 설명자를 사용해야 합니다. IDAU 위치로 진입 점 또는 SAU가 지역을 표시하면 해당 지역이 안전합니다. NSC 영역은 IDAU의 NS 영역에서 정의될 수 있다.

NXP AN13156 TrustZone 보안 4

보안 버스 컨트롤러

RT500은 보안 버스 컨트롤러 모듈 매트릭스를 사용하여 MCU의 데이터 흐름을 관리합니다. PPC(Peripheral Protection Checker), MPC(Memory Protection Checker), MSW(Master Security Wrapper), 보안 잠금 및 오류 로그, 보안 인터럽트 마스킹 하이퍼바이저 인터럽트 및 GPIO 마스킹의 조합입니다. M33 코어 또는 DMA 엔진과 같은 버스 마스터 간의 버스 매트릭스는 MSW로 래핑되고 t에 사용되는 보안 측파대 신호가 있습니다.amp어 감지. 버스 슬레이브 포트마다 PPC가 있습니다. MPC는 메모리 및 버스 브리지에 사용됩니다.

NXP AN13156 TrustZone 보안 5


메모리 보호 검사기

MPC는 모든 메모리 장치, 온칩 플래시, SRAM 및 외부 메모리 장치와 함께 사용됩니다. 메모리 블록에는 일반적으로 메모리가 32개 섹터로 분할되는 '섹터'당 하나의 검사기 설정이 있습니다. 예를 들어ample, 128KB 메모리는 섹터당 4kB의 세분성을 갖습니다. 모든 규칙은 보안 제어 레지스터 뱅크에서 설정됩니다. 사용자는 규칙을 설정하기 위해 최고 수준의 "보안 권한"이 있어야 합니다. 기본 상태로 두면 권한 수준이 무시됩니다. 기본적으로 보안 수준만 선택됩니다.

마스터 보안 래퍼

MSW는 세 가지 유형의 버스 마스터, 보안 확장 기능이 있는 TrustZone 인식 Cortex M33, SDIO, PowerQuad, DMA0, DMA1, Hash-AES와 같은 단순 마스터 및 데이터 및/또는 명령 액세스를 수행할 수 있는 버스 마스터와 같은 스마트 마스터를 래핑합니다.

보안 잠금

보안 버스 컨트롤러를 사용하면 다음 구성을 잠글 수 있습니다.

  • 모든 PPC 및 MPC 검사기 설정
  • 모든 마스터 보안 수준(MSW) 설정
  • SAU 설정
  • 보안 MPU 설정
  • CM-33용 보안 벡터 오프셋 주소(S_VTOR)
  • 비보안 MPU 설정
  • CM-33용 비보안 벡터 오프셋 주소(NS_VTOR)

데모 신청

그 일환으로 SDK ex를 실행합니다.amp보안 및 비보안 상태를 설정하도록 TrustZone을 구성하는 방법과 이러한 상태 사이를 전환하는 방법 및 다양한 보안 오류를 처리하는 방법을 이해합니다.

SDK 예amp1

이 애플리케이션은 TrustZone 애플리케이션 개발을 위한 다음 기술을 보여줍니다.

  1. 보안 부분과 비보안 부분 간의 애플리케이션 분리
  2. TrustZone 환경 구성
  3. 비보안 세계로 보안 기능 내보내기
  4. 보안 세계에서 비보안 함수 호출
  5. 베니어 테이블 만들기.
  • 환경

하드웨어 환경

보드 설정

데모 로드 및 실행을 위해 PC와 보드의 J40 링크를 마이크로 USB 케이블로 연결합니다.

소프트웨어 환경

  • 도구 체인 임베디드 워크벤치 8.50.9 또는 MCUXpresso IDE 11.3.0 또는 Keil 5.33
  • 소프트웨어 패키지 SDK_2.9.1_EVK-MIMXRT595

단계 및 결과
기본 단계는 다음과 같습니다.

  1. Hello_world 데모(SDK\boards\evkmimxrt500\trustzone_ex)를 실행하기 위한 단계를 진행하려면 RT595용 MCUXpresso SDK 시작하기(SDK->문서에서 찾을 수 있음)를 따르십시오.amples\hello_world) MCUXpresso , IAR 또는 Keil을 사용합니다. TrustZone 기반 애플리케이션에 대한 지침은 다른 애플리케이션에 비해 약간 다릅니다. 시작하기 가이드에서 TrustZone 기반 애플리케이션에 대한 단계를 따르십시오. MCUXpresso용 trustzone 기반 프로젝트(hello_world & secure_fault)를 가져오는 동안 SDK 디버그 콘솔 옵션에서 UART를 선택합니다.
  2. USB 케이블을 통해 개발 플랫폼을 PC에 연결합니다.
  3. PC에서 PuTTY 또는 TeraTerm과 같은 터미널 응용 프로그램을 열고 디버그 직렬 포트 번호에 연결합니다(COM 포트 번호 확인을 위해). 다음 설정으로 터미널을 구성합니다.
  • 115200 전송 속도
  • 8 데이터 비트
  • 패리티 없음
  • 1 정지 비트
  • 흐름 제어 없음

이 애플리케이션은 SAU를 사용하여 보안 메모리와 비보안 메모리를 구성하는 방법과 두 가지 상태에서 메모리를 전환하는 방법을 보여줍니다. 응용 프로그램에는 보안 및 비보안의 두 가지 프로젝트가 있습니다. 오직 Secure만이 NSC에 정의된 대로 UART에 대한 UART 및 함수 printf에 대한 항목을 처리할 수 있는 반면 strcmp 콜백 함수는 일반 모드에서 정의됩니다. 애플리케이션은 보안 코드에서 비보안 코드를 호출하고 비보안 코드에서 보안 코드를 호출하여 실행 결과를 두 가지 상태로 인쇄하는 기능을 구현합니다.

SDK 예amp2

보안 결함 데모 애플리케이션은 다양한 보안 결함을 처리하는 방법을 보여줍니다. 이 응용 프로그램은 응용 프로그램 Hello World를 기반으로 합니다. 또한 사용자는 가변 테스트 케이스 번호의 값을 설정하여 다양한 보안 결함을 호출할 수 있습니다.
환경
하드웨어 환경

  • EVK-MIMXRT595
  • 디버거 보드에 통합된 CMSIS-DAP 디버거
  • 그 외 1 마이크로 USB 케이블
  • 보드 설정 PC와 보드의 J40 링크를 마이크로 USB 케이블로 연결하여 데모를 로드하고 실행합니다.

소프트웨어 환경

  • 툴체인 IAR 임베디드 워크벤치 8.50.9 또는 MCUXpresso IDE 11.3.0 또는 Keil 5.33
  • 소프트웨어 패키지e SDK_2.9.1_EVK-MIMXRT595

단계 및 결과
예를 들어 "secure_faults"를 가져와야 하는 3.1.4단계를 제외하고 모든 단계는 섹션 1에 정의된 것과 동일합니다.amphello_world 대신 le 응용 프로그램을 사용하십시오. 다른 보안 오류 오류를 얻으려면 secure_faults_s.c에서 변수 '테스트 케이스 번호' 값을 1-5로 변경하십시오. file 컴파일하기 전에.
결과 :
이 애플리케이션의 일부로 사용자는 다음 오류를 호출할 수 있습니다.

  • 보안에서 정상 세계로의 잘못된 전환:

이 전에서ample, 비보안 RESET에 대한 직접 주소는 일반 세계로 점프하는 데 사용됩니다. 이 접근 방식과 관련된 두 가지 문제가 있습니다.

  • 모든 코어 레지스터가 명확하지 않아 데이터 누출 가능성이 있습니다.
  • 정상 세계로의 가장 많은 LSB 주소가 지워져야 합니다.
  • 이를 충족하지 못하므로 보안 오류가 발생합니다. 두 문제 모두 cmse_nonsecure_call 키워드 속성을 사용하여 해결할 수 있습니다. 이 속성이 일반 세계에 대한 함수 호출에 사용되는 경우 컴파일러는 다음을 수행합니다.
    1. 잠재적인 데이터 누출을 방지하기 위해 사용된 모든 레지스터 지우기
    2. LSB 주소 비트 지우기
    3. BXNS 명령어를 사용하여 주소로 점프
  • 위치로 진입 점
  • 정상에서 보안 세계로의 잘못된 진입점:

asm(SG)이 없는 secure world에 있는 함수를 호출하면 SAU가 HardFault를 호출합니다. PRINTF_NS 진입점은 의도적으로 4만큼 증가합니다. 따라서 Secure Gateway SG 명령은 건너뛰어 S world에 대한 잘못된 진입점으로 인해 보안 오류 이벤트를 발생시킵니다. .

  • 정상 세계에서 잘못된 데이터 액세스, 예amp르 1:

이 전에서ample에서 포인터는 주소 0x30000000으로 설정됩니다. 이 주소에는 보안 속성이 있습니다(SAU 설정 참조). 이 주소에서 데이터를 읽으면 NS 세계에서와 같이 보안 오류가 생성되고 응용 프로그램은 보안 메모리에 액세스할 수 없습니다.

  • 입력 기능의 잘못된 입력 매개변수:

입력 매개변수는 주소 0x30000000으로 설정됩니다. 이 주소에는 보안 속성이 있습니다(SAU 설정 참조). 입력 매개변수가 보안 모드에서 보안 기능에 의해 사용되기 때문에 이 보안 위반은 보안 오류에 의해 감지되지 않습니다. 따라서 이 함수는 전체 메모리에 액세스할 수 있습니다. 그러나 모든 입력 기능은 보안 메모리에서 잠재적인 데이터 누출을 방지하기 위해 모든 입력 데이터의 소스를 확인해야 합니다. 입력 데이터의 정확성은 자동으로 확인할 수 없습니다. 이것은 Test Target TT 명령어를 사용하여 소프트웨어로 확인해야 합니다.

  • 정상 세계에서 잘못된 데이터 액세스, 예amp2화 :

포인터는 주소 0x00130000으로 설정됩니다. 이 주소는 SAU에는 비보안 속성이 있지만 AHB 보안 컨트롤러에는 보안 속성이 있습니다. 이 주소에서 데이터를 읽으면 데이터 버스 오류가 발생합니다. 테스트 #3과 비교하여 이 오류는 SAU가 아닌 AHB 보안 컨트롤러에 의해 포착됩니다. SAU에서 이 주소는 비보안이므로 SAU 관점에서 일반 세계로부터의 액세스가 정확하기 때문입니다.

TrustZone 기술은 CPU에 내장된 하드웨어 강제 격리를 통해 시스템 전반에 걸친 효율적인 보안 접근 방식을 제공합니다. 두 개의 도메인을 나란히 실행하고 설정된 구성별로 리소스를 공유하여 이를 수행합니다. 전용 보안 하위 시스템을 구현하는 것보다 하드웨어 리소스 및 전체 설계 노력이 더 효율적입니다. 이는 애플리케이션을 범용 측면에서 보안에 중요한 측면으로 분리하도록 권장합니다. 즉, 공격 표면을 줄입니다. SDK 예amp파일은 보안 및 비보안 상태를 설정하도록 TrustZone을 구성하는 방법과 이러한 상태 사이를 전환하는 방법 및 다양한 보안 오류를 처리하는 방법을 보여줍니다.

  1. RT500 사용 설명서.
  2. RT500 데이터시트.
  3. EVK-MIMXRT595용 MCUXpresso SDK 릴리스 노트(SDK 내에서 찾을 수 있음).
  4. EVK-MIMXRT595용 MCUXpresso SDK 시작하기(SDK 내에서 찾을 수 있음).
  5. MCUXpresso SDK API 참조 매뉴얼.

개정 내역

이 문서의 정보는 시스템 및 소프트웨어 구현자가 NXP 제품을 사용할 수 있도록 하기 위한 용도로만 제공됩니다. 이 문서의 정보를 기반으로 집적 회로를 설계하거나 제작하기 위해 여기에 부여된 명시적 또는 묵시적 저작권 라이선스가 없습니다. NXP는 여기에 있는 제품을 추가 통지 없이 변경할 수 있는 권리를 보유합니다.

NXP는 특정 목적에 대한 자사 제품의 적합성과 관련하여 어떠한 보증, 진술 또는 보장도 하지 않으며 NXP는 제품 또는 회로의 적용 또는 사용으로 인해 발생하는 어떠한 책임도 지지 않으며 특히 다음을 포함하되 이에 국한되지 않는 모든 책임을 부인합니다. 결과적 또는 부수적 손해. NXP 데이터 시트 및/또는 사양에 제공될 수 있는 "일반적인" 매개변수는 애플리케이션마다 다를 수 있으며 실제 성능은 시간이 지남에 따라 달라질 수 있습니다.

"일반"을 포함한 모든 작동 매개변수는 고객의 기술 전문가가 각 고객 애플리케이션에 대해 검증해야 합니다. NXP는 특허권이나 타인의 권리에 따른 라이선스를 양도하지 않습니다. NXP는 다음 주소에서 찾을 수 있는 표준 판매 약관에 따라 제품을 판매합니다. nxp.com/SalesTermsandConditions.

변경할 권리 – NXP Semiconductors는 사양 및 제품 설명을 포함하되 이에 국한되지 않는 이 문서에 게시된 정보를 사전 통지 없이 언제든지 변경할 수 있는 권리를 보유합니다. 이 문서는 발행 전에 제공된 모든 정보를 대체하고 대체합니다.

보안 — 고객은 모든 NXP 제품이 확인되지 않거나 문서화된 취약점에 노출될 수 있음을 이해합니다. 고객은 이러한 취약점이 고객의 애플리케이션과 제품에 미치는 영향을 줄이기 위해 수명 주기 동안 애플리케이션과 제품을 설계하고 운영할 위치로 진입 점 책임이 있습니다. 고객의 책임은 고객의 애플리케이션에 사용하기 위해 NXP 제품이 지원하는 기타 개방형 및/또는 독점 기술에도 적용됩니다. NXP는 취약점에 대해 어떠한 책임도 지지 않습니다. 고객은 NXP의 보안 업데이트를 정기적으로 확인하고 적절하게 후속 조치를 취해야 합니다. 고객은 의도된 응용 프로그램의 규칙, 규정 및 표준을 가장 잘 충족하는 보안 기능이 있는 제품을 선택하고 제품에 대한 궁극적인 설계 결정을 내려야 하며 제품과 관련된 모든 법적, 규제 및 보안 관련 요구 사항을 준수할 전적인 책임이 있습니다. NXP가 제공할 수 있는 정보나 지원에 관계없이. NXP에는 PSIRT(제품 보안 사고 대응 팀)가 있습니다(연락처: [이메일 보호] ) NXP 제품의 보안 취약점에 대한 조사, 보고 및 솔루션 릴리스를 관리합니다.

NXP, NXP 로고, NXP SECURE CONNECTIONS FOR A SMARTER WORLD, COOLFLUX, EMBRACE, GREEN CHIP, HITAG, ICODE, JCOP, LIFE, VIBES, MIFARE, MIFARE CLASSIC, MIFARE DESFire, MIFARE PLUS, MIFARE FLEX, Mantis, MIFARE ULTRALIGHT, MIFARE4MOBILE, MIGLO, NTAG, ROAD LINK, SMARTLX, SMART MX, STARPLUG, TOP FET, TRENCHMOS, UCODE, Freescale, Freescale 로고, AltiVec, CodeWarrior, ColdFire, ColdFire+, Energy Efficient Solutions 로고, Kinetis, Layerscape, MagniV, mobileGT, PEG, PowerQUICC, Processor Expert, QorIQ, QorIQ Qonverge, SafeAssure, SafeAssure 로고, StarCore, Symphony, VortiQa, Vybrid, Airfast, BeeKit, BeeStack, CoreNet, Flexis, MXC, Platform in a Package, QUICC 엔진, Tower, TurboLink, EdgeScale, EdgeLock, eIQ 및 Immersive3D는 NXP BV의 상표입니다. 기타 모든 제품 또는 서비스 이름은 해당 소유자의 자산입니다. AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed 지원, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile은 미국 및/또는 기타 지역에서 Arm Limited(또는 그 자회사)의 상표 또는 등록 상표입니다. 관련 기술은 특허, 저작권, 디자인 및 영업 비밀의 일부 또는 전부에 의해 보호될 수 있습니다. 판권 소유. Oracle 및 Java는 Oracle 및/또는 그 계열사의 등록 상표입니다. Power Architecture 및 Power.org 워드마크, Power 및 Power.org 로고 및 관련 마크는 Power.org에서 라이선스를 부여한 상표 및 서비스 마크입니다.

홈 페이지에 연락하는 방법: nxp.com
Web 고객지원 센터: nxp.com/support

위치로 진입 점

요즘 포스팅꺼리를 생각하느라 지식iN 을 종종 둘러보는데,

새학기가 시작해서 그런가 기초적인 C, C++ 질문이 많이 올라온다.

같은 교수에게서 수업듣는 여러 학생의 중복 질문도 보이고 -_-;;

여튼, 개중에 컴파일에 성공했으나 동작, 값에 문제가 있어 올라오는 질문들이 있다.

컴파일이 아예 안된다면 오류내용을 보고 구문 분석을 해야 하니

작성자 눈에는 오류가 안보일 수 있다. 내가 쓴 글의 오타는 나에게만 안보이는 것 위치로 진입 점 처럼;;

그러나 컴파일에 성공했고 다만 동작이 내가 원하는대로 되지 않는다면

디버깅으로 쉽게 풀 수 있는 내용들이 많다.

즉, 그들은 디버깅을 할 줄 모르는 것 이다.

사실 나도 학교에서 총 8학기 수업 듣는 중에 디버깅 관련 내용은 단 한시간 수업에서만 들어봤고

그나마도 어셈블리가 어쩌고 하는 레벨까지 단숨에 내려가는 바람에 하나도 이해를 못했었다 -_-;;;;;;

디버깅 방법 자체를 회사에 입사하고서야 알았기 때문에

8학기 내내 수업과제는 물론이거니와 졸업논문용 프로그램의 오류까지 죄다 코드를 눈으로 보고 찾았다 ㅠㅠ

하루를 통째로 날렸던 오류를 10분이면 찾고 해결하게 해주는 마법의 단축키

F9, F10, F11 그리고 Shift + F11

1. 디버깅 시나리오 예제용 함수 추가

단축키 동작 예시용으로 CMFCAppView 클래스에 함수를 추가한다.

void CMFCAppView::OnDraw(CDC* pDC) // /*pDC*/ 의 주석 해제

CMFCAppDoc* pDoc = GetDocument();

// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.

DrawTextOnView(pDC); // 함수 호출

void CMFCAppView::DrawTextOnView(CDC* pDC) // 함수 추가 & 헤더에 선언 추가

CRect rect(0, 0, 300, 300);

CString strText = _T("뷰에 문자를 써보자");

CMFCAppDoc* pDoc = GetDocument(); 줄에 커서를 놓고 F9 를 누르면 Break Point 가 걸린다.

F5 를 눌러 프로그램 실행중에 브레이크 포인트 , 중단점 이라고 하는 이 마크에 도달하면 일시 정지하여 디버깅을 할 수 있게 한다.

다시 F9 를 눌러 해제할 수 있다.

3. F10 그리고 호출 스택

F5 를 눌러 프로그램을 실행하면, 실행중에 중단점 위치에서 잠시 멈추고 Visual Studio 가 활성화된다.
호출 스택을 확인하면 저런 흐름으로 여기까지 왔음을 알 수 있다.

이 때 중간에 표시된 InitInstance() 부분을 더블클릭하면 해당 시점을 띄워주는데,

막상 살펴보면 직접적으로 CMFCAppView::OnDraw 를 호출하지는 않는다.

호출스택을 보면 InitInstance() 에서 호출한 외부 코드를 타고 가다가

외부의 호출에 의해 다시 내부로 돌아와 OnDraw 에 도달했음을 짐작할 수 있다.

이제 F10 을 눌러 한줄 한줄 다음 코드를 실행한다.

F10 진행시 함수 내부로 진입하지는 않으므로,

GetDocument() 내부를 보여주지 않고 바로 다음줄인 ASSERT_VALID 로 넘어온다.

if (!pDoc) 에서는 조건에 해당하지 않아 return 으로 안들어가고, 주석도 뛰어넘고 DrawTextOnView(pDC); 로 넘어온다.

이미지에 분홍색 네모로 표시한 노란 화살표가 현재 실행 위치를 의미한다.

4. F11, Shift+F11 그리고 조사식

DrawTextOnView 함수 내부는 F11 로 위치로 진입 점 위치로 진입 점 들어간다.
여기서 호출스택을 다시 보면, CMFCAppView::OnDraw 에서 호출하여 들어왔음을 알 수 있다.

이제 가장 중요한 조사식 인데,

변수에 들어가는 값의 변화를 볼 수 있다.

사실상 이걸 보는것이 디버깅의 가장 큰 목적이다.

보고싶은 변수를 조사식 창의 이름 란에 드래그&드롭 하거나, 직접 타이핑하여 값을 볼 수 있다.

현재 스텝에서는 strText 라는 변수가 아직 선언, 정의되기 전 이므로 값을 정상적으로 보여주지 않는다.

F10 으로 한줄 한줄 넘어가서 CString strText = ~~ ; 의 "세미콜론" 을 지나도록 다음 줄 까지 넘겨보자.

조사식 창을 통해 strText 에 들어간 값을 확인할 수 있다.

이 예제처럼 직접 할당한 변수값이야 굳이 디버깅을 안해도 알 수 있지만,

for 문 내에서 계산된 값의 변화 등을 step by step 으로 볼 줄 안다면 지식iN 에 질문이 많이 줄어들 수 있다. (읭?)

이제 볼일 다 봤으니 이 함수를 벗어나고자 한다면 아래 세가지 방법 정도가 있겠다.

1. F10 을 여러번 눌러 함수 마지막의 > 닫는 괄호를 만나고, 또 F10 을 눌러 빠져나가는 방법

2. Shift + F11 로 단숨에 빠져나가는 방법

3. F5 로 아예 다음 중단점을 만날 때 까지 다 실행하는 방법

실행한 예제가 OnDraw 에 중단점을 걸었다 보니 벗어나도 또 걸릴 것이다 ^^;

해당 중단점을 없애고 F5 를 눌러주면 요런 화면을 볼 수 있다.
6. 요약

F9 : 중단점 지정 / 해제

F10 : Step by Step 으로 한줄씩 실행

F11 : 함수 내부로 진입

Shift + F11 : 위치로 진입 점 위치로 진입 점 함수 외부로 탈출

F5 : 계속 실행 ( 실행중에 중단점을 만나면 거기서 일시 정지 )

7. 조사식 / 호출스택 창 열기

Visual Studio 를 열었는데 조사식 창이나 호출스택 창이 안보인다면?

이 창의 용도는 '디버깅' 이기 때문에, 일단 프로그램이 실행중(F5)이어야 의미가 있다.

따라서 프로그램이 실행중이 아니면 찾아도 허사이다.

실행 전 - 디버그 > 창 의 하위메뉴가 얼마 없다.

실행 후 - 디버그 메뉴도 많아졌고, 창 의 하위메뉴도 많아졌다. 호출 스택과 조사식 창은 여기서 열 수 있다.
8. 더 많은 활용방법

성공적인 하이브리드 작업을 위한 새로운 Google Workspace AI 배포

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

* 본 아티클의 원문은 2022년 5월 12일 Google Cloud 블로그(영문)에 게재되었습니다.

Google은 수년간 Google Workspace에 머신러닝을 사용하여 업무 생산성을 효과적으로 향상시켰습니다. 오늘 Google Workspace에 도입되는 새 기능은 업계 최고의 Google AI를 활용해 사람들이 하이브리드 작업 환경에서 성공적으로 업무를 처리하도록 도와줄 것입니다.

Google팀의 하이브리드 작업 경험과 고객 의견을 토대로 볼 때, 데스크와 기기를 오가는 방대한 정보를 놓치지 않기란 어렵습니다. 처리할 정보가 늘어나는 것이 유달리 새로운 현상은 아니지만, 많은 고객이 하이브리드 작업으로 인해 조직의 이메일 양이 증가 했음을 물론, 채팅과 회의도 늘었다고 전합니다. 이러한 상황 속에서 Google은 최신 AI 혁신 기술을 통해 직원이 중요한 업무에 집중하고, 안전하게 협업하며, 업무 방식 및 장소에 상관없이 활발히 교류하도록 돕고자 합니다.

중요한 업무에 집중하도록 지원

최근에는 자연어 처리 부문의 위치로 진입 점 발전된 기술을 활용해 Google Docs에 자동 요약을 도입했습니다. 앞으로 몇 달에 걸쳐 기본 제공 요약을 스페이스로 확장하여 유용한 대화 요약 정보를 제공할 예정입니다. 요약을 통해 스페이스에서 나눈 대화에서 놓친 내용을 빠르고 쉽게 파악할 수 있습니다.

참여도를 높이기 위해 Google Meet에 자동 회의 스크립트 기능도 도입했습니다. 이를 통해 회의에 참석하지 않았던 사용자도 대화에 참여할 수 있고 참석자가 논의한 내용을 나중에 쉽게 참조할 수 있습니다. 올해 말 자동 스크립트 작성 기능을 출시하고 내년에는 회의 요약을 선보일 예정입니다.

팀원 모두가 보고 들을 수 있도록 지원

Google은 머신러닝을 사용해 Google Meet 회의를 더욱 몰입할 수 있고 의미 있는 경험으로 만들고 있습니다. 결과적으로 이러한 발전은 하이브리드 작업 환경에서 더 나은 교류를 만들 수 있습니다.

사람들이 Google Meet에서 쉽게 교류하고 풍부한 콘텐츠를 공유할 수 있도록 올해 말에 이미지, 사운드, 콘텐츠 공유 기능을 개선할 예정입니다. 참여자 영상 품질 개선(Portrait restore)은 Google AI를 사용해 동영상 품질을 개선하여 어두운 조명, 저화질 웹캠 또는 네트워크 연결 불량으로 인한 문제를 해결해 줍니다. 기기 성능에 영향을 미치지 않으면서 동영상 품질을 향상시키기 위해 클라우드에서 자동으로 처리됩니다.

빛은 화상 회의에서 항상 다루기 어려운 요소였지만, 화면에 인물이 표현되는 방식을 크게 좌우하기도 합니다. 인물 밝기 및 조명 조절(Portrait lighting) 기능에서는 머신러닝을 사용해 동영상 피드에 스튜디오 급의 조명을 시뮬레이션하고 사용자가 직접 빛의 위치와 밝기를 조정하여 원하는 방식으로 자신을 표현할 수 있습니다.

한편, 에코 제거(De-reverberation)는 위치로 진입 점 표면이 단단한 공간에서 발생하는 에코를 필터링하여 지하실, 주방 또는 텅 빈 큰 공간 등 어디에서든 회의실 급의 오디오 품질을 제공할 수 있습니다.

Google Meet의 실시간 공유(Live-sharing)로 참가자들 간에 미디어와 콘텐츠를 동기화하여 하이브리드 회의에서 활발한 대화가 이루어지도록 만들 수 있습니다. YouTube 동영상을 시청하며 딱딱한 분위기를 풀거나 재생목록을 공유하는 등 사용자가 회의 중에 제어 권한을 공유하고 직접 교류할 수 있습니다. 현재 Google 파트너와 개발자들이 실시간 공유 API를 사용해 앱에 Meet을 통합하기 시작했습니다.

보안에 충실한 하이브리드 공동작업

공동작업은 시간대, 물리적 위치, 문서에 상관없이 안전한 기반 위에서 이루어져야 합니다. Google Workspace는 제로 트러스트 접근 방식으로 구축되었으며 엔터프라이즈 수준의 액세스 관리, 데이터 보호, 엔드포인트 보호 기능을 기본적으로 제공합니다. Google은 전 세계 그 어떤 기업보다도 많은 사용자를 온라인에서 안전하게 보호하고 있으며, Gmail은 사용자의 받은편지함에 도달하지 못하도록 스팸 및 피싱 메시지의 99.9% 이상을 차단하고 있습니다.

Google 시스템은 Google 제품을 사용하는 수십억 명의 사용자를 향한 공격 시도에 대해 끊임없이 학습합니다. 여기서 얻은 정보를 바탕으로 신규 패턴 및 진입점을 식별하여 새로운 공격을 예측하고 저지하고 있습니다. 공격자들은 여러 가지 방법으로 끈질기게 공격해 옵니다. 최근 여러 위치에서 원격으로 이루어지는 공동작업이 증가하면서 공유 문서에서 새로운 공격 패턴도 많이 관찰되고 있습니다. 이 때문에 올해 말 Gmail 보호를 위해 적용하던 피싱 및 멀웨어 차단 기능을 Google Slides, Docs, Sheets로 확장할 예정입니다. 액세스하려는 문서, 시트 또는 슬라이드에 피싱 링크 또는 멀웨어가 포함된 경우 자동으로 알림이 제공되며 안전한 위치로 다시 안내됩니다.

공동작업 투자를 통한 인간 중심적 미래 하이브리드 환경 조성

Google은 AI가 사람들의 삶을 유의미하게 개선할 수 있으며 모두가 그 혜택을 누릴 수 있어야 한다고 생각합니다. 하이브리드 작업이 발전함에 따라 Google Workspace의 수십억 명의 사용자에게 지능형 기능을 계속 도입하는 것도 그 일환입니다. 이를 통해 Google은 직원들이 중요한 일들에 집중하고, 완전히 몰입하며, 어디서나 공동작업을 하도록 돕고자 합니다. 팀과 조직이 새로운 업무 환경에서 성공을 거두고 싶다면 혁신을 위한 새로운 방법을 시도해보세요.

7. 클러스터링¶

클러스터링은 호스트 간에 부하를 공유하는 것입니다. 각 인스턴스가 UI 및 API 액세스를 위한 진입점 역할을 할 수 있어야 합니다. 이렇게 하면 컨트롤러 관리자가 원하는 만큼 많은 인스턴스 앞에 로드 밸런서를 사용하고 적절한 데이터 가시성을 유지할 수 있습니다.

부하 분산은 선택 사항이며, 필요에 따라 하나 또는 모든 인스턴스에 들어올 수 있습니다.

각 인스턴스가 컨트롤러 클러스터에 참여하여 작업 실행 능력을 확장할 수 있어야 합니다. 작업이 실행 위치로 전송되는 대신, 어디에서나 실행될 수 있고 실행되는 간단한 시스템입니다. 또한 클러스터형 인스턴스를 :ref: ` ag_instance_groups`라는 다양한 풀/큐로 그룹화할 수 있습니다.

| aap|에서는 Kubernetes를 사용하는 컨테이너 기반 클러스터를 지원하므로 기능상의 변형이나 전환 없이도 이 플랫폼에 새 컨트롤러 인스턴스를 설치할 수 있습니다. Kubernetes 컨테이너를 가리키는 인스턴스 그룹을 생성할 수 있습니다. 자세한 내용은 컨테이너 및 인스턴스 그룹 섹션을 참조하십시오.

지원되는 운영 체제

클러스터형 환경 설정이 지원되는 운영 체제는 다음과 같습니다.

Red Hat Enterprise Linux 7 이상(RHEL8 권장, RHEL 7 또는 Centos 7 인스턴스 중 하나일 수 있음)

OpenShift에서 | at|를 실행하는 경우 격리된 인스턴스는 지원되지 않습니다.

7.1. 설정 고려 사항¶

이 섹션에서는 클러스터의 초기 설정에 대해서만 설명합니다. 기존 클러스터를 업그레이드하는 경우 | atumg|의 :ref: ` Upgrade Planning `을 참조하십시오.

새로운 클러스터링 환경에서 주목해야 할 중요한 고려 사항은 다음과 같습니다.

PostgreSQL은 여전히 독립 실행형 인스턴스이며 클러스터형이 아닙니다. 컨트롤러는 복제본 구성 또는 데이터베이스 장애 조치를 관리하지 않습니다(사용자가 대기 복제본을 구성하는 경우).

클러스터를 실행할 때 데이터베이스 노드는 독립 실행형 서버여야 하며, 컨트롤러 노드 중 하나에 PostgreSQL을 설치하지 않아야 합니다.

한 클러스터에 지원되는 최대 인스턴스 수는 20개입니다.

모든 인스턴스가 다른 모든 인스턴스에서 연결 가능해야 하며, 데이터베이스에 연결할 수 있어야 합니다. 또한 호스트가 안정적인 주소 및/또는 호스트 이름을 갖는 것이 중요합니다(컨트롤러 호스트 구성 방법에 따라 다름).

모든 인스턴스가 동일한 지역에 배치되어야 하며, 인스턴스 간에 대기 시간이 짧고 안정적인 연결이 있어야 합니다.

클러스터형 환경으로 업그레이드하려면 기본 인스턴스가 인벤토리의 default 그룹에 속해야 합니다. 또한 default 그룹에 나열된 첫 번째 호스트여야 합니다.

수동 프로젝트는 고객이 모든 인스턴스에 수동으로 동기화해야 하며, 한 번에 모든 인스턴스에서 업데이트해야 합니다.

플랫폼 배포를 위한 inventory 파일을 저장/유지해야 합니다. 새 인스턴스를 프로비저닝해야 하는 경우 설치 프로그램이 암호 및 구성 옵션과 호스트 이름을 사용할 수 있어야 합니다.

7.2. 설치 및 구성¶

새 인스턴스를 프로비저닝하려면 inventory 파일을 업데이트하고 설정 플레이북을 다시 실행해야 합니다. 클러스터 또는 다른 인스턴스를 설치할 때 사용되는 모든 암호와 정보가 포함된 inventory 파일을 재구성할 수 있다는 것이 중요합니다. inventory 파일 인벤토리에는 `` automationcontroller``라는 단일 인벤토리 그룹이 포함되어 있습니다.

모든 인스턴스가 작업 스케줄링과 관련된 다양한 하우스키핑 작업(예: 작업 시작 위치 확인, 플레이북 이벤트 처리, 주기적 정리)을 담당합니다.

리소스에 대해 선택한 그룹이 없으면 automationcontroller 그룹이 사용되지만, 다른 그룹을 선택하면 automationcontroller 그룹은 어떤 방식으로도 사용되지 않습니다.

database 그룹은 외부 PostgreSQL을 지정하기 위해 남아 있습니다. 데이터베이스 호스트가 별도로 프로비저닝된 경우 이 그룹은 비어 있어야 합니다.

플레이북이 클러스터의 개별 컨트롤러 인스턴스에서 실행되는 경우 해당 플레이북의 출력이 컨트롤러의 websocket 기반 스트리밍 출력 기능의 일부로 다른 모든 노드에 브로드캐스트됩니다. 인벤토리의 각 노드에 대해 라우팅 가능한 개인 주소를 지정하여 내부 주소 지정을 통해 이 데이터 브로드캐스트를 처리하는 것이 가장 좋습니다.

이전 automation controller 버전에서는 rabbitmq_host``라는 변수 이름을 사용했습니다. 이전 버전의 플랫폼에서 업그레이드하는 중이며 이전에 인벤토리에서 ``rabbitmq_host``를 지정한 경우 업그레이드하기 전에 ``rabbitmq_host 이름을 `` routable_hostname``으로 변경하기만 하면 됩니다.

7.2.1. 컨트롤러와 | ah|에서 사용되는 인스턴스 및 포트¶

컨트롤러가 사용하고 온프레미스 Automation Hub 노드에도 필요한 포트 및 인스턴스는 다음과 같습니다.

80, 443(일반 컨트롤러 및 Automation Hub 포트)

22(ssh - 수신 전용 필요)

5432(데이터베이스 인스턴스 - 데이터베이스가 외부 인스턴스에 설치된 경우 컨트롤러 인스턴스에 열어야 함)

7.3. 상태 및 브라우저 API를 통한 모니터링¶

컨트롤러는 다음을 비롯한 클러스터의 상태 검증을 위치로 진입 점 위해 `` /api/v2/ping``에서 검색 가능 API를 통해 가능한 만큼 많은 상태를 자체적으로 보고합니다.

HTTP 요청을 처리하는 인스턴스

클러스터에 있는 다른 모든 인스턴스의 마지막 하트비트 타임스탬프

인스턴스 그룹 및 해당 그룹의 인스턴스 멤버십

실행 중인 작업과 멤버십 정보를 포함하여 인스턴스 및 인스턴스 그룹에 대한 자세한 내용은 /api/v2/instances/ 및 `` /api/v2/instance_groups/ `` 에서 살펴보십시오.

7.4. 인스턴스 서비스 및 실패 동작¶

각 컨트롤러 인스턴스는 공동으로 작업하는 여러 서비스로 이루어져 있습니다.

HTTP 서비스 - 컨트롤러 애플리케이션 자체와 외부 웹 서비스가 포함됩니다.

콜백 수신기 - 실행 중인 Ansible 작업에서 작업 이벤트를 수신합니다.

디스패처 - 모든 작업을 처리하고 실행하는 작업자 큐입니다.

Redis - 이 키 값 저장소는 ansible-playbook에서 애플리케이션으로 전파되는 이벤트 데이터의 큐로 사용됩니다.

rsyslog - 다양한 외부 로깅 서비스에 로그를 전달하는 데 사용되는 로그 처리 서비스입니다.

컨트롤러는 이러한 서비스 또는 구성 요소 중 하나라도 실패할 경우 모든 서비스가 다시 시작되는 방식으로 구성되어 있습니다. 짧은 시간에 충분히 자주 실패할 경우 예기치 않은 동작을 유발하지 않고 수정할 수 있도록 전체 인스턴스가 자동화된 방식으로 오프라인 상태로 전환됩니다.

클러스터형 환경 백업 및 복원은 클러스터형 환경의 백업 및 복원 섹션을 참조하십시오.

7.5. 작업 런타임 동작¶

작업이 실행되고 컨트롤러의 〈일반〉 사용자에게 보고되는 방식은 변경되지 않습니다. 시스템 측면에서는 다음과 같은 몇 가지 차이점이 있습니다.

API 인터페이스에서 작업이 제출되면 디스패처 큐로 푸시됩니다. 각 컨트롤러 인스턴스는 특정 스케줄링 알고리즘을 사용하여 해당 큐에 연결하고 작업을 수신합니다. 클러스터의 모든 인스턴스가 동일하게 작업을 위치로 진입 점 수신하고 실행할 가능성이 있습니다. 작업을 실행하는 동안 인스턴스가 실패할 경우 해당 작업은 영구적으로 실패한 것으로 표시됩니다.

Controller Cluster example

작업을 실행할 수 있는 모든 인스턴스에서 프로젝트 업데이트가 성공적으로 실행됩니다. 프로젝트는 작업을 실행하기 직전에 인스턴스의 올바른 버전에 자신을 동기화합니다. 필요한 버전이 이미 로컬에서 검사되었으며 Galaxy 또는 Collections 업데이트가 필요하지 않은 경우에는 동기화가 수행되지 않을 수도 있습니다.

동기화가 발생하면 launch_type = sync 및 `` job_type = run``을 사용하여 프로젝트 업데이트로 데이터베이스에 기록됩니다. 프로젝트 동기화는 프로젝트의 상태 또는 버전을 변경하지 않습니다. 대신, 동기화가 실행되는 인스턴스의 소스 트리*만* 업데이트합니다.

Galaxy 또는 Collections의 업데이트가 필요한 경우 필수 역할을 다운로드하는 동기화가 수행되며, /tmp 파일의 더 많은 공간이 사용됩니다. 큰 프로젝트(약 10GB)가 있는 경우 `` /tmp``의 디스크 공간이 문제가 될 수 있습니다.

7.5.1. 작업 실행¶

기본적으로 작업이 컨트롤러 큐에 제출되면 작업자 중 하나가 선택할 수 있습니다. 그러나 작업이 실행되는 인스턴스 제한과 같이 특정 작업이 실행되는 위치를 제어할 수 있습니다.

임시로 인스턴스를 오프라인 상태로 전환할 수 있도록 각 인스턴스에 활성화된 속성이 정의되어 있습니다. 이 속성을 비활성화하면 해당 인스턴스에는 작업이 할당되지 않습니다. 기존 작업은 완료되지만 새 작업이 할당되지 않습니다.

7.6. 인스턴스 프로비저닝 해제¶

현재 클러스터는 의도적으로 또는 오류로 인해 오프라인 상태로 전환된 인스턴스를 구분하지 않으므로 설정 플레이북을 다시 실행해도 인스턴스 프로비저닝이 자동으로 해제되지는 않습니다. 대신 컨트롤러 인스턴스에서 모든 서비스를 종료한 다음, 다른 인스턴스에서 프로비저닝 해제 툴을 실행합니다.

automation-controller-service stop 명령을 사용하여 위치로 진입 점 인스턴스를 종료하거나 서비스를 중지합니다.

다른 인스턴스에서 프로비저닝 해제 명령 `` $ awx-manage deprovision_instance –hostname=``을 실행하여 컨트롤러 클러스터에서 제거합니다.

예: awx-manage deprovision_instance --hostname=hostB

마찬가지로, 컨트롤러에서 인스턴스 그룹 프로비저닝을 해제해도 인스턴스 그룹이 자동으로 프로비저닝 해제되거나 제거되지는 않습니다. 자세한 내용은 인스턴스 그룹 프로비저닝 해제 섹션을 참조하십시오.

Copyright © Red Hat, Inc.

Red Hat Ansible Automation Platform docs are generated using Sphinx using a theme provided by Read the Docs.

위치로 진입 점

유틸리티 > 부품 > 관리 . 접속점 패턴 계층 구조 레벨에 속하는 트리에서 객체를 선택했습니다.

이 탭에서는 접속점의 집합체(즉, 그룹)를 정의합니다. 접속점 패턴의 일부인 접속점의 공간 정렬과 특정 데이터를 지정합니다. 그러면 여기서 입력했던 데이터를 부품의 기술 데이터 탭에서 액세스할 수 있습니다.

접속점 데이터 표시에 사용할 구성을 드롭다운 목록에서 선택합니다. 또는 [. ] 을 클릭하여 기존 구성을 편집하거나 설정: 열 구성 대화 상자에서 새 구성을 만듭니다.

기본적으로 테이블에는 다음 접속점 데이터가 표시됩니다. 다른 구성을 선택하면 이 표시를 변경할 수 있습니다.

플러그 지정:
버스 인터페이스 이름:

여기에는 접속점과 접속하는 데 사용한 플러그의 DT를 입력합니다. 플러그 지정은 PLC 접속점 또는 장치 접속점 식별을 지원합니다. 버스 포트의 경우 식별에 버스 인터페이스 이름이 추가로 사용됩니다.

접속점이 멀티 레벨 터미널인 경우 여기에 레벨을 입력합니다.

이 접속점이 나타내는 접속점에 대한 내부 또는 외부 접속점의 수를 접속점 패턴에서 정의합니다.

X 위치 ~ Z 위치 필드에서는 접속점의 좌표 값을 지정합니다.

참고:

접속점을 지정하는 경우 접속점은 기하하적 크기의 장치 내에 포함되어 있어야 합니다. 접속점이 장치 외부에 있는 경우에는 접속을 루팅할 수 없습니다.

여기서는 루팅 연결이 접속점에서 벗어난 후 루팅 경로 네트워크로 들어가는 진입점을 기본적으로 검색하기 위해 루팅 연결의 방향을 결정합니다.

X 벡터 ~ Z 벡터 필드에서는 루팅 연결이 접속점에서 벗어나는 접속점 벡터의 값을 지정합니다. 이러한 값은 벡터가 위치로 진입 점 해당 축의 방향을 가리키는 데 사용되는 기본 설정입니다.

예:

  • X, Y, Z 축이 90° 각도 내에서 정렬됩니다.
  • 벡터 값 1은 해당 축에서 평행 방향을 의미합니다.
  • 벡터 값 0은 축 관련 벡터 방향에 아무런 영향을 주지 않습니다.
  • 0과 1 사이의 벡터 값은 0°와 90° 사이의 범위(즉, 0.5 = 45°, 0.25 = 22.5°)에서 축이 정렬됩니다. 음수 값은 사용할 수 없습니다.
  • 모든 축의 벡터 값이 같은 경우에는 모든 축에 대해 정확히 45° 교차 지점에서 벡터 방향이 지정됩니다.

X 축에 평행한 벡터를 정의합니다.

Z 축에 평행하며 X 축 방향에서 45° 위치로 벡터를 피벗합니다.

Z 축에 평행하며 X 축 방향에서 -45° 위치로 벡터를 피벗합니다.

Y 축과 Z 축 간의 공간 벡터를 정의합니다.

여기에서는 개별 접속점에 대한 사전 설정 값에서 저하되는 값을 지정할 수 있습니다.

이 드롭다운 목록에서 접속의 접속점 유형(예: "스크류 클램프 접속" 또는 "케이지 클램프 접속")을 지정하는 기본값을 선택합니다. 또한 설정: 접속 범주 대화 상자에 해당하는 값을 입력합니다. 옵션 > 설정 > 회사 > 관리 > 접속 범주 메뉴 항목을 통해 이 대화 상자에 액세스할 수 있습니다.

스크류 접속, 스레드, 니플, 플러그인 접속에 대한 스크류(예: "M6") 또는 러그(예: "4.8 x 0.5")의 치수를 이 필드에 입력할 수 있습니다.

접속점에 연결할 수 있는 최소 및 최대 와이어 단면적 값을 입력합니다.

두 접속이 이 접속점에 연결될 때 접속점의 이중 슬리브를 사용할지 여부를 이 확인란을 사용하여 정의합니다.

접속점에 연결할 수 있는 최소 및 최대 AWG 단면적 값을 입력합니다.

드라이브와 소켓으로 구성된 스크류 도구(예: 스크류 드라이버). 이 드라이브는 도구를 옮기는 구성 요소입니다(예: 핸들 또는 모터 샤프트). 소켓은 이동된 구성 요소입니다(예: 스크류 드라이버의 끝단). 소켓 크기는 소켓(끝단)의 치수를 설명합니다(예: "3 x 0.5mm" = 3mm 너비와 0.5mm 두께). 표준 약자 지정을 통해 소켓 버전이 정의됩니다(예: Pozidriv 십자 끝단에 대한 "PZ 1" 또는 Torx 스크류 헤드에 대한 "TX 5").

최소 조임 토크:
최대 조임 토크:

이 값은 뉴턴 미터 단위로 지정됩니다. 이 값은 예를 들어 스크류를 조이는 강도(즉, 소켓에 대해 미치는 드라이브의 힘)를 나타냅니다.

팝업 메뉴에서는 필드 유형(날짜, 정수, 다국어 등)에 따라 다음 메뉴 항목이 제공됩니다.

Eplan은 사용자의 정보를 통해 도움말 시스템을 개선하고자 합니다. 도움말 시스템에 대한 지속적인 개선을 위해 사용자의 Google Analytics 관련 동작을 기록합니다 (추가 정보 및 옵트아웃).


0 개 댓글

답장을 남겨주세요