ARM 프로세서 툴 체인, ISO 26262 준수 촉진
2015년 05월호 지면기사  / 편집부

의료, 운송, 항공, 산업 등 다양한 분야에 걸쳐 안전과 직결된 애플리케이션을 위해 ARM 프로세서를 선택하는 개발자가 증가하고 있는 가운데, 이러한 프로세서에서 실행되는 소프트웨어는 작은 오류도 참혹한 결과를 일으킬 수 있다는 점에서 그 어느 때보다도 엄격한 검사를 거치고 있다.

이러한 오류를 피하기 위해 IEC 61508등의 안전 규격과 차량용 ISO 26262와 같이 최근에 파생된 기준은 지침서를 제공해 개발자와 고객이 소프트웨어가 최신 모범 사례에 만족하는지 확인할 수 있도록 한다.

그렇지만 규격의 어떤 부분을 적용할지 결정하고, 어떤 것이 적용되지 않는지 정당화하고, 모든 설계가 실질적으로 규격을 준수하고 있는지 확인하는 것은 매우 힘들며 시간 소모 또한 크다. 빠른 설계 사이클의 컨슈머급 기기와 자동차 안전 시스템의 통합이증가하면서 시간은 사치가 됐고, 그에 따라 개발자는 줄어든 설계 사이클 시간을 만족하는 데 적응해야 하는 추가 부담을 겪고 있다.

다행히도 툴 체인 공급업체는 일반적인 소프트웨어 개발자는 갖고 있지 않은 수준의 소프트웨어 개발 도구 및 운용에 대한 정보와 지식을 보유하고 있어 모든 안전 관련 소프트웨어 개발자를 지원하는데 독보적인 우위를 점하고 있다.

특히, 시스템 안전에 직접 영향을 끼치고 후속 기능 디자인 테스트 동안 탐지가 될수도 있고 안 될 수도 있는 오류를 주입할 수 있는 컴파일러의 경우 더욱 더 그러하다. 그에 따라 ARM 기반 프로세서를 사용하는 개발자는 빨라지고 있는 시장진입 속도에 대한 압박에 적응하는 동시에 규격 준수를 보장하기 위해 툴 체인 업체가 제공해야 하는 것은 무엇인지 면밀하게 살펴봐야 한다.




ARM의 확산

모바일 쓰나미를 이끌며, 생태계(Echo-system)에서 지원되는 ARM 기반의 프로세서는 스마트폰, 최신 임베디드 기기에서부터 인프라 장비와 데이터 서버에 이르는 애플리케이션을 발굴했으며, 이제 개발자들로 인해 안전필수(Safety-Critical) 애플리케이션으로도 진입하고 있다.

이러한 애플리케이션은 산업(모터 제어, 공장 자동화, 원격 모니터링), 자동차(섀시 컨트롤, 신체와 안전, 대시보드, 지능 센서, 엔진제어, 잠금방지 제동), 의료(인퓨전 펌프, 심박조율기, 환자 모니터링), 철도(신호 및 통신 제어), 원자력(제어 패널, 모터 제어, 시스템 모니터링) 그리고 항공 분야 등을 포함한다.

일반적으로는 시스템 전반에 걸친 더 많은 지능화에 대한 필요는 물론, 더 낮은 비용과 사용 중 더 많은 기능과 업데이트를 제공할 수 있는 통합과 유연성에 대한 필요로 폭넓게 적용되기 시작했다. 또한, 정해진 수의 기능을 제공하고자 하드 코딩된 로직을 사용한 바 있는 수많은 기능이 이제 소프트웨어로 제어되는 32비트 마이크로컨트롤러로 통합되면서 완전히 새로운 상황이 도래했다.

이렇듯 마이크로컨트롤러와 프로그램 가능성(programmability)으로 이동하면서 안전은 소프트웨어 영역에 포함되기 시작했고, IEC61508 준수는 안전필수 애플리케이션용 소프트웨어 개발자의 책임이 됐다. 본래 전기/전자(E/E) 시스템용 기능안전성을 다루던 이 규격은 안전 필수 시스템 내 컴퓨팅 요소의 애플리케이션 증가를 참작해, 이제 전기, 전자 및 프로그램 가능한 전자장치도 포함한다.

기능안전성은 직간접적으로 불필요한 위험이나 부상을 방지하고자, 안전 관련 시스템이 올바르게 입력에 반응하는지 확인한다.

IEC 61508의 언어가 모호하기 때문에, 철도 운송을 위한 EN50126/8/9, 의료 장치를 위한 IEC 60601, 원자력을 위한 IEC60880, 도로 차량을 위한 ISO 26262를 비롯한 특정 산업 규격이 파생됐다. 후자인 ISO26262는 구체적으로 최대 중량 3,500 kg까지의 대량생산 승용차에 설치되는 안전 관련 시스템에 적용된다. 장애인을 위해 개조된 차량과 같은 특수용도 차량의 특별한 E/E 시스템은 해당되지 않는다.

표준 자동차에서 150개의 마이크로 컨트롤러를 찾는 것이 흔치 않은 일이 아니며, 소비자 지향 내비게이션 시스템이 이제 운전자 지원, 움직임 감지 시스템, 추진(propulsion), 차량 내 동역학 제어, 능동 및 수동 안전 시스템 등과 통합되면서 자동차는 컴퓨팅 장치가 어떻게 안전 필수 시스템으로 이동하는지에 대한 사례연구 대상이 됐다.

또 3년에서 10년이 걸리는 다른 장기 사이클과 대조되는 컨슈머 장치의 디자인 사이클(12-18개월)을 만족해야 하는 안전 필수 시스템 개발자의 부담을 고려했을 때 자동차는 선봉과 같다. 모두 어떤 소프트웨어 루틴을 실행하는 이러한 150개의 마이크로컨트롤러면, 컴파일러와 같은 기본적인 것도 기능 테스트 중 감지가 되거나 되지 않을 수도 있는 찾기 어려운 오류를 주입하는 것만으로 시스템을 실패하게 할 수 있다. 이 점은 언제나 위험 요소이나, ISO26262와 함께 IEC 61508을 준수하면 수용할 수 있을 수준으로 위험을 감소시킬 수 있다. 예를들어, IEC 61508의 모범 사례는 처음부터 신뢰하는 도구를 사용할 것을 권고한다.

하지만 컴파일러는 분류(Classification) T3의 오프라인 지원 도구로 여겨지며, 이는 안전관련 시스템의 실행코드에 직간접적으로 영향을 끼칠 수 있다는 것을 의미한다는 점에서 이들의 선택은 “정당화돼야 한다.”

[IEC 61508-3 Section 7.4.4.3] 이러한 정당화는 도구 성숙도와 안정도를 보여주는 검증된 근거와 더불어 업계 전문가의 제 3자 평가와 부가 자료를 통해 입증될 수 있다.



모범 사례는 또한 결과물과 더불어 MISRA C/C++와 같은 언어 서브셋(subset) 사용을 확인하는 것까지 포함한다. 목표물에 사용될 소프트웨어 테스트는 물론 매우 중요하지만, 가능한 모든 경우를 검사했는지는 어떻게 확인할 수 있을까? 실행하지 않은 코드는 결국에는 확인될 수 없다. 따라서 코드커버리지(code coverage) 분석은 실행되지 않은 코드를 식별해 애플리케이션을 철저하게 검사했음을 확인하는 데 도움을 준다. 코드 커버리지는 소스코드 계측을 사용하거나 추적 데이터를 사용해 분석할 수 있는데, 스트리밍 추적이 가장 간섭적이지 않다.

언어 서브셋과 관련해, 다수의 경우 고급 프로그래밍 언어는 불완전하거나 불확실하게 명시되어 있어 각각의 컴파일러가 다른 행동을 하도록 한다. ‘스트릭트 모드(strict mode)’와 MISRA C/C++와 같은 언어 서브셋은 규격 언어와의 언어 일치 확인, 정의되지 않은 행동에 대한 규칙 명시, 도구 없는 사용에 대한 옵션 제거, 일관적인 코딩 스타일(예를 들어, /*...*/ 대 //) 실행, 가독성 향상, 필요한 테스트의 전체 범위 감소 등을 실시하는 동시에 이러한 불확실성을 제거하도록 설계됐다.

ISO 26262는 IEC 61508 보다 한 발 더 나가, 다른 기술에 기반을 두는 안전 관련 시스템을 고려할 수 있는 더욱 자세한 프레임워크를 제공한다. 수명주기 관리부터 공급업체와의 관계까지 포함하나, 소프트웨어 개발자에 대해서는 자동차 안전무결성 수준(ASIL, Automotive Safety Integrity Level)이라고 불리는 무결성 수준 확인을 위한 자동차용 위험기반 접근법을 제공한다.
ASIL으로 ISO 26262의 적용 가능한 필요조건을 명시해, 불합리한 잔여 위험을 피하며, 또한 적당하고 수용 가능한 수준의 안전 달성을 보장하는 검증 및 확인을 위한 필요조건을 제공한다.


권고: 기본적으로 준수

다행스러운 사실은 ISO 26262 발행 이후에 시작된 설계는 법적 보호를 위한 ‘최신’모범 사례를 보여주기 위해 안내지침서를 반드시 준수할 필요가 없다는 것이다. 그러나 똑똑한 업체들은 보드 전반에 걸쳐 이를 준수하도록 지시하고 있는데, 문화적으로 좋은 일반 관행이고 일관성이 보장되기도 하면서, 또한 지금 필요하지 않은 비용이 추후에 필요로 할 수 있다는 점을 고려했을 때 비용을 줄일 수도 있기 때문이다. 가장 좋은 것은 처음부터 제도화하는 것이다.

IEC 61508과 ISO 26262를 준수하는 것은 모든 단계에서 문서화를 요구하며, 일례로 오프라인 도구 사용에 대한 정당화 입증부터 도구 움직임, 매뉴얼, 위해 요인 분석, 컴파일러 결함 보고서, 버전 기록, 테스트 보고서, 실제 결과와 예상 결과 간의 차이에 대한 보고서 등이 있다.
이러한 문서화는 노동집약적이며 시간 소비와 비용이 높아, 툴 체인 업체가 관여한다. 이들은 도구에 대한 전문성을 갖추고 있으며, 예를 들면 컴파일러의 작동법, 안전 필수 애플리케이션에 있어 사용하면 안 되는 것, 안전 관련 개발의 확고한 결과물을 얻기 위한 사용법 등을 알고 있다.

좋은 예는 독일 안전 감독기관 T¨U VS¨UD 인증을 받은 ARM 컴파일러 툴 체인이다. 이 인증으로 고객은 별도의 자격 취득 없이도 안전 무결정 수준 3(SIL3, IEC 61508)과 자동차용 SIL D(ASIL D, ISO 26262) 등에 준하는 안전 관련 개발을 위한 ARM 컴파일러 빌드 툴을 사용할 수 있다. 안전 매뉴얼, 결함 보고서, 테스트 보고서, 개발 프로세스 보고서 등의 근거 데이터를 제공하는 ARM 컴파일러 자격 키트(ARM Complier Qualification Kit)은 T¨UV 인증을 보강한다.

이러한 제 3자 인증과 뒷받침하는 부가 자료는 시장에 더욱 신속하게 제품이나 설계를 선보이고 빠른 디자인 사이클은 시간이 전부임을 의미하는 애플리케이션에서 다음 설계의 성공을 가능한 보장하면서, 그야말로 수개월의 작업시간, 노력, 관련 비용을 바로 제거할 수 있다. ARM의 안전 관련 소프트웨어 개발을 위한 솔루션에 대한 자세한 내용은 http://www.keil.com/safety 또는 http://ds.arm.com/solutions/safety에서 확인할 수 있다.
 



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


  • 100자평 쓰기
  • 로그인


  • 세미나/교육/전시

TOP