IoT 장치용 디버깅 도구 및 기술에 대한 전문가용 안내서

작성자: Jacob Beningo

DigiKey 북미 편집자 제공

소프트웨어와 하드웨어가 상호 작동해야 하는 내장형 시스템을 개발하는 과정은 극도로 복잡하고 어려워졌습니다. 이는 가장 간단한 사물 인터넷(IoT) 장치처럼 보이는 경우에도 마찬가지입니다. 따라서 불가피하게 무언가 잘못되는 경우 디버깅 시간은 보통 몇 시간이 아니라 몇 주 또는 몇 달이 걸릴 수 있습니다. 이러한 지연과 개발 비용은 제품을 제 시간에 시장에 출시하지 못하도록 방해하고, 제조 일정을 지연시키며 공급망 및 사업 계획을 망칩니다.

프로젝트를 순조롭게 디버깅하고 진행하는 데 소요되는 시간을 줄이는 가장 좋은 방법은 하드웨어 디버깅 도구와 무료로 사용 가능한 소프트웨어를 혼합 사용하여 시스템이 실행되는 방식과 문제가 발생하는 부분에 대한 통찰력을 갖는 것입니다. 따라서, 전문가 및 전문가급의 애호가들이 적합한 도구를 가질 경우 작업을 신속하고 올바르게 완료하는 데 큰 도움이 됩니다.

이 기사에서는 IoT 장치의 성능을 디버깅하고 분석하는 데 사용할 수 있는 개발 도구 및 소프트웨어에 대해 논의합니다. IoT 장치에 대한 예로 STMicroelectronics의 개발 기판을 사용하고 SEGGER Microcontroller Systems의 도구 및 소프트웨어를 사용하여 시스템을 이해하고 디버깅합니다. 또한 디버깅 시간을 최소화하고 IoT 프로젝트를 예정대로 제공하는 방법에 대한 여러 유용한 정보에 대해서도 설명합니다.

디버깅을 위한 일반적인 IoT 장치

IoT 장치는 스마트홈에서 산업용 모니터링 제어에 이르기까지 거의 모든 산업에서 보편화되었습니다. 응용 제품이 다양함에도 불구하고 IoT 장치에는 여러 일반적인 부품이 사용됩니다. 여기에는 다음이 포함됩니다.

  • 마이크로 프로세서
  • 연결을 위한 무선 장치
  • 센서

개발자는 디버깅 기술을 탐색하거나 응용 코드 일부를 테스트하기 위해 자신만의 고유한 기판을 맞춤 설정하기를 원하지 않습니다. 시간이 너무 많이 소요되기 때문입니다. 그 대신, STMicroelectronics의 IoT 노드용 B-L4S5I-IOT01A 디스커버리 키트와 같은 저가형 개발 기판으로 작업하는 것이 더 현명합니다. 이 장치는 일반적인 IoT 장치에 사용되는 거의 모든 것이 갖춰져 있습니다(그림 1).

STMicroelectronics B-L4S5I-IOT01A 디스커버리 키트 구성도그림 1: STMicroelectronics의 IoT 노드용 B-L4S5I-IOT01A 디스커버리 키트에는 IoT 장치에서 일반적으로 필요로 하는 모든 부품이 포함되어 있습니다. (이미지 출처: STMicroelectronics)

이 기판에는 120MHz에서 실행되는 Arm® Cortex®-M4 마이크로 컨트롤러인 STM32L4S5VIT6이 포함되어 있습니다. 이는 최대 2MB의 플래시와 640KB의 RAM으로 지원됩니다. 이러한 실습의 목적에 중요하게, 이 기판에는 Wi-Fi와 여러 센서가 포함되어 있어 모의 IoT 테스트 장치를 빠르게 구축 할 수 있습니다.

전문가용 디버깅 하드웨어 도구

거의 모든 개발 기판에는 온보드 JTAG/SWD 인터페이스가 함께 제공되므로 개발자가 자신만의 고유한 프로그래밍 장치를 구할 필요가 없습니다. 대신, 개발 기판에서 바로 작업할 수 있습니다. 이는 마케팅 목적으로는 좋지만 실제 엔지니어링에 있어서는 그다지 좋은 점이 아닙니다. 온보드 디버거는 사용 가능한 중단점 수 및 인터페이스 전송 속도와 같은 제한이 있는 버전으로 크게 축소되는 경우가 많습니다. 초보자에게는 이러한 제한이 큰 문제처럼 보이지 않을 수 있지만, 중단점을 무제한으로 사용할 수 있으면 중단점을 지속적으로 활성화 및 비활성화할 필요가 없으며 응용 추적을 위해서는 빠른 전송 속도가 필요합니다(추적에 대한 자세한 내용은 소프트웨어 도구 섹션 참조).

전문적인 디버깅 경험을 제공할 수 있는 여러 가지 도구가 있지만 도구 그 자체는 솔루션의 절반에 불과합니다. 이 도구는 우수한 소프트웨어에 의해 지원되어야 합니다. 하드웨어 및 소프트웨어 측면 모두에서 두드러진 도구 세트 중 하나로 SEGGER J-Link 계열을 들 수 있습니다. 이 계열은 학생 및 애호가부터 하드코어 전문가에 이르는 거의 모든 유형의 개발자를 위한 디버거 버전을 포함하고 있습니다.

일반 개발자들이 경험을 통해 가장 유용하다고 생각하는 두 가지 모델 J-Link BaseJ-Link Ultra+가 있습니다(그림 2). 이 두 장치는 폼 팩터 측면에서 동일하지만 J-Link Ultra+는 개발자들에게 램에 대한 더 빠른 다운로드 속도(3MB/s 대 1.0 MB/s)와 더 빠른 SWD 인터페이스 속도(100MHz 대 30MHz)를 제공합니다. 더 빠른 속도는 개발자가 성능, RTOS 동작에 대한 통찰력을 얻기 위해 응용 제품을 추적하고 시스템을 디버깅할 때 중요한 영향을 미칩니다.

SEGGER J-Link Ultra+ 이미지그림 2: The SEGGER J-Link Ultra+는 50MHz 대상 인터페이스를 통해 개발자에게 개선된 디버거 경험을 제공합니다. (이미지 출처: SEGGER Microcontroller Systems)

J-Link와 B-L4S5I-IOT01A 개발 기판의 좋은 점은 Tag-Connect TC2050-IC-NL 케이블과 TC2050-CLIP-3PACK 리테이너 클립을 통해 이 둘을 연결할 수 있다는 것입니다. 따라서 “네일 패드”를 통해 디버거를 개발 기판에 연결할 수 있습니다(그림 3). J-Link의 20핀 커넥터를 TC-2050 케이블의 10핀 커넥터로 조정해야 할 수 있습니다. 여기에 사용할 수 있는 한 가지 옵션은 8.06.04 J-Link 10핀 니들 어댑터입니다.

STMicroelectronics B-L4S5I-IOT01A 개발 기판 이미지그림 3: B-L4S5I-IOT01A 개발 기판에서 Tag-Connect 케이블 조립품은 바늘 방석 같은 PC 기판 풋프린트(오른쪽)를 통해 연결할 수 있습니다. (이미지 출처: STMicroelectronics)

개발자가 하드웨어 측에서 이 경로를 닫으면 소프트웨어 도구를 사용하여 응용 프로그램을 분석하고 디버깅할 수 있습니다.

전문가용 디버깅 소프트웨어 도구

놀랍게도 SEGGER에서 제공하지 않는 SEGGER J-Link 도구에서 잘 작동하는 소프트웨어 도구가 많이 있습니다. 다음은 이러한 무료 도구 중 몇 가지를 살펴보고 개발자가 각 도구를 사용하여 소프트웨어를 디버깅하는 방법을 보여줍니다.

첫 번째는 J-Scope입니다. J-Scope은 시간 경과에 따라 가변 값을 표시하는 오실로스코프와 유사한 도구입니다. 개발자는 단일 변수 또는 수십 개의 변수를 모니터링할 수 있습니다. 그러나 더 많은 변수를 모니터링할수록 샘플 버퍼가 오버플로되고 데이터가 손실되기 전에 받을 수 있는 샘플 수가 줄어듭니다.

변수는 컴파일러에서 출력되는 elf 파일을 J-Scope에 제공함으로써 선택됩니다. 그 결과로, 읽을 메모리 위치가 제공되며 이제 개발자는 샘플 속도를 설정하고 시간이 지남에 따라 변수가 어떻게 변하는지 모니터링할 수 있습니다. 그림 4에서 3변수 추적을 위한 간단한 예제를 볼 수 있습니다.

변수를 모니터링하는 데 사용할 수 있는 SEGGER J-Scope 이미지그림 4: J-Scope를 사용하면 응용 프로그램을 실시간으로 실행하면서 J-Link를 통해 변수를 모니터링할 수 있습니다. (이미지 출처: SEGGER Microcontroller Systems)

다음은 Ozone입니다. Ozone은 디버거 인터페이스이자 성능 분석기입니다. 개발자는 도구에 elf 파일을 불러오고 소스 레벨 디버깅을 수행할 수 있습니다. 또한 중단점을 설정하고 코드를 업데이트할 수 있습니다. 개발자들에게 특히 유용한 기능은 명령 추적을 수행하고(하드웨어가 지원하는 경우) 어떤 어셈블리 및 C 코드 문이 실행되었는지 식별할 수 있는 기능입니다. 이 기능은 HiL(Hardware-in-Loop ) 테스트의 코드 커버리지를 확인할 때 특히 유용합니다.

Ozone은 또한 개발자가 시스템 성능을 분석하고(그림 5) 시간에 걸쳐 변수를 시각화하는 데 도움을 줍니다. 이 장치는 J-Scope와 유사한 기능을 제공하지만 보다 통합적인 방식으로 제공합니다. 또한 전력 소비를 모니터링하고 이러한 모든 이벤트를 한 곳에서 함께 동기화하는 데 사용할 수도 있습니다.

J-Link를 통해 변수를 추적하는 데 사용할 수 있는 SEGGER Ozone 이미지그림 5: Ozone을 사용하면 코드 커버리지 및 RTOS 인식 디버깅 이외에 응용 프로그램을 실시간으로 실행하면서 J-Link를 통해 변수를 추적할 수 있습니다. (이미지 출처: SEGGER Microcontroller Systems)

세 번째 도구는 SystemView입니다. SystemView를 통해 개발자는 RTOS 시스템 런타임 동작을 분석할 수 있습니다. 태스크 스위칭은 트레이스 버퍼에 기록된 후 디버거를 통해 SystemView에 보고됩니다(그림 5). 이제 SystemView는 개발자가 컨텍스트 스위치를 확인하고 시스템 성능을 측정할 수 있는 방식으로 이 정보를 표시합니다. 이는 또한 시스템을 시각화하고 버그 및 다른 문제를 찾을 수 있는 좋은 방법입니다.

RTOS에 링크를 제공하는 SEGGER SystemView 다이어그램그림 6: SystemView는 RTOS에 링크를 제공하여 개발자가 태스크 성능을 측정하고 RTOS가 언제 무엇을 수행하는 지를 시각화할 수 있도록 합니다. (이미지 출처: SEGGER Microcontroller Systems)

내장형 시스템 디버깅을 위한 유용한 정보

IoT 장치를 디버깅하려면 개발자가 하드웨어 및 소프트웨어 측면에서 적합한 도구를 모두 보유하고 있어야 합니다. 개발자가 디버깅에 소요되는 시간을 최소화하려면 두 도구가 모두 제 자리에 있어야합니다. 다음은 개발자가 성공적인 디버깅을 위해 유의해야 할 여러 "유용한 정보"입니다.

  • 인터페이스 전송 속도를 최대화하는 전문가 디버거를 사용합니다. 시스템에서 얻을 수 있는 유용한 데이터의 양은 해당 데이터를 수신할 수 있는 속도에 따라 달라집니다. 속도가 느릴수록 디버깅 세션이 길어집니다.
  • 개발 주기의 초기에 디버깅 소프트웨어를 설정합니다. 개발자는 디버깅 도구를 설정하는 데 문제가 발생할 때까지 기다리면 안 됩니다.
  • 개발 시작부터 추적 도구를 사용합니다. 이를 통해 개발자는 시스템 성능을 모니터링하고 소프트웨어 변경 사항이 시스템 성능에 미치는 영향을 즉시 이해할 수 있습니다.
  • 명령 추적 또는 프로그램 카운터 샘플링을 활용하여 테스트 동안 시스템 코드 커버리지를 이해합니다. 테스트되지 않은 조건 분기 및 코드에 버그가 존재할 수 있습니다.
  • 빠른 전송 프로토콜을 활용하여 실시간 전송(RTT) 라이브러리와 같은 데이터를 칩 외부로 가져옵니다.

이러한 “유용한 정보”를 따르는 개발자는 IoT 장치를 개발하려고 할 때 많은 시간과 고민을 줄일 수 있습니다.

결론

IoT 장치 소프트웨어는 더 복잡해 졌지만 그렇다고 전문가 또는 애호가 개발자들이 지속적인 시스템 디버깅에 빠져 있어야 한다는 의미는 아닙니다. 전문가 개발 도구 및 소프트웨어를 사용하면 개발자들에게 시스템을 디버깅할 뿐만 아니라 시스템 성능을 분석하고 향상시키는 데 필요한 통찰력을 제공할 수 있습니다. 이러한 도구에 투자함으로써 사용자는 디버깅에 걸리는 시간을 획기적으로 줄일 수 있으며 합리적인 시간 내에 프로젝트를 작동시켜 시장에 출시할 수 있습니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo는 임베디드 소프트웨어 컨설턴트로서 현재 십여 개국 이상의 국가에 있는 고객들과 협력하여 제품 품질, 비용, 출시 기간을 향상시켜 고객의 비즈니스를 극적으로 변화시키고 있습니다. 그는 인기 있는 강연자이자 기술 교육자이며 임베디드 소프트웨어 개발 기술에 대해 200개 이상의 기사를 발표했습니다. 그는 미시간 대학교 공학 석사 학위를 비롯하여 세 개의 학위를 소지하고 있습니다. 월간 Embedded Bytes 뉴스레터를 수신하려면 jacob@beningo.com 및 Jacob Beningo의 웹 사이트인 www.beningo.com으로 언제든지 문의해 주세요.

게시자 정보

DigiKey 북미 편집자