Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

TIL

[251018] Day 68 - 텔레칩스 임베디드 스쿨 2개월차 회고이자 리뷰이자 후기

sm_amoled 2025. 10. 19. 10:21

들어가며

구글에 텔레칩스 임베디드 스쿨 후기를 검색하면 내 게시글이 제일 1등으로 나오고 있다고 제보가 들어왔다.

 

이게 진짜네… 이거 열심히 작성해두면 나중에 4기, 5기에서 지원할 때 사람들이 많이 참고하겠다 싶다. 또 모르지, 내가 예전에 애플 개발자 아카데미 포트폴리오 올렸던걸로 사람들이 나한테 “사실 애플 아카데미 지원할 때 성민님 포트폴리오 보고 준비했었어요. 그래서 낯이 익어요 ㅎㅎ” 라면서 iOS 컨퍼런스에서 말을 걸어왔던 것처럼, 나중에는 “성민님 텔레칩스 후기 글 보고 지원했어요!” 라고 또 대화의 물꼬가 틀어져서 네트워킹에 도움이 될 수도 있으니깐.

그… 나 아는 사람이면 여기 들어와서 열심히 쓴 글에 좋아요도 눌러주고 광고도 하나씩 눌러서 나한테 0.01달러라도 쥐어주고 나갔으면 좋겠어 ^,^

 

이게 1,2 기 사람들이나 다른 사람들이 블로그나 후기 같은걸 많이 쓰지 않는게 분야의 특성인가 싶기도 하다. 앱개발, 웹개발을 준비할 때는 거의 뭐 대부분이 ‘기술 블로그’ 로 내가 배운 것들에 대해서 기록을 남기고 열심히 살아온 흔적을 남기는게 뭔가 미덕 같은 느낌이였는데. 아무래도 업계 자체가 트랜디하게 막 바뀌는 느낌이 아니라서 그럴지도. 어쩌면 내가 또 열심히 디테일하게 이런저런 기록들을 남겨두고 쌓여가다보면 Zedd 라거나 김종권 아저씨처럼 이 판에서 또 유명한 사람이 될 수도 있지 않겠는가? ☺️

공유한다는걸 떠나서 뭔가 기록으로 남긴다는 것 자체가 유의미한 것 같기도 하다. 이번에 새로 우리 담당해주시는 강사님께서도 ‘결국에 남는건 기록 밖에 없어요’ 를 강조하시면서 노션이나 어디에 공부하는 내용들을 꾸준히 남겨두시라고 했는데, 그 말이 맞는 것 같다. 이번에 ARM 아키텍처 공부했던 것들을 다시 한 번 찾아봐야하나 고민하고 있었는데 내가 예전에 고려대에서 수업 들었던 걸 노트필기를 해뒀던게 내 굿노트에 잘 남아있고, 심지어 블로그에 노트필기한 걸 한 번 더 텍스트로 정리해서 모아두기까지 했었다! 아유 기특해라,,, 챗GPT도 없던 시절인데 그걸 어떻게 다했을꼬,,, 심지어 그 뒤로는 앱개발 분야 선택해서 이제 나랑은 전혀 상관없는 분야가 될거라고 장담했는데…

이번에 프로젝트 하는 것, STM 보드 공부하는 것, 이론 공부하는 것 모두모두 잘 기록으로 남겨둬야겠다. 또 언제 어디에서 써먹을 수 있을 지 모르니깐.

무튼 텔레칩스나 RAPA에서, 또는 피어들이 내 블로그를 보든 말든 나는 열심히 내 할 일을 꾸준히 해나가겠다.

(그래도 혹시 보고계시다면 잘 부탁드립니다!! 제 이름은 박성민 입니다!!!)

이번 달의 회고

이번달에 무엇을 했냐

외부인들은 이걸 궁금해할 것 같아서, 우선 이거부터 적고 이번달의 회고 질문들로 넘어가겠다.

수업한 것들

  • 파이썬 기본 문법과 Pandas, Numpy 를 이용한 ML 기본
  • 경기과학기술대학교에서 전기자동차 구조 파악과 분해 실습
  • 소프트웨어 공학 + OOP 기본과 설계의 중요성
  • (추석이 10일 넘게 끼여있어서 수업이 많지는 않았다)

따로 공부한 것들

  • STM32로 MCU 조작하기
    • 앞으로 실습할 내용들 미리 경험해보기
    • 센서값 읽어오기 연습
  • 신호 및 시스템 인강 듣기
    • 푸리에 변환, 라플라스 변환, Z 변환까지 이론 학습

우선 파이썬부터

사실 아직 왜 배웠는지는 잘 모르겠다.

  • 인터프리터 언어의 패러다임을 알려주려고..? → 임베디드에서 인터프리터 언어를 쓰나?
  • 새로운 언어를 배워야하는 시점에 들 거부감을 없애기 위해 → 다른 언어가 들어올 틈이 거의 없는 영역일텐데
  • 머신러닝이 중요해서 → 임베디드 보드 위에 ML 모델이나 에이전트를 올리는 날은 꽤나 멀지 않았을까.
  • 아니면 일 할 때 들어오는 데이터들을 실제로 분석해야해서? → 이 이유가 제일 타당한 것 같은데, 업무 보면서 센서값이나 뭔가 통계치에 대해서 데이터분석을 진행해야 한다는 코멘트는 수업 중에 하나도 없었던 것 같다.

나름 파이썬을 공부하는 타당성에 대해서 고민을 해봤지만, 답을 찾지 못했다. 다른 교육 커리큘럼에 일부러 시간을 쪼개어서 파이썬 과정을 3-5일이라도 추가한다고 하는데, 이게 그렇게나 중요한 영역인지 사실 아직 모르겠다. 나중에 실제로 업무를 할 때 알게되는 부분일랑가 🤨.

과학기술대학교 전기자동차 분해 실습

이건 좀 쩔었다. 사실 아직 자동차라는 도메인 자체에는 큰 관심이 없는 편이라 그렇게 재미있을까 싶었는데, 그래도 몸을 움직이면서 뭔가 해보니 재미있기는 하더라. 내가 살면서 언제 전기차를 뜯어보고 만져볼 수 있겠어 ㅋㅋㅋ.

그런데 이 때 내가 특히 충격먹었던 건, 전기자동차에 들어가는 회로에 대해서 나는 아는게 정말 하나도 없는데 같이 수업을 듣던 피어들은 “당연한거지” 라는 느낌으로 수업을 듣는다는 인상을 받았다는 것이다. 나는 코일이라는게 회로에 기본 부품으로 들어간다는 걸 오늘 처음 안 것 같은데,,, 기본 소자도 모르거니와 이미 모듈화된 모터나 릴레이 스위치? 같은 부품들도 나는 하나도 모른다는걸 깨달았다. 그런데 아무리 생각해도 이런게 임베디드에서 프로페셔널하게 개발을 할 때 모르면 안되는 내용들이라고 생각이 들어서 기본 회로 학습에 대한 니즈가 좀 생겼다. 물론 내가 HW 설계 업무를 할거기 때문에 이걸로 시스템을 직접 구성하고 안정성을 평가할 수 있을 정도의 무언가를 할 필요는 없겠지만, 내가 돌리는 시스템의 추상화가 어떻게 되어있는지 정도는 알아야 돈받고 일하는 수준이 될 수 있으리라 믿는다. 앱개발을 공부할 때에도 CLayer를 알아야 UI를 그릴 수 있었던 것처럼 말이지.

소프트웨어 공학과 객체지향 설계

새로오신 강사님께서 담당해서 4일간 수업을 진행해주셨다. 이 분은 방산 일을 하시느라 임베디드이긴 한데, C++로 개발을 진행하시면서 다양한 시뮬레이션이나 로직 등을 설계하고 구현하는 일을 담당하는 분이셨다.

그래서인지, 우리가 SW 직무로 일을 할거라면 이렇게 C언어만 대충 해서는 절대로 롱런하지 못한다. 결국에는 이런 구현 능력만 하다보면 C 코드를 더 잘짜는 GPT에게 결국 밀릴 수 밖에 없을거고, 그게 싫다면 조금 더 설계적인 면이 포함되는 객체지향을 공부하고 준비할 것을 제안해주셨다. 텔레칩스 임베디드에서는 무조건 C로만 코드를 작성하는지는 몰라도, 다른 회사까지 확장성을 고려한다면 C++정도의 언어는 충분히 학습해서 활용하려고 노력해둘 수 있을 것 같다고 말씀해주셨다.

사실 내가 이때까지 해오던 건 객체지향 컨셉을 이용한 추상화와 코드분리 설계 등이였기 때문에, 이 부분에 대해서는 좀 공감을 많이 했다. 어쩌면 HW의 발달로 공짜 점심으로 임베디드에서 C++ 코드를 돌리는 날이 머지않아 오지 않을까 기대가 되기도 한다. 물론 다른 범용 언어들은 JVM이나 PVM 같은 곳 위에서 돌아야 하기에 성능 때문에 어려울 수는 있겠지만, 메모리가 조금 낭낭하다면 C++ 정도는 돌릴 수 있지 않을까? 나중에는 정말 자판기에도 AI 모델일 올라가게 될텐데, 그 정도가 되면 나는 객체지향을 임베디드에서도 필요로 하는 역량으로 보게 될거라 생각한다.

라고 생각은 하지만, 지금 당장 객체지향을 보면서 미래를 준비해야하냐? 아니면 C언어를 공부해야하냐?를 생각한다면 아직은 C 쪽이 더 급한 것 같다. 물론 디자인 패턴과 아키텍처에 대한 중요성을 뼈저리게 느끼고 이미 알고있지만, 지금 당장 멀티코어 프로그래밍, 쓰레드 프로그래밍, 코루틴 (C에는 없겠지만) 등에 대해 잘 다루지 못하고, 비동기 프로그래밍 같은 것도 해본 적 없는 입장이라면 이런 C언어에서 할 수 있는 베이스 지식들을 다 갖추어놓고나서 설계 능력을 챙겨도 괜찮지 않을까? (라고 할 때 C++ 할 걸 이라는 생각이 들지도 모르겠지만 ㅋㅋ)

STM32 보드 만져보기

나는 이런 개발 보드를 활용해서 뭔가 HW를 연결해보거나 실습해본 적이 거의 무방하기 때문에, 분명 단순히 수업을 듣기만 해서는 진도와 이해가 남들보다 뒤쳐질게 뻔하다고 생각했다. 그래서 앞으로 들어야 하는 내용들을 미리 선행해서 한 번 맛보기 위해서 STM32 보드를 미리 구매해서 실습을 진행해보았다.

근데 이거 뒤질나게 어렵더라.

우선 내가 어려움을 느끼는 부분은 대충 요런 부분들인 것 같았다.

  • 이론과 개념 부재
    • 풀업? 풀다운? HAL? EXTI? NVIC? 개념부터 모르는게 너무 많다.
    • I2C, UART, SPI, ETHERNET, CAN 기타 등등에 대한 개념이 하나도 없다.
    • 이와 관련된 회로이론이나 전력과 관련된 내용, DSP 같은 배경 이론 지식들도 없다보니 나에게는 아직 ‘마법같은 일’이 벌어진다 정도로만 생각되는 것도 문제. 도대체 저항 종류는 왜이리 많은거며,,, ㅋㅋㅋ
  • 회로 구성하기
    • 왜 5V와 GND 사이에 LED를 바로 연결하면 안되는거야? 갑자기 탄내나서 보드 탄 줄 알았음;;;
    • 저항을 꽂으면 분명 전기가 통할텐데 어떻게 풀업 저항을 연결해서 GPIO의 신호를 스위칭 신호로 사용할 수 있는지도 나에게는 너무나도 큰 의문이다.
    • 지금 단계에서 나는 저항 하나 꽂고 점퍼선 하나 꽂을 때마다 빵판에다가 코를 킁킁대면서 물리-디버깅을 하고있는데, 이걸 어느 타이밍에 해야할 지도 의문이다. 👃👃

이런 관련된 여러 이슈가 있어서 이론 공부를 시작했다. 사실 Digital Signal Processing 에 대해 공부해야겠다 생각이 들어서 신호 및 시스템을 독학을 했는데, 도중에 회로와 관련된 그림이 나올 때마다 전혀 이해가 안되고 어렵게 느껴져서 DSP로 들어가기 전에 회로이론부터 가볍게 공부를 하고 넘어가려고 한다. 피어에게 들어보니 이게 직류일 때와 교류일 때 다르게 동작하는? 도메인이 다른? 회로들이라서 둘 다 이해를 해야한다고 말해줬다. 공부할 게 2배로 늘었다는 이야기지.

또, 수업을 진행할 때 여러 강사님께서, 그리고 거의 대부분의 면접 기출에서 ‘통신’에 대한 이야기를 강조했다. 특히 임베디드로 오니깐 통신 방식에 대해서 훨씬훨씬 더 많이 물어보는 것 같다. 그래서 이런 키워드들과 어떤 통식은 어떻게 하면 되는지, 어떤 장단점이 있어서 어디에 활용할 수 있는지에 대해서 좀 공부를 탄탄하게 해둬야 할 것 같다. 이제 진짜로 중요한 내용인 것 같음.

신호 및 시스템 강의 듣기

앞서 언급했던 이론적인 베이스가 부족하다는 문제들이 나에게 좀 있는 것 같아서 보완하고자 디지털 신호 처리를 공부하려 했고, 그 선수과목인 신호 및 시스템 강의를 들었다.

출퇴근 지하철에서 조금씩 듣고, 추석때 본가 내려가는 버스랑 기차에서 열심히 듣고, 어디 놀러갔다가 돌아오는 길에 또 열심히 들어서 겨우 진도를 다 나갈 수 있었던 것 같다. 시간이느무없어!!

푸리에 변환과 라플라스 변환, Z 변환 등에 대해서 배우면서 이러한 수식과 변환 과정이 물리적으로 어떤 의미를 가지는 지에 대해서 파악하려고 노력했다. 내가 이걸로 수학 문제를 풀어내려고 배우는 건 아니고, 그래서 내부에서 신호를 처리할 때 어떤 과정을 거치냐? 에 대해서 대략적인 파악을 하고자 접근했던 거였는데, 결과적으로는 꽤나 만족스러운 이해를 했다고 생각한다. (물론 이게 문제를 안풀어봐서 그럴수도 있다 ㅋㅋ) 나중에 필요한 순간이 오면 회로를 잠시 열어서 그 필요한 수치들을 GPT나 뭐 수학 자료들을 잠깐 펼쳐서 계산해(볼 실력은 아직 아닌 것 같고, 계산해나가는 과정과 의미에 대해서 이해)할 수 있을 정도면 된다고 생각한다.

 

앞서 언급했던 것처럼, 다음 차례로는 DSP로 가기보다는 회로 이론에 대해서 먼저 공부를 해볼 예정이다. 회로에 대한 이해가 있어야 그 회로로 처리하는 것들을 이해할 수 있을 것 같다. 이게 역시 기본기가 중요한 것 같다.

그래서 이번 달의 회고

열심히 했나?

이번 달도 많이 배우려고 열심히 굴렀다. 다만 시간을 효율적으로 활용하지 못했다는 생각이 자꾸만 남는다. 생각해봤는데, 그 이유가 2군데에 있는 것 같다.

  • 진짜로 비효율적으로 보냈음.
    • 추석 때 대구랑 부산 내려가는 고속버스랑 기차에서 나름 열심히 신호 및 시스템 인강을 들었는데, 이동하면서 들어서인지 아니면 내가 배경지식이 모자라서 그런지는 모르겠지만 학습 속도가 좀 더뎠다. 지금 생각해보니 불편한 환경에서 공부해야 되는 상황이였으니 조금 더 쉽게 회로 같은 내용들을 봤으면 조금 더 좋았지 않을까 싶다.
    • 유튜브와 롤은 줄였으나 술은 줄이지 못했다. 물론 저녁에 공부하면서 마시는 맥주 한 캔이긴 하지만, 이게 하루 컨디션에도 영향을 좀 줬던 것 같다.
  • 배우는 속도보다 배워야 할 것들이 더 빨리 쌓인다.
    • 이게 진짜 치명적인 것 같은게, 내가 배우고 공부하는 속도는 산술적인데 새로운 키워드가 쏟아지는 속도는 기하적이라 가히 따라갈 수가 없다. 임베디드 스쿨에서 이런걸 원했던 거긴 한데 막상 정통으로 명치에 맞으니깐 너무 아프네… 그만큼 강사님들께서 알려주고 싶은 내용들이 많은데 시간이 부족하다는 의미이기도 하니깐, 열심히 키워드들을 주워서 남는 시간에 배워봐야지.
    • 어떻게 보면 이제 새로운 키워드들이 눈에 들어올 정도로 실력이 늘었다고 볼 수도 있겠다. 이전에는 그냥 C언어랑 싸운다고 바빴는데, 이제는 고급 C언어 + C언어 활용해서 MCU 제어 + MCU 제어를 위한 이론 + ARM 보드의 아키텍처 등등 다양한 것들에 관심을 가질 수 있는 단계가 된게 아닐까 생각한다.

회고를 하려고 클로드에게 괜찮은 회고 질문들을 좀 뽑아달라고 했다. 그 중에서 괜찮은 질문들을 엄선해서 한 번 답을 적어보려고 한다.

다음달에 집중하고 싶은 기술 영역은?

내가 생각할 때는 다음 달에는 통신을 조금 공부를 많이 해야 할 것 같다.

  • UART
  • I2C
  • SPI
  • CAN
  • ETHERNET
  • TCP/IP
  • UDP

이런 컨셉들이 되게 많이 나오기도 하고, 이제는 임베디드시스템도 분산 돼서 사용되는 경우가 너무 너무 많기 때문에 여러곳에서 통신에 대한 중요성이 점점 높아지고 있다고 느껴졌고, 이것들이 결국 분산 시스템의 기반이 되는 기초지식이 될 거라고 믿어 의심치 않는다. 그래서 이런 부분들을 한 번 집중을 해 보려고 한다. 뭔가 내가 테크니컬 하게 가져 갈 만한 부분이 있을지는는 모르겠지만 (진짜 이 분야를 몰라서 모름), 내용들을 파보면 뭐가 또 막 튀어나오겠지? ㅋㅋㅋ

그리고 C언어 고급, 코어 프로그래밍 / 스레드 프로그래밍 / 비동기 프로그래밍 / 여러 C 실행파일 간의 통신, 내용들을 좀 연습해보고 싶다. 물론 지금 가지고 있는 STM보드의 CPU는 싱글 코어라서 멀티코어 프로그래밍을 연습해볼 환경이 될 수 있을지는 모르겠지만, PC 위에서 한 번 시도해보면서 실습을 진행해볼 예정! 이후에 TOPST 보드를 제공받으면 여기는 멀티코어라고 들었던 것 같아서, 병렬 프로세싱을 적용해볼 수 있을 것 같다. 이때를 위해 준비해보쟈.

이론 공부 측면에서는 ARM 아키텍처와 회로 이론이 있겠다. 놀랍게도 나는 ARM 아키텍처를 공부한 적이 있었다! ARM에서의 레지스터가 어떻게 돌아가는지, 그리고 Interrupt, Exception, Cache 같은 내용들에 대해서 공부했었는데, 이게 무려 6년 전이라서 빨리 다시 한 번 내용들을 리뷰해야 할 것 같다. 그리고 회로. 아직 회로는 전혀 모르겠어서 얼른 공부를 해야한다.

진짜 할 게 많네…

스터디 운영 방식에 개선이 필요한가?

이번에 신호 및 시스템을 공부하거나 C언어에 대한 공부, 그리고 객체지향 책을 읽을 시간이 정말 없었다. 그런데 내가 생각 했을 때 그 이유가 스터디의 시간을 너무 많이 투자를 했는데 그만큼 리턴이 안 나왔기 때문이라고 생각을 한다. 좀 타이트하게 해서 운영 할 필요가 있는데 이거를 너무 시간이 많다고 생각해서 루즈하게 놀면서 활동을 하지 않았나 라는 생각이 좀 들었다. 사실 9to6로 공부를를 하고 나서 모여서 2시간 3시간 자료를 더 본다는게 쉽지만은 않은 일인데, 집중력이 떨어졌다고 해서 이걸 질질끌면은 이도저도아닌 게 되어 버리고, 그냥 조금 더 집중해서 1시간 안에 할 수 있는 건 최대한 끝내는 게 나을 것 같다는 생각이 들었다. 스터디에 있어서도, 조금 더 시간을 효율적으로로 활용할 할 수 있는 방법에 대해서 찾아 보는 게 중요할 것 같다.

운동이나 휴식시간을 어떻게 조정할거냐?

지금 나는 YouTube 도 알고리즘을 꺼둔 상태라 구독한 채널의 영상만 볼 수 있는 상태이고 게임도 거의 안하고 (롤 다이아 계정이 휴면 강등을 당했다고!!!) Instagram 으로 릴스 정도만 보고 있는 상태인데, 남는 시간에 대체제가 없으니까 릴스를 보게 되는 거 같다. 신호 및 시스템 강의를 들을 때는 YouTube 에서 강의 영상을 다운 받아 놓고 출퇴근시간에 오며가며 들으니 짬 나는 시간을 되게 생산적으로 잘 활용 했다는 느낌이 들어서 다음 한달도 짬짬이 들을 수 있는 컨텐츠들을 찾아서 학습 시간으로 활용해볼 것 같다.

운동 제일 문젠데, 저녁 늦게까지 책을 보거나 강의 마무리를 하다 보면 1시에 자는 경우가 되게 많았고, 그래서 운동을 나가기가가 너무 피곤해서 제낀 날이 많았던 거 같다. 일주일에 1번 가는 건 좀 심하긴 한데… 그래도 낮 시간을 조금 더 타이트하게 쓰고 스터디에 쓰는 시간을 줄이고 하다 보면 저녁에 일찍 자고, 다음날에 운동을 갈 수 있지 않을까? ㅜㅜ 진짜 마음은 운동 열심히 나가고 싶은데 피곤한 상태로 운동한 날에는 그냥 꾸벅꾸벅 졸게되어서 몸이 좀 피곤하네.

술을 줄여야해!!!!!

구체적이고 측정 가능한 다음달의 목표 3가지

  • 통신 학습
    • SPI, I2C, UART 3가지 통신 방식에 대해 이론 정리 + 실습을 진행한다.
    • (가능하다면) 나중에 활용할 수 있도록 라이브러리화 해본다.
    • 학습한 내용에 대해 이론 / 실습 / 라이브러리 를 블로그에 각 게시글 1개 업로드한다.
  • 이론 학습
    • ARM 프로세서 아키텍처에 대해 이론 복습 정리한다.
    • ARM Instruction, Memory Map, I/O, Timer, Interrupt, IO Interrupt, Cache Memory, TLB 에 대해 정리한다.
    • 필요한 경우, 블로그 게시글을 재업로드 한다. (링크 걸기)
  • C언어
    • 멀티코어 프로그래밍에 대한 개념과 실습, 활용 방법에 대해 글로 정리하여 블로그에 업로드한다.

다음 달의 목표가 있다면 효율적으로 시간 활용하기.
혼술을 줄이자. 평일에는 공부해야지.
일주일에 크로스핏 3번은 가야지.

320x100