Mbed 에코시스템을 사용하여 IoT 제품 개발 가속화
DigiKey 북미 편집자 제공
2019-11-20
내장형 및 사물 인터넷(IoT) 개발팀은 최대한 빨리 설계를 마치고 납품해야 한다는 부담을 안고 있습니다. 신속하게 작업을 진행하려면 강력한 에코시스템을 구축하는 검증된 부품과 소프트웨어 프레임워크가 필요합니다. 또한, 향후에 시스템을 유지 관리하고 확장할 방법을 살펴보아야 합니다. 솔루션을 이식할 수 있으며 필요한 경우 여러 하드웨어 플랫폼에 걸쳐 작동할 수 있어야 합니다.
하지만 마이크로 컨트롤러 벤더가 자사의 고유한 에코시스템에 개발자를 묶어두면서 다른 마이크로 컨트롤러로의 전환이 어렵게 되는 경우도 종종 있습니다. 또한, 마이크로 컨트롤러 에코시스템용 소프트웨어 도구(대부분 C 기반)가 적합하지 않아서 개발팀에 방해가 될 수도 있습니다.
이러한 요구 사항을 고려하여 본 기사에서는 Arm Mbed 플랫폼 및 운영 체제를 소개하고자 합니다. 개발자가 Mbed 에코시스템을 활용하여 내장형 제품 개발을 가속하고 마이크로 컨트롤러 벤더의 에코시스템 너머로 확장하는 방법을 보여줍니다.
Arm Mbed란?
Arm의 Mbed는 IoT 장치 빌드에 관심이 있는 개발자를 위한 온라인 협업 도구입니다1. Mbed에서는 Mbed 라이브러리에서 지원되는 개별 하드웨어 부품과 개발 기판, Mbed OS, Mbed TLS 등 개발을 가속하도록 설계된 광범위한 리소스를 개발자에게 제공합니다.
Mbed의 기본 전제는 개발자가 Cypress Semiconductor, NXP Semiconductors, STMicroelectronics와 같은 주요 마이크로 컨트롤러 벤더와 온라인 커뮤니티 200,000명의 개발자가 지원하는 대규모 에코시스템을 활용하여 기존 부품, 개발 도구 및 라이브러리를 통해 개발을 가속화할 수 있게 돕는다는 점입니다. Mbed 에코시스템은 다음과 같은 이점을 제공합니다.
- C++는 설계로 코드를 확장하고 재사용하는 최신 개체 지향 언어이며 해당 에코시스템에서는 이 언어로 라이브러리와 예제를 작성합니다.
- 기존 하드웨어 플랫폼을 활용하여 내장형 제품의 시제품을 빠르게 제작하고 제품이 실행 가능한지 검증할 수 있습니다.
- Mbed 명령줄 인터페이스(CLI)와 함께 Mbed 온라인 및 오프라인 컴파일러에 액세스하여 개발 중인 소프트웨어를 쉽게 테스트할 수 있습니다. 게다가 이 컴파일러는 다양한 예제와 라이브러리에 포함되어 있습니다.
- 클라우드 커넥터 서비스와 같은 IoT 장치 개발을 위한 도구가 내장되어 있어 장치를 클라우드에 쉽게 연결할 뿐만 아니라 다른 클라우드 기반 서비스를 통해 장치를 관리할 수 있습니다.
내장형 개발자를 위한 Mbed용 일반 아키텍처 모델은 매우 유연하고 확장성이 뛰어납니다. 예를 들어 아키텍처 모델은 보통 다음과 같은 3개의 개별 계층으로 분할됩니다(그림 1).
- 낮은 수준의 하드웨어 추상화 계층(HAL)
- Mbed OS API는 스토리지: RTOS, 보안 연결, 통신 스택과 같은 기능을 제공하는 미들웨어 역할을 합니다.
- 높은 수준의 IoT 계층: 개발자의 애플리케이션 코드, Mbed OS 라이브러리, 연결 클라이언트를 포함합니다.
그림 1: Mbed 아키텍처는 필요에 따라 조정 및 확장 가능한 3개의 기본 계층, 즉 HAL을 통해 추상화되는 낮은 수준의 하드웨어 인터페이스, 미들웨어를 추상화하는 Mbed OS API 계층, 애플리케이션 코드를 작성하고 라이브러리 및 클라이언트(예: Pelion)를 활용하는 데 사용하는 높은 수준의 계층으로 구성됩니다. (이미지 출처: Arm Mbed)
아키텍처의 설계 방식에 따라 개발자는 애플리케이션에 필요한 부분은 넣고 나머지 부분은 제외할 수 있습니다. 따라서 개발자가 확장성과 유연성이 뛰어난 아키텍처를 쉽게 활용하여 빠르게 시제품을 제작하고 생산 기간을 단축할 수 있습니다.
하드웨어에서 시작하는 Mbed
Mbed는 뛰어난 소프트웨어 기반을 제공하지만, 소프트웨어뿐 아니라 해당 소프트웨어를 개발하는 데 필요한 도구도 제공합니다. 팀에서 제품을 개발하는 가장 빠른 방법은 3개의 개별 영역으로 구성된 Mbed 하드웨어 에코시스템을 활용하는 것입니다.
- 모듈
- 기판
- 부품
모듈은 즉시 사용 가능하며 인증을 받은 패키지로 제공되고 IoT 중심 연결이 핵심적인 장치입니다. 예를 들어 LoRaWAN을 지원하는 제품으로 작업하는 개발자는 Multi-Tech Systems’ MTMDK-XDOT-NA1-A00 xDot 모듈 개발 키트를 선택할 수 있습니다(그림 2). xDot 모듈은 가시거리 응용 분야에서 최대 10마일까지 양방향 통신을 제공하고, 건물 내에서는 293bits/s ~ 20kbits/s 데이터 속도로 1마일 ~ 3마일 범위까지 양방향 통신을 제공합니다. 이 모듈은 32MHz로 실행되고 AT 메시징 체계를 사용하여 SPI, UART 또는 I2C 인터페이스를 통해 제어 가능한 저전력 STMicroelectronics STM32L151CCU6 프로세서를 사용합니다.
그림 2: xDot 모듈은 Mbed 소프트웨어 스택에서 지원되고 개발자가 보다 단축된 시간으로 가동할 수 있는 인증된 LoRaWAN 모듈을 제공합니다. (이미지 출처: Multi-Tech Systems Inc.)
Mbed 기판은 Mbed에서 지원되는 다양한 마이크로 컨트롤러 제품군을 위한 개발 기판입니다. 각 개발 기판은 마이크로 컨트롤러 벤더에서 제공하는 고유의 특징과 기능이 있습니다. 예를 들어 Bluetooth 저에너지(BLE)를 지원하는 기판 작업에 관심이 있는 개발자는 Cypress Semiconductor의 CY8CKIT-062-BLE에도 흥미를 느낄 수 있습니다(그림 3).
그림 3: CY8CKIT-062-BLE 개발 기판에는 E-Ink 디스플레이, 정전 용량 방식 터치 버튼 및 슬라이더, BLE 모듈, KitProg2 디버거를 비롯하여 IoT 연결 장치를 개발하는 데 사용하는 여러 기능이 포함되어 있습니다. (이미지 출처: Cypress Semiconductor)
CY8CKIT는 다중 코어 PSoC 62 보안 마이크로 컨트롤러를 제공한다는 점이 특징입니다. 코어 중 하나는 Arm® Cortex®-M4 프로세서이고, 두 번째 코어는 저전력 Arm Cortex-M0+입니다. 이를 통해 개발자가 애플리케이션 코드를 분할하거나(예: 프로세서 중 하나에서 BLE 통신 처리) Cortex-M0+ 코어를 보안 프로세서로 사용하여 애플리케이션을 잠글 수 있습니다. 개발자는 기판에서 사용 가능한 모든 I/O 확장에 Mbed 부품을 연결하여 시스템 시제품을 보다 쉽게 제작할 수 있습니다.
Mbed 부품은 제품 제작을 위한 구성 요소로 Mbed 지원 라이브러리 및 미들웨어가 연결된 하드웨어 부품입니다. 예를 들어 IoT 프로젝트 작업을 수행하는 개발자가 프로젝트에 온도 센서를 포함하려고 시도할 수 있습니다. 개발자가 지원되는 온도 센서를 위한 Mbed 부품을 검색하면 해당 부품이 표시됩니다. 예를 들어 Maxim Integrated의 MAX31723PMB1은 시제품을 빠르게 제작하는 데 사용하는 주변 장치 모듈과 함께 제공됩니다(그림 4).
그러한 Mbed 부품의 강점은 거의 항상 회로도가 함께 제공되는 개발 기판이라는 점입니다. 따라서 개발자는 센서 작동에 필요한 하드웨어 구성을 확인하는 동시에 소프트웨어 라이브러리를 사용하여 센서를 가동한 후 실행할 수 있습니다.
그림 4: MAX31723PMB1 디지털 온도계 및 온도 조절기 주변 장치 모듈(표시된 회로도)을 Mbed 개발 기판에 간단히 연결한 다음 연결된 Mbed 부품 라이브러리를 사용하여 온도 센서와 빠르게 연결한 후 상호 작용할 수 있습니다. (이미지 출처: Maxim Integrated)
Mbed를 통해 사용할 수 있는 센서 유형은 온도와 습도를 측정하는 센서처럼 간단한 센서만이 아닙니다. Maxim Integrated MAXREFDES220# 모듈은 의료 장치로 작업하는 개발자에게 손가락 기반 심박 수 및 SpO2 혈중 산소 농도 센서를 위한 참조 설계를 예시로 제공합니다(그림 5).
그림 5: MAXREFDES220# 모듈은 개발자에게 손가락 기반 심박 수 및 SpO2 모니터링을 지원할 수 있는 개발 기판을 제공합니다. (이미지 출처: Maxim Integrated)
광각 및 3D 시간차(ToF) 거리 측정과 같은 응용 분야에 이용 가능한 Seeed Technology의 114991252 VL53L0X Flow 브레이크아웃 기판과 같은 부품도 있습니다(그림 6). 일례로 에지에서 제스처 기반 기술을 개발하려는 개발자가 이 센서에 관심을 보일 수 있습니다.
그림 6: Seeed Technologies 114991252 Flow 브레이크아웃 센서 기판을 Mbed 개발 개판에 간단하게 통합하여 광각 또는 3D 시간차(ToF) 응용 분야(예: 제스처 감지)에서 사용할 수 있습니다. (이미지 출처: Seeed Technology)
개발자가 개발 기판과 부품을 선택하면 기판을 성공적으로 프로그래밍하고 LED의 깜박임을 테스트하는 “Hello World” LEDBlinky 응용 제품을 만들어 Mbed로 개발을 시작할 수 있습니다.
Mbed에서 “Hello World” LEDBlinky 응용 제품 작성
Mbed 응용 제품을 개발할 때 온라인 컴파일러, 오프라인 컴파일러 또는 명령줄 인터페이스(CLI) 도구 등의 다양한 방법을 사용할 수 있습니다. 개인의 실무 경험에 비추어 CLI를 사용하는 것이 권장됩니다. CLI는 개발 공정을 세부적으로 제어하고 테스트 하니스, 지속적인 통합 서버와 같은 개발 공정에 쉽게 통합할 수 있기 때문입니다.
Windows에서 작업하는 개발자가 명령 프롬프트를 사용하여 코드를 컴파일할 수 있도록 CLI는 명령줄 인터페이스 기능을 제공합니다. LEDBlinky 응용 제품을 만드는 첫 번째 단계는 Mbed와 함께 제공되는 사전 작성된 예제를 사용하는 것입니다. 이렇게 하려면 명령 프롬프트에 다음 명령을 입력하면 됩니다.
mbed import mbed-os-example-blinky
이 명령은 해당 응용 제품에 사용할 수 있는 다른 부품과 지원되는 Mbed OS도 가져오므로 예제를 다운로드하는 데 몇 분 정도 걸립니다. 다운로드가 완료되면 개발자는 mbed-os-example-blinky 폴더로 이동하여 main.cpp 파일을 찾습니다. 즐겨 찾는 편집기에서 이 모듈을 열 수 있으며 다음과 같이 표시됩니다.
복사 #include "mbed.h" #include "platform/mbed_thread.h" #include "stats_report.h" DigitalOut led1(LED1); #define SLEEP_TIME 500 // (msec) #define PRINT_AFTER_N_LOOPS 20 // main() runs in its own thread in the OS int main() { SystemReport sys_state( SLEEP_TIME * PRINT_AFTER_N_LOOPS /* Loop delay time in ms */); int count = 0; while (true) { // Blink LED and wait 0.5 seconds led1 = !led1; thread_sleep_for(SLEEP_TIME); if ((0 == count) || (PRINT_AFTER_N_LOOPS == count)) { // Following the main thread wait, report on the current system status sys_state.report_state(); count = 0; } ++count; } }
개발자는 내용을 수정할 수 있지만, 이 기사의 경우 기본값으로 충분합니다. 코드를 컴파일하여 배포하는 것에 더욱 주의를 기울입니다. 코드를 컴파일하여 배포하는 정확한 명령은 하드웨어에 따라 다릅니다. 아래 예제는 Cypress CY8CKIT-062-BLE 개발 기판에 대해 단일 명령으로 기판을 컴파일하여 프로그래밍하는 방법을 보여줍니다.
mbed compile -m CY8CKIT_062_BLE -t GCC_ARM -f
프로젝트를 처음으로 컴파일하는 경우 도구 체인에서 Mbed 응용 제품에 자동으로 포함되는 모든 연결된 파일을 빌드해야 하므로 컴파일하는 데 몇 분 정도 걸릴 수 있습니다. 컴파일 주기가 완료되면 아래 그림 7과 같은 결과가 표시됩니다.
그림 7: LEDBlinky 프로젝트를 성공적으로 컴파일한 경우의 Mbed 컴파일러 출력 (이미지 출처: Jacob Beningo)
명령줄의 -f 옵션에서는 컴파일된 16진수 파일을 자동으로 가져와서 개발 기판에 복사합니다. 그러면 개발 기판이 DAPLink 대용량 스토리지 장치로 표시됩니다. 여기서 LED가 깜박이고 개발자가 기본 응용 제품 개발을 시작할 수 있습니다.
Mbed 작업을 위한 유용한 정보
Mbed를 시작하는 것은 간단하지만 개발자가 해결해야 할 과제가 있습니다. 다음은 Mbed를 사용하여 제품 개발을 시작하는 데 “유용한 정보” 몇 가지입니다.
- 온라인 컴파일러를 사용하지 마십시오. 개발 애호가의 경우에는 상관없지만, 전문가의 경우 소스 코드가 다른 사용자의 서버에 있으면 문제가 될 수 있습니다. 또한, 클라우드로의 전환이 잦으면 디버깅이 느려질 수 있습니다. Mbed IDE 또는 Mbed CLI 같은 로컬 컴파일러를 사용하는 것이 더 좋습니다.
- Mbed는 다중 스레드를 지원하지만, 기본 기능은 자체 스레드에서 실행됩니다.
- Mbed 예제 프로젝트를 시작하고 검토하여 Mbed 응용 제품을 보다 효과적으로 작동하는 방법을 알아보십시오.
- Mbed 테스트 하니스를 활용하여 응용 제품 개발 도중 Mbed 프레임워크에서 의도치 않게 분리된 항목이 없는지 확인하십시오.
- Mbed 하드웨어 사이트에서 제품을 개발하기 위해 빠르게 통합할 수 있는 개발 기판, 부품 및 모듈을 검색합니다.
이러한 유용한 정보에 따라 개발자는 내장형 제품에 개발하는 데 걸리는 시간을 최소화할 수 있습니다.
결론
내장형 및 IoT 개발자에게는 개발 작업 가속화 및 개발 비용 최소화를 지원하고 최신 도구, 공정 및 소프트웨어를 제공하는 체계적인 지원 에코시스템이 필요합니다. 그림과 같이 Mbed 플랫폼 및 OS는 개발자가 활용할 수 있는 잠재적 선택 사항 중 하나입니다.
Mbed는 테스트와 통합을 거친 다양한 부품과 함께 확장할 수 있고 유연한 소프트웨어 아키텍처를 제공합니다. 또한, 개발자가 제품 시제품을 손쉽게 만들어 생산 솔루션으로 확장해 나갈 수 있도록 다양한 하드웨어 모듈, 기판 및 부품을 광범위하게 지원합니다.
참고 자료
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


