본문 바로가기

분류 전체보기128

거짓말쟁이 AI와 개발하기 (EFR32FG1 + MCP48FVB21) 최근 들어 ChatGPT와 같은 AI 도구를 활용해 임베디드 시스템 개발을 진행하는 사례가 점점 일반화되고 있다. 프롬프트 기반으로 알고리즘을 설계하고, 기존의 화이트보드에서 이뤄지던 설계 과정이 디지털로 전환되는 것을 실감하고 있다.이번 프로젝트에서는 MCP48FVB21 DAC 칩을 사용해 전압 출력을 제어하는 펌웨어를 개발해야 했고, 초기부터 ChatGPT와 함께 SPI 통신 설정 및 DAC 구동을 시도해보았다. SPI 설정: 좋은 시작, 예기치 못한 오류 ChatGPT는 꽤 괜찮은 출발을 보여줬다. SPI 설정 예제를 제공하고, 실리콘랩스 관련 문서 링크까지 안내해줬다. 하지만 실제 구현에 들어가자 문제가 발생했다.SPI를 설정하고 송신 루틴을 구성했음에도 완전히 다른 핀들이 동작하기 시작했다. E.. 2025. 7. 27.
[둠포팅] 안드로이드 Prboom 코드분석 #1 그동안 다양한 단말기에 Doom을 포팅해봤지만, 안드로이드 단말기에는 해본 적이 없었다.그래서 이번에는 안드로이드 포팅 프로젝트를 새로 시작하기로 했다.먼저 이미 누군가 작업한 레포가 있는지 찾아봤다. 실행 가능한 기준으로 찾은 저장소는 다음 두 개였다: 1. dports/GZDA2: GZDooM Android 22. deqart/Doom-Android: Doom (1993) ported to android 문제는 이 두 프로젝트 모두 업데이트가 오래전에 멈췄다는 것이다. 게다가 안드로이드 스튜디오는 구버전과의 호환성이썩 좋지 않아 마이그레이션이 생각보다 귀찮다. GZDA2는 성능도 빠르고 기능도 좋지만, 포팅 에러가 자주 발생했다.두 번째 프로젝트는 prboom 기반인데, 신기하게도 Java나 Kotl.. 2025. 6. 26.
LinuxQt + tslib 터치 보정 적용기: libinput 충돌을 뚫고 제대로 적용하기 임베디드 Qt 환경에서 터치스크린 보정을 하기 위해, 우리는 tslib를 사용하기로 했다.libinput 기반의 입력 처리도 가능하긴 하지만, 정전식 화면에서 **터치 좌표 보정(calibration)**이 필요한 상황에서, X11 서버가 필요 없는 경량 보정 라이브러리인 tslib는 최적의 선택이다.​🎯 왜 tslib인가?libinput은 xinput을 통해 보정해야 하고, 이는 X 서버가 실행 중일 때만 가능tslib는 Framebuffer 환경에서도 동작하며, /etc/pointercal 파일을 통해 보정값을 관리할 수 있음​🚀 초기 설정: 환경 변수 설정부팅 스크립트에서 다음과 같이 설정했다:export QT_QPA_PLATFORM=linuxfb:tslibexport TSLIB_TSDEVICE.. 2025. 5. 18.
이직, 인생의 갈림길에서 현명한 선택하기 이직은 그냥 직장을 옮기는 것보다 훨씬 더 중요합니다. 우리의 생활, 인간관계, 그리고 생활 패턴을 바꾸는 중요한 전환점입니다. 새로운 기회를 맞이하려면 철저한 준비와 신중한 태도가 필수적입니다. 아래는 이직 과정에서 꼭 기억해야 할 핵심 사항들입니다. 이직 준비: 현재 직장 유지하며 면접 보기 현재 직장 유지: 이직 준비 중에는 회사를 그만두지 않는 것이 좋습니다.반차나 저녁 시간을 활용해 면접을 진행하는 것이 나습니다.면접 후 결과가 나올 때까지 몇 주에서 몇 달이 걸리기도 합니다. 이런 상황에서  백수가 되어 불안에 시달리는 상황을 피하는 것이 중요합니다.자기 성찰의 기회: 면접 과정은 자신의 경력과 역량을 되돌아보는 계기입니다. 부족한 점을 발견하고 이를 보완할 방법을 고민하는 것이 필요합니다면접.. 2025. 3. 29.
Qt4에서 Qt5포팅시 팁 1. qt_screen-> deviceWidth()함수는 Qt 4에서 사용되는 함수로, 특정 스크린의 실제 픽셀 단위 너비를 반환합니다. 이 함수는 스크린의 물리적 너비를 픽셀 단위로 제공하여, 화면에 표시되는 내용의 정확한 크기를 계산하는 데 사용될 수 있습니다. 쉽게 말해, 이 함수는 스크린의 가로 길이를 픽셀 단위로 알려줍니다. 예를 들어, 1920x1080 해상도의 디스플레이가 있다면, deviceWidth() 함수는 1920을 반환할 것입니다. 라고 한다. 이 함수를 Qt5에서는 지원하지 않기에 , 아래와 같이 컨버팅 해야 한다.#include #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv);.. 2024. 12. 1.
U-Boot env 이미지 만들기(mkenvimage) U-Boot의 환경 설정은 기본적으로 환경 변수 영역(env 영역)에 저장됩니다. 이 중복된 환경 설정 영역(redundant env 영역)을 사용하면 시스템 복구가 가능합니다.U-Boot는 부팅 시 환경 변수 영역을 읽어와 CRC를 확인하고, 저장된 체크섬 값과 비교합니다. 일치하면 그대로 사용하고, 불일치하면 "bad CRC" 메시지를 출력하며 env_set_default 함수를 통해 기본 설정을 사용합니다. env/commom.c 파일의 env_check_redund 함수에서는 crc32(0, tmp_env1->data, ENV_SIZE)를 호출하여 CRC를 비교합니다. 이를 이해하기 위해 다음과 같이 진행했습니다:mkenvimage -s 0x20000 -o u-boot-env.bin uboot-e.. 2024. 11. 28.