프로젝트를 진행하다보면 소프트웨어적으로 도저히 그 원인을 분석할 수 있는 버그를 만날 때가 있습니다.
어떤 어셈블리 명령어를 실행한 다음에 갑자기 리셋이 되거나, 특정 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 아키텍처의 구조와 원리' 저자>
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 > 1장: Arm 프로세서 소개' 카테고리의 다른 글
[ARM프로세서] ARM 프로세서를 공부하는 방법의 문제점 (0) | 2023.06.10 |
---|---|
[ARM프로세서] ARM 프로세서를 일반 SW 개발자도 배워야 하는 이유 (0) | 2023.06.10 |
[ARM프로세서] 소프트웨어 개발자가 ARM 프로세서를 배워야 하는 이유 (0) | 2023.06.10 |
[ARM] 레지스터란(ARMv7, ARMv8) (0) | 2023.06.10 |
[ARM] ARM 프로세서 소개 - RISC와 CISC란 무엇인가? (0) | 2023.06.09 |