임베디드 시스템에서의 테스트 설계 방법

Alexsander Tamari
|  작성 날짜: 2023/10/17 화요일  |  업데이트 날짜: 2024/07/1 월요일
임베디드 시스템 테스팅

고속 PCB를 설계하든 복잡한 임베디드 시스템을 설계하든, 일정 수준의 테스트가 필요합니다. 고속 및 RF 시스템의 경우, 보통 VNA나 스코프 측정과 비교한 시뮬레이션을 의미합니다. 임베디드 소프트웨어와 펌웨어의 경우, 테스트 단계는 상당히 다를 수 있습니다. 실제로, 프로토타입 설계에서 테스트 과정을 가속화하고 멀티미터로 측정할 필요를 없애는 데 도움이 되는 몇 가지 방법이 있습니다.

이 글에서는 프로토타입을 테스트하고 디버깅하는 것을 훨씬 쉽게 만들 수 있는 몇 가지 간단한 팁을 보여드리겠습니다. 이는 소프트웨어와 하드웨어 모두에 테스트를 위한 설계 접근 방식을 적용하는 것을 의미합니다. 여기에는 테스트 패드나 테스트 포인트를 배치하는 것 이상의 임베디드 시스템 테스트를 위한 최선의 방법이 포함됩니다.

임베디드 하드웨어에서의 테스트를 위한 설계

PCB 산업에서는 많은 유행어가 있으며, “테스트를 위한 설계”는 보통 더 넓은 DfX 묶음과 함께 그룹화됩니다. 많은 설계자들은 임베디드 코드를 실행하는 보드의 테스트를 다른 보드의 테스트와 같은 방식으로 접근할 것입니다.

이는 보통 설계자들이 중요한 신호에 많은 테스트 포인트를 배치하지만, 그 이상은 아닐 수도 있다는 것을 의미합니다. 많은 임베디드 프로토타입은 Arduino 개발 보드처럼 보이기 시작할 것입니다. 여기서 메인 프로세서의 모든 것이 핀 헤더와 테스트 포인트로 라우팅됩니다.

임베디드 시스템 테스트
개발 보드는 항상 PCB에 핀 헤더를 표준 연결 방식으로 분리합니다. 그러나 MCU가 주변 장치나 자체 신호에서 신호를 읽을 수 있도록 핀을 직접 연결해야 합니다.

임베디드 시스템 보드나 다른 보드에 핀 헤더가 있다는 것에 반대하는 것은 아닙니다. 하지만, 모든 신호와 핀을 모니터링하면서 보드에서 실행되는 소프트웨어나 펌웨어를 테스트하고 디버깅하기는 어렵습니다. 경우에 따라서는 애플리케이션을 테스트하기 위해 실제로 애플리케이션을 작성해야 할 수도 있습니다. 설계의 기능에서 오류를 발견하면 그 원인이 코드에 있는지 PCBA에 있는지 항상 명확하지 않을 수 있습니다.

하드웨어 측면에서, 테스트를 위한 설계에 대해 이 간소화된 접근 방식에 집중하세요:

Where the World Designs Electronics

Break down silos and enhance collaboration across all aspects of electronics development

  • 모든 것이 핀 헤더를 필요로 하는 것은 아닙니다. 실제로 무언가에 연결하거나 실제로 측정할 계획이 있는 신호를 헤더로 빼세요.
  • 실제로 사용할 수 있는 커넥터를 배치하세요. 이렇게 하면 데이터 수집 카드, 로직 분석기, 오실로스코프 등에 연결할 수 있습니다.
  • 소프트웨어가 테스트를 수행하게 하세요. 임베디드 애플리케이션이 주변 장치에서 신호를 읽을 수 있으므로 코드에 테스트 케이스를 구축할 수 있습니다.
  • 화면에서 데이터를 볼 수 있습니다. 단지 PC와의 연결이 필요할 뿐이며, 이는 직렬 포트, 데이터 수집 카드 또는 독점 소프트웨어를 통해 가능합니다.

Ari Mahpour가 테스트와 지속적 통합에 대한 논의에서 많이 다룬 개념들입니다. 이 기사를 살펴보세요 이 접근법에 대해 더 알아보기 위해서입니다. 컴퓨터로 데이터를 다시 보내고 싶다면, 가장 간단한 방법은 프로토타입에 USB-to-serial 인터페이스를 추가하는 것입니다. 이 프로젝트를 살펴보세요 Zach Peterson의 작업에서 링크 디자인 파일을 얻으세요.

임베디드 시스템 테스팅
USB를 통해 접근 가능한 직렬 포트는 임베디드 PCB에서 데이터를 보는 데 매우 유용합니다.

임베디드 소프트웨어의 테스트 케이스

다음으로, 시스템에서 임베디드 애플리케이션을 실행 중이라면, 코드에 오류 처리나 테스트 케이스를 포함시켜 테스트 속도를 높일 수 있습니다. 헤더, 테스트 패드, 기본 직렬 인터페이스에 연결을 추가하는 것은 모두 실시간으로 임베디드 보드를 모니터링하는 데 도움이 되는 중요한 단계입니다. 목표는 소프트웨어 애플리케이션이 하드웨어와 함께 어떻게 동작하는지 보는 것입니다.

그렇다면 어떻게 애플리케이션과 하드웨어의 진행 상황을 동시에 모니터링할 수 있을까요? 소프트웨어 개발자들로부터 힌트를 얻으세요: 오류 처리와 각 기능의 상태를 표시하는 메시지를 추가하세요. 이는 애플리케이션에서 중요한 기능이 통과했는지 실패했는지를 나타내는 메시지를 표시하는 것만큼 간단할 수 있습니다. 모든 오류 검사를 작성하는 데는 추가 시간이 좀 필요하지만, 애플리케이션 실행 중에 시스템이 무엇을 하고 있는지를 나타내는 화면상의 메시지가 있으면 디버깅을 엄청나게 줄일 수 있습니다.

다음은 C/C++에서 간단한 함수(myFunction()이라고 함)와 가상의 GPIO 라이브러리를 사용하여 이를 구현하는 방법을 보여주는 예입니다. gpio_init(), gpio_read() 등과 같은 함수를 제공하는 간단한 GPIO 라이브러리를 사용하는 플랫폼으로 작업한다고 가정해 봅시다:

#include
#include   // std::runtime_error을 위해
// 가상의 GPIO 라이브러리

namespace GPIO {
    void init(int pin) {
        // 주어진 핀을 입력으로 초기화
        // 이 함수는 플랫폼에 특화되어 있음
    }

    bool read(int pin) {
        // 주어진 핀의 값을 읽음 (HIGH 또는 LOW)
        // HIGH이면 true, LOW이면 false 반환
        // 이 함수는 플랫폼에 특화되어 있음
        return false;  // 임시값, 실제 하드웨어에 따라 달라짐
    }
}
 

int main() {
    const int GPIO_PIN = 5;  // GPIO 읽기를 위한 핀 번호 (설정에 따라 선택)
    GPIO::init(GPIO_PIN);
    double a = 10.0, b = 2.0;
 

    // GPIO 신호가 HIGH이면, b를 0으로 설정
    if(GPIO::read(GPIO_PIN)) {
        b = 0.0;
    }
    try {
        double result = myFunction(a, b);
        std::cout << "결과: " << result << std::endl;
    }
    catch(const std::exception& e) {  // std::exception 타입의 예외를 잡음
        std::cerr << "오류: " << e.what() << std::endl;  // 오류 메시지를 표시
    }
    catch(...) {  // 기타 예외를 위한 catch-all 핸들러
        std::cerr << "알 수 없는 오류가 발생했습니다!" << std::endl;
    }
    return 0;
}

Design Better, Together

Experience flexible controls for team management and project visibility.

 

어플리케이션이 직접 신호를 모니터링하는 경우, 핵심 기능의 각 단계에서 그 결과를 출력할 수 있습니다. 주요 지표 신호와 함께 화면에 이러한 내용을 출력하면 어플리케이션이 진행됨에 따라 정확히 무슨 일이 일어나고 있는지 알 수 있으며, 외부 장치를 사용하여 보드 전체의 모든 신호를 수동으로 측정할 필요가 없습니다. 물론, 보드를 설계할 때 GPIO로 몇 개의 추가 트레이스를 라우팅해야 하지만, PCB의 간단한 연결 오류가 명백한 논리 오류로 보였을 수도 있다는 것을 알게 될 수 있습니다.

물론, 프로브로 전달해야 하는 다른 신호들은 헤더로 가져갈 수 있습니다. 이렇게 하면 그러한 신호들도 스코프나 데이터 수집 카드로 측정할 수 있습니다. 한편, 시리얼 포트는 어플리케이션 로직과 상호 작용하는 데 많은 작업을 수행할 것입니다.

무엇을 설계하고자 하든, Altium Designer®의 완벽한 PCB 설계 기능 세트를 사용하여 혁신적인 테스트 설계 관행을 구현할 수 있습니다. 오늘날의 다학제 환경에서 협업을 구현하기 위해 혁신적인 기업들은 Altium 365™ 플랫폼을 사용하여 설계 데이터를 쉽게 공유하고 프로젝트를 제조 단계로 넘길 수 있습니다.

Altium Designer와 Altium 365에서 가능한 것의 표면만 긁어냈습니다. 오늘 Altium Designer + Altium 365의 무료 체험을 시작하세요.

Easy, Powerful, Modern

The world’s most trusted PCB design system.

작성자 정보

작성자 정보

Alexsander는 기술 마케팅 엔지니어로 Altium에 합류하여 수년간의 엔지니어링 전문 지식을 팀에 제공합니다. 전자 설계에 대한 그의 열정과 실제 비즈니스 경험이 결합되어 Altium의 마케팅 팀에 독특한 관점을 제공합니다. Alexsander는 세계 상위 20개 대학 중 하나인 UCSD에서 전기공학 학사 학위를 받았습니다.

관련 자료

관련 기술 문서

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