LOGON BLOG v4
close
프로필 배경
프로필 로고

LOGON BLOG v4

  • 분류 전체보기 (72)
    • AI (17)
      • ChatGPT (10)
      • Accidents (5)
    • Laboratory (42)
      • 실험노트 (4)
      • 협업기록 (36)
      • 에필로그 (2)
    • Embedded (13)

    STM32 - KVAS 인증서 메모리 구조 재설계

    STM32의 SRAM을 확보하는 작업을 계속하다 보니 이제는 단순히 버퍼 크기를 줄이는 것만으로는 부족했다. LVGL Display Buffer를 줄이고 UART 수신 구조를 다시 설계하면서 큰 메모리부터 하나씩 정리했지만, 앞으로 추가해야 할 PnC 인증서 처리를 생각하면 여전히 여유가 부족했다. 결국 지금까지 별문제 없이 사용하던 인증서 메모리 구조도 다시 볼 필요가 있었다.3KB 인증서를 계속 들고 있어야 할까기존 구조에서는 약 3KB 크기의 KVAS 인증서 정보를 OCPP 관련 구조체가 상시 메모리에 갖고 있었다. 구현만 생각하면 이 방식이 편하다. 부팅 시 KVAS 인증서를 이용해 배터리팩 정보를 암호화하기 위한 세션키를 생성할 때 바로 인증서를 참조할 수 있고, 인증서 만료 시점에 서버에서 갱..

    • format_list_bulleted Embedded
    • · 2026. 9. 27.
    • textsms

    STM32 UART Ring Buffer를 위한 8KB SRAM 확보

    STM32G484에서 UART 수신 구조를 기존 슬롯 방식에서 링버퍼로 바꾸면서 예상하지 못했던 문제가 하나 생겼다. 수신 자체는 훨씬 유연해졌지만, 파서에 넘겨야 할 데이터가 항상 연속된 메모리 형태로 존재하는 것은 아니었다.링버퍼와 연속 데이터 문제링버퍼는 버퍼의 끝까지 데이터를 채운 뒤 다시 처음으로 돌아가면서 계속 사용할 수 있다. 문제는 하나의 메시지가 링버퍼 끝과 시작에 걸쳐 저장될 수 있다는 점이다. 논리적으로는 하나의 프레임이지만 실제 메모리에서는 두 구간으로 나뉜 상태가 된다.Ring Buffer[ ... Message A-1 ][ Message A-2 ... ] ↑ wrap-around논리적으로는 하나의 메시지물리적으로는 두 구간으로 분리UART RX 버..

    • format_list_bulleted Embedded
    • · 2026. 9. 27.
    • textsms

    STM32 UART RX 구조 변경, 슬롯 방식에서 8KB Ring Buffer로...

    충전기 내부 통신 구조를 단순하게 보면 다음과 같다.┌─────────┐ UART ┌───────────┐ UART ┌────────────┐│ ESP32 │ │ STM32G484 │ │ SECC(GQSE) │└─────────┘ └───────────┘ └────────────┘ESP32는 서버 통신을 담당하고, SECC는 EVCC와의 ISO 15118 통신을 담당한다. 그리고 그 사이에서 STM32가 양쪽 데이터를 중계한다. 문제는 이 구조에서 가장 메모리 여유가 적은 STM32가 중계 역할을 맡고 있다는 점이었다. PnC 인증서 처리를 준비하면서 이 구조적 제약이 그대로 드러났다. EVCC와 서버 사..

    • format_list_bulleted Embedded
    • · 2026. 9. 26.
    • textsms

    6KB PnC 인증서를 위한 STM32 UART TX 버퍼 512바이트 스트리밍

    충전기 내부 통신 구조를 단순하게 보면 다음과 같다. ESP32는 서버 통신을 담당하고, SECC는 EVCC와의 ISO 15118 통신을 담당한다. 그리고 그 사이에서 STM32가 양쪽 데이터를 중계한다.┌─────────┐ UART ┌───────────┐ UART ┌────────────┐│ ESP32 │ │ STM32G484 │ │ SECC(GQSE) │└─────────┘ └───────────┘ └────────────┘문제는 이 구조에서 가장 메모리 여유가 적은 모듈이 중계 역할을 맡고 있다는 점이었다. PnC 인증서 처리를 준비하면서 이 구조적 제약이 그대로 드러났다. 인증서 관련 데이터는 6KB를 넘어..

    • format_list_bulleted Embedded
    • · 2026. 9. 26.
    • textsms
    FreeRTOS System Monitor로 태스크 Stack 사용량 확인하기

    FreeRTOS System Monitor로 태스크 Stack 사용량 확인하기

    앞선 작업에서는 8KB 링버퍼를 구성하기에 앞서 SRAM을 확보하기 위해 .data와 .bss, FreeRTOS 태스크 Stack, 함수별 Call Stack까지 다시 살펴봤다. 그 과정에서 일부 태스크의 Stack 크기를 줄였지만, 정적 분석만으로 작업을 끝낼 수는 없었다. 계산상으로는 충분해 보여도 충전기가 동작하는 동안 예상하지 못한 호출 경로나 순간적인 Stack 사용량 증가가 생길 수 있기 때문이다. 결국 Stack을 줄였다면 다음에 필요한 것은 실제 운용 중 어느 정도까지 사용하고 있는지 확인하는 일이었다. 다행히 이 용도로 예전에 사수가 다른 모델에서 만들어둔 FreeRTOS System Monitor가 있었고, 이번에는 이 기능을 현 제품의 메모리 상태에 맞게 수정하여 Stack과 Heap..

    • format_list_bulleted Embedded
    • · 2026. 9. 26.
    • textsms
    MyGPT - DefaultFontSize가 먹히지 않은 이유

    MyGPT - DefaultFontSize가 먹히지 않은 이유

    추석 명절을 보내고 가족들을 배웅한 뒤, 미뤄둔 블로그 글을 정리하려고 MyGPT를 실행했다. 그런데 화면을 보자마자 뭔가 어색했다. 평소보다 답변 본문과 입력창의 글자가 커져 있었다. 단순히 보기 불편한 정도라면 그냥 넘길 수도 있었지만, 폰트가 커지면서 한 화면에 표시되는 내용이 눈에 띄게 줄었다. 긴 대화와 기술 자료를 정리할 때는 스크롤 횟수가 늘어나고, 전체 흐름을 한눈에 보는 것도 불편해졌다. MyGPT 쪽 설정을 바꾼 기억은 없었다. 기존처럼 QtWebEngine의 DefaultFontSize=14, zoom 1.0을 사용하고 있었다. 그렇다면 MyGPT가 아니라 ChatGPT 웹 페이지 쪽에서 무언가 바뀐 걸까.QtWebEngine 기본 폰트 한계먼저 MyGPT 자체 설정부터 다시 확인했다..

    • format_list_bulleted Laboratory/협업기록
    • · 2026. 9. 25.
    • textsms

    STM32 SRAM을 1KB라도 더 확보하기 위한 메모리 쥐어짜기

    8KB 링버퍼를 구성하려면 그만큼의 SRAM을 먼저 확보해야 했다. 문제는 이미 메모리가 넉넉한 상태가 아니었다는 점이다. 버퍼 하나를 추가한다고 끝나는 상황이 아니라, 기존에 사용하던 SRAM을 어디서 얼마나 줄일 수 있는지 다시 확인해야 했다. 결국 몇백 바이트, 1KB라도 더 확보하기 위해 map 파일까지 뒤지는 단계로 들어갔다.SRAM 확보를 위한 map 파일 분석처음에는 소스 코드에서 눈에 띄는 큰 버퍼나 전역 변수부터 줄이면 될 것이라고 생각하기 쉽다. 하지만 실제 메모리 사용량을 확인하려면 링크 결과를 봐야 했다. Codex를 이용해 map 파일과 빌드 산출물을 분석하면서 .data, .bss, FreeRTOS Heap, 태스크 Stack에 어떤 심볼이 얼마나 들어가 있는지 확인했다. 사람이..

    • format_list_bulleted Embedded
    • · 2026. 9. 24.
    • textsms

    OCPP JSON 메모리에서 시작한 tinyalloc 구조 개선

    충전기에서 OCPP 메시지는 JSON 형식을 사용하고 있고, JSON 생성과 파싱에는 cJSON을 사용하고 있다. JSON 객체를 만들고 해제하는 과정에서는 작은 동적 메모리 할당이 반복된다. 장시간 재부팅 없이 동작해야 하는 충전기에서 이 할당을 시스템 공용 Heap과 그대로 섞어 쓰는 것은 부담이 있었다. 그래서 JSON이 사용하는 메모리를 FreeRTOS Heap과 분리하고, 별도의 고정 RAM 영역을 tinyalloc으로 관리해 왔다. GitHub - thi-ng/tinyalloc: malloc / free replacement for unmanaged, linear memory situations (e.g. WASM, embedded devices...)malloc / free replaceme..

    • format_list_bulleted Embedded
    • · 2026. 9. 24.
    • textsms

    STM32G4에서 6KB 인증서 체인이 무서운 이유

    입사한 지 약 8개월이 지났을 무렵, 팀 전체 인원이 퇴사하면서 진행 중이던 프로젝트를 인계받아 계속 개발하게 되었다. 처음부터 가장 신경 쓰였던 부분은 메모리였다. 기존에 사용하던 nRF52 계열 MCU와 비교하면 새로 선정된 STM32G4는 사용할 수 있는 메모리 여유가 크게 줄어든 상태였다. 여기에 Wi-Fi 환경에서 서버와 통신하기 위해 ESP32 모듈을 사용하고, ESP32가 서버에서 전달받은 메시지를 STM32로 넘기면 STM32가 이를 기반으로 충전기 제어와 주요 로직을 수행하는 구조였다. 이후 SECC까지 추가되면서 STM32는 충전기 제어뿐 아니라 ESP32와 SECC 사이의 데이터 파이프라인까지 중간에서 맡게 되었다.┌────────┐ WebSocket / JSON ┌──────..

    • format_list_bulleted Embedded
    • · 2026. 9. 24.
    • textsms

    ESP32 SDK 4.4 부트로더 최신 SDK 호환성 검토

    현재 양산된 펌웨어 SDK는 퇴사한 직원이 작업한 소스이며, 나는 이것을 인수인계 받아 양산 F/U을 진행하고 있었다. SDK의 기본 부트로더를 그대로 사용하고 있었다. 이미 그렇게 사용하고 있었기에 변경은 어려웠고, OTA 구조 역시 내가 원하는 방식이 아닌 듀얼뱅크 구조를 사용하고 있다. 그 당시 Application 소스코드 구조가 너무 엉망인 상태라 SW 구조를 다시 설계해야 하지만 시간이 없는 관계로, 적당선에서 타협하여 모듈 단위로 정리하고 매니저로 관리하는 구조로 급한대로 수정하여 현재까지 사용하고 있다. 그리고 이 부분은 전담하는 팀원에 장기 프로젝트로 시간날 때마다 리팩토링 가능성을 살펴보라고 하였다. 그런데 PnC 기능을 구현함에 있어, STM32G4 칩셋의 메모리 제약사항으로 ESP..

    • format_list_bulleted Embedded
    • · 2026. 9. 22.
    • textsms
    MyGPT - QtWebEngineProcess 메모리 누수 원인을 찾아서...

    MyGPT - QtWebEngineProcess 메모리 누수 원인을 찾아서...

    MyGPT를 오래 켜놓고 쓰다 보면 어느 순간부터 시스템이 묘하게 무거워졌다. 처음에는 ChatGPT 웹 자체가 무거운가 보다 하고 넘겼는데, Activity Monitor를 확인해보니 QtWebEngineProcess가 비정상적으로 커지고 있었다. 평소처럼 며칠씩 사용했을 때는 9GB에 육박한 적도 있었고, 이 정도면 단순히 “Chromium 계열이라 원래 많이 먹는다”는 말로 넘기기 어려웠다. 우연인지 확인하려고 일요일부터 MyGPT를 다시 평소처럼 사용했다. 긴 대화방을 오가고 과거 내용을 보기 위해 위로 스크롤하면서 계속 작업했는데, 하루 조금 지난 월요일 저녁에는 QtWebEngineProcess가 이미 3.93GB까지 올라가 있었다. 이번에는 앱을 재시작해서 숫자를 지우지 않고, 실제로 어디에..

    • format_list_bulleted Laboratory/협업기록
    • · 2026. 9. 21.
    • textsms
    MyStock - JSON 분석 스킬을 연결하다

    MyStock - JSON 분석 스킬을 연결하다

    앞선 작업에서는 MyStock의 JSON Export 데이터 용량을 줄이는 데 꽤 많은 시간을 썼다. 처음에는 데이터를 많이 넣어두면 LLM이 알아서 필요한 부분을 찾아 쓸 것이라고 생각했고, 그 다음에는 지시문을 더 자세히 적으면 분석 품질이 안정될 것이라고 생각했다. 실제로 여러 모델을 돌려보니 둘 다 절반만 맞는 이야기였다. JSON 안에 데이터가 존재하는 것과 LLM이 그 데이터를 실제 판단에 사용하는 것은 다른 문제였고, 지시문이 길어진다고 실행 결과까지 안정되는 것도 아니었다. 그래서 최신 모델인 아스트라를 이용해 JSON Export 구조를 다시 줄였다. 계좌, 종목, ETF 구성, 시장지표처럼 판단에 필요한 정보는 남기되, 같은 사실을 너무 높은 해상도로 반복해서 전달하는 부분은 줄였다. ..

    • format_list_bulleted Laboratory/실험노트
    • · 2026. 9. 20.
    • textsms

    MyStock - JSON Export 최적화

    앞선 실험에서는 MyStock의 투자 데이터를 JSON으로 내보내 여러 LLM에 그대로 던져봤다. 계좌 상태와 손익, 보유 ETF의 가격과 거래량, 투자자 수급, ETF 구성종목과 최근 변화, 실제 기초자산 기준의 중복 노출, 거래내역, 그리고 시장지표의 과거 데이터까지 한 파일에 넣었다. 당시 Pretty JSON은 약 1.28MB까지 커졌는데, 내 계좌 하나를 분석하기 위한 파일이라는 점을 생각해도 1.3MB 정도는 별문제가 아니라고 생각했다. 데이터를 충분히 넣어두면 LLM이 그 안에서 필요한 정보를 알아서 찾아 관계를 연결할 것으로 기대했지만, 실제 결과는 달랐다. 눈에 잘 보이는 현재 수익률이나 보유 비중은 비교적 잘 사용하면서도, 일부러 넣어둔 과거 시장 흐름이나 ETF 구성 변화, 수급처럼 ..

    • format_list_bulleted Laboratory/실험노트
    • · 2026. 9. 19.
    • textsms
    MyStock - JSON Export 데이터를 AI에게 던졌다

    MyStock - JSON Export 데이터를 AI에게 던졌다

    MyStock에 JSON Export를 붙인 이유는 거창하지 않았고, 내가 가진 포트폴리오와 과거 시장 데이터를 한 번에 넘기고, AI(LLM)에게 “오늘 시장환경에서 내 포트폴리오를 어떻게 운용하는 방향이 좋을지” 물어보고 싶었다.계좌 상태, 보유 ETF, 가격과 거래량, 투자자 수급, ETF 구성종목과 최근 변화, 실제 기초자산 중복 노출, 거래내역, 시장지표 3년치를 한 파일에 넣었다. 파일은 약 1.2MB까지 커졌다. 이 정도면 AI가 알아서 필요한 데이터를 찾아서 분석할 거라고 생각했다. 실제로 돌려보니 예상과 달랐고 데이터가 없는 게 아니라, 데이터가 있어도 모델이 굳이 읽지 않았다.첫 번째 실험초기 JSON을 Gemini, Claude, Grok에 전달했다. 별도의 분석 프롬프트를 다시 쓰지..

    • format_list_bulleted Laboratory/실험노트
    • · 2026. 9. 17.
    • textsms
    디오넷 AP1100 공장초기화 - 나와 ChatGPT가 함께 도달한 잘못된 결론

    디오넷 AP1100 공장초기화 - 나와 ChatGPT가 함께 도달한 잘못된 결론

    요즘 퇴근 후, ChatGPT하고 노느라고 집에서 PC 사용이 부쩍 늘어나, 인터넷이 간헐적으로 끊기는 상태를 즉각 느낄수 있었다. 예전에 사용한 무선 공유기 ipTIME은 이럴 때마다 재부팅 한번으로 해결되긴 했는데, 천장형 AP는 살펴보니 전원공급 어댑터 연결이 없는 것이 아닌가? 그래서 신발장 네트워크 단자함을 열어 일단 라우터를 재부팅하였으나, 여전히 천장형 무선 공유기 AP1100은 동작하지 않았다. 여기서부터 오늘 사건의 시작이었다. 여전히 AP가 동작하지 않아 디오넷 AP1100 모델 전면부에 리셋 버튼을 실행하였는데, 예상치 못한 결과가 발생하였다.이상한 초기화리셋으로 인해 기존에 설정한 SSID가 삭제된 것은 예상범위였고, WIFI_2G / WIFI_5G 추가되고 비밀번호 없이 사용이 가..

    • format_list_bulleted AI/ChatGPT
    • · 2026. 9. 16.
    • textsms
    • navigate_before
    • 1
    • 2
    • 3
    • 4
    • 5
    • navigate_next
    공지사항
    • 이 블로그는 이런 실험을 하고 있습니다
    • LOGON 블로그를 다시 시작하며...
    전체 카테고리
    • 분류 전체보기 (72)
      • AI (17)
        • ChatGPT (10)
        • Accidents (5)
      • Laboratory (42)
        • 실험노트 (4)
        • 협업기록 (36)
        • 에필로그 (2)
      • Embedded (13)
    최근 글
    인기 글
    최근 댓글
    태그
    • #AI
    • #리팩토링
    • #TPublisher
    • #MyStock
    • #Python
    • #codex
    • #PySide6
    • #ChatGPT
    • #ai협업
    • #한국투자증권
    Copyright © 쭈미로운 생활 All rights reserved.
    Designed by JJuum

    티스토리툴바