인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
NEW

디버깅으로 배우는 RISC-V 아키텍처 -2부

오픈 소스 기반의 최신 CPU 아키텍처인 RISC-V의 핵심 개념과 실용적인 팁을 쉽고 상세하게 설명합니다.

27명 이 수강하고 있어요.

Thumbnail

초급자를 위해 준비한
[임베디드 · IoT, 반도체] 강의입니다.

이런 걸 배울 수 있어요

  • 기술 면접에서 RISC-V와 관련된 질문에 잘 대답하고 설명할 수 있습니다.

  • RISC-V를 이루는 핵심 기능인 익셉션(Exception), 인터럽트 콘트롤러, Calling Convention의 동작 원리를 배울 수 있습니다.

  • TRACE32 시뮬레이터 프로그램을 사용해 익셉션(Exception), 인터럽트 콘트롤러, Calling Convention와 같은 기능을 디버깅으로 실습할 수 있습니다.

  • 리눅스 커널과 같은 운영체제 커널에서 RISC-V 아키텍처가 어떻게 활용되는지 알 수 있습니다.

  • RISC-V 기반에서 실행되는 부트로더나 리눅스 커널의 스타트업 코드를 분석할 수 있습니다.

최신 시스템 소프트웨어 업계에서
떠오르는 RISC-V 아키텍처

최근 오픈 소스 기반의 CPU 아키텍처인 RISC-V 아키텍처가 떠오르고 있습니다. IT와 관련된 언론 기사나 뉴스를 보면 아래와 같은 내용을 바로 확인할 수 있습니다:

  • nVidia, 인텔 및 퀄컴과 같은 빅 테크 기업에서 RISC-V 기반의 제품(칩셋)을 개발하고 있다.

  • 국내에 RISC-V를 활용한 다양한 칩을 설계하는 스타트업 회사가 늘어나고 있고, RISC-V 디바이스 기반 제품을 개발하는 비중이 높아지고 있다.

  • AI 반도체를 설계할 때 RISC-V 기반의 CPU 아키텍처를 많이 활용한다.

  • 2026년까지 150억개의 디바이스가 RISC-V 기반으로 출시될 예정이다.

  • 대학원(프로세서 설계)에서는 RISC-V CPU을 설계할 수 있는 툴킷을 사용해 다양한 연구를 진행 중이다.

임베디드 및 시스템 소프트웨어 업체에서 RISC-V CPU 아키텍처를 활용해 제품을 개발하는 비중이 높아지고 있습니다. 그래서 취준생은 기술 면접에서도 RISC-V에 대한 준비를 해야 하는 상황입니다.

강의를 만든 배경

입문자 입장에서 RISC-V 아키텍처는 배우기 어렵습니다. 그 이유는 다음과 같습니다:

  • RISC-V를 구성하는 방대한 내용 중에 무엇이 중요한지 모르겠다

  • RISC-V를 구성하는 내용 중에 어떤 기능이 실전 프로젝트에 활용되는지 모르겠다

  • RISC-V 스펙 문서를 아무리 열심히 읽어도 바로 이해하기 어렵다


  • RISC-V를 설명하는 용어 그 자체가 무슨 의미인지 알기 어렵다


Arm 아키텍처와 비교해 RISC-V 아키텍처와 관련된 자료는 충분하지 않고 RISC-V를 구체적으로 쉽게 설명하는 자료가 부족한 것이 현실입니다. 신입 개발자를 포함한 시스템 소프트웨어 개발자 분들이 RISC-V를 배우는 과정에서 겪는 어려움을 해소하기 위해 강의를 제작하게 됐습니다.

강의의 핵심 차별화 포인트

1.TRACE32 시뮬레이터 프로그램(교육용)으로 RISC-V 아키텍처 디버깅

RISC-V 아키텍처(레지스터, 어셈블리 명령어, Privilege 모드)를 배우는 지름길은 무엇일까요? 바로 직접 디버깅 실습을 하는 방법입니다.

이 강의를 수강하시면 교육용 TRACE32 시뮬레이터 프로그램을 '인프런 강의 자료'에서 내려 받아 직접 TRACE32 시뮬레이터 프로그램을 활용해 RISC-V 아키텍처의 레지스터, 어셈블리 명령어, Privilege 모드 실습을 직접하실 수 있습니다.

참고로 시스템 소프트웨어 개발 전반에 TRACE32 디버거와 관련 프로그램은 광범위하게 사용됩니다. TRACE32 프로그램은 라이선스가 있어야 실행할 수 있습니다.

2. RISC-V 보드에서 추출한 5개 커널 메모리 덤프 제공

시스템 소프트웨어 개발 과정에서 요구되는 가장 중요한 역량은 문제 해결 능력입니다. 이 중에서 크래시 문제를 분석하고 해결하는 역량이 가장 많이 필요합니다. 이번 강의에서는 가장 인기있는 RISC-V 보드 중 하나인, Vision-Five 2에서 추출한 5개의 커널 크래시 메모리 덤프를 디버깅하면서, 익셉셥과 Calling convention에 대한 디버깅 실습을 진행합니다. 강의를 수강하시는 분들은, TRACE32 프로그램과 더불어 5개의 메모리 덤프를 내려 받아서 직접 익셉션과 Calling convention을 디버깅할 수 있습니다.

3.핵심 내용을 엄선해 쉽게 설명

입문자 분들은 RISC-V를 배울 때 처음 레퍼런스 문서를 구해서 분석하는 경우가 많지만, 입문자 입장에서 RISC-V의 어떤 내용을 먼저 배워야 할지 감을 잡기 어렵습니다. 무엇을 먼저 잘 배워야 하는지 알기 어렵기 때문입니다. 이번 강의에서는 실무에 적용될 수 있는, 반드시 잘 알아야 하는 내용을 엄선해서 설명합니다. 예를 들어, RISC-V 기반의 디바이스에서 받은 메모리 덤프와 커널 로그를 열어서 레지스터나 어셈블리 명령어를 쉽고 자세하게 설명합니다.

4.소프트웨어와 스택과 함께 구체적인 예시를 들어 설명

RISC-V는 시스템 소프트웨어 개발을 잘 하고 싶거나, 이 분야에 진출하기 위해 배우는 경우가 대부분입니다. 이번 강의에서는 실전 프로젝트에서 RISC-V가 어떻게 활용되는지 다양한 예시를 들어 설명합니다.

  • RISC-V 시스템에서 소프트웨어 어떻게 실행되는지

  • RISC-V 시스템에서 어떤 과정으로 부팅이 되는지

  • RISC-V 시스템에서 어떻게 디버깅 및 리버싱을 해야 하는지

이번 강의를 들으면 RISC-V 아키텍처의 내용과 함께 자연스럽게 실전 감각을 빨리 익힐 수 있습니다.

5.Arm 아키텍처와 비교해 RISC-V를 설명

시스템 소프트웨어 업계의 생태계를 보면, 2024년까지 Arm 아키텍처를 중심을 임베디드 및 칩셋 업계의 생태계가 구성되어 있습니다. 많은 시스템 소프트웨어 개발자들은 Arm 프로세서나 Arm 아키텍처에 익숙한 상황입니다. 이번 강의에서는 RSIC-V의 핵심 개념을 Arm 아키텍처와 함께 설명합니다.

  • 익셉션의 종류와 처리 방식

  • 인터럽트 콘트롤러의 구조와 처리 방식

  • Calling Convention의 처리 방식 (사용되는 레지스터와 관련 어셈블리 명령어)

교육자는 Arm 아키텍처의 책의 저자이로, 누구보다 RISC-V를 Arm 아키텍처와 비교하면서 잘 설명할 수 있습니다.

이런 내용을 배워요 📕

익셉션의 기본 개념을 상세하게 설명하고, RISC-V 아키텍처에서 정의된 익셉션의 핵심 피쳐(기능)을 알기 쉽게 설명합니다.

RISC-V 아키텍처의 핵심 기능인 익셉션의 실행 흐름을 설명합니다. 또한 머신 모드와 유저 모드로 구성된 시스템에서 익셉션의 처리 방식을 상세하게 설명합니다.

RISC-V 아키텍처에서 정의된 - 익셉션을 유발한 원인을 나타내는 익셉션 코드(Exception code)를 설명하고, 메모리 어보트로 익셉션이 처리되는 흐름도 설명합니다.

소프트웨어 개발 관점으로 익셉션 및 크래시가 유발됐을 때의 실행 흐름을 자세하게 설명합니다.

어셈블리 명령어를 한줄 한줄 분석하면서 익셉션의 어떤 흐름으로 유발되는지 설명합니다. 또한 익셉션이 유발되면 스택에서 어떤 방식으로 이를 처리하는지 설명합니다.

T32 디버깅 실습 프로그램으로 어셈블리 명령어를 실행하면서 익셉션을 실습합니다. 익셉션이 유발되면 어떤 CSR(scause, mcause) 레지스터가 변경되는지 상세히 설명합니다.

TRACE32 프로그램으로 익셉션을 유발하는 실습을 하면서, 리눅스 커널에서 처리되는 익셉션 핸들러에 대해 상세하게 설명합니다.

RISC-V 기반 보드에서 받은 메모리 덤프를 분석하면서, RISC-V 아키텍처의 익셉션의 동작 방식을 설명합니다: 커널 로그를 분석하고, 콜 스택을 분석합니다.

TRACE32 프로그램으로 페이지 테이블에 대한 디버깅 실습을 진행합니다. 이를 통해 익셉션을 유발된 원인에 대해 구체적으로 파악합니다.

RISC-V 아키텍처에서 정의된 인터럽트 콘트롤러의 기본 동작 방식에 대해 설명합니다. PLIC와 CLIC의 구조를 알기 쉽게 설명합니다.

인터럽트과 관련된 익셉션 코드를 리뷰하고, PLIC(Platform Level Interrupt Controller)의 구조를 설명합니다.

PLIC를 구성하는 핵심 하드웨어 구성 요소에 대해 설명하고, PLIC를 제어하는 CSR 레지스터에 대해 알기 쉽게 설명합니다.

RISC-V 아키텍처에서 소개된 Calling Convention (함수 호출 규약)에 대해 설명하고, Calling Convention를 지원하는 레지스터를 리뷰합니다.

함수에 전달되는 인자의 처리 방식을 큰 그림을 설명합니다.

RISC-V 아키텍처의 Calling convention(함수 호출 규약)를 지원하는 어셈블리 명령어를 분석합니다. 또한 예제 어셈블리 명령어도 분석합니다 - c.sdsp 명령어 분석

RISC-V 아키텍처의 Calling convention(함수 호출 규약)를 지원하는 어셈블리 명령어를 분석합니다. 또한 예제 어셈블리 명령어도 분석합니다 - c.ldsp 명령어 분석

RISC-V 아키텍처의 Calling convention(함수 호출 규약)를 지원하는 어셈블리 명령어를 분석합니다. 또한 예제 어셈블리 명령어도 분석합니다 - c.ldsp 명령어 분석


TRACE32 디버깅 실습으로 깨진 콜 스택을 복원하는 실습을 진행합니다.


TRACE32 디버깅 실습으로, 스택 오버플로우로 유발된 메모리 덤프 분석을 합니다.


책 집필/강의경력을 바탕으로
누구보다 깊고 상세하게!

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자입니다. 또한 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자이자, 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' (2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~2024) 

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 시스템 반도체(펩리스), 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자

  • 시스템 반도체(펩리스), 전기 자동차 분야에서 시스템 소프트웨어 개발을 하고 싶은 취준생

  • RISC-V 아키텍처의 기능을 활용해 실무에서 어떻게 디버깅하는지 알고 싶은 시스템 소프트웨어 개발자(시스템 반도체, 전기 자동차)

  • 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자

  • 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생

선수 지식,
필요할까요?

  • 컴퓨터구조

  • C언어

  • 운영체제

안녕하세요
김동현 (Austin Kim)입니다.

4,739

수강생

92

수강평

75

답변

4.9

강의 평점

19

강의

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)

국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

주요 로드맵 🎯

'시스템 소프트웨어 개발자를 위한 Arm - basic course'

'시스템 소프트웨어 개발자를 위한 Arm - advanced course'

 

시스템 소프트웨어 개발자를 위한 Linux kernel - basic course

체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)와 리눅스 커널을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.

더보기

커리큘럼

전체

86개 ∙ (11시간 2분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!