실리콘랩스(Silicon Labs)는 임베디드 개발자들이 Precision32 MCU를 사용한 개발 속도를 손쉽게 높일 수 있도록 하기 위해 GUI 기반의 앱빌더(AppBuilder) 소프트웨어 툴을 선보이고 있다. 이 툴을 사용하면, 포트 핀과 주변장치를 손쉽게 구성하는 동시에 MCU 패키지에서 핀 기능이 나타나는 위치와 사용하도록 구성되는 주변장치를 스냅샷을 통해 확인할 수 있다.
글 | 에반 슐츠(Evan Schulz) 애플리케이션 엔지니어
실리콘 래버러토리스(Silicon Laboratories)
오늘날의 개발자들은 다음 번 임베디드 디자인에 사용할 32비트 마이크로컨트롤러(MCU) 후보군을 평가하고 선택할 때 많은 문제를 겪고 있다. 개발자는 새로운 MCU가 나올 때마다 해당 MCU의 범용 입/출력(GPIO) 핀과 주변장치를 구성 및 사용하는 방법을 익혀야 하기 때문에 MCU 평가 과정 자체가 지루하고 번거로울 수 있다. 32비트 MCU의 복잡성과 정교함이 날로 높아짐에 따라, 각 GPIO 핀과 주변장치에 대한 구성 변경 기능 수준도 크게 높아지고 있다. 구성 변경을 자유롭게 할 수 있는 GPIO와 주변장치 세트를 활용하는 개발자는 디자인 문제가 가중되는 대신, 디자인과 관련된 융통성을 추가적으로 누릴 수 있게 된다. 디바이스의 핀 아웃과 주변장치를 그래픽을 통해 구성하는 소프트웨어 툴과 사용하기 편리한 구성 인터페이스를 갖춘 임베디드 개발자는 애플리케이션의 핀 아웃 옵션을 신속하게 파악하고 초기화 코드를 생성할 수 있으며, 이를 통해 개발 과정과 출시 시간이 모두 단축된다. 그럼 이제 지능형 그래픽 사용자 인터페이스(GUI) 기반의 MCU 구성 유틸리티를 통해 디자인 프로세스를 손쉽게 진행하는 방법에 대해 좀 더 자세히 알아보기로 하자.
애플리케이션의 디자인 사양이 완성되면, 개발자는 디자인에 사용하고자 하는 대상 MCU를 평가할 수 있다. ARM이 32비트 MCU에 대한 실질적인 표준으로 자리 잡은 상황을 감안할 때 현재 새로 출시되는 많은 MCU 옵션에는 ARM Cortex CPU가 통합되어 있다. MCU는 코드 공간, RAM, 주변장치, 아날로그 기능 면에서 개발자의 사양을 충족하더라도 필요한 모든 기능을 물리적으로 핀 아웃(pinning out) 할 수도 있어야 한다. 모든 포트 핀에서 아무런 제한 없이 모든 주변장치 또는 기능을 사용할 수 있다면 개발자는 사양만 검토하면 될 것이다. 하지만 대부분의 경우 MCU의 주변장치는 다양한 포트 핀에서 멀티플렉싱되며, MCU를 디자인 요구사항에 적합한 방식으로 구성할 수 있는지 여부를 확인하는 일은 개발자의 책임이다.
이상적인 상황이라면 개발자는 구성 가능성이 뛰어난 포트 핀이 통합된 MCU를 선택하게 되는데, 이러한 MCU를 선택하면 각자의 애플리케이션 요구사항에 맞는 보다 작고 저렴한 디바이스를 사용할 수 있게 된다. 또한 구성과 관련된 추가적인 융통성을 얻게 됨에 따라 개발자가 디자인에서 마지막 단계의 변경 작업을 수행하기가 편리해진다. ARM Cortex 기반 MCU 시장에 최근 추가된 실리콘 래버러토리스의 Precision32 MCU 제품군은 구성이 용이한 듀얼 크로스바 아키텍처를 바탕으로 개발자가 이러한 핀 아웃 관련 융통성을 누릴 수 있도록 한다. 개발자는 듀얼 크로스바 아키텍처를 통해 디지털 기능과 아날로그 기능의 혼합을 GPIO 핀에 할당할 수 있다.
개발자는 자신의 임베디드 애플리케이션에 사용할 수 있는 32비트 MCU 후보군을 평가하기 시작할 때 다양한 MCU 제품 및 이와 연관된 툴 체인을 구성 및 사용하는 방법을 배워야 하는데, 대부분의 경우 이 과정에서 많은 시간이 소요된다. 디바이스의 사용 가능한 핀 아웃을 파악하고 초기화 코드를 신속하게 생성할 수 있도록 하는 사용이 편리한 그래픽 구성 툴을 활용하는 개발자는 전체 개발 시간을 크게 단축하게 된다. 예를 들어, 실리콘랩스(Silicon Labs)는 임베디드 개발자들이 Precision32 MCU를 사용한 개발 속도를 손쉽게 높일 수 있도록 하기 위해 GUI 기반의 앱빌더(AppBuilder) 소프트웨어 툴을 선보이고 있다. 이 툴을 사용하면, 포트 핀과 주변장치를 손쉽게 구성하는 동시에 MCU 패키지에서 핀 기능이 나타나는 위치와 사용하도록 구성되는 주변장치를 스냅샷을 통해 확인할 수 있다.
그림 1에서는 앱빌더 툴에서 생성하는 샘플 출력 정보를 보여 준다.
앱빌더 툴을 사용하는 개발자는 핀 구성을 손쉽게 변경하고, 이러한 변경 사항이 다른 핀 기능에 미치는 영향을 실시간으로 확인할 수 있다. 이 GUI 기반의 핀 구성 기능은 개발자가 보드 디자인을 코드 개발과 동시에 시작하는 경우에 매우 유용하다. 예를 들어, 펌웨어 개발자는 하드웨어 디자이너가 평가할 잠재적인 핀 아웃 옵션의 출력 정보를 제공할 수 있다. 그러면 하드웨어 디자이너는 전반적인 시스템 비용을 절감하려는 노력의 일환으로 가장 단순한 PCB 레이아웃과 가장 적은 수의 보드 레이어를 구현하는 핀 아웃을 선택하게 된다. 또한 앱빌더 툴을 사용하는 개발자는 마지막 단계의 핀 아웃 변경 사항에 대한 타당성을 손쉽게 확인하고 평가할 수 있다.
핀 구성에 그래픽 툴을 사용하여 얻게 되는 또 다른 중요한 이점은 이를 통해 핀 구성 코드 개발이 불필요해지고 핀 구성 내에 존재할 수 있는 모든 복잡한 부분이 추출된다는 점이다. 핀 아웃이나 핀 구성이 변경되면 그래픽 툴에서는 해당하는 코드를 자동으로 생성한다. 다음 그림에서는 앱빌더 소프트웨어를 통해 생성되는 핀 구성 코드의 예를 보여 준다.
그림 2의 핀 구성 코드에서는 하드웨어 액세스 레이어(Hardware Access Layer)에 정의된 함수를 사용하는데, 이 레이어는 Precision32 소프트웨어 개발 키트(SDK)에 포함되어 있으며 디바이스 레지스터에 대한 액세스 레이어를 제공한다.
핀 구성 툴은 코드를 생성하는 것 외에도 감지된 오류나 경고를 사용자에게 알릴 수 있을 만큼 지능적인 측면을 갖추고 있어야 한다. 예를 들어, 아날로그-디지털 컨버터(ADC)에 대한 아날로그 입력으로 핀을 선택한 상황에서 사용자가 디지털 모드에 대해 핀을 잘못 구성하는 경우, 툴에서는 아날로그 핀이 현재 디지털 모드에서 사용하도록 구성되어 있다는 자동 알림을 통해 문제를 해결하라는 메시지를 표시할 수 있다.
일례로, 앱빌더 툴에서는 감지되는 모든 오류를 목록으로 제공한다. 오류를 두 번 클릭하면 잘못된 구성 설정으로 화면이 이동하며, 여기서 해당 설정은 빨간색으로 강조 표시가 되어 있다. 감지된 충돌이 해결되면 오류가 목록에서 자동으로 제거된다. 이러한 기능은 핀 구성으로만 제한되지 않고 주변장치 구성에도 사용할 수 있다. 예를 들어, 개발자가 I2C0 모듈을 사용하도록 구성하는 상황에서 깜박 잊고 I2C0 모듈에 대한 클록 게이트를 활성화하지 않는 경우 앱빌더에서는 오류 알림을 자동으로 생성한다.
사용자가 오류를 두 번 클릭하면 툴에서는 변경해야 하는 파라미터를 자동으로 불러와 이를 빨간색으로 강조하여 표시한다. 그림 3에서처럼 오류를 두 번 클릭하면 I2C0 클록 활성화 선택기가 빨간색으로 강조 표시되어 있는 클록 제어 구성(Clock Control Configuration) 창이 열린다. 클록 제어 구성 창 내에서 I2C0 상자를 선택하면 오류 목록 창에서 해당 오류가 제거된다.
구성을 위해 그래픽 툴을 사용하지 않으면 오류가 싱글 비트 설정인 경우 같은 상황에서 개발자가 구성을 디버깅하는 데 상당히 많은 시간을 쏟아야 할 수 있다. 그래픽 구성 툴을 사용하면 오류가 자동으로 강조 표시되므로 개발자는 디버깅이 아닌 추가적인 개발에 노력과 시간을 투자할 수 있다.
MCU 주변장치를 구성하는 일은 개발자에게 또 다른 문제를 안겨 준다. 소프트웨어 구성 툴의 지원을 받지 않을 경우, 이 단계는 대개 까다로운 과정으로 이어진다. 개발자는 많은 분량의 데이터시트와 참조 매뉴얼을 읽고 원하는 설정을 얻기 위해 구성해야 하는 주변장치 내의 비트 수를 파악해야 한다. 이는 여러 벤더의 다양한 MCU를 동시에 평가하는 등의 상황에 처한 개발자에게는 힘겨운 문제로 작용한다. 하지만 앱빌더 같은 소프트웨어 툴을 활용하는 개발자는 구성 가능한 모든 파라미터를 손쉽게 확인하고, 필요에 따라 구성을 변경할 수 있다. 예를 들어, 앱빌더 툴을 사용하면 확인란, 드롭다운 필드 및 테스트 상자를 통해 구성 작업을 신속하게 수행할 수 있다.
포트 구성과 마찬가지로 모든 주변장치 설정에서는 해당하는 구성 코드를 자동으로 생성하며, 주변장치 구성 오류는 오류 목록 창에서 강조 표시된다. 또한 개발자는 앱빌더 소프트웨어를 통해 고급 고속 버스(Advanced High-speed Bus, AHB) 및 고급 주변장치 버스(Advanced Peripheral Bus, APB) 클록 소스를 그래픽 방식으로 구성할 수 있다. 그림 4에서는 앱빌더의 클록 제어 구성 창을 보여 준다. 이에 대한 결과로, 구성 코드를 개발할 필요가 없어진다. 개발자는 툴 내에서 모든 초기 시작 구성을 수행할 수 있으므로 전반적인 개발 시간이 추가로 줄어든다.
개발 과정의 이 단계에서는 포트 핀, 주변장치 및 클록 소스가 소프트웨어 툴 내에서 구성되므로 개발자는 이제 펌웨어를 작성하여 애플리케이션을 구현하는 단계로 옮겨갈 준비를 마치게 된다. 소프트웨어 구성 툴은 최소한 기존 프로젝트로 가져오거나 추가할 수 있는 생성된 파일을 출력해야 한다. 하지만 앱빌더 툴을 사용하면 시스템 구성을 새 프로젝트로 내보낼 수 있으며, 이러한 프로젝트는 소스를 프로젝트로 내보낸 후 자동으로 열린다. 통합 개발 환경(IDE) 내에서 새 프로젝트가 열리면 개발자는 펌웨어 추가 및 애플리케이션 테스트를 시작할 수 있다. 앱빌더 툴을 사용하면 완전히 처음부터 시작하는 것은 물론, MCU를 사용하도록 구성하는 자동으로 생성된 코드가 IDE에서 열려 있고 추가 개발에 사용할 준비가 된 상태의 새 프로젝트로 마칠 수 있다.
최종 고려사항
개발자는 새 임베디드 디자인에 사용할 MCU 플랫폼을 평가할 때 프로토타이핑 및 구성 프로세스를 간소화하고 자동화하는 GUI 기반 소프트웨어 툴이 포함된 솔루션을 선택해야 한다. 실리콘랩스의 앱빌더 같은 차세대 GUI 기반 소프트웨어 툴은 개발자가 32비트 MCU의 포트 핀과 주변장치를 쉽고 빠르게 구성하도록 지원하므로 출시 시점을 단축하는 데 도움이 된다. 해당 애플리케이션의 규격을 충족하는 MCU 후보군을 확인한 개발자는 GUI 기반 툴을 사용하여 유효한 핀 아웃 옵션을 결정할 수 있다. 개발자가 확인한 유효한 MCU 옵션이 두 개 이상인 경우에는 핀 아웃 후보군을 하드웨어 디자이너에게 전달하여 가장 단순한 PCB 레이아웃을 구현하는 핀 아웃을 선택하도록 할 수 있다. 또한 주변장치, 클록 및 포트 핀을 모두 그래픽 인터페이스를 통해 구성할 수 있으므로 디자인 관련 복잡성이 더욱 줄어든다.
실리콘랩스의 앱빌더 툴 같은 고속 프로토타이핑 유틸리티를 사용하면, 대개의 경우 데이터시트를 확인하거나 레지스터 설정을 파악하지 않고도 그래픽 방식을 통해 신속하게 32비트 MCU를 구성할 수 있다. 앱빌더 툴은 디자인 프로세스를 한층 단순화하기 위해 소스 코드를 비롯해 개발자가 해당 펌웨어 개발을 위한 출발점으로 활용할 수 있는 프로젝트를 생성한다. 결과적으로 앱빌더 같은 GUI 기반 소프트웨어 구성 툴은 전반적인 디자인 비용과 복잡성을 줄이고 출시 시점을 단축하려는 개발자들을 위한 탁월한 리소스인 셈이다.
<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>