하드웨어 인 더 루프 프로젝트 구성

Ari Mahpour
|  작성 날짜: 오월 9, 2021  |  업데이트 날짜: 칠월 1, 2024
하드웨어 인 더 루프 프로젝트 구성

하드웨어 인 더 루프 테스트 소개에서 우리는 하드웨어 인 더 루프 테스트(HIL)가 무엇인지, 설정이 어떻게 생겼는지, 그리고 이 테스트를 프로젝트 설계에 통합해야 하는 이유에 대해 살펴보았습니다. 이 기사에서는 Altium Designer에서 설계된 보드의 예제 프로젝트를 통해 HIL 테스트를 펌웨어에 적용하는 DevOps 흐름을 설명할 것입니다.

설계

하드웨어 인 더 루프 구성을 설정하기 전에 작업할 보드가 필요합니다. 회로도 캡처와 레이아웃 전에 설계를 시작하는 좋은 방법은 평가 보드를 사용하는 것입니다. 이 기사에서 사용할 평가 보드는 Microchip (이전 Atmel)의 SAM4E XPlained Pro입니다. 시작하려면 이 평가 보드와 Atmel Studio가 필요합니다. 하드웨어와 소프트웨어가 준비되면 Gitlab에서 샘플 프로젝트를 클론할 수 있습니다. 이 예제 프로젝트는 HIL 테스트의 하드웨어 기능을 보여주기에 충분한 최소한의 코드만 포함하고 있습니다. 이 프로젝트는 또한 Atmel 소프트웨어 프레임워크(현재는 “Advanced” 소프트웨어 프레임워크로 이름 변경됨)의 일부 라이브러리를 활용합니다. ASF는 USB 시리얼 통신을 가능하게 하는 드라이버, 지연 루틴, 기타 라이브러리 등을 제공하여 다른 마이크로프로세서에 대해 작성된 저수준 하드웨어 구현을 추상화합니다. 저장소를 가져와서 컴파일하고 펌웨어를 로드한 후에는 이제 하드웨어 인 더 루프 테스트를 설정하고 실행할 준비가 되었습니다.

구성

버전 관리와 CI/CD(지속적 통합/지속적 배포)를 위해 Gitlab이 호스트로 선택되었습니다. How to Create a CI/CD Pipeline for Your PCB Design에서 설명한 것처럼 Gitlab에서는 버전 관리와 CI/CD가 하나의 도구로 통합됩니다. 이 프로젝트는 여러 CI/CD 단계(Gitlab에서는 “파이프라인”이라고도 함)로 구성되어 있습니다:

Figure 1: Project Pipeline
Figure 1: Project Pipeline

첫 번째 단계에서는 마이크로프로세서에 프로그래밍 파일을 로드하는 데 필요한 바이너리를 생성합니다. 이 작업이 완료되면 다운스트림 장치(즉, 평가 보드)의 전원이 켜집니다. 그런 다음 장치가 프로그래밍되었으며 이제 장치를 테스트할 준비가 되었습니다.

테스트

하드웨어 인 더 루프(HIL) 테스트는 설계에 따라 간단하거나 복잡하게 만들 수 있습니다. 많은 복잡한 HIL 시스템은 외부 장치를 사용해 실제 환경을 에뮬레이트해야 하지만, 이 예제에서는 외부 자극을 에뮬레이트하기 위해 기본적인 메커니즘을 사용합니다: 직렬 통신입니다. Atmel의 USB Device CDC 인터페이스는 RS-232를 통한 UART처럼 USB를 통해 통신할 수 있는 가상 COM 포트를 만듭니다. 이 테스트 세트에서 우리는 다음 작업을 수행합니다:

  1. 명령을 보내 레지스터 설정
  2. 레지스터 읽기 (명령을 확인하기 위해)
  3. 레지스터 초기화
  4. 레지스터 다시 읽기

마이크로프로세서의 펌웨어는 C로 작성되었지만, 명령을 실행하고 데이터를 읽는 테스트 소프트웨어는 Pytest 프레임워크를 사용하여 Python으로 작성되었습니다. Python으로 소프트웨어를 작성하면 C++과 같은 컴파일 언어에서 훨씬 더 많은 시간과 노력이 필요한 고급 스크립팅과 라이브러리를 사용할 수 있습니다. 또한 이러한 테스트는 운영 체제나 칩 아키텍처에 상관없이 모든 유형의 머신에서 실행할 수 있습니다. Windows PC(Windows, x86)에서 실행되는 동일한 테스트가 Raspberry Pi(Linux, ARM)에서도 실행될 수 있습니다. 개발, 컴파일, 테스트를 로컬 머신에서 추상화하는 것은 DevOps 워크플로우의 핵심 원칙입니다. 우리는 언제든지 새로운 환경을 빠르게 재현할 수 있어야 합니다. 또한 많은 "시작하기" 가이드나 "방법" 페이지를 읽으며 개발 환경을 설정하는 고통스러운 시간을 피하고자 합니다. 파이프라인 정의 파일에서와 같이 이 프로세스(테스트 포함)를 스크립팅함으로써 복잡함 없이 재현 가능한 환경을 보장합니다. 동일한 테스트를 명령줄에서 수동으로 실행하려면 파이프라인 파일을 참조하십시오.

테스트가 완료되면 결과가 JUnit XML 파일에 기록되며, Gitlab에서 이를 분석하고 웹 인터페이스에 표시합니다.

그림 2: 유닛 테스트 결과
그림 2: 유닛 테스트 결과

이제 Gitlab과 함께 하드웨어 인 더 루프 설정의 완전한 엔드 투 엔드 솔루션을 시연했습니다. 프로젝트를 둘러보며 설정 및 형식에 대해 더 익숙해져도 좋습니다.

결론

이 기사에서는 하드웨어 인 더 루프 테스트를 위해 프로젝트를 구성하는 방법을 살펴보았습니다. 여기에는 사용자가 Gitlab에서 클론하여 파이프라인 구성 파일(즉, .gitlab-ci.yml 파일)을 사용해 구성할 수 있는 예제 프로젝트가 포함되었습니다. 또한 Python의 Pytest 프레임워크를 사용한 테스트 실행 방법과 웹 인터페이스에 표시되는 방식을 다루었습니다. 이제 사용자는 이 가이드와 Gitlab에 호스팅된 샘플 프로젝트를 사용하여 자신만의 하드웨어 인 더 루프 설정을 만들 수 있습니다.

다음 PCB 설계에서 Altium이 어떻게 도울 수 있는지 더 알고 싶으신가요? Altium 전문가와 상담하고 자신 있게 설계 결정을 내리는 방법을 알아보세요.

작성자 정보

작성자 정보

Ari is an engineer with broad experience in designing, manufacturing, testing, and integrating electrical, mechanical, and software systems. He is passionate about bringing design, verification, and test engineers together to work as a cohesive unit.

관련 자료

관련 기술 문서

홈으로 돌아가기
Thank you, you are now subscribed to updates.