DEVBJ / TECHNICAL FIELD NOTES
DevBJ
DevBJ
Develop. Build. Just Better.
일단 만들고, 계속 더 낫게.
임베디드 기술 문제 해결과 IT 도구를 중심으로, 취미로 본 영화와 미드, 읽은 만화, 운동을 배우며 얻은 팁과 경험을 기록합니다.
EMBEDDED ENGINEERING
76 POSTS
실무
DoIP
31 POSTS
07-01
DoIP에서 NRC 0x35가 뜬다: Invalid Key를 알고리즘 오류로만 보면 오래 헤맨다
DoIP에서 SecurityAccess key 전송 뒤 NRC 0x35 Invalid Key가 오면 seed/key 알고리즘만 의심하지 말고 seed freshness, level pairing, endian, session, retry counter를 나눠 확인해야 한다. 0x24, 0x33, 0x36과 구분해 로그를 남기는 흐름을 정리한다.
06-29
DoIP에서 NRC 0x14가 뜬다: Response Too Long을 TCP 문제로 착각하지 말자
DoIP에서 UDS 요청 후 NRC 0x14 Response Too Long이 오면 TCP stream이나 패킷 조각 문제보다 요청이 만들 응답 크기, ECU 내부 버퍼, DID 묶음, routine result 크기를 먼저 확인해야 한다. 0x13, 0x78과 헷갈리지 않도록 응답 크기 문제를 분리해 보는 디버깅 순서를 정리한다.
06-26
DoIP에서 NRC 0x31이 뜬다: DID와 Routine ID 범위를 세션 문제와 나눠 보자
DoIP에서 UDS 요청 후 NRC 0x31 Request Out Of Range가 오면 통신 실패보다 요청한 DID, Routine ID, sub-function, 세션별 지원 범위를 먼저 확인해야 한다. 0x22, 0x13과 헷갈리지 않도록 서비스 범위와 ECU 상태 조건을 분리해 보는 디버깅 순서를 정리한다.
06-25
DoIP에서 NRC 0x22가 뜬다: 조건 미충족을 통신 timeout처럼 보지 말자
DoIP에서 UDS 요청 후 NRC 0x22 Conditions Not Correct가 오면 TCP timeout이나 Routing Activation 문제가 아니라 ECU가 현재 상태에서 그 서비스를 수행할 조건이 아니라고 보는 편이 빠르다. 세션, Security Access, 전원 모드, Tester Present, 이전 작업 상태를 함께 확인하는 디버깅 순서를 정리한다.
06-24
DoIP에서 NRC 0x13이 뜬다: 메시지 길이 오류를 TCP 조각 문제로 착각하지 말자
DoIP에서 UDS 요청은 ECU까지 도착하는데 NRC 0x13 Incorrect Message Length or Invalid Format이 반복되면 TCP 조각이나 Routing Activation보다 먼저 DoIP Diagnostic Message 길이와 UDS 서비스별 payload 길이를 나눠 봐야 한다. Generic Header length, SA/TA, UDS payload 경계를 분리해 확인하는 디버깅 순서를 정리한다.
06-18
DoIP에서 두 테스터가 같은 Source Address를 쓰면 응답이 꼬인다: SA 충돌을 timeout처럼 보면 오래 헤맨다
DoIP에서 Routing Activation까지는 되는 것 같은데 UDS 응답이 가끔 다른 요청에 붙거나 timeout처럼 사라져 보이면, ECU보다 먼저 Source Address를 누가 같이 쓰고 있는지 확인해야 한다. 같은 SA를 공유하면 응답 매칭과 세션 문맥이 쉽게 꼬인다.
06-17
DoIP에서 Response Pending 중 Tester Present를 섞으면 꼬인다: 같은 세션 유지와 대기 흐름을 분리해서 봐야 한다
DoIP에서 긴 UDS 작업 중 NRC 0x78 Response Pending이 오는 동안 Tester Present를 같은 소켓과 같은 요청 흐름에 무심코 섞어 보내면, 대기 중인 서비스 응답과 keepalive 목적의 세션 유지 요청이 충돌해 로그 해석과 재시도 정책이 쉽게 꼬인다. 두 흐름을 분리해 관리하는 편이 안전하다.
06-16
DoIP에서 UDS를 ISO-TP처럼 자르면 안 된다: Diagnostic Message 경계를 먼저 봐야 한다
DoIP에서 UDS 요청이 길어질 때 CAN의 ISO-TP처럼 프레임을 쪼개어 처리하려 들면 길이 계산, 재전송, 응답 매칭이 쉽게 꼬인다. DoIP는 TCP stream 위에서 Generic Header의 payload length로 메시지 경계를 잡고, UDS 한 요청을 Diagnostic Message 단위로 다루는 편이 안전하다.
더 보기 (31개 글) →
lwIP
19 POSTS
07-01
lwIP에서 UDP broadcast가 안 나간다: SO_BROADCAST와 netif flags를 같이 보자
lwIP에서 UDP broadcast 송신이 timeout처럼 보이거나 패킷이 캡처되지 않으면 payload보다 SO_BROADCAST 또는 SOF_BROADCAST, NETIF_FLAG_BROADCAST, netif up/link, source IP, route를 먼저 확인해야 한다. RAW API, netconn/socket API, multi-netif 환경의 확인 순서를 정리한다.
06-29
lwIP에서 tcp_write()가 ERR_MEM을 돌려준다: free RAM보다 snd_buf와 snd_queuelen을 먼저 보자
lwIP RAW TCP에서 tcp_write()가 간헐적으로 ERR_MEM을 반환하면 free RAM보다 TCP_SND_BUF, TCP_SND_QUEUELEN, MEMP_NUM_TCP_SEG, unsent/unacked 큐를 먼저 확인해야 한다. 작은 write 반복, ACK 지연, sent callback 없는 busy loop가 송신 큐를 막는 패턴을 정리한다.
06-26
lwIP에서 송신이 가끔 멈춘다: linkoutput에서 TX descriptor와 pbuf 수명을 같이 보자
lwIP 포팅에서 수신은 되는데 송신이 부하 중 멈추거나 linkoutput이 실패하면 TX descriptor 회수, pbuf chain 처리, zero-copy pbuf lifetime을 같이 봐야 한다. 복사 기반 송신과 DMA zero-copy 송신에서 ownership 기준이 어떻게 달라지는지 정리한다.
06-25
lwIP에서 RX pbuf를 넘긴 뒤 가끔 깨진다: tcpip_input ownership을 먼저 정리하자
lwIP 포팅에서 RX 패킷을 tcpip_input()으로 넘긴 뒤 간헐적인 payload 깨짐, double free, PBUF_POOL 고갈이 보이면 pbuf ownership 규칙을 먼저 확인해야 한다. ERR_OK와 실패 반환값, DMA 버퍼 재사용, ISR 컨텍스트, 예외 경로별 pbuf_free 기준을 정리한다.
더 보기 (19개 글) →
광고
06-24
lwIP에서 UDP send가 ERR_RTE로 실패한다: payload보다 netif 상태와 route를 먼저 보자
lwIP에서 udp_sendto() 또는 socket sendto()가 ERR_RTE로 실패하면 UDP payload나 ARP보다 먼저 보낼 netif를 찾았는지 확인해야 한다. DHCP 완료 전 송신, default netif 누락, netif up/link 상태 불일치, IP 주소 미설정 같은 route 판단 지점을 bring-up 관점에서 정리한다.
06-19
lwIP RAW TCP에서 close가 가끔 실패한다: tcp_close()의 ERR_MEM은 free RAM보다 송신 잔여 상태를 먼저 봐야 한다
lwIP RAW TCP에서 연결 종료 시 tcp_close()가 가끔 ERR_MEM을 반환하면 단순 heap 부족으로 보면 오래 헤맨다. 아직 보내지 못한 세그먼트와 미확인 ACK 상태가 남아 있거나 close를 너무 이른 문맥에서 호출한 경우가 많아서, pcb 송신 상태와 콜백 흐름을 같이 보는 편이 빠르다.
06-18
lwIP에서 ping은 되는데 TCP나 UDP만 이상하다: checksum offload를 반만 켜면 증상이 더 헷갈린다
lwIP 포팅에서 ICMP는 되는데 TCP나 UDP만 깨지거나, 송신만 실패하고 수신은 정상처럼 보이면 checksum offload 설정 불일치를 먼저 확인해야 한다. lwIP 옵션과 MAC 드라이버가 같은 책임 분담을 보지 않으면 패킷은 나가도 상대가 조용히 버릴 수 있다.
06-17
lwIP RAW UDP callback 뒤에 수신이 멈춘다: pbuf_free를 놓치면 PBUF_POOL이 먼저 마른다
lwIP에서 UDP는 처음엔 잘 되는데 몇 분 뒤부터 recv callback이 끊기거나 pbuf_alloc 실패가 보이면, 드라이버보다 먼저 RAW UDP callback에서 pbuf_free를 빠뜨린 경로를 확인해야 한다. 작은 누수 하나가 PBUF_POOL 고갈로 이어져 전체 RX 경로를 막을 수 있다.
FPGA/ASIC
24 POSTS
10-20
UVM sequence와 driver 사이에서 response를 주고받는 방법
UVM sequence의 body task에서 요청을 보내고 driver의 item_done(response)로 읽기 결과를 돌려받는 기본 흐름입니다.
10-20
Emacs Verilog mode AUTO_TEMPLATE로 입력 tie-off하기
Verilog mode AUTO_TEMPLATE에서 SystemVerilog '0로 입력을 tie-off하고 미사용 출력은 구분된 net에 연결합니다.
10-20
Verilog와 SystemVerilog filelist를 find로 만드는 방법
find로 HDL 파일을 모아 정렬하고, shell 옵션으로 선택한 filelist를 도구에 전달하는 기본 패턴입니다.
10-20
Tcl 명령을 여러 줄로 나눠 작성하는 방법
Tcl에서 백슬래시 줄 연결과 중괄호로 묶은 script body의 차이를 구분해 여러 줄 명령을 작성합니다.
10-20
Tcl 리스트에서 여러 값을 안전하게 제외하는 방법
제외할 값 목록을 순회하며 원본 Tcl 리스트의 일치 항목을 빼고 나머지 순서와 중복을 유지합니다.
10-20
비동기 reset은 왜 해제할 때 동기화해야 할까
비동기 reset은 즉시 assert하고 각 clock domain에서 deassert를 동기화해 reset recovery/removal 문제를 줄입니다.
10-20
SystemVerilog에서 rising edge를 한 clock pulse로 만들기
동기화된 level 신호의 이전 값을 저장해 rising edge에 한 cycle 동안 유지되는 pulse를 만드는 방법입니다.
10-19
AXI4 burst에서 AxSIZE와 AxLEN 계산하기
AxSIZE는 beat당 byte 수의 log2, AxLEN은 beat 수 minus one이며 bus width와 4KB boundary 제약도 확인해야 합니다.
더 보기 (24개 글) →
네트워크
02 POSTS
06-16
Wireshark Reassembled TCP Segments 의미: 여러 TCP 조각이 하나의 메시지로 보일 때
Wireshark의 Reassembled TCP Segments 메시지가 의미하는 것과 TCP sequence number, 상위 계층 PDU length, reassembly 옵션 기준을 예제로 설명한다.
06-01
Ethernet FCS byte order가 거꾸로 보이는 이유: CRC-32 값과 실제 전송 순서
Ethernet CRC-32 계산 결과와 실제 wire에 붙는 FCS byte order가 왜 다르게 보이는지, 0xCBF43926과 26 39 F4 CB 예제로 정리한다.
DEVELOPMENT & IT
28 POSTS
기술
개발 워크플로우
20 POSTS
11-01
Codex로 기술 블로그를 쓸 때 AI와 사람이 나눠야 할 일
Codex 등 AI 도구로 기술 블로그를 작성할 때 맡겨도 되는 작업과 사람이 직접 검토해야 하는 내용을 구분합니다.
07-15
티스토리 공개 글 111개를 이미지까지 로컬 백업해 봤다
티스토리 공개 글 111개를 HTML, Markdown, JSON과 이미지로 나눠 로컬에 백업하고 확인한 결과를 기록합니다.
07-14
Windows PowerShell에서 pnpm 10 설치하고 실행하기
Windows PowerShell에서 pnpm 10을 npm으로 설치하고, 스크립트 실행 정책 오류를 피해서 버전을 확인하는 방법입니다.
07-13
Astro public과 dist 폴더는 무엇이 다른가
Astro의 public과 dist가 비슷해 보이는 이유와 Git에 보관할 폴더, 삭제해도 되는 빌드 결과물을 구분합니다.
더 보기 (20개 글) →
광고
07-12
Astro에서 AdSense가 페이지 전환 후 안 보일 때 확인할 것
Astro View Transitions 환경에서 AdSense가 첫 화면에만 나오고 페이지 전환 후 비는 이유와 확인 순서를 정리합니다.
05-29
Astro Tailwind 레이아웃에서 오른쪽 여백이 남을 때 확인할 것
Astro와 Tailwind로 만든 블로그에서 사이드 광고를 제거한 뒤 오른쪽 공간이 남거나 제목만 좁게 보일 때 확인해야 할 max-width와 공용 레이아웃 규칙을 정리한다.
05-29
Astro RSS와 sitemap 체크리스트, 글을 써도 검색엔진이 못 찾으면 소용없다
Astro 블로그에서 RSS, sitemap, canonical URL, robots.txt 같은 기본 색인 요소를 어떻게 확인해야 검색엔진이 새 글을 놓치지 않는지 정리한다.
05-29
Astro 블로그 검색 붙이기, Pagefind가 잘 맞는 이유
Astro 정적 블로그에 검색 기능을 붙일 때 Pagefind를 쓰면 어떤 점이 좋은지, 색인 생성과 배포 흐름에서 무엇을 확인해야 하는지 정리한다.
IT / 개발
08 POSTS
10-25
AI가 만든 화면을 다듬는 바이브 코딩 도구 5가지
X 게시물에서 소개한 UI 프롬프트 / 디자인 리소스 / 모션 / 에이전트 규칙 / 배포 점검 도구를 역할별로 정리하고, 사용 전에 확인할 점을 덧붙였습니다.
10-25
비개발자가 GitHub에서 앱과 학습 자료를 찾는 방법
GitHub 저장소에서 README와 Releases를 읽고, 설치 파일 / 오픈소스 앱 / 학습 자료를 찾을 때 확인할 기본 항목을 정리합니다.
10-25
손정의의 AGI / ASI 전망: 1만 배 초지능 시나리오를 어떻게 볼까
X 게시물에 소개된 손정의의 AGI / ASI 전망을 요약하고, 지능 배수와 도달 시점을 확정된 예측이 아닌 시나리오로 읽어야 할 이유를 적습니다.
10-25
WordCraft / GridCraft / DeckCraft: 오픈소스 오피스 프로젝트 살펴보기
WordCraft, GridCraft, DeckCraft 프로젝트가 내세우는 문서 / 스프레드시트 / 프레젠테이션 기능과 실제 도입 전에 확인할 호환성 항목을 정리합니다.
10-25
Decks로 코드 기반 슬라이드 만들기: 설치 흐름과 도입 전 확인할 점
Decks의 공개 저장소에서 확인할 수 있는 코드 기반 슬라이드 작업 흐름, 로컬 실행 방법, 기존 프레젠테이션과 비교할 점을 정리합니다.
10-15
반도체 RTL 설계 직무 심화 면접 가이드 (기초 개념부터 실무 Sign-off까지)
STA 타이밍 클로저, CDC 비동기 설계, AMBA AXI 파이프라이닝, Low-Power 기법 등 학부 기초부터 시니어 실무 시각까지 아우르는 RTL 설계 핵심 면접 가이드
10-14
코아시아넥셀 RTL 설계 직무 조사와 면접 준비 노트
코아시아넥셀 채용 정보를 확인할 때 살펴볼 항목과 RTL 설계 직무 면접 준비 주제를 정리합니다.
10-14
DNS 설정과 Cloudflare WARP: 연결 문제를 확인하는 방법
DNS 확인과 Cloudflare WARP의 차이를 살펴보고 PC/모바일 네트워크 설정 시 확인할 점을 정리합니다.
더 보기 (8개 글) →
CULTURE & SPORTS
12 POSTS
취미
작품 / 만화
06 POSTS
11-01
미드 실리콘밸리(Silicon Valley) 리뷰: 스타트업 겪어본 사람이 보면 웃다가 피 토하는 다큐
HBO 레전드 미드 실리콘밸리(시즌 1~6) 솔직 리뷰. 투자자와 창업자의 살벌한 속내, 지분 싸움, 캐릭터 호흡과 시즌 6 결말 해석까지 현업 엔지니어 시선으로 정리했습니다.
11-01
슈츠 리뷰: 시즌 3까지는 푹 빠졌다, 하비와 마이크의 법정 플레이와 로펌 사내 정치
슈츠 시즌 3까지 푹 빠져 본 이유, 하비와 마이크의 호흡, 로펌 사내 정치와 감초 인물들, 아홉 시즌을 따라가며 덜 챙겨보게 된 솔직한 감상을 정리했습니다.
11-01
창천항로 리뷰: 조조가 주인공인 삼국지는 이렇게 다르다, 관도대전과 작가 교체 이야기
조조를 주인공으로 삼아 삼국지의 익숙한 구도를 뒤집는 만화 창천항로. 관도대전의 재미, 개성 강한 인물 묘사, 스토리 작가 사망 이후 달라진 후반부의 아쉬움을 정리했습니다.
11-01
용랑전 리뷰: 적벽대전까지는 레전드, 흉노족 편에서 지쳤지만 3부가 궁금한 이유
용랑전 신야 전투부터 적벽대전까지의 재미, 흉노족 편과 무너지는 파워 밸런스에서 느낀 피로, 1부 37권 2부 17권 3부 12권 연재 중이라는 권수 정보와 3부를 읽으려는 이유를 정리했습니다.
광고
11-01
하우스 오브 카드 리뷰: 정치가 아니라 권력의 사용법을 보여주는 드라마, 시즌 2 기차 장면까지
하우스 오브 카드에서 돈과 권력이 거래의 언어로 바뀌는 과정, 프랭크와 클레어의 관계와 연기, 시즌 2 첫 회 기차 장면, 후반부의 아쉬움까지 정리했습니다.
11-01
왕좌의 게임 리뷰: 1시즌 초반만 버티면 보이는 권력과 사람들, 그리고 아쉬운 결말
왕좌의 게임 1시즌 초반이 힘든 이유와 그 구간을 넘기면 재밌어지는 지점, 용이 바꿔 놓는 권력의 크기, 시즌이 길어지며 생긴 아쉬움과 결말 감상까지 정리했습니다.
골프 / 당구
06 POSTS
10-26
드라이버 오른팔 펌핑 드릴: 레슨 요점과 연습 시 주의점
비쥬 프로 레슨의 오른팔 펌핑 드릴을 정리하고, 무리하지 않고 연습에 적용할 때 확인할 점을 덧붙였습니다.
10-26
파이브앤하프 시스템이 뭐지? 당구 250점이 숫자부터 이해해 보는 노트
쫑프로의 파이브앤하프 강의를 참고해 수구 출발수에서 1쿠션수를 빼 3쿠션수를 읽는 기본식과 눈금 확인 / 연습 기록법을 당구 250점 입장에서 정리합니다.
10-25
골프 레깅 쉽게 하는 법: 행님의 팁 백스윙부터 임팩트까지
행님의 팁 레슨에서 말하는 넓게 보냈다가 좁게 들어오는 백스윙, 왼쪽 어깨를 기다리는 다운스윙, 역순 빌드업 드릴을 한 흐름으로 정리했습니다.
10-25
프로허석 골프 스윙 5단계: 그립부터 피니시까지 연습 순서
프로허석 레슨에서 제시한 그립 / 어드레스부터 피니시까지의 스윙 순서를 정리하고, 연습장에서 적용해볼 20분 액션플랜을 덧붙였습니다.
10-25
아이언 백스윙, 어디까지 올려야 하지? 초보를 위한 3장면 기초 정리
골프 초보가 아이언 백스윙을 어드레스, 허리 높이, 3분의 3 탑의 세 장면으로 나눠 이해하고 자주 하는 실수와 연습법을 확인합니다.
10-25
골프 그립 어떻게 잡지? 초보가 공 치기 전에 먼저 확인하는 4가지
골프를 막 시작한 초보가 그립 종류, 왼손과 오른손 위치, 두 V자 방향, 악력 세기를 한 번에 점검할 수 있게 정리했습니다.
BROWSER TOOLS
10 POSTS
유틸리티
도구
10 POSTS
06-02
Packet Capture Command Cookbook, 패킷 캡쳐 명령어를 상황별로 찾기
Packet Capture Command Cookbook의 tcpdump, tshark, dumpcap, udpdump 명령어 모음과 검색/필터/복사 기능, capture filter와 display filter 차이, pcap 보안 주의사항을 정리한다.
06-01
Ethernet CRC and FCS Calculator, 프레임 체크 시퀀스 계산하기
Ethernet CRC and FCS Calculator 사용법과 CRC-32/FCS byte order, captured frame trailer 검증 예제를 정리한다.
05-29
Visual Traceroute Sandbox, 네트워크 경로를 안전하게 실험하는 도구
Visual Traceroute Sandbox가 어떤 상황에서 유용한지, Run/Step/Reset과 route profile, packet loss 옵션을 어떻게 쓰면 좋은지 정리한다.
05-29
Subnet Mask and CIDR Visualizer, IP 대역 계산을 눈으로 확인하기
Subnet Mask and CIDR Visualizer 사용법과 CIDR prefix, network address, broadcast address, usable host range를 확인하는 방법을 정리한다.
05-29
Secure Password and Salt Generator, 임시 비밀번호와 salt 만들기
Secure Password and Salt Generator의 password length, character group, ambiguous character, salt byte length, entropy 표시를 어떻게 쓰면 좋은지 정리한다.
05-29
Regex Live Tester와 Cheat Sheet: 정규식을 바로 테스트하기
DevBJ 안에서 바로 사용하는 Regex Live Tester의 flags, capture group, replacement preview 사용법을 정리합니다.
05-29
JWT Decoder and Header Inspector, 토큰 구조를 로컬에서 확인하기
JWT Decoder and Header Inspector 사용법과 header, payload, registered claim, expiration status를 볼 때 주의할 점을 정리한다.
05-29
JSON Parser and Tree Viewer, API 응답을 빠르게 펼쳐보는 도구
JSON Parser and Tree Viewer의 format, minify, syntax error hint, tree viewer 기능과 API 응답 확인에 쓰는 방법을 정리한다.
더 보기 (10개 글) →