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

분류 전체보기 431

[MCU] MCP2515 SPI2CAN 모듈은 개발보드에 따라 허리를 끊고 별도 Vcc를 인가해줘야한다 (아닐 수 있음)

아주 특이한 트러블슈팅 사례가 있었다.이 SPI2CAN 모듈을 사용하면 CAN Controller가 없는 보드에서도 SPI 통신을 통해서 모듈에 있는 CAN Controller에 접근하고, Transciver 의 역할까지 수행해서 CAN 버스에 메시지를 보내고 받을 수 있게된다. 우리의 보드에서는 CAN Controller 핀이 있긴 하지만, 내부 드라이버에 CAN이 구현이 되어있지 않아서 (정확히는 수신 과정에서 문제가 있어서) SPI2CAN 모듈을 사용해 개발을 진행하고 있었다. 그런데 간헐적으로 통신이 되는, 또는 간헐적으로 통신이 안되는 문제가 자주 발생했다. 흠... 우선 디버깅 환경을 CAN 메시지를 정상적으로 쏘고 있던 STM32 보드에 현재 개발보드의 SPI2CAN 모듈을 물려 진행하였다...

Embedded System/MCU 2026.02.08

[260202] Day 173 - 뚫어라 Ad-Hoc의 벽

들어가며이제 다음주면 프로젝트가 끝난다. 발표 준비까지도 이제 10일도 채 남지 않은 상황이다. 너무 바빠서 뒤지고싶다. 오늘의 키워드Ad-Hoc 붙이기. WSL에서 빌드하고 Yocto OS에서 실행 가능함을 확인한 프로그램을 Ubuntu에 포팅하기. 개고생아주 흥미로운 현상이 있었다. Ubuntu를 올린 Topst D3-G 보드를 2개를 IPTime a3000mini 무선랜카드를 이용해서 ad-hoc 네트워크를 구성하려고 했다. IP 지정 및 BSSID가 동일한 것도 확인하고 채널과 네트워크명이 동일한 것 까지 확인했는데, ping을 서로 주고받을 수 없는 상태였다. 그런데 이전 1차 프로젝트때 쓰던 라즈베리파이를 켜서 내장 무선랜으로 이 네트워크에 join했을 때, 두 보드가 서로 ping을 주고받고..

TIL 2026.02.03

[260201] Day 172 - 미루고 미뤘던 TIL과 2차 프로젝트의 진행 중 회고

들어가며텔레칩스 임베디드 스쿨도 어느새 2주밖에 남지 않았다. 세상에나. 이번 8월부터 시작했는데, 가을은 정말 순식간에 지나가버리고 어느새 설날이 다가오고 있다. 이번 겨울은 어찌나 빨리 지나가버리는지, 놀라울 따름이다. 열심히 버텨내고, 살아내는 덕분에 이렇게 시간이 쑉쑉 지나가는 거라고 믿는다. 어찌 매일매일 새로운걸 배우고 새로운 문제를 만나고 또 대가리 박으면서 해결해내는 중이다. TIL을 그동안 계속해서 남겼다면 또 정말 하고싶은 말과 기록들이 많았을 것 같은데, 바쁠때는 거의 일주일 내내 막차타고 집에 오고 주말에도 센터 열리면 나가서 작업하고 오고 하느라 TIL을 적을 여유가 없었다. 어쩌면 같이 교육을 듣는 다른 피어들과 다른 나의 장점은 이렇게 TIL 이나 후기를 적을 공간을 운영하고 ..

TIL 2026.02.02

[MCU] CAN 통신 - 빠른 고속 CAN vs 안전한 저속 CAN

CAN 통신이란?CAN 통신(Controller Area Network)은 여러 ECU 장치들이 마스터(중앙 제어 Host) 없이 서로 통신하기 위해서 설계된 메시지 기반의 표준 통신 규격이다. = Non-Host 버스 방식의 메시지 기반 프로토콜ㅤ이름이 Controller Area Network 인 이유는 ECU Controller 끼리 통신하도록 구성된 네트워크이기 때문임.ㅤ자동차 산업에서 CAN을 쓰는 이유?자동차 산업이 발전함에 따라서 ECU(Electronic Control Unit)들이 점점 많이 탑재되고있다. 센서 처리나 엔진, 변속기, 차제 제어 등에 사용되는 ECU들간에 서로 데이터나 신호를 주고받기 위해서 통신을 위해서 서로 연결하다보니 배선이 복잡해지고 케이블의 무게와 부피로 차량의 ..

Embedded System/MCU 2025.12.25

[Embedded Linux] 디바이스 드라이버 작성해보기

라즈베리파이에서 디바이스 드라이버 만들어보기!디바이스 드라이버 만들어보기디바이스 트리에 대해서 공부를 하다보니 갑자기 디바이스 드라이버 이야기가 나왔고, 실습을 진행하다가 정신을 차려보니 어느새 내가 GPIO 드라이버를 하나 만들어 커널에 등록하고 GPIO 제어를 하고 있었다. 여기까지 오려고 한 건 아니였는데,,, 그러다보니 글이 길어져서 디바이스 트리 글에서 따로 분리했다! 이것도 파보면 엄청나게 방대한 내용이 있을 것 같아서 두렵긴 하다….ㅤㅤ디바이스 드라이버 소스코드 컴파일~/led_driver 라는 폴더를 하나 만들어주고, 아래 2개의 파일을 추가해보자. 위에 있는 led-gpio.c 파일은 디바이스 드라이버의 소스코드이고, 아래 Makefile 은 이를 빌드하기위한 파일이다.// led-gpi..

[Embedded Linux] Linux의 디바이스 트리

ㅤㅤ이번에 U-Boot에서 시작된 커널의 초기화 및 실행 과정을 쭉 따라가면서 어떤 일들이 일어나는지 찾아봤는데, 그 과정에서 디바이스 트리에 대한 정보(.dtb)를 특정 메모리 위치에 로드해주면서 커널을 실행하는 것을 확인했다. 디바이스 트리가 도대체 무엇이길래! 이렇게나 중요한 커널과 어깨를 나란히 하면서 메모리에 로드되고 커널 초기화 시에 어떤 역할을 하는지 간략하게 찾아봤었는데, 이 녀석은 좀 자주 나오는 키워드 같아서 이 참에 조금 더 자세히 살펴보려고 한다.ㅤㅤ디바이스 트리가 뭐냐!Device Tree 라는건 하드웨어의 구성을 나타내는 데이터 구조이다. 다음의 정보들을 트리 구조로 표현한 것!보드에 연결된 하드웨어 목록각 하드웨어가 매핑된 메모리 주소어떤 인터럽트를 사용하는지어떻게 연결이 되어..

[Embedded Linux] 프로세스간 통신 IPC - POSIX 기반의 IPC

일반적으로 프로세스 끼리는 서로 독립된 메모리 공간을 사용한다. 따라서 프로세스끼리는 서로의 영역을 침범할 수 없다.ㅤㅤ프로그램을 설계하다보면 여러 프로세스가 서로에게 정보나 신호를 주고받아야하는 상황이 온다. A 에서 처리한 결과가 B 에게 전달되어야 한다거나, 혹은 A와 B가 동시에 작업을 시작하거나 작업의 우선순위가 있을 수 있다. 이러한 상황에서 프로세스 간의 통신 (IPC, Inter-Process Communication)이 필요하다. 가장 기본이 되는 파일을 이용한 IPC(파이프, FIFO, Socket)가 궁금하다면 이 글을 읽어보자.또, 그 다음 제시된 산업적인 니즈 충족을 위한 System V의 IPC(메시지 큐, 세마포어, 공유 메모리)가 궁금하다면 이 글을 읽어보자. POSIX의 I..

[Embedded Linux] 프로세스간 통신 IPC - System V 기반의 IPC

일반적으로 프로세스 끼리는 서로 독립된 메모리 공간을 사용한다. 따라서 프로세스끼리는 서로의 영역을 침범할 수 없다.ㅤㅤ프로그램을 설계하다보면 여러 프로세스가 서로에게 정보나 신호를 주고받아야하는 상황이 온다. A 에서 처리한 결과가 B 에게 전달되어야 한다거나, 혹은 A와 B가 동시에 작업을 시작하거나 작업의 우선순위가 있을 수 있다. 이러한 상황에서 프로세스 간의 통신 (IPC, Inter-Process Communication)이 필요하다.ㅤㅤ가장 기본이 되는 파일을 이용한 IPC(파이프, FIFO, Socket)가 궁금하다면 이 글을 읽어보자.ㅤSystem V 의 IPCUNIX가 실제 산업 환경에서 쓰이기 시작하면서, 여러가지 요구사항이 추가되기 시작했다. 이 니즈를 충족시키기 위해 새로운 IPC..

[Embedded Linux] 프로세스간 통신 IPC - 파일 기반의 IPC

일반적으로 프로세스 끼리는 서로 독립된 메모리 공간을 사용한다. 따라서 프로세스끼리는 서로의 영역을 침범할 수 없다.ㅤㅤ프로그램을 설계하다보면 여러 프로세스가 서로에게 정보나 신호를 주고받아야하는 상황이 온다. A 에서 처리한 결과가 B 에게 전달되어야 한다거나, 혹은 A와 B가 동시에 작업을 시작하거나 작업의 우선순위가 있을 수 있다. 이러한 상황에서 프로세스 간의 통신 (IPC, Inter-Process Communication)이 필요하다.ㅤㅤ이번 아티클에서는 기본으로 사용하는 파일 기반의 IPC, 산업적인 니즈에 따라 나온 System V IPC, 그리고 여기에 대해 개선된 POSIX 기반의 IPC에 대해서 차례대로 소개해보려 한다.ㅤㅤ우선 파일을 거쳐 데이터를 주고받는 기본적인 형태의 IPC 에..

[Embedded Linux] Linux 시그널

시그널이란?시그널은 프로세스에게 특정한 이벤트가 발생했음을 알려주는 비동기 알림(Asynchronous Notification)이다. 커널이나 다른 프로세스에서 특정 프로세스에게 신호를 보낼 수 있다. 이를 통해 프로세스의 정상적인 실행 흐름을 중단하고 잠시 시그널에 대한 처리를 하도록 할 수 있다.ㅤ이게 왜 필요하나면프로세스가 뭘 하고있든 상관없이 실행 중간에 특정 코드를 처리하도록 만들 수 있다. 무한루프에 빠져있던 프로세스를 멈추기 위해서 시그널을 보내 잠시 무한루프를 빠져나와 프로세스를 종료하는 코드를 실행하도록 하는 등에 사용할 수 있다.ㅤ시그널의 전달과 처리 과정시그널에서 유의할 점은 비동기 라는 것. 시그널의 발생과 함께 핸들러가 무조건 바로 즉시 호출되지는 않는다.ㅤ1. 시그널 발생시그널은..