본문 바로가기 주메뉴 바로가기

기술자료

기술자료

기능 안전 애플리케이션의 임베디드 요구 사항 충족

FSG-IAR 관리자 2024-04-01 조회수 429

임베디드 시스템은 시스템 무결성에 대한 요구가 높은 복잡한 안전 관련 제품에서 흔히 발견됩니다. 이러한 경우 오작동으로 인해 사람, 장비, 환경 또는 사람이 사망할 수도 있습니다. 대표적인 예는 자동차 산업, 항공 및 의료 기기입니다. 여전히 안전에 중요한 애플리케이션은 원자력 발전소, 대중 교통 및 인프라에도 존재하며 화학 처리 산업 및 감시 시스템과 같이 명확하지 않은 분야에도 존재합니다.

임베디드 시스템이 응용 프로그램의 엄격한 요구 사항을 충족하도록 보장하는 것은 개발자에게 실질적인 과제입니다. 시스템의 하드웨어 구성요소는 안전에 중요한지 여부에 관계없이 종종 엄격한 테스트를 거치며 일반적으로 광범위한 규정을 준수해야 합니다. 하지만 시스템의 소프트웨어 부품이 신뢰할 수 있는지 확인하려면 무엇이 필요할까요? 여기에는 몇 가지 측면이 있습니다:


· 개발 프로세스 및 프로젝트 관리(예: 설계 문서, 테스트 문서)

· 미국의 FDA 및 FAA 및 기타 국가의 해당 당국과 같은 당국의 요구 사항

· MISRA C/C++ 및 IEC 61508과 같은 산업 표준과 ISO 26262, IEC 62304, EN 50128/ EN 50657과 같은 기타 여러 표준

· 컴파일러 및 실시간 운영 체제와 같은 개발 도구


본 기사에서는 이 마지막 항목에 초점을 맞추고 IAR Embedded Workbench 및 IAR Visual State와 같은 개발 도구를 사용하여 임베디드 시스템에서 기능 안전(FuSa)을 보장하는 방법에 대해 설명합니다.


FuSa 애플리케이션의 상태 머신

IEC(International Electrotechnical Commission)는 1906년에 설립된 전기 및 전자 기술에 대한 선도적인 국제 표준 기구입니다. IEC에서 발표한 표준은 일반적으로 전 세계적으로 국가 표준이 됩니다.

IEC 61508은 4가지 SIL(안전 무결성 수준) 수준에 따라 안전을 평가하는 기능 안전 표준입니다. 표준의 파트 3은 '소프트웨어 요구 사항'이라고 하며 소프트웨어 품질 관리 시스템, 소프트웨어 안전 수명 주기 및 기능 안전 평가에 대한 요구 사항을 다룹니다.

IEC 61508의 명시적인 권장 사항 중 하나는 이벤트 구동 시스템에 대한 안전 무결성 수준 3(SIL3) 이상을 충족하기 위한 설계 방법으로 상태 시스템을 사용하는 것입니다. 목표는 일부 실수와 누락을 감지할 수 있도록 명세를 모호하지 않고 일관되게 표현하는 것입니다.

IAR Visual State는 상태 머신을 기반으로 하는 디자인 도구입니다. 설계 사양에서 코드를 생성할 수 있으므로 수동 변환 오류의 일반적인 원인을 제거할 수 있으므로 특히 무결성이 높은 애플리케이션에 적합합니다.  

또한 고급 검증 엔진은 사양 수준에서 직접 특정 속성의 유무를 증명할 수 있습니다. IAR Visual State는 MISRA C/C++의 표준 지침을 따르는 버그 없는 코드를 생성합니다. 사용자는 예를 들어 데드 엔드, 충돌 전환 및 도메인 오류를 확인하여 모델을 확인할 수 있습니다.


그림 1: IEC 61508의 명시적 권장 사항 중 하나는 IAR Visual State에서 사용되는 상태 머신을 이벤트 기반 시스템에 대한 SIL3(안전 무결성 수준 3) 이상을 충족하는 설계 방법으로 사용하는 것입니다.

FuSa 애플리케이션의 검증

시스템이 복잡할수록 테스트가 더 어려워집니다. 특히 이벤트 기반 시스템에서는 입력과 전제 조건의 가능한 조합 수가 너무 방대 해집니다. 수동 테스트 대신 엔지니어는 시스템의 논리와 동작을 테스트할 수 있는 도구에 의존해야 합니다.

IAR Visual State는 상태, 전환 및 입력/출력에 대한 테스트 범위를 분석하고 복잡한 상태 조합에 대한 테스트 벡터를 생성하여 도움을 줄 수 있습니다. 또한 공식적인 모델 검사를 수행하여 설계에서 원하지 않는 데드 엔드와 도달할 수 없는 상태 및 전환을 찾을 수 있는 수학적 증명 엔진을 갖추고 있습니다.


RTOS

높은 무결성 제품 또는 안전 필수 시스템의 많은 제조업체는 사내 실시간 운영 체제를 사용합니다. 그러나 상업적으로 이용 가능한 시간 절약 및 비용 효율적인 대안이 있습니다. 관련 RTOS가 이미 승인되었고 타당성을 입증하는 데 필요한 모든 문서가 있는 경우 제품 또는 시스템을 인증하는 프로세스가 훨씬 더 편리합니다.

높은 무결성 시스템을 위해 잘 테스트되고 현장에서 입증된 RTOS의 한 가지 예는 높은 무결성 애플리케이션과 오랫동안 연관되어 있는 SCIOPTA RTOS입니다. SCIOPTA 선점형 멀티태스킹 고성능 실시간 커널에는 직접 메시지 전달을 포함하여 높은 무결성 작업에 적합한 많은 내장 안전 기능이 포함되어 있습니다. SCIOPTA는 SIL3(안전 무결성 수준 3)에서 TÜV의 IEC61508 인증을 받았습니다. 이 자격은 높은 무결성 응용 프로그램을 개발하기 위한 훨씬 더 매력적인 옵션이 됩니다.

또한 WITTENSTEIN 고 무결성 시스템의 SAFERTOS는 중요한 시스템에서 사용하기 위해 사전 인증된 커널이며 FreeRTOS 기능 모델을 기반으로 하지만 안전 시장을 위해 완전히 재설계되었습니다. SAFERTOS는 TÜV SÜD의 독립적인 인증을 받았으며 IEC61508 SIL3, EN62304 및 FDA510(k)를 포함한 여러 표준에 대한 완전한 수명 주기 문서 및 인증을 제공합니다.


ISO/ANSI C

프로그래머, 테스터 및 코드 검토자 모두에게 작업 중인 코드는 ISO/ANSI C 표준 언어 정의에 익숙할 때 예상되는 정확한 의미와 의미 체계를 가져야 합니다. 표준에서 벗어난 컴파일러를 사용하면 코드가 이상하게 작동하는 이유를 정확히 파악하는 데 시간이 낭비될 뿐만 아니라 개발자가 생성된 코드에 문제가 있다는 사실조차 인식하지 못할 가능성이 있습니다. 수정하기에는 너무 늦을 때까지 코드를 작성합니다.

마찬가지로 중요한 결정은 컴파일러 공급업체가 언어 표준에 따라 구현 정의 및 정의되지 않은 동작을 문서화하는 컴파일러를 사용하는 것입니다. 구현 정의 동작에 의존하는 것이 좋은 아이디어인 드문 상황에서는 코드 동작이 문서화되어 있으면 훨씬 더 좋습니다. 이렇게 하면 예상대로 작동할 것이라는 확신이 사용자에게 더 많이 제공됩니다. 컴파일러 공급업체가 이러한 코너 케이스를 작성하지 않는다고 가정합니다. 이 경우 예를 들어 최적화가 켜져 있거나 컴파일러 버전을 업그레이드해야 하는 경우 생성된 코드의 동작에 의존할 수 없습니다.


산업 표준 MISRA C/C++, CWE 및 CERT C/C++ 준수

IAR의 IAR C-STAT 코드 분석 애드온은 ISO/ANSI C 지원 외에도 MISRA C/C++, CWE 및 CERT C/C++도 지원합니다.

IAR C-STAT는 MISRA 규칙 세트 및 CERT C/C++ 보안 코딩 표준에 의해 정의된 규칙과 CWE에서 설명하는 몇 가지 약점에 대해 몇 가지 보안 검사를 수행합니다. 컴플라이언스 작업을 더욱 단순화하기 위해 IAR C-STAT는 CWE의 네이밍 약점과 일치하는 출력을 제공합니다.


MISRA

The Motor Industry Software Reliability Association (자동차 산업 소프트웨어 안정성 협회) 규칙은 전 세계적으로 그리고 다른 산업 부문으로 확산되었으며, 이 규칙 집합은 현재 임베디드 산업에서 가장 널리 사용되는 C 하위 집합입니다. 최신 버전인 MISRA-C:2012는 143개의 규칙과 16개의 소위 지시사항을 포함하고 있습니다. 규칙은 필수, 필수 또는 자문으로 분류되며 정수 크기와 같은 가능한 컴파일러 차이 방지, 오류가 발생하기 쉬운 함수 및 구조체 사용 방지, 코드 복잡성 제한, 코드 유지 관리 가능성 보장 등의 영역을 다룹니다.


CWE

Common Weakness Enumeration은 커뮤니티에서 개발한 사전으로 약점과 잠재적 결과, 가능한 완화, 코드 샘플, 분류 및 참조에 대한 설명이 포함되어 있습니다. 소프트웨어 약점을 더 잘 이해하고 관리하는 데 도움을 주고 이러한 약점을 찾을 수 있는 소프트웨어 보안 도구 및 서비스를 보다 효과적으로 선택하고 사용할 수 있도록 하기 위한 것입니다.


CERT

C 및 C++의 보안 코딩을 위한 규칙 집합을 제공합니다. 각 지침에는 제목, 설명, 비준수 코드 예 및 준수 솔루션의 예가 포함됩니다. 표준에는 코딩 및 구현과 낮은 수준의 설계 오류를 방지하기 위한 지침이 포함됩니다. 이 기준은 악용 가능한 취약점으로 이어질 수 있는 안전하지 않은 코딩 관행과 정의되지 않은 동작을 제거하는 것을 목표로 합니다.

높은 코드 품질을 추가로 보장하기 위해 런타임 분석 도구 IAR C-RUN은 런타임 동안 실제 오류를 찾는 데 도움이 될 수 있습니다. IAR C-RUN은 개발 환경 내에서 직접 애플리케이션 실행을 확인하여 런타임 분석을 수행합니다. 산술 문제, 범위 문제 및 힙 무결성에 적합하며 무엇이 잘못되었는지, 어디에서 잘못되었는지 알려줍니다.

산업 표준의 주요 목적은 구현 정의 동작에 불필요하게 의존하지 않고 서로 다른 대상 아키텍처 간에 쉽게 이식할 수 있는 안전하고 모호하지 않은 코드를 달성하도록 돕는 것입니다.


사전 인증 및 검증된 툴체인

기능적 안전이 보장된 애플리케이션을 구축하려면 특정 도구 체인을 선택하기 위한 광범위한 문서를 제공하고 해당 부문의 특정 요구 사항을 준수함을 입증해야 합니다. 사전 인증된 솔루션을 선택하면 시간과 비용이 절약되어 코드와 애플리케이션의 기능에 더 집중할 수 있습니다.

IAR은 Linux(Ubuntu 및 Red Hat) 및 Windows에 대한 교차 플랫폼 지원이 포함된 IAR Embedded Workbench 및 IAR 빌드 도구의 인증된 버전을 제공합니다.

인증된 버전은 포함된 TÜV SÜD의 기능 안전 인증서, TÜV SÜD의 안전 보고서 및 안전 가이드 덕분에 애플리케이션 검증을 간소화할 수 있습니다.

또한 IAR Embedded Workbench IDE와 IAR Visual State는 긴밀하게 통합되어 있습니다. IAR Visual State에 의해 생성된 소스 코드 파일은 IDE의 프로젝트 연결 파일을 통해 자동으로 처리되며, C-SPYLink 플러그인은 상태 머신의 그래픽 애니메이션을 포함하여 IAR C-SPY 디버거에 직접 높은 수준의 상태 머신 모델 피드백을 가능하게 합니다. .


결론

요약하면 안전이 중요한 시스템을 위한 도구 제공업체를 선택할 때 개발자는 솔루션이 ISO/ANSI C 표준을 준수하고 IEC 61508의 요구 사항과 가급적 MISRA C/C++, CWE, 및 CERT C/C++ 표준; 컴파일러 공급업체는 언어 표준에 따라 구현 정의 및 정의되지 않은 동작을 문서화하고 정적 및 런타임 분석 도구를 사용하여 소스 코드를 테스트 및 검증할 수 있으며 모든 임베디드 개발에 적극 권장되고 인증 노력에 필수입니다. 상태 머신 설계 도구를 선택하면 MISRA C/C++의 표준 지침에 따른 자동 코드 생성을 포함하여 이벤트 기반 시스템에 대한 IEC 및 ISO 요구 사항을 보다 쉽게 준수할 수 있습니다. 안전 필수 시스템에 대한 경험이 있는 솔루션 제공업체는 기존 고객 및 타사 평가자의 참조를 제공할 수도 있습니다.

RTOS를 사용해야 하는 경우 안전이 중요한 애플리케이션에 대해 이미 문서화되고 인증되었으며 정확한 설계 환경에 사전 인증된 도구로 원활하게 통합되는 상용 RTOS를 선택하는 것도 의미가 있습니다.

이러한 간단한 지침을 따르면 개발자는 안전이 가장 중요할 때 도구가 사용자를 실망시키지 않을 것이라는 확신을 가질 수 있습니다.

 

참조

www.iar.com

TÜV  Süd, https://www.tuvsud.com/

Motor Industry Software Reliability Association, www.misra.org.uk

Common Weakness Enumeration, www.cwe.mitre.org

CERT C Secure Coding Standards, www.wiki.sei.cmu.edu/confluence/display/c 

Sciopta Systems AG, www.sciopta.com

WITTENSTEIN high integrity systems, www.highintegritysystems.com

TÜV Rheinland Group, www.tuv.com



* 위의 글은 IAR 에서 제공되었습니다.

다음글
기능안전 가이드 - PART 1. 기능안전 소개
이전글
이전글이 없습니다.
위로가기