채널톡 아이콘

프로그래머를 위한 AMBA의 이해 - APB·AHB·AXI 버스를 규격서와 보드로 읽기

내가 짠 코드 한 줄이 칩 안에서 어떻게 움직이는지 눈으로 확인해 본 적 있으신가요? 손그림과 실제 보드 측정을 따라가다 보면, 막연했던 칩 안의 데이터 흐름이 선명하게 그려지고 가끔 생기는 버그의 이유도 보이기 시작합니다.

6명 이 수강하고 있어요.

난이도 초급

수강기한 무제한

삼성
한화시스템/ICT

한화시스템/ICT

에 관심있는 사람들도 듣는 중!

삼성
한화시스템/ICT

한화시스템/ICT

에 관심있는 사람들도 듣는 중!

수강 후 이런걸 얻을 수 있어요

  • 코드 한 줄이 칩 안에서 지나가는 길(버스)을 그림으로 설명하기

  • APB·AHB·AXI가 데이터를 쓰고 읽는 기본 규칙과 차이

  • 가끔만 생기는 버그(인터럽트 두 번 진입, 순서 꼬임, 조용한 0)를 버스 동작으로 설명하기

  • 칩 매뉴얼의 버스 그림과 Arm 원문 규격서를 직접 찾아 읽는 법

  • 최신 판(APB5·AHB5·AXI5)과 보안 표시가 무엇을 더했는지 큰 그림

강의를 마치면 얻게 되는 것

내가 쓴 코드 한 줄이 칩 안에서 어떤 길을 지나가는지 그림으로 그릴 수 있게 됩니다. 값을 썼는데 바로 반영되지 않을 때, 가끔만 이상해질 때, 같은 코드가 어디서는 빠르고 어디서는 느릴 때, 그 이유를 짐작이 아니라 설명으로 말할 수 있습니다.

내가 짠 코드 한 줄, 칩 안에서는 어떻게 움직일까요?

칩 안에서 CPU·메모리·주변장치 사이에 데이터가 오가는 길(버스)과 그 길의 규칙(AMBA)을 처음부터 배웁니다. 가장 단순한 APB에서 시작해 AHB, AXI까지 차례로 올라가고, 각 부의 끝에서 최신 판까지 이어 봅니다. 26개 장, 약 4시간 30분.

컴퓨터 구조 책에서 그림 한 장으로 지나가던 soc 안의 길을, amba 규격서 원문과 ARM Architecture 문서, cache 설정을 바꿔 가며 잰 숫자로 확인합니다.

제작 방식 안내

이 강의는 AI 기반 제작 공정으로 만들었습니다. 나레이션은 강사 본인의 목소리를 학습한 음성 합성이며, 대본·손그림 화면 제작에도 AI 도구를 활용했습니다. 기획과 내용 검수는 강사가 직접 했고, 측정 결과는 실제 STM32F429I-DISC1 보드에서 실행해 확인한 값입니다.

레지스터에 값을 썼는데, 왜 아직 안 바뀌었을까요?

코드는 위에서 아래로 한 줄씩 실행된다고 배웠습니다. 그런데 칩 안에서는 내가 쓴 값이 CPU를 떠나 길을 따라 이동하고, 중간에서 잠시 기다리기도 하고, 다른 요청과 순서가 바뀌기도 합니다. 이 길을 모르면 "가끔만 생기는 이상한 문제"를 운이나 타이밍 탓으로 넘기게 됩니다.

이 강의는 그 길을 처음부터 손그림으로 그려 가며 따라갑니다. 길의 규칙이 적힌 원문 문서를 함께 펴서 해당 문장에 형광펜을 긋고, 실제 보드에서 재 본 숫자로 확인합니다.

느린 골목길에서 고속도로까지

칩 안의 길은 하나가 아닙니다. 주변장치로 가는 느리고 단순한 길, 메모리로 가는 넓은 길, 여러 요청이 동시에 오가는 고속도로가 있습니다. 이 강의는 쉬운 길부터 차례로 올라가며, 앞에서 배운 규칙이 다음 길에서 어떻게 바뀌는지 봅니다.

STEP 1

골목길 APB

쓰고 읽기, 기다리기

STEP 2

큰길 AHB

겹쳐 달리기, 나눠 쓰기

STEP 3

고속도로 AXI

번호표, 순서, 보안

왜 지금 칩 안의 길인가

요즘 칩에는 CPU 코어 여러 개와 각종 가속기, 수많은 주변장치가 함께 들어 있습니다. 이 부품들이 데이터를 주고받는 길의 규칙으로 널리 쓰이는 것이 Arm의 AMBA입니다. 그래서 어떤 칩을 쓰든, 칩 매뉴얼을 펴면 이 길의 그림을 만나게 됩니다.

코드를 대신 써 주는 도구가 늘어날수록, 그 코드가 칩 안에서 왜 그렇게 동작하는지 설명할 수 있는 개발자의 가치는 더 커집니다.

이런 걸 배워요

칩 안의 길과 기본 규칙

01 버스란 무엇인가, 코드 한 줄이 지나가는 길

02 타이밍도로 메모리를 읽고 쓰는 순간 보기

03 신호 이름만 봐도 뜻이 보이는 AMBA 기본기

04 APB: 값 하나를 쓰고 읽는 두 걸음, 기다리기와 실패 알리기

05 인터럽트가 두 번 들어오는 이유, 브리지 너머의 쓰기

큰길과 고속도로, 그리고 보안

06 AHB: 겹쳐 달리는 주소와 데이터, 1바이트만 바꾸는 법

07 엉뚱한 줄을 가리키는 오류와 길을 나눠 쓰는 규칙

08 AXI: 다섯 갈래 길, 번호표, 몰아서 옮기기

09 volatile로는 못 막는 순서 문제와 잠금

10 오류 없이 0이 읽히는 보안 검문소와 최신 판의 변화

18년 현장 강의에서 본 빈칸

2008년부터 기업과 기관에서 개발자들을 가르쳐 왔습니다. 그동안 코드는 잘 짜는데, 그 코드가 실행되는 바탕인 메모리와 버스는 잘 모르는 개발자를 많이 만났습니다.

  • 버스 폭이 넓으면 빠르다는 건 알지만, 왜 그런지는 설명하지 못합니다.

  • 보드에 메모리를 원하는 만큼 늘릴 수 없는 진짜 이유를 말하지 못합니다.

  • 메모리 컨트롤러가 무슨 일을 하는지 몰라서, 새로 만든 보드에 처음 전원을 넣고 메모리를 살리는 단계에서 막힙니다.

이 빈칸들은 따로 떨어져 있지 않습니다. 칩 안의 길을 알면 한꺼번에 채워집니다. 주소 선의 개수가 가리킬 수 있는 메모리의 끝을 정하고, 데이터 선의 개수가 한 번에 옮기는 양을 정합니다. 메모리 컨트롤러는 버스의 말을 메모리의 말로 옮기는 통역사라서, 붙은 메모리의 폭과 속도를 부팅 코드가 먼저 알려 줘야 합니다. 그리고 무엇보다, 보드 전체가 어떤 구조로 이어져 있는지 한눈에 보이기 시작합니다.

현장에서 가장 자주 받은 질문 "코드는 맞는데 왜 가끔만 이상할까요?"에도, 이 강의는 칩 안의 길 그림 한 장과 보드의 숫자 하나로 답합니다.

소프트웨어 개발자가 풀어 쓴 AMBA, 2008년부터

저는 칩을 설계하는 사람이 아닙니다. 처음부터 지금까지, 그리고 앞으로도 임베디드 소프트웨어 개발자입니다. 다만 하드웨어에 관심이 많아 어셈블리를 따로 공부했고, ARM 프로세서로 오래 일하다 보니 내 코드가 지나가는 칩 안의 길, AMBA가 자연스럽게 궁금해졌습니다.

2008년, 그렇게 혼자 공부한 내용을 어딘가에 기록으로 남겨 두고 싶어 블로그에 'AMBA의 이해' 연재를 올렸습니다. 회로를 만드는 쪽이 아니라 그 회로 위에서 코드를 짜는 쪽의 눈으로, 규격서의 타이밍도를 한 칸씩 그림으로 풀어 쓴 글이었습니다. AMBA를 우리말로 쉽게 설명한 글을 찾기 어렵던 때라, 그 글에는 17년이 지난 지금도 공부하며 고맙다는 댓글이 달립니다.

이 강의는 그 설명을 AXI와 최신 규격까지 넓히고, 실제 보드에서 잰 숫자를 더해 영상으로 새로 만든 것입니다. 그래서 처음부터 끝까지 프로그래머의 눈높이로 설명합니다.

블로그 연재에 달린 댓글 일부, 작성자 이름은 가렸습니다

2008년 6월 블로그 연재 'AMBA의 이해' APB 편 화면

코드는 짜는데, 칩 안은 블랙박스였던 분께

버스라는 말을 처음 들어도 괜찮습니다. 레지스터에 값을 쓰고 읽어 본 경험이면 충분합니다. 그동안 "하드웨어 쪽 이야기"라며 건너뛰던 칩 매뉴얼의 버스 그림을, 이 강의가 끝나면 직접 읽을 수 있게 됩니다.

칩을 설계하는 분께도 권합니다. 이 강의는 내가 만든 하드웨어를 소프트웨어가 어떻게 쓰는지 반대편에서 보여 줍니다. 오류를 알리는 신호 하나, 쓰기를 잠시 맡아 두는 버퍼 하나가 프로그래머에게는 어떤 버그로 나타나는지 보고 나면, 설계할 때 무엇을 더 고민하고 매뉴얼에 무엇을 적어 둬야 하는지 생각하게 됩니다.

이 강의만의 특징

이상한 버그 세 개를 따라갑니다

가끔 인터럽트가 두 번 들어오는 보드, 덜 채운 데이터를 먼저 보내 버리는 전송, 오류도 없이 0으로 읽히는 값. 사건을 하나씩 풀며 규칙을 배웁니다.

손그림으로 그려 가며 설명합니다

흰 모눈 노트 위에 길과 신호를 펜으로 그려 가며 설명합니다. 말과 함께 그림이 쌓여, 처음 보는 사람도 흐름을 놓치지 않습니다.

원문 문서와 함께

규칙이 적힌 원문 문장에 형광펜을 긋고 출처를 남깁니다

실제 보드로 확인

STM32 보드에서 재 본 숫자로 이야기합니다

최신 판까지

각 부 끝에서 APB5·AHB5·AXI5로 이어 봅니다

실제 강의 화면

버퍼를 다 채웠는데 왜 뒤쪽은 옛 값일까, 트럭과 오토바이로 그린 두 쓰기

오류 없이 0이 읽히는 이유, 차에 붙은 스티커와 칩 안의 검문소

장치마다 선을 따로 이으면 몇 가닥이 될까, 4개면 6가닥, 8개면 28가닥

플래시를 한 번 읽는 데 클럭이 몇 개 들까, 보드에서 직접 잰 숫자

APB2는 AMBA 2판의 APB일까? 이름 속 숫자에 숨은 함정

플래그를 지웠는데 왜 인터럽트가 한 번 더 들어올까, 다리를 건너는 쓰기와 먼저 끝난 복귀

1바이트만 썼는데 4바이트가 모두 바뀌었다, 오류 하나 없이

같은 1KB 복사인데 6155 클럭과 696 클럭, 무엇이 아홉 배 가까운 차이를 만들까

CPU와 DMA가 동시에 지나가는 칩 속 교차로, 신호등은 누가 켤까

버스와 메모리 칩은 쓰는 말이 다르다, 그 사이에 선 통역사

서로 상대가 먼저 움직이기를 기다리면, 칩 속 길이 그대로 멈춘다

먼저 보낸 요청이 가장 늦게 돌아온다, 그런데 규칙 위반이 아니다

HardFault가 가리킨 줄은 범인이 아니었다, 저장 명령 뒤 여섯째 줄을 가리킨 PC

세 사건의 판결, 증상만 보고 어느 신호를 볼지 고르는 대조표

실습 환경

강의에서 쓰는 보드

  • STM32F429I-DISC1 (Cortex-M4)

  • 보드에서 사이클, 인터럽트 횟수, 버스 오류를 직접 잽니다

보드가 없어도

  • 모든 측정 결과를 영상으로 보여 드립니다

  • 보드에 없는 AXI·보안 기능은 그림과 예시 코드로 따라갑니다

자주 묻는 질문

Q. 하드웨어나 회로를 전혀 몰라도 들을 수 있나요?

네. 버스가 무엇인지부터 시작합니다. 회로도나 설계 언어는 다루지 않고, 프로그래머가 쓰는 코드 한 줄이 칩 안에서 어떻게 움직이는지에 집중합니다. 레지스터에 값을 쓰고 읽어 본 경험이면 충분합니다.

Q. 보드가 꼭 있어야 하나요?

아닙니다. 보드에서 잰 결과를 모두 영상으로 보여 드립니다. 강의에서 쓴 보드는 STM32F429I-DISC1이며, 보드에 없는 AXI와 보안 기능은 그림과 예시 코드로 설명합니다.

Q. 영어 원문 문서를 읽어야 하나요?

원문은 화면에 띄워 필요한 문장에 형광펜을 긋고, 뜻은 우리말로 풀어 설명합니다. 영어를 따로 읽지 않아도 따라올 수 있고, 강의가 끝나면 필요한 절을 직접 찾아 읽는 데 익숙해집니다.

Q. 나레이션은 AI 음성인가요?

네. 강사 본인의 목소리를 학습한 음성 합성입니다. 대본과 내용은 강사가 직접 기획하고 검수했으며, 측정 화면은 실제 보드에서 실행해 확인한 결과입니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 코드는 짜지만 칩 안은 블랙박스였던 프로그래머

  • 레지스터에 값을 쓰고 읽어 본 펌웨어·드라이버·시스템 개발자

  • 칩 내부 구조와 버스를 처음 공부하는 분

선수 지식,
필요할까요?

  • C 언어 기초

  • 레지스터에 값을 쓰고 읽어 본 경험

안녕하세요
홍영기입니다.

커리어인증

3,632

명

수강생

263

개

수강평

281

개

답변

4.7

점

강의 평점

9

개

강의

인하대학교에서 전자공학을 전공하고, 임베디드 소프트웨어 개발자로 일했습니다.

2008년부터 18년 동안 현장 강의를 해 왔습니다. 삼성전자, LG전자, SK하이닉스, 현대모비스, LIG D&A, 서울대학교 등 기업과 기관에서 개발자들을 가르쳤고, 그 경험을 강의 교재로 정리했습니다.

『RTOS』(2008), 『리눅스 쉘』(2018), 『FreeRTOS』(2019), 『Cortex-M』(2022), 『부트로더 기반 임베디드 시스템』(2023)

유튜브 가일스쿨(https://www.youtube.com/@guileschool): 임베디드와 개발 강의

맥 자동화도 15년째 연구하고 있습니다. Keyboard Maestro와 AppleScript로 반복 작업을 줄이는 방법을 가르치고, Final Cut Pro 자동화 플러그인 Greenlight를 직접 개발해 판매하고 있습니다. 직접 만든 도구들은 깃허브(https://github.com/guileschool)에 공개하고 있습니다.

유튜브 캡틴맥봇(https://www.youtube.com/@captainmacbot): 맥에서 AI와 자동화를 쓰는 법

강의 요청 및 기타 문의는 guileschool@gmail.com으로 보내 주세요.

더보기

커리큘럼

전체

26개 ∙ (4시간 30분)

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

수강평

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

홍영기님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

얼리버드 할인 중

₩91

34%

₩181,500

평생교육이용권 지원 강의