본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/1장: Arm 프로세서 소개

[ARM] ARM Errata란

프로젝트를 진행하다보면 소프트웨어적으로 도저히 그 원인을 분석할 수 있는 버그를 만날 때가 있습니다.
어떤 어셈블리 명령어를 실행한 다음에 갑자기 리셋이 되거나, 특정 CPU가 핫 플러그인 동작 후에 못 깨어나는 문제들이죠.
 
이럴 때 보통 하드웨어적으로 문제가 있는 지 의심을 하며, 보통 전원이 제대로 공급되는지, 혹은 메모리 비트 플립은 아닌 지 체크를 하죠.
그런데 문제가 해결이 안되면 종종 듣는 말이 있습니다. 그것은 ARM Errata입니다.
 
이번엔 ARM Errata가 무엇인지 소개합니다.
 
ARM Errata
 
ARM Errata는 용어 그대로 ARM 프로세서에 오류가 있을 때 이를 알리는 통지 번호를 의미합니다.
예를 들면, 'ARM Errata 1234567'과 같은 방식으로 전달되는데 보통 어셈블리 코드 포멧의 패치가 공유됩니다.
 
그렇다면 ARM Errata는 어떻게 전달이 될까요?
ARM 사에서 라이센싱을 한 업체에게 ARM Errata를 배포한다고 알려져 있습니다. 
 
반드시 수정해야 할 ARM Errata가 배포되면 리눅스 시스템 개발자나 커뮤니티에 공유가 되기도 합니다.
 
ARM Errata 패치 코드
 
이번에는 리눅스 커널 커뮤니티에 배포된 ARM Errata 패치 코드를 소개합니다. 
 
링크는 아래와 같은데요.
 
제목: ARM: 7345/1: errata: update workaround for A9 erratum #743622
author: Will Deacon <will.deacon@arm.com>
 
ARM 사의 개발자가 직접 리눅스 커널 소스 트리에 커밋을 생성한 것으로 보입니다. 
커미터를 보니 ARM-리눅스 커널 커뮤니티에서 가장 영향력이 있는 러셀 킹(Russell King)이 보이네요.
 
개발자 인터뷰
 
'A9 erratum #743622'과 관련된 개발자를 인터뷰 했는데요. 그 분께 다음과 같은 질문을 했습니다.
 
    * A9 erratum #743622를 반영하지 않았을 때 어떤 현상을 겪었나?
 
일단 한 달동안 개고생을 했는데, 어쩌구, 저쩌구...
메모리가 깨지고 갑자기 시스템이 리셋되는 현상을 겪었다고 합니다.

 

< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>