김동현 (Austin Kim)
@austinkim
수강생
6,256
수강평
236
강의 평점
4.9
글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)
국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 국내 최초로 해외 출판사(Packt)를 통해 "Reverse Engineering Armv8-A Systems" 책(영어)을 집필한 글로벌 저자입니다. 무엇보다 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다.
'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자
'디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자
'프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사
2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]
LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)
국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.
강의문의 : austindh.kim@gmail.com
주요 로드맵 🎯
'시스템 소프트웨어 개발자를 위한 Arm - basic course'
강의
로드맵
전체 4수강평
- 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
- 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
- 디버깅으로 배우는 RISC-V 아키텍처 -1부
- 리눅스 소개와 리눅스 커널 Overview [저자직강 1부-1]
- 리눅스 소개와 리눅스 커널 Overview [저자직강 1부-1]
게시글
질문&답변
시스템 소프트웨어 직무 관련 질문드려요
답변이 다소 늦은 점 먼저 양해 부탁드립니다.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
- 2
- 18
질문&답변
책관련 질문드려요
1. 책의 리눅스 커널 버전은 4.19으로 다소 오래된 버전입니다 - 현재 6.1~6.6버전을 사용합니다. 커널 버전이 업그레드되고 있으나, 책에서 설명하는 리눅스 커널의 기본 동작 원리를 예전이나 지금이나 같습니다. 책만을 읽으시면서 진행하셔도 좋고, 책을 읽으시면서 혹시 추가로 강의를 들으셔도 좋긴 합니다.Basic이나 Advanced 리눅스 디버깅 강의는 책에는 없는 내용이 대부분이니 들으시면 도움이 되길 할 것입니다.2. Arm 아키텍처의 경우는 되도록 강의를 들으시면서 책을 읽으시면 더 좋습니다. 책에 없는 내용을 강의에서 많이 설명하기 때문입니다. 감사합니다.
- 0
- 2
- 31
질문&답변
4.2.1. 실습을 어떻게 진행하는것인가요?
지적해주신 강의는 2024년 디버깅 실습이 추가되기 전에 촬영된 강의입니다. MOV 명령어를 따라서 실습할 수 있는 강의 영상은 추가로 제작해서 업로드할 예정이니 참고하세요.
- 0
- 2
- 35
질문&답변
3.2.1.4 실습과 관련한 질문
아래와 같이 답신 드리니 참고하세요.1. 지적해주신 강의는 Arm32 (Armv7-A) 아키텍처 기반의 메모리 덤프로 콜 스택을 보여주는 영상입니다.2024년 디버깅 실습이 추가되기 전에 촬영된 강의입니다. 따라서 현재 TRACE32 디버깅 실습으로는 따라서 진행하기 어렵습니다. 다른 TRACE32 디버깅 실습으로도 충분히 Arm 아키텍처의 기능을 실습할 수 있으니, 이 점 참고하세요.2. Lauterbach의 Debug Probe(PowerDebug / PowerTrace)를 통해서 실제 하드웨어 포트(JTAG / SWD)와 TRACE32를 연결(USB나 Ethernet을 통해) 합니다.
- 0
- 2
- 43
질문&답변
[30. RISC-V: 어셈블리 명령어의 목록] 부분 br, bl 오타인 것 같습니다
제보해주셔서 감사합니다. 오타가 있는 강의 영상은 다시 제작해서 업로드했습니다.다시 확인하시면 오타가 없는 영상을 확인하실 수 있습니다.
- 0
- 2
- 28
질문&답변
실제 사용하려면
업계에서 RISC-V가 떠오르고 있다고는 하지만, 아직 현업 개발에서 MCU의 대세는 Arm 프로세서입니다. 먼저 Cortex-M3에 대한 내용을 분석하신 후에, RISC-V 분석을 진행하시길 권장드립니다.
- 0
- 1
- 79
질문&답변
스택에 PUSH되는 PC 값
Armv7-A 아키텍처(A32 상태)에서 pc를 읽어서 push하는 명령어를 실행할 때, pc는 현재 실행 중인 명령어의 주소에 대응되지 않습니다. 대신, 현재 명령어 주소의 + 8바이트의 값에 대응됩니다.이 +8 바이트 오프셋은 Arm 파이프라인 구조 때문입니다. 명령어가 실행 중일 때, 명령어 페치(Fetch) 단계에서는 이미 다음 두 개의 명령어(8바이트 앞) 를 가져와 놓은 상태이기 때문입니다.아래는 TRACE32 시뮬레이터를 사용해서 - 일부러 C023F8FC 주소의 명령어를 'push {pc}' 명령어로 바꿔서, 실행한 결과 화면입니다.(사진) 스택에 C023F8FC이 아닌, C023F904(C023F8FC + 0x8) 데이터가 푸시됩니다.Armv7-A 아키텍처에서는 PC를 읽을 때 현재 명령어보다 8바이트 앞선 주소로 확인됩니다.
- 0
- 2
- 45
질문&답변
TRACE32 관련 문의 내용
아래 환경에서 메모리 덤프 (2-irq_dump.zip)을 내려 받아서, TRACE32 시뮬레이터 프로그램으로 로딩을 했습니다.-Host OS : Window 11아래 화면과 같이 제대로 로딩이 된 것을 확인했는데요. 1) TRACE32 프로그램을 다시 실행시킨 다음에, 덤프를 로딩하시거나 2) 2-irq_dump.zip 압축 파일이 제대로 풀렸는지 확인 부탁드립니다.// 아래는 제가 로딩한 TRACE32 프로그램 스틸컷입니다.(사진) 감사합니다.
- 0
- 2
- 45
질문&답변
T32 설치 관련
공유해주신 스크린 캡쳐 화면에서 'Podbus Device Chain' 윗 부분에 있는'Example Configuration'에 좌클릭을 하신 다음에, '우클릭' - 'Add'를 선택하시면Simulator 아이콘이 확인될 것입니다.아래 스틸컷을 참고하셔서 진행 부탁드립니다.(사진)감사합니다.
- 0
- 2
- 138
질문&답변
유저 모드 뱅크드 레지스터 질문입니다
(늦게 답신 드려서 죄송합니다)Armv7-A 아키텍처에서 유저 모드에 대한 뱅크드 레지스터는 R13, R14 입니다.말씀드린 내용은 TRACE32로 실습을 하시면 확인하실 수 있습니다.혹시 R8-R14가 뱅크드 레지스터라고 판단하신 근거를 알려주시면, 확인 후 답신 드리겠습니다.감사합니다.
- 0
- 2
- 47









![Thumbnail image of the 리눅스 소개와 리눅스 커널 Overview [저자직강 1부-1]](https://cdn.inflearn.com/public/courses/333097/cover/8e09c5df-0571-462e-878c-39ddf13549b6/333097.png?w=148)