기존 ARM 프로세서/아키텍처 책의 한계점 & 개선 포인트에 대해 이야기를 해보려 합니다.
이 포스팅은 저의 지극히 개인적인 의견이라는 점을 참고하고 읽으셨으면 좋겠습니다.
■ 임베디드 중심이다
ARM 책을 떠올리면 자연히 '임베디드'란 단어가 떠오릅니다. 특정 보드에서 Cortex-M3를 실습하는 구조로 구성돼 있어,
알고 싶지 않은 데이터 시트나 파형과 같은 내용이 보입니다.
임베디드 이외의 다른 개발자들은 ARM 책에서 이런 내용을 보면 자연히 거리감을 느낍니다.
=>
ARM은 임베디드 뿐만 아니라 다른 IT 기기의 영역으로 확장되고 있습니다.
일반 애플리케이션 개발자들도 ARM을 쉽게 배울 수 있도록 컨텐츠가 확장돼야 합니다.
■ 실습하기 불편하다
ARM 책이 임베디드 관점으로 집필돼 실습하기 어려운 구조로 구성돼 있습니다.
특정 보드를 구입해 이미지를 다운로드하고 보드에 전원을 연결하는 과정은 일반 개발자 입장에게 '참 귀찮다'라는 느낌을 줍니다.
=>
누구나 쉽게 따라서 ARM 프로세서를 실습할 수 있는 컨텐츠를 제공해야 합니다.
데스크탑 PC에서 ARM 어셈블리 명령어를 실습할 수 있거나, 꼭 필요하다면 라즈베리 파이에서 쉽께 따라해보는 구성도 좋을 것 같습니다.
■ 사전 형식으로 어셈블리 명령어를 나열한다
실전 개발에서는 20개 이내의 ARM 어셈블리 명령어만 사용합니다.
그런데 어셈블리 명령어를 사전식으로 나열해 책의 분량만 늘리는 경우가 많습니다.
=>
실전 개발에서 주로 사용하는 어셈블리 명령어를 쉽게 이해할 수 있는 방식으로 컨텐츠를 구성할 필요가 있습니다.
■ 어셈블리 명령어를 너무 어렵게 설명한다
ARM 어셈블리 명령어를 개념 위주로 접근해, 독자에게 '이걸 외워야 하나'란 생각이 들게 합니다.
독자가 ARM 어셈블리 명령어를 암기하게 유도해 ARM 프로세서를 포기하게 만듭니다.
=>
ARM 어셈블리 명령어를 배우는 방법을 실습을 통해 소개하고, ARM 어셈블리 명령어에 친숙해는 컨텐츠를 만들어야 합니다. ARM 어셈블리 명령어는 C나 C++ 언어의 1/10의 노력만 투자해도 재미있게 배울 수 있습니다.
■ ARM 프로세서에 대해 배운 내용을 실전 개발에 어떻게 쓰이는지 알려주지 않는다
취준생들이 가장 답답해하고 불만을 품는 이유입니다. ARM 책들에서 ARM 프로세서가 실전 개발에서 어떻게 활용되는지 설명하지 못합니다.
누구나 ARM 프로세서는 잘 배우면 좋다라고 말합니다. 그런데 배운 내용이 실전 프로젝트에서 정확히 어떻게 쓰이는지, 구체적으로 알려주지 못합니다.
==>
케이스 스터디를 통해 ARM 프로세서가 실전 프로젝트에서 어떻게 활용되는지 알려 줄 필요가 있습니다.
ex) 함수 호출 규약을 알아야 스택 오염을 잘 디버깅할 수 있다.
지역 변수로 배열을 너무 크게 잡으면 ARM 명령어가 실행될 때
■ 대부분 32비트 기반 Cortex-M3 ARM 프로세서를 설명합니다
RTOS에 펌웨어에 MCU로 탑재되는 Cortex-M3를 다룹니다.
대중적으로 사용되는 안드로이드나 라즈베리 파이에 탑재되는
Cortex-A7, 64비트 ARM 아키텍처를 다룬 책이 없습니다.
그리고 요즘 떠오르는 하이퍼바이저, 트러스트 존와 같은 최신 ARM 아키텍처의 내용을 담고 있지 않습니다.
==>
Cortex-A7, 64비트 ARM 아키텍처를 다룬 책이 개발자에게 필요합니다.
■ ARM 아키텍처에서 너무 많은 내용을 다룹니다
리눅스 임베디드 시스템 개발자 입장에서도 '자주 쓰는 ARM 어셈블리 명령어', '함수 호출 규약', '인터럽트를 ARM 프로세서가 처리하는 방식',
'ARM 모드와 레지스터 세트'에 대해 정확히 배워도 개발하는데 지장이 없습니다.
그런데, 네온이나 플로팅 포인트, 그리고 세세한 MMU의 옵션까지 사전식으로 나열합니다.
==>
실전 개발에 꼭 필요한 내용을 엄선해 컨텐트를 정리할 필요가 있습니다.
■ [참고] 유익한 ARM 아키텍처 컨텐츠
* 임베디드 레시피
2) Microprocessor 아뜰리에 (Atelier) - ARM을 파헤쳐 보자
3) Software 데꾸바쮸 (Decoupage) - Software의 정체와 만들기
4) ARM 미장센 - ARM 제어의 구현
실전 임베디드 펌웨어 개발자가 쓴 블로그(책)으로 실전 개발에 유익한 내용을 담고 있습니다.
2)~4) 챕터는 ARM 프로세서에 대한 내용으로 읽어볼 만합니다.
ARM11 기반으로 2009년 경에 작성된 오래된 자료란 점이 옥의 티입니다.
* 문c 블로그
Exception -1- (ARM32 Vector)
Exception -2- (ARM32 Handler 1)
Exception -3- (ARM32 Handler 2)
Exception -4- (ARM32 VFP & FPE)
Exception -5- (Extable)
Memory Access Order Type & Shareable Region
TLB Cache (API)
보석과 같은 자료들로 가득찬 블로그인데 ARM 프로세서에 대해선 위 내용들을 참고할만 합니다.
---
"이 포스팅이 유익하다고 생각되시면 공감 혹은 댓글로 응원해주시면 감사하겠습니다.
"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!"
Thanks,
Guillermo Austin Kim(austindh.kim@gmail.com)
---
Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 카테고리의 다른 글
[ARM] ARM사의 라이센스 방식: 소프트 매크로/하드 매크로 (0) | 2023.06.09 |
---|---|
[ARM] const static 키워드로 변수를 선언: 코드 크기 최적화 (0) | 2023.06.09 |
kdump ( C 최적화 링크) (0) | 2023.06.09 |
유용한 ARM 책 - 컨텐츠 (0) | 2023.06.09 |
[ARM] CPSR(Current Program Status Register) Register (0) | 2023.06.09 |