본문 바로가기

임베디드 기초17

자동차 개발자가 반드시 알아야 할 ROM, RAM, Flash, EEPROM, NVM의 완벽한 차이 ROM, RAM, Flash, EEPROM, NVM의 완벽한 차이들어가며 RAM, ROM에 대해 정확히 알고계시나요?두개가 뭐가 다르냐고 묻는다면 휘발성, 비휘발성이라고만 대답하고 있진않은가요?그럼 "Flash랑은 뭐가 다르냐"는 질문에는요?그럼 "EEPROM은 ROM에 EEP가 붙은건가요?" 라는 질문에는요?"NvM도 비휘발성이지 않나요 ?" 라는 질문에는요? 여기서 한번에 알아가는거예요그래서 뭉치로 관련된 것을 모두 모아봤어요할때 한번에 알아가자고요~ “껐다 켜도 남아 있으면 ROM, 끄면 사라지면 RAM” 예를 들어볼게요 .당신의 차가 시동을 끈 후 다시 켜졌어요.ECU 부팅 과정:0초: 전원 ON└─ ROM에서 부트로더 코드 실행1초: 부트로더 실행└─ "어디서 메인 프로그램 로드할까?"2초:.. 2025. 12. 22.
실무자가 반드시 알아야 할 Static, Extern, Global 변수의 완벽한 차이 실무자가 반드시 알아야 할 Static, Extern, Global 변수의 차이Static, Extern, Global 변수들어가며 AUTOSAR 프로젝트에서 이런 상황이 자주 발생해요:신입 개발자:파일1.c:static int counter = 0; // ?파일2.c:extern int counter; // ?main.c:int global_counter = 0; // ?"이게 다 뭐예요? 다 같은 거 아니에요?"선배:"음... static은 내부용, extern은 외부용...?"신입:"그래서 counter는 어디에 있어요???"결과: 링킹 오류 + 디버깅 2시간 😭이 혼동을 끝내자!이 글에서는 static, extern, global의 정확한 정의, 스코프, 메모리,그리고 언제 뭘 써.. 2025. 12. 19.
개발자가 반드시 알아야 할 Compile, Linking, Build, Rebuild, GenerateAll의 완벽한 차이 🔨 개발자가 반드시 알아야 할 Compile, Linking, Build, Rebuild, GenerateAll의 완벽한 차이들어가며안녕하세요 버그없는토마토입니다여러분은 혹시 컴파일과 빌드의 차이를 아시나요?그렇다면 링킹과 빌드의 차이는요?어떨때 빌드를 쓰고 어떨때 리빌드를 쓸까요? 신입이 물어본다면, 위 개념을 구분해서 설명해줄 수 있나요?저는 신입때 이 구분이 명확하지 않아서 혼동해서 쓰기도 하고 얼버무려 대답한 적도 있답니다그러다가 그당시 팀장님이 물어본 질문에 추상적으로만 어버버했던 기억이 있어요.. 오늘은 제가 컴파일부터 링킹, 빌드, 리빌드, GenarateAll까지 모두 마스터 시켜드릴게요 여러분이 빌드를 위해 빌드프로그램이든, 모빌진이든, 빌드서버든 어떤 프로젝트를 열었어요.IDE (In.. 2025. 12. 19.
🔗 링크(Link)란 무엇인가? 컴파일 후에 일어나는 중요한 과정 이해하기링크(Link)란?안녕하세요. 버그없는토마토입니다 🍅우리가 작성한 C 코드가 실행되기까지는 여러 단계의 빌드 과정이 필요합니다.그중 많은 분들이 헷갈려하는 부분이 바로 “링크(Link)”라는 단계입니다.컴파일은 많이 들어봤지만,링크가 정확히 무엇을 하는 과정인지 이해하지 못하면임베디드 개발, 자동차 ECU 개발에서 흔히 마주치는 오류를 해결하기 어렵습니다. 오늘은 링크를 초보자·취준생 눈높이에서 이해하기 쉽게 설명해보겠습니다.실무에서 문제가 발생하지 않는다면 링크란 말을 직접적으로 사용할 일이 많지는 않습니다.그래서 더더욱 모르고 넘어가기 좋은데요알아두면 해가 될리 없는 지식이기 때문에 초급일때 완전한 개념을 짚고 넘어가는 것이 중요합니다.저와 함께 보시죠 1... 2025. 12. 14.
컴파일(Compile)이란 무엇인가? C 코드가 실제 MCU에서 실행되는 과정 이해하기Compile안녕하세요, 버그없는토마토입니다 🍅오늘은 임베디드 개발자라면 반드시 이해해야 하는 개념,바로 컴파일(Compile)에 대해 정리해보겠습니다. PC 프로그램이든 자동차 ECU든, 우리가 작성한 C 코드가 실제 하드웨어에서 어떻게 실행되는지 이해하지 못하면디버깅·최적화·빌드 시스템을 제대로 사용할 수 없습니다.특히 자동차 소프트웨어처럼 안전성이 중요한 분야에서는 “컴파일 과정 이해”는 필수 역량입니다. 컴파일의 개념을 이해하려면 사람의 언어와 마찬가지인 기계어라는 것을 이해해야 합니다.기계의 입장이 되어서 바라보고 생각하면서 글을 읽어봐주세요.그럼 이해하기 한결 편할거예요. 1. 컴파일이란 무엇인가?간단히 말하면,사람이 이해할 수 있는 C 코드 .. 2025. 12. 14.
RTOS와 Kernel은 무엇이 다를까? 임베디드 소프트웨어 개발자가 설명하는 OS 구조의 본질RTOS란? Kernel이란?안녕하세요, 버그없는토마토입니다 🍅예전에는 임베디드 개발자들이 RTOS(Real-Time Operating System)라는 용어를 많이 사용했지만,최근에는 “커널(Kernel)”이라는 단어가 훨씬 더 자주 등장합니다.그렇다면 Kernel은 무엇이며, RTOS와 어떤 관계가 있을까요?그리고 왜 두 용어가 혼용되면서 개발자들이 혼란을 느끼게 되었을까요?오늘은 그 개념을 실무자의 관점에서 쉽게 정리해보겠습니다. 제가 생각 했을때 OS를 햄버거 가게 전체라고 생각한다면Kernel을 주문을 처리하는 직원(?)으로 생각할 수 있을 것 같고,RTOS를 시간이 생명인 드라이브 스루 시스템이라고 비유할 수 있을 것 같습니다.이렇게 생각.. 2025. 12. 13.