강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

cassadd1님의 프로필 이미지
cassadd1

작성한 질문수

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)

시스템 소프트웨어 직무 관련 질문드려요

작성

·

13

0

컴퓨터공학과 재학중인 대학생입니다.

 

올려주신 유튜브나 강의 잘 보고 있습니다.

 

제가 현재 취업을 한다면 생각하고 있는 직무는ip/솔루션이나 soc쪽 직무이고

전공 공부 자체가 재밌어서 일단 대학원을 가는 것을 일단 생각하고 있어서 OS레벨의 시스템 소프트웨어 분야 대학원 진학을 생각하고 있습니다.

 

현재 전공 공부 복습과 김동현님 책들로 아키텍쳐나 리눅스 커널에 대해 공부하고 있는데,

공부 이후의 방향에 대해서 기존에 보유한 라즈베리파이3에 부트로더를 올려보고 다른 참고자료들을 이용해서 os를 만들어보는 경험과 리눅스 커널 컨티리뷰트를 해보려하는데 이게 제가 생각하는 분야와 fit한지 헷갈려서 질문드립니다.

 

책과 강의 잘 듣고 있습니다.

 

답변 2

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

답변이 다소 늦은 점 먼저 양해 부탁드립니다.

ip/솔루션이나 soc 분야이면, 칩셋 업체(펩리스)의 시스템 소프트웨어 개발 분야로 준비하시는 것 같은데요.

궁금한 점에 대해서 의견을 드립니다.

먼저 펩리스 업체의 개발 동향과 방향에 대해서 공유드리면요:

1. ip/솔루션이나 soc 분야에서는 Arm 아키텍처를 활용해 드라이버를 설계하는 비중이 높습니다.

칩셋에서 사용하는 대부분의 IP는 현재 Arm 기반이기 때문입니다.

2. 리눅스 커널이나 리눅스 드라이버를 바라보는 관점은, 리눅스 커널에서 제공하는 API를 활용해서

리눅스 드라이버를 잘 개발하자는 방향입니다.

3. 칩셋 업체의 시스템 소프트웨어 개발은 주로 부트로더와 리눅스 드라이버에서 이뤄집니다.

리눅스 드라이버보다는 부트로더에 더 많은 프로그래밍을 합니다.

따라서 지금 준비하시는 활동은 아주 방향에 잘 맞는다고 말씀드릴 수 있습니다.

주신 내용을 기반으로 가장 중요한 순서대로 학습 주제를 말씀드리면 다음과 같습니다.

- Arm 아키텍처(Armv8-A)의 핵심 기능을 학습한다

* 가능하면 TRACE32 디버거를 활용해 어셈블리 명령어나 레지스터를 분석한다

* 익셉션이나 인터럽트가 Arm 아키텍처에서 어떻게 처리되는지 분석한다

* 메모리 덤프를 분석하면서 Arm 아키텍처의 주요 기능(calling convention)을 학습한다

- Arm 아키텍처의 주요 기능이 부트로더에 어떻게 구현됐는지 분석한다

* 스타트업 코드나 익셉션 핸들러 위주로 먼저 분석한다

* u-boot과 같이 업계에서 많이 활용되는 부트로더를 라즈베리 파이에서 실행하면서

핵심 구조를 파악한다

- 리눅스 디바이스 드라이버의 기본 구조를 파악한다

- 리눅스 디바이스 드라이버에서 주로 호출하는 커널 API를 학습한다

- Arm 아키텍처의 주요 기능이 리눅스 커널에 어떻게 구현됐는지 분석한다

위에서 언급드린 순서대로 학습하시면 모든 펩리스 업체에서 원하는 1순위 특급 개발자가 되실 수 있습니다. 드린 의견이 도움이 됐으면 좋겠습니다. 추가로 궁금하신 점이 있으면 언제든 문의주세요.

감사합니다.

김동현 드림.

0

안녕하세요, 인프런 AI 인턴입니다. cassadd1님!

시스템 소프트웨어 직무와 관련된 방향성과 학습에 대해 고민 중이시군요. OS 레벨의 시스템 소프트웨어 분야에 관심이 있으시고, 관련 기술과 경험을 쌓고자 하시는 점에서 이미 좋은 방향성을 가지고 계신 것 같습니다.

관련 질문 및 답변 링크

관련된 게시글에서는 ARM 아키텍처와 리눅스 커널의 학습 순서 및 학습 방법에 대한 유용한 정보를 제공하고 있습니다. ARM을 기본적으로 공부하고, 리눅스 커널에 대한 실습을 병행하는 접근 방식이 추천되고 있습니다. 이를 통해 시스템 소프트웨어 엔지니어로서의 역량을 길러나갈 수 있을 것입니다.

학습 및 진로 제안

  1. 라즈베리파이를 활용한 실습: 라즈베리파이를 활용하여 부트로더를 설치하고, OS를 직접 만들어보는 경험은 아주 좋은 실습이 될 것입니다. 이는 SoC(System on Chip)와 같은 하드웨어에 대한 이해도를 높여주고 실무적인 경험을 쌓게 합니다.

  2. 리눅스 커널 기여: 커널 기여는 실제 프로젝트에 참여하여 커뮤니티 내에서 코드 리뷰를 받고 자신의 코드를 개선하는 과정을 통해 깊이 있는 이해와 실질적인 경험을 제공할 것입니다.

  3. 대학원 진학 준비: 연구 주제를 확정하고, 관련된 논문을 읽거나 작성하면서 심화된 공부를 진행하면 직접적인 실무 경험과 이론적인 견고함 모두 잡을 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cassadd1님의 프로필 이미지
cassadd1

작성한 질문수

질문하기