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

TIL

[250813] Day 3 - 날씨 최고로 좋다~

sm_amoled 2025. 8. 13. 23:15

들어가며

발이 나을 것 같으면서도 계속 아프다. 걷는 것까지는 OK인데, 뛰면 무리무리 인 느낌. 일단 내일까지만 상황을 보고, 병원을 갈 생각을 해야할 것 같다. 병원가도 뭐 근데 해줄 수 있는게 있을까? 싶긴 하다 ㅋㅋㅋ.

 

센터에서 피로를 이기고 수업을 집중해서 듣는 방법에 대해서 좀 연구가 필요할 것 같다. 아무래도 집중해서 들어야 뭔가 내가 얻어갈 것들을 뽑아낼 수 있을 것 같은데, 어제 피곤하게 보냈더니 자꾸 잠이 오는 것 같다.

 

일단 내일 수업이 있는 날에는 술을 정말 자제해야할 것 같고, 점심 먹고 좀 걷던지 스트레칭을 자주 해주면서 뭔가 환기시켜야할 것 같다. 이왕이면 지금 이 시점을 내가 집중을 잘하는 환경을 찾는 테스트장으로 생각하고 여러가지를 시도해봐도 괜찮을 것 같다.

 

C언어 수업을 들으면서 느끼는건, 다른 학생들이 내 생각보다 C언어를 잘 활용하지 못하는 느낌이 들었다. 물론 내가 컴공이고 다른 학생들은 전자 쪽 전공이라 그럴수도 있을테고, 나중에 HW 쪽 수업을 진행하면 내가 못따라가는 경우도 많이 발생할 수 있겠다. 그래서 오늘 문득 “내가 SW 쪽으로 강점이 있다고 여겨도 될까?“ 라는 약간의 기대 아닌 생각을 하게되었는데, HW 쪽도 한 번 배워보면서 내 진짜 강점을 찾고 확신을 가지려고 노력해야겠다.

 

분명 오늘 비가 많이 온다고 했는데, 낮에 스쿨에 갈 땐 비가 좀 오더니만은 저녁 되니깐 오히려 비가 그쳐버렸다. 혹시 비가 너무 많이 오면 센터에 출석을 안하려나 기대했는데,,, 그럴 일은 없을 것 같다 ㅋㅋㅋ 이렇게 잠잠할거면 안전 문자는 왜 그렇게 많이 온건지...

 

오늘의 키워드

코드 최적화

데이터구조를 효율적으로 사용해서 메모리를 덜 사용하는 것도 중요하지만, 임베디드에서는 메모리를 효율적으로 사용하는 것이 중요하기 때문에, 코드가 기계어로 번역되었을 때의 용량을 줄이는 것도 중요하다!

 

디버그 모드로 앱 실행 중에 포인트를 찍어서 실행을 정지시키고, Ctrl + Alt + D 를 눌러서 디어셈블리 창을 열 수 있는데, 거기에서 어셈블리로 변환된 코드들을 확인할 수 있다. 라인 수를 확인해보자.

// #1 어셈블리로 13줄
if (num % 2)
{
	printf("홀수\\\\n");
}
else {
	printf("짝수\\\\n");
}

// #2 어셈블리로 16줄
printf("%s\\\\n", num % 2 ? "홀수" : "짝수");

// #3 어셈블리로 15줄
num % 2 ? printf("홀수\\\\n") : printf("짝수\\\\n");

 

🤨 그러나, 가독성과 유지보수성을 더 높이는게 중요하지 않나 싶다. 흠…

예외처리의 타이밍

입력받자마자 유효한 입력인지를 먼저 검사를 다 하고 로직으로 진입해야함. 로직 중간에 입력받은 값의 유효성을 확인하는 것은 좋지않음.

무한루프가 필요할 때는 for 쓰기

while(1) 보다는 for( ; ; ) 를 사용하자.

  • boolean이 기대되는 자리에서 정수 리터럴 1이 들어와있음
  • 부여한 1이 실제 조건인지 무한루프를 제시하기 위한 의도인지 불분명함
  • 위 형식으로 for를 사용하면 명확한 의도로 무한루프를 작성할 수 있다!
  • C언어에서 다른 언어로 포팅할 때, while(1) 문법으로 무한루프를 제공하는 언어가 많지 않음.

 

MISRA C:2012

오늘은 C언어의 코딩 컨벤션이 괜찮은게 있는지 찾아보려고 코드 작성 스타일을 열심히 서치하다가 BARR, MISRA 같은 공인? 규정이 있는 것을 발견했다. 사실 나는 그냥 들여쓰기 규칙, 명명 규칙 같은 것들에 대한 정보가 있는가 싶어서 살펴본거였는데, 오히려 Lint 규칙에 가까운 규칙이 있는 것 같아서 한 번 파보려고 한다.

 

현재 2012년 MISRA가 나온 이후에 2023, 2025년 버전까지 더 나왔지만, MISRA 확장팩 4개 (AMD 1~4) 에 있는 내용만으로도 내가 우선 작성하는 내용들을 충분히 커버할 수 있어서 MISRA 2012에 익숙해지려고 한다.

MISRA의 규칙들은 2가지 분류, 3가지 단계로 볼 수 있다.

분류

  • Rule : 도구를 활용해 분석할 수 있는 규칙
  • Directive : 맥락을 통해 분석할 수 있는 규칙

단계

  • Mandatory : 반드시 지켜야하는 규칙
  • Required : 일부 상황에서 예외가 발생할 수 있는 규칙
  • Advisory : 프로젝트 / 조직의 상황에 따라 적용할 수 있는 규칙

 

임베디드 현직자 세미나

오늘 그라운드임베디드의 현직자 세미나에 참여했다. 그리고 내가 배운 키워드는 요로코롬이다.

  • 컴공출신으로 임베디드를 하고싶다면 HW에 대한 학습을 필수이다. 반도체같은걸 공부하라는게 아니라, 전자과에서 기본적으로 배우는 회로 이론들에 대한 지식이 있으면 좋다. 간단하게 PCB 설계를 한 번 해보면서 어떤 지식들이 필요한지 해보면 좋다.
  • 학사로 취업을 할 계획이라면 프로젝트를 많이 하자. 근데 혼자서 프로젝트를 하면 주먹구구 식으로 진행하게될 확률이 높은데, 현직자의 피드백을 받으면서 회사에서 필요로 하는 개발 프로세스를 경험해보는 프로젝트가 포트폴리오에 있으면 강점을 가질 수 있을 것이다.
    • 이건 텔레칩스 스쿨에 너무 잘 참여한 것 같다. 대견한 나 😙
  • 대학원에 갈 수 있으면 꼭 가자. 커리어에서 더 전문성있는 일을 할 수 있는 기회가 많아진다.
  • HW도 알아야 회사에서 일 할 수 있다. (HW 팀과의 협업이 필수 + 디버깅이 HW임)
  • AI가 이른 시간 내에 나를 대체하기에 임베디드 분야는 너무 폐쇄적이다.
    • 리소스도 적고, AI가 물리적인 영역까지 아직 잘 처리하지 못한다.
  • 트랜드는 C언어 기반 코딩 → 모델 기반 개발로 변하고 있다.
    • C언어 역량은 이전보다 좀 덜 중요해지고, 모델 기반 설계와 개발의 중요성이 점점 커질 것이다.
  • 온디바이스 머신러닝의 시장으로 향해갈 것이다.
    • 보안과 폐쇄성이 중요하기 때문에 오히려 이런 임베디드 칩 내에서 에이전트를 돌리게 될 것이다.
    • 임베디드의 폐쇄성 → AI 에 의해 대체되기 어려울거다!

 

그래서 오늘 느낀 나의 다음 액션은

  • 전자과의 HW와 관련된 강의를 들으면서 회로에 대한 개념을 익히기
    • 무크 강의를 좀 찾아볼까?
  • 임베디드 프로젝트 진행하기 (아두이도 or STM32)
    • 이거는 패스트캠퍼스 강의 + Udemy 강의 진행 예정!
  • 모델 기반 개발 방법에 대해 찾아보기
320x100