AUTOSAR OS(Part.3)
2009년 12월호 지면기사  / 

AUTOSARA를 공부하다 보면, 기존에 있던 소프트웨어 용어를 새롭게 만든 신종 언어가 많이 나온다. MCAL은 쉽게 말해 AUTOSAR용 Device Driver이다(그림 1). 그리고 MCAL이 제공이 되면 각종 자동차 ECU를 제어할 수 있게 되는데, 그림 1의 빨간색 부분의 MCAL 부분을 이용해 그림 2와 같이 차량의 전방 전조등을 제어할 수 있다. MCAL이 일반적인 Windows CE나 임베디드 리눅스의 Device Driver와 다른 점은 OS가 없어도 동작이 된다는 것이다. 즉 펌웨어 레벨의 Device Driver라고 볼 수 있으며, AUTOSAR에서는 각 Device Driver에 대해서 규정된 API 이름을 지킬 것을 요구하고 있다. 실제 사용하기에는 부족한 API에 대해서는 Vendor 의존의 API로 반도체 회사에서 자체적으로 확장하여 API를 만들어 제공한다. AUTOSAR의 가장 큰 특징은 XML을 이용한 소스 코드 자동 생성이므로, Vendor 의존의 확장 API를 만들어서 제공할 경우 새로운 XML parameter를 만들어서 이와 연동하여 자동으로 확장 API의 소스 코드를 생성할 수 있도록 한다.


새로운 XML parameter 만드는 방법

필자가 “AUTOSAR의 실무 이해” 편에서 설명했듯이, AUTOSAR 명세서에서 원하는 기능이 제공되지 않으면 독자 기능의 API를 만들게 되는데, 이를 위해 새로운 XML을 추가한다고 말했다.  새로운 XML을 추가하기 위해서는 AUTOSAR에서 제공되는 Ecuc ParamDef.arxml에 XML을 추가하는 것이다. 예를 들어 FreeScale이란 반도체 회사가 만든 MCAL에서 확장 기능 API를 제공한다면, FreeScale 전용 EcucParamDef_ FreeScale.arxml도 같이 제공될 것이다. 참고로 각 자동차 회사별로 EcucParamDef_자동차회사.arxml를 가지고 있다. 즉 자동차 회사의 특색에 맞게 새롭게 조정한 XML 설정 정보가 있다. 한 자동차 회사에서 사용하는 BSW 모듈의 정의가 되어 있다.
AUTOSAR 관련 개발 툴을 만든 회사는 EcucParamDef.arxml을 수정할 줄 모르면, AUTOSAR에서 제공하지 않는 독자적인 기능도 넣을 수 없다고 볼 수 있다. 반도체 회사도 이러한 점을 고려해야 한다.


Freesclae에서 제공하는 MCAL 소스 코드 구하기

스웨덴 Arctic Core 프로젝트에서 AUTOSAR BSW 모듈의 Sample 소스와 FreeScale의 MCAL 소스 코드를 다운로드 받을 수 있다. 그리고 Eclipse 개발환경 툴도 제공한다. Eclipse 개발환경에서 간단하게 빌드하여 BSW 모듈 이미지를 만들어 FreeScale 보드에서 실행해 볼 수 있다.
공개된 소스에서는 소스 코드 생성기인 Generator나 XML 설정 툴인 Configuration 툴은 제공하지 않는다. 그렇지만 MCAL 예제 소스로는 완벽하다고 볼 수 있다.

스웨덴의 Arctic Core 프로젝트
다운로드 사이트 : http://arccore.com/download/Arctic-Core-Studio
FreeScale에서 제공되는 MCAL소스코드:
/boards/mpc5516it/config
/boards/mpc5567qrtech/config
Eclipse 개발환경 : http://download.arccore.com/studio/v1.x/ Setup.exe


AUTOSAR에서 요구되는 소스 코드 최적화

자동차용 소프트웨어 개발에 있어서 가전이나 휴대폰 등 임베디드 개발과 가장 큰 차이점은 기능 구현도 중요하지만 구현한 함수의 안전성, 실행 속도, ROM/RAM 경량화를 들 수 있다. 또한 안정성을 위해 함수의 리턴 값 구현이나 Generator에서 데이터 일관성 보장을 위해 베타 제어를 자동으로 구현해 주는 기능, 혹은 MISRA C 규격에 맞는 소스 코드 작성이 있다.
MISRA C는 C 언어로 소프트웨어 개발에 대한 패턴으로 하드웨어가 발달함에 따라서 100% 맞다고 할 수는 없다. 그러나 MISRA C 언어가 왜 안전하게 되는 지 원리는 알고 있어야 한다.

MISRA-C 소개
유럽 자동차 업계 단체인 MISRA(Motor Industry Software Reliability Association)가 발표한 자동차용 소프트웨어 개발에 C 언어를 이용할 때의 가이드라인으로, Guidelines for the Use of the C Language in Critical Systems(MISRA-C:2004)」가 있다.
C 언어로 보다 안전한 소프트웨어를 기술하기 위한 규정이 되어 있으며, 버그를 발생시키지 않기 위한 중요한 룰을 규정하고 있다.
MISRA-C : http://www.misra-c.com/
MISRA-C++ : http://www.misra-cpp.org/

함수의 실행 속도를 빠르게 하는 방법은 1개의 함수 내부를 빠르게 하는 방법도 있지만, 하나의 기능이 실행될 때 연관된 함수의 연결 고리를 가장 짧게 만드는 것도 실행 속도를 빠르게 하는 방법이다. 예를 들어 AUTOSAR에서 명시한 Z 기능을 실행시키기 위해서 W( ) X( ) Y( ) Z( )가 있다면, W( ) Z( )로 구현하는 게 가장 빠를 것이다. AUTOSAR 규약에서 불필요한 부분에 대해 실행 속도를 생각해 생략하는 것이다.
MCAL에서는 소스 코드 최적화도 필요하지만, AUTOSAR Compiler Abstraction(AUTOSAR용 컴파일러 추상화)의 규약을 지킬 필요가 있다. 이것은 컴파일러와 반도체 회사에 의존하는 AUTOSAR 코딩 규약이다.

AUTOSAR용 컴파일러 추상화 :
http://www.autosar.org/download/specs_aktuell/AUTOSAR_SWS_CompilerAbstraction.pdf


AUTOSAR Compiler Abstraction

AUTOSAR Compiler Abstraction에 대한 헤더 파일의 구조는  그림 5와 같다. 이 규약에 따라서 소스 코드를 작성하면, 컴파일러에 의해서 최적화가 가능하다. 그러나 C 언어 매크로 함수임으로 규약에 따라 코드를 작성하면 디버깅 하기가 어려워진다. 그러므로 C 언어 매크로 함수를 사용하지 않고 안전하게 개발한 다음, 소스 코드 생성기인 Generator에서 자동으로 AUTOSAR Compiler Abstraction 규약으로 변환시켜 구현하면 된다. 현재 AUTOSAR하고 비슷한 형태의 국제표준화 소프트웨어인 경우 각자의 고유 코딩 규약이 있다. 대표적으로 임베디드 멀티미디어 국제표준 소프트웨어인 Openmax(http://www.khronos.org/openmax)도 독자 코딩 규약이 존재한다. 코딩 규약의 원리에 익숙하면 다른 국제 표준 소프트웨어도 쉽게 대응이 가능하다.

각 반도체 회사마다 Compiler.h가 조금씩 다르며, 컴파일러 회사와 반도체 회사가 제공해야 한다.
아래의 예제는 컴파일러 CodeWarrior와 FreeScale S12X에서 제공하는 Compiler.h 파일이다.



<저작권자 © AEM. 무단전재 및 재배포, AI학습 이용 금지>


  • 100자평 쓰기
  • 로그인


  • 세미나/교육/전시

TOP