본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/2장: Arm 아키텍처 학습 방법

(4)
[ARM] 임베디드 개발자가 반드시 ARM 프로세서를 배워야 하는 이유 이번 시간에는 ARM 프로세서를 리눅스 시스템 개발자가 배워야 하는 지 설명합니다. 브링업을 제대로 하기 위해서 임베디드 개발자들이 진행하는 프로젝트의 단계는 '보드 브링업 - 기능 안정화 - 유지 보수'로 분류할 수 있습니다. 3단계에서 보드 브링업은 어떤 단계를 거쳐 진행될까요? 과제에 따라 다르지만 개발 업무의 내용을 소개하면 다음과 같습니다. * 부트로더에서 스타트업 코드를 작성 * 메모리와 같은 하드웨어를 초기화 먼저 스타트업 코드를 작성하는 업무에 대해서 조금 더 설명을 드려볼까요? 전원이 시스템에 들어오면 가장 먼저 실행되는 코드가 reset 익셉션 벡터 코드입니다. 이 코드에서 기본적인 메모리를 설정을 초기화하고 ARM 모드 별로 스택 사이즈를 지정해야 합니다. 이 모든 코드를 제대로 작성..
[ARM] ARM 프로세서 학습 방법의 문제점 이제부터 ARM 프로세서에 대한 이야기를 조금 더 해보려고 합니다. 제 개발 인생을 돌이켜 보니 대부분의 시간을 사실 ARM 프로세서와 함께 보냈더군요. 다음과 같은 조합으로 말이죠. * 'ARM + RTOS, ARM + 리눅스' ARM 프로세서를 처음 접할 때의 느낌 그런데 제가 ARM 프로세서를 처음 접할 때의 느낌을 잊을 수가 없습니다. 그 느낌이 어땠나면; * 목욕탕에서 가장 뜨거운 온탕에 점프해 들어갔을 때 음, 잘 공감이 가시나요? 대중 목욕탕에 안 가신다고요? 그럼 다음의 예는 어떤가요? * 그럼 충치가 있어서 치과를 가서 진료실에서 기다릴 때 아직도 공감이 안된다고요? 난 한번도 치과에 가본 적이 없다고요? 그렇다면 어쩔 수 없죠. 더 이상의 예를 들기는 어렵겠군요. ARM 프로세서를 배우..
[ARM] ARM 프로세서를 배워야 하는 이유 이번 시간에는 ARM 프로세스를 왜 배워야하는지 이야기를 해보겠습니다. 우리가 어떤 것을 처음 배울 때는 그것을 왜 배워야 하는지 알면 좋습니다. 왜냐면, 무엇을 공부하기 전에 왜 배워야 하는지 알면 더 동기 부여가 되기 때문이죠. 다른 동료들이나 친구들이 ARM 프로세서는 잘 배워야 한다고 해서 등떠밀려 공부하면 잘 집중이 안되는 거 같습니다. 그렇지 않나요? 무엇보다 배운 내용이 어떻게 활용되는지 알면 공부할 때 더 힘이 날 겁니다. 소형 기기에서 ARM 프로세서를 많이 탑재 ARM 프로세스를 배우는 가장 큰 이유는 ARM 프로세서를 많이 쓰기 때문이에요. 대부분 휴대 기기에는 ARM 프로세서가 많이 탑재돼 있어요. 여러분들, 모두 휴대폰 1개는 다 들고 다니죠? 안드로이드 스마트폰에 탑재된 CPU가..
[ARM] ARM 프로세스를 배우기 어려운 이유 - 어셈블리 명령어 많은 분들이 ARM 프로세스를 익히기 어렵다고 말합니다. 물론 저도 마찬가지였고요. 그렇다면 ARM 프로세스가 어려운 이유가 뭘까요? ARM 프로세스 자체가 어렵기보다는 ARM 프로세스를 익히는 방법에 문제가 있기 때문입니다. 달리 말하면 ARM 프로세스 내용은 그리 어렵다는 이야기입니다. 자, 그럼 ARM 프로세스의 핵심 개념이 무엇인지 살펴볼까요? ARM 프로세스 범위는 넓게 보면 MMU부터 캐시까지 다양하나 핵심 내용은 다음과 같이 좁힐 수 있습니다. - 어셈블리 명령어 - 익셉션 - ARM 모드(ARMv7/ARMv8) - 함수 호출 규약(Calling Convention) 이 밖에도 MMU, Cache(L1/L2) 등등 깊게 살펴볼 주제가 있습니다. 위에서 언급한 내용만 제대로 파악하면 임베디드 ..