00. ARM 프로세서
ARM 아키텍쳐
가 무엇인지 모르는 사람은 아래 포스팅을 보고 오시길 바란다.https://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98
그렇다면 ARM 프로세서를 배워야 하는 이유가 무엇일까?
많은 소형기기에서 ARM 프로세서를 탑재
ARM 프로세스
를 배우는 가장 큰 이유는ARM 프로세서
를 많이 사용하기 때문이다. 대부분의 휴대기기에는ARM 프로세서
가 탑재돼 있다. 우리가 항상 들고다니는 안드로이드 스마트폰에 탑재된CPU
가 바로ARM 프로세서
이다.휴대전화 뿐만 아니라 사물인터넷(IoT)에도 많이 사용하고 있다.
ARM 프로세서
가 저전력에 소모 전류가 적기 대문에 이렇듯 소형기기에 많이들 사용하고 있는 것!또한, 많은
ARM 프로세서
개발자 풀이 존재한다.프로그램의 세부 동작 원리를 파악
ARM 프로세서
의 기본 원리를 알면CPU
가 프로그램을 어떻게 돌리는지 정확히 알 수 가 있다. 우리가 작성하는 코드는 C, C++, JAVA, Python 등의 언어일텐데, 이 코드들은 모ㄷ주 컴파일 후 ARM 어셈블리 코드로 돌게 되어있다. 따라서,ARM 프로세서
의 동작 원리를 알면 자연히 프로그램이 정말 어떻게 돌아가는지 알 수 있다. 때문에 프로세서의 원리를 제대로 파악하는 개발자는 더욱 안정적인 코드를 작성할 수 있게 된다.- 물론,
ARM 프로세서
의 세부 원리를 잘 몰라도 개발하는 데 큰 지장은 없지만, 우리가 원하는 고급 개발자가 되기 위해서는 반드시 넘어야 하는 산이 바로ARM 프로세서
인 것!!스택 오염, Stack Overflow, StackUnderflow
등 의 문제는ARM 프로세서
의 세부 동작 원리를 모르면 문제를 분석하거나 해결하기 힘들다.Secure Monitor Call
도 마찬가지이다.RTOS나 운영체제 커널의 세부 동작 원리를 파악
- 마지막으로 ARM 프로세서를 알아야 하는 이유는
RTOS
나운영체제(OS)
의 세부 동작 원리를 알아야 할 때이다.ARM 프로세서
는RTOS
나 리눅스와 같은 범용 운영체제와 함께 돌아가기 때문이다. ->RTOS
나 리눅스와 같은운영체제(os)
의 핵심 원리를 알기 위해서ARM 프로세서
를 알아야 한다.Exception, Scheduling
과 같은 세부 동작은 대부분ARM 어셈블리 코드
로 되어있기 때문이다.- 시스템이 처음 부팅할 때 실행하는 코드를 스타트업 코드라고 하는데, 이를 작성하기 위해서는
ARM 프로세서
의 기본 원리를 알아야 한다.ARM 프로세서을 알고 모를 때 어떤 차이가 있을까?
이 차이는 평소에 잘 드러나지 않지만, 해결하기 어려운 문제를 만났을 때 드러난다.
Secure Monitor Call
을 실행하고 나서 시스템이 무감됐다는 예시를 들어보자. 이 문제를 리포트 받은 후ARM 프로세서
를 잘 아는 개발자라면 이렇게 생각할 것이다.-> 'Secure Monitor Call'을 실행하면 트러스트 존으로 동작 모드를 변경할 텐데. 이 때 실행하는 어셈블리 코드의 아규먼트는 제대로 전달이 된 것일까?
-> Secure Mode와 Non-Secure 모드 별로 페이지 테이블의 시작주소인 TTBR 이 다른데. 혹시 이 설정이 잘못됐나?
-> 트러스트 존에 로그를 추가해서 어디까지 실행되는지 확인해볼까?
-> 'Secure Monitor Call'을 여러 CPU가 실행하려고 시도하지는 않나? 해당 코드에 락을 좀 걸어볼까?
이렇게 전체 그림을 그리고 문제를 분석하는 개발자와 'Secure Monitor Call'이란 용어가 뭔 소리인지도 몰라 조용히 구글링을 하는 개발자 중 누가 먼저 빨리 문제를 해결할까요? 여러분이 관리자라면 둘 중 어느 개발자에게 문제를 맡길까요? 구글링을 하는 개발자는 아니겠죠?
'임베디드 > [ ARM ]' 카테고리의 다른 글
[ ARM ] 01. 모든 개발자가 ARM 프로세서를 배워야 하는 이유 (0) | 2021.03.10 |
---|