TECHNICAL REPORT

작은 팁으로 시작해서 매일 매일의 개발 과정을 좀 더 효율적으로 활용해 시간을 줄일 수 있다면 보다 좋은 개발 환경이 구축될 것이다. IAR 임베디드 워크벤치(Embedded Workbench for ARM, 이하 EWARM)에서 개발 과정에서 자주 반복되는 작업들을 좀 더 효율적으로 사용할 수 있는 방안에 대해 살펴보고, 스마트 개발 환경에 대해 함께 생각해 보겠다.

 

병렬 빌드(Parallel Build)
요즘 대부분의 컴퓨터들이 멀티코어 CPU를 가지고 있다. 병렬 빌드(Parallel build)는 빌드 과정에 대해 프로세서들을 효율적으로 사용하게 한다. 병렬 빌드를 사용하면 프로세서 수만큼 나누어 작업이 동시에 처리된다. 병렬 빌드를 활성화하기 위해서는 툴(Tools) → 옵션(Options)을 선택한다.

 

[그림1]

그리고 ‘프로젝트(Project)’ 카테고리에서 ‘이네이블 패럴렐 빌드(Enable parallel build)’를 선택한다. 

 

[그림2]

‘프로세스(Processes)’ 항목은 컴퓨터에서 사용할 수 있는 코어의 수를 명시한다. 다음의 차트는 동일한 예제를 실제로 빌드한 시간을 비교하고 있다. 빌드 시간이 감소하면 그만큼 더 많은 시간이 애플리케이션을 테스트하는 것에 사용될 수 있다. 

 

[그림3]

 

메이크 or 리빌드 올(Make or Rebuild All)
실행 파일이나 라이브러리 파일을 생성하기 위해 프로젝트→메이크(Make) 또는  프로젝트→리빌드 올(Rebuild All)을 실행합니다. 리빌드 올은 미리 컴파일된 오브젝트 파일들을 지우고 모든 파일에 대해 새로 컴파일과 링크 작업을 한다. 메이크는 마지막으로 빌드하고 변경된 파일에 대해서만 컴파일, 링크 작업을 진행한다.

헤더 파일을 변경하거나 프로젝트 옵션 설정을 바꾼 경우에는 리빌드 올을 실행하는 것이 좋다. 단순히 한두 개의 소스코드를 변경한 경우라면 메이크를 이용하는 것이 좋다. 

 

[그림4]

다운로드 앤드 디버그(Download and Debug) 그리고 디버그 위드아웃 다운로딩(Debug without Downloading)
IAR 임베디드 워크벤치에서 디버그 세션을 시작하기 위해 툴바에 2개의 버튼이 있다.

 

[그림5]

 

[그림6]

다운로드 앤드 디버그 버튼을 클릭하면 C-SPY 디버거는 실행 데이터를 플래시 메모리 또는 RAM에 다운로드하고 C-SPY에서 디버그 정보를 로드한 이 옵션이 빌드한 오브젝트를 디버깅하는데 안전한 방법이다.

디버그 위드아웃 다운오딩은 타깃 디바이스의 메모리에 실행 자료를 다운로드하지 않고 바로 디버깅 정보를 로드한다. 실행 데이터가 변경되지 않은 상태라면 이 기능으로 디버그 작업을 재시작할 수 있다. 필요 없는 다운로드 작업을 생략해 시간을 절약할 수 있다. 그러나 주의하실 점은 빌드된 내용이 변함이 없어야 한다. 변경된 경우에는 디버그 정보가 잘못돼 오동작을 하게 된다.

 

메이크 & 리스타트 디버거(Make & Restart Debugger)

[그림7]

디버그를 하는 동안 잘못된 소스 코드를 변경하게 된다. 소스 코드를 변경한 내용은 알고 있으나 이러한 변경된 내용이 바로 적용되지는 않는다. 변경된 내용을 적용하기 위해서는 디버그 작업을 종료하고 메이크 그리고 다운로드 앤드 디버그 버튼을 클릭해야 한다. 이러한 작업을 간단하게 처리하기 위해 메이크 & 리스타트 디버거 버튼을 제공한다. 이 버튼을 클릭하면 디버그 작업을 멈추고 메이크가 실행되며 디버그 작업이 재시작된다. 수동적인 여러 작업들은 간소화할 수 있으며 여러 시도와 오류에 대한 작업이 훨씬 편리해 진다.

 

오토 인덴트(Auto Indent)
C/C++ 언어에 있어 들여쓰기는 의무적인 규칙은 아니다. 컴파일러는 코드에 들여쓰기가 없어도 정상적으로 코드를 생성한다.  

 

[그림8]
[그림9]

[그림9]와 같이 소스 코드가 작성돼 있는 경우 해당 부분을 선택하고 Ctrl + T 키를 클릭하면 [그림10]과 같이 정렬된다. 

 

블록 코멘트(Block Comment)
프로젝트를 디버그하는 경우에 작은 테스트 코드를 작성한 후 동작시키거나 비활성화하며 테스트 작업을 진행한다. 테스트 코드 영역을 활성화하거나 비활성화 하는 방법은 여러 형식으로 지원된다. 예를 들어 #if #endif 지시어 또는 /*  */ 형식의 주석 처리 방법을 이용할 수 있다. 그렇지만 #if 형식은 코드의 가독성이 감소하고 /*  */ 형식은 중첩(nested)으로 사용할 수 없다. 이러한 경우에는 // 형식의 주석을 사용하면 해결될 수 있다. 만약 블록 코멘트(Block Comment)를 사용한다면 한 줄마다 // 주석 문자를 입력할 필요가 없다.

[그림11]

 

[그림12]

 

[그림13]

그리고 주석이 달린 코드에 블록 언코멘트(Block Uncomment) 명령을 이용하면 편리하게 주석을 해제할 수 있다.

 

쇼트컷 키(Shortcut Keys)
대부분의 소프트웨어가 제공하듯이 EWARM IDE에서도 개발의 효율성을 높이기 위해 유용한 여러 종류의 키보드 단축키를 제공하고 있다. 물론 복사 기능의 [Ctrl + C] 그리고 붙여넣기의 [Ctrl + V] 키와 같은 일반적인 단축 키들도 제공된다. 또 툴에 특화된 메이크의 [F7], 다운로드 앤드 디버그의 [Ctrl + D]와 같은 단축키들도 제공된다. 유용한 단축키들을 에디트(Edit) 메뉴에서 우선 확인 할 수 있다.

 

[그림14]

 

자주 사용하는 명령을 찾고 오른편에 있는 단축키를 기억해 사용하면 작업을 빨리 진행할 수 있다. 함수의 정의 부분을 보기를 원하면 예를 들어 GPIOInit() 함수에 커서를 위치시키고 [F12] 키를 누르면 된다.

 

[그림15]

그러면 함수 정의 부분으로 변경된다. [F12]는 에디트→내비게이트(Navigate)→고 투 데피니션((Go to Definition)에 설정돼 있다. 그리고 또 하나의 유용한 단축키로는 소스 코드에서 이전 위치로 돌아가려 할 때 [ALT + Left] 키를 유용하게 이용할 수 있다. 이 키는 인터넷 브라우저의 이전 페이지로 가기키로 사용되고 있다.

 

[그림16]

사용할 수 있는 전체 단축키에 대한 정보는 툴→옵션→키 바인딩(Key Bindings)에서 확인할 수 있다.

 

[그림17]

현재 설정돼 있는 단축키를 확인 할 수 있으며 또 코멘드(Command)에 키를 지정해 사용할 수도 있다.

 

스마트 개발환경(SMART Development Environment)
마지막으로 보다 효율적인 개발 환경 구축을 위해 스마트 개발 환경에 대해 간략히 살펴보겠다. 고려해야 할 사항들에 대해 살펴보기 전에 먼저 지금의 개발 환경은 어떤지 자문해 보자.

• 하나의 MCU만으로 제품을 개발하고 있다.
• 툴은 안정적으로 동작하며 사용 방법이 간편하다.
• 작성한 소스 코드가 작고 빠른 실행 이미지로 생성된다.
• 복잡한 코드의 스마트 디바이스를 개발하기 편리하다.
• 안정적인 코드를 작성하기 위해 어떤 작업(코드 분석 툴 사용 등)을 하고 있다.
• 툴에 대한 지원(업데이트, 문의, 가이드 등)은 받고 있다.
• 멀티코어 디버깅 기능이 지원한다.
• 파워 소비에 대한 코드 디버깅 기능이 가능하다.
• 개발에 필요한 MCU 설정 코드(clock, gpio, i2c, 등)들을 쉽게 작성할 수 있다.

스마트 개발 환경의 조건은 동일한 사용 방법으로 다양한 MCU를 지원하며 안정적이고, 사용하기 편리해야 한다. 그리고 다양한 기능을 지원함으로써 개발 작업이 원활하게 진행돼 시간을 단축시킬 수 있어야 한다. 또 소스 코드에서 생성되는 결과물인 실행 코드는 크기는 작고 성능은 빨라야 한다. 복잡한 코드로 구성되는 임베디드 제품들을 개발하기 위해서 안정적인 코드가 이슈화되고 있는데 이는 코드 분석 기능 및 인증 버전의 툴들이 요구되고 있음을 의미한다. 그리고 양질의 다양한 리소스이외에도 여러 요건들을 떠올릴 수 있다. 여러 상황들을 종합적으로 고려해 개발 환경을 구축한다면 보다 효율적인 개발 작업이 이루어질 수 있다.

 

 

[그림18]

 


맺음말
EWARM에서 개발 작업을 진행하면서 짧은 시간들을 효율적으로 활용할 수 있는 내용에 대해 살펴보았다. 이를 활용해 스마트 개발 환경을 구축함으로써 스마트 기기들을 보다 효율적으로 개발하길 바란다.

 

<글 : 고성용 IAR시스템즈코리아 기술팀 상무>

<자료제공 : IAR시스템즈코리아(www.iar.com)> 

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지