본문 바로가기

분류 전체보기1097

Windows 터미널 창 분할 사용법 창 분할Alt + Shift + '+' : 수직 분할Alt + Shift + '-' : 수평 분할Alt + Shift + d : 현재 활성창에 따라 자동분할 창 간 전환Alt + 방향키 창 크기 조정Alt + Shift + 방향키 창 닫기Ctrl + Shift + w 창 확대/축소포커스가 있는 창을 확대에서 전체를 채우거나 다시 되돌리기Ctrl + Shift + p 를 눌러 명령 팔레트를 열고 zoom을 입력하면 확대/축소가 토글 됨 (단축키는 따로 없음) 창 교환교환할 창에 포커스를 두고 Ctrl + Shift + p 를 눌러 명령 팔레트를 연 뒤 swap pane up/down/left/right 입력 (단축키는 따로 없음) 분할 창을 탭으로 보내기 or 탭을 분할 창에 넣기Ctrl + Sh.. 2026. 8. 15.
C51 지역 변수의 처리 일반적으로 지역변수는 함수 호출 시 스택에 동적으로 할당되고 함수 종료 시 해제된다. 하지만 Keil C51 컴파일러에선 8051의 매우 작은 내부 RAM을 효율적으로 사용하기 위해, 지역변수를 다음과 같은 단계로 처리한다. 1. 레지스터 할당먼저 지역변수를 CPU 레지스터(R0~R7 등)에 배치할 수 있는지 확인하고, 가능한 경우 우선적으로 배치한다. 2. 메모리에 오버레이하여 정적 배치레지스터만으로 부족한 경우에는 _DATA_GROUP_ 세그먼트에 정적으로 배치한다. (Default 메모리 모델인 Small 모델에서 DATA_GROUP은 Low 128B of Internal RAM을 사용함) 다만 지역변수마다 고정된 고유 주소를 독접하는 것은 아니고, 컴파일러/링커가 프로그램의 Call Tree를 .. 2026. 8. 12.
C51 인터럽트 Keil C51 컴파일러에서는 interrupt 키워드를 사용해 아래와 같이 인터럽트 서비스 루틴(ISR)을 정의한다. void 함수명 (void) interrupt { // ...} 위치에는 0~31 사이의 정수가 올 수 있고, 컴파일러가 알아서 해당 인터럽트 번호에 맞는 벡터 주소 매핑까지 처리한다. 예시. extern bit alarm;int alarm_count;void falarm (void) interrupt 1 using 3 { alarm_count *= 2; alarm = 1;} 이 interrupt 키워드의 가장 큰 특징은 인터럽트 함수가 호출될 때 ACC, B, DPH, DPL, PSW 같은 핵심 레지스터들의 내용을 알아서 스택에 저장(push)하고, 인터럽트가 끝날 .. 2026. 8. 6.
플래시 메모리에 Program/Erase를 수행하는 동안에는 전역 인터럽트를 비활성화하는 이유 플래시 메모리에 쓰기(Program)나 지우기(Erase)를 수행하는 동안에는 전역 인터럽트 상태를 저장하고 비활성화한 뒤, 작업 후 다시 복원하는 것이 일반적이다. 이유는? 첫째로 인터럽트가 발생했을 때 벡터테이블이나 ISR이 플래시 메모리에 저장되어 있다면 CPU가 플래시에서 명령어를 가져오려(Fetch) 하게 되고, 이 시점에는 플래시가 Program/Erase 동작으로 인해 읽기가 불가능하거나 제한되어 BusFault, HardFault 등이 발생할 수 있기 때문이다. 두 번째로는 Flash Programming Sequence를 보호하기 위해서이다. 일부 MCU에서는 내부 플래시 메모리에 데이터를 쓰거나 지울 때, Flash Controller가 엄격한 타이밍과 시퀀스를 요구한다. 이 과정에서 .. 2026. 8. 4.
교정 / 조정 / 보정의 차이 (Calibration, Correction ...) 1. 교정 (Calibration)교정은 정확도가 더 높은 상위 표준기(Standard) 와 측정기의 값을 비교하여 측정 오차를 확인하고 기록하는 일련의 작업을 말한다. 교정의 목적은 장비의 현재 성능을 확인하는 것이며, 장비를 실제로 조정하지 않아도 교정이 수행된 것으로 본다. 일반적으로 교정 성적서에는 기준값, 측정값, 오차, 측정 불확도 등이 기록된다. 2. 조정 (Adjustment)조정은 교정 결과 측정 오차가 허용 범위를 벗어난 경우, 장비의 출력을 표준값에 맞도록 변경하는 작업을 말한다. 가변 저항을 돌리거나(Analog) 내부 파라미터나 보정 계수를 변경하는 방식(Digital)으로 수행된다. 조정이 끝난 후에는 다시 교정을 수행하여 허용 오차 내에 들어왔는지 확인하는 것이 일반적이다. .. 2026. 8. 2.
8051 메모리 구조 1. 8051이란?일반적으로 8051이라고 부르는 것은 1980년 인텔이 발표한 8비트 마이크로컨트롤러 8051 하나만을 뜻하는 것이 아니라, 이후 등장한 8031, 8032, 8052, 8751, 8752, 89C51, 89C52, 80C31, 80C32 등 동일한 명령어 집합(ISA)을 기반으로 하는 8051 프로세서 계열 전체를 통칭하는 표현이다. 그리고 인텔이 8051 시장에서 철수하고 원천 특허가 만료된 이후에는 STC, Silicon Labs, Nuvoton, Infineon, Megawin 같은 여러 반도체 업체가 표준 8051 아키텍처에 고속 클록, 확장 메모리, I2C / SPI / USB 같은 현대적인 인터페이스를 얹은 호환 칩을 자체적으로 찍어내고 있다. 따라서 오늘날 8051라는 용.. 2026. 7. 30.
기계식 릴레이의 구조 (Latching vs Non-Latching) 기계식 릴레이(Electromechanical Relay)의 구조 1. 구성요소전자석 (Electromagnet):전류가 흐를 때만 자석의 성질을 띠는 자석으로 철심에 코일을 감아놓은 형태다. 제어 회로(Coil Terminals에 연결)로부터 전류가 흐르면 자성을 띄고, 전류가 끊기면 자성을 잃는다.가동 철편 (Moveable armature):전자석 위에서 위아래로 움직일 수 있도록 배치된 금속 판이다. 전자석이 자성을 띠면 아래로 끌려 내려가고, 자성이 없어지면 다시 위로 올라간다.스프링 (Spring):전자석에 전류가 끊겼을 때, 가동 철편을 원래 위치(위쪽)로 되돌려주는 역할을 한다.접점 (Relay contacts):실제 부하 회로(Common Terminal과 Normally Open Te.. 2026. 7. 26.
8051 MCU의 1T, 6T, 12T의 의미 8051 MCU 데이터시트 첫장에 가장 먼저 등장하는 1T, 6T, 12T라는 표현의 의미에 대해 알아보자. 8051에서 T(T-state)는 클럭(Clock Cycle)을 의미한다. 8051은 여러 개의 T-state를 묶어 CPU가 명령어를 실행하기 위한 최소 시간 단위인 Machine Cycle(머신 사이클)을 구성하는데, 이 머신 사이클을 구성하는 클럭 수가 몇 개냐에 따라 12T, 6T, 1T CPU가 구분된다. 12T Core : Machine Cycle = 12 Clock6T Core : Machine Cycle = 6 Clock1T Core : Machine Cycle = 1 Clock 오리지널 8051의 12T 구조 오리지널 8051은 12T 구조를 사용했다. 오실레이터 클럭을.. 2026. 7. 23.
PADS Viewer 유용한 단축키 일반 단축키Ctrl + Alt + C : Display Colors Setup, 각 레이어와 부품, 배선의 색상을 지정하고 화면에 노출할 항목을 켜고 끄는(Visibility) 설정ESC : 선택 상태 해제Ctrl + B : 보드 외곽선 전체를 화면에 꽉 차게 표시7 : Ctrl + B와 동일, 보드 전체를 화면에 꽉 차게 표시8, 2, 4, 6 : 상/하/좌/우 화면 이동 방향키9 : 커서 위치에서 줌인3 : 커서 위치에서 줌아웃 Modelss CommandModeless Command는 화면에 아무것도 안 누른 상태에서 커맨드를 입력하고 엔터를 치는 방식을 말함s + : 객체 검색 기능와일드 카드 * 사용 가능s + 로 핀 위치 검색 가능사용 예시 : svcc_3v3, si2c_*, smcu... 2026. 7. 19.
Megawin ICP Programmer Megawin ICP Programmer는 Megawin 8051 계열 MCU의 플래시 메모리에 펌웨어를 다운로드 할 수 있도록 지원하는 프로그래밍 툴이다. USB를 통해 PC와 연결되며, 전용 소프트웨어와 함께 사용한다. 이 툴은 ISP(In-System Programming)와 ICP(In-Circuit Programming) 두 가지 방식을 모두 지원하는데, 모든 Megawin 8051 MCU 제품이 두 방식을 다 쓸 수 있는 것은 아니고, 제품군에 따라 ISP만 지원하는 모델과 ISP 및 ICP를 모두 지원하는 모델이 구분되어 있다. ISP와 ICP의 차이 항목ISP (In-System Programming)ICP ( In-Circuit Programming)인터페이스3선 (GND/VCC/D.. 2026. 7. 18.
시정수(Time Constant, τ) 시정수(Time Constant, τ)시정수(Time Constant, τ)는 회로가 입력 변화에 얼마나 빠르게 반응하는지를 나타내는 값으로, RC 회로에서는 커패시터 양단에 걸리는 전압이 최종값의 63.2%에 도달하는 데 걸리는 시간(단위: s)을 의미한다.시정수가 작을수록 회로는 빠르게 반응하고, 시정수가 클수록 천천히 반응한다. RC 회로의 시정수RC 회로는 저항(R)과 커패시터(C)로 구성된 회로로, 시정수는 다음과 같이 계산한다. R : 저항(Ω)C : 커패시터(F)τ : 시정수(s)시정수 τ가 경과하면충전 시 과도 전압 : 최종 전압의 약 63.2% 도달방전 시 과도 전압 : 초기 전압의 약 36.8% 유지 RL 회로의 시정수RL 회로는 저항(R)과 인덕터(L)로 구성된 회로로, 시정수.. 2026. 7. 15.
NCP303L 데이터시트 분석 NCP303L 이 칩은 onsemi에서 개발한 전원 감시용 Voltage Detector IC로, 외부 커패시터를 통한 Programmable time delay를 지원한다. 초저전력 칩으로 배터리 지속시간을 늘리면서도, 시스템 전압을 모니터링하다가 임계치 이하로 떨어지면 리셋 신호를 발생시켜 MCU나 프로세서를 안정적으로 초기화하는 역할에 쓰인다. 특징감시 전압(Threshold) 범위 : 모델별로 0.9V에서 4.9V까지의 고정 임계값 옵션 제공초저전류 소모 : Typical 0.5 µAThreshold 전압 정확도 : ±2.0%Hysteresis 지원 : 전압 노이즈로 인한 리셋 오동작을 방지하기 위한 히스테리시스 회로 내장동작 전압 범위 : 0.8V ~ 10V의 넓은 작동 영역동작 온도 범위.. 2026. 7. 11.
커스텀 UART 출력 함수도 printf처럼 컴파일러 경고 받기 펌웨어 개발을 하다 보면 디버깅이나 로그 출력을 위해 가변 인자를 받는 커스텀 출력 함수를 직접 만들어 쓰곤 한다. 여기에 치명적일 수 있는 문제가 하나 있다.. 먼저 C 표준인 printf 함수를 쓰면 컴파일러가 전달된 포맷 문자열(Format string)과 입력된 인자(Argument)의 개수 및 자료형이 일치하는지를 확인하고, 그렇지 않으면 경고를 표시해서 개발자의 실수를 예방해준다. 반면 내가 직접 만든 함수는 컴파일러가 해당 검사를 수행하지 않기 때문에, 전달한 변수 타입과 % 서식지정자가 맞지 않거나 인자 개수가 안 맞는 경우, 엉뚱한 값이 출력될 수 있고 최악의 경우 잘못된 메모리에 접근해서 Hardfault가 발생할 수 있다. 문제 상황 예시.uint32_t internal_temp = .. 2026. 7. 8.
터미널 특수 키의 이스케이프 시퀀스 (+ 테라텀의 Backspace/Delete 키 설정) 먼저 키보드의 Tab, Enter, Backspace, Space 같은 키들은 ASCII 코드표에 이미 정의된 단일 바이트 값이 있다. KeyHexASCII 문자Tab0x09TABEnter0x0D 또는 0x0ACR 또는 LFBackspace0x08 또는 0x7FBS 또는 DELESC0x1BESCSpace0x20SP 반면 방향키, Delete, Home, End 같은 키들은 ASCII 코드표에 자리가 없다. 이런 키들을 표현하기 위해 터미널은 멀티바이트의 이스케이프 시퀀스를 사용한다. 터미널 특수 키 이스케이프 시퀀스 표모든 이스케이프 시퀀스는 첫 번째 바이트가 0x1B (ESC 문자의 ASCII 코드)로 시작하며, 테라텀 등 터미널에서 다음 키를 누르면 아래 바이트 시퀀스가 연달아 전송된다. Ke.. 2026. 7. 4.
STM32 VS Code Extension 개발환경 구축 STM32CubeIDE for Visual Studio Code 3.9.0 버전 기준 참고로 이전 버전에서는 STM32CubeCLT를 별도 설치해줘야 했지만, 3.9.0 버전에서는 STM32 프로젝트 빌드/다운로드/디버깅에 필요한 명령줄 도구를 번들로 같이 설치하므로 STM32CubeCLT를 따로 설치할 필요가 없다. 1. STM32CubeMX 설치 (최소 6.11.0 이상 버전)STM32CubeMX는 핀 설정, 클럭 설정 등을 하고 CMake 기반의 프로젝트 코드를 생성해 주는 역할을한다. 2. VSCode에서 STM32 확장 프로그램 설치 먼저 확장프로그램을 설치하기 전에 STM32 개발용 프로파일을 새로 만들어두는게 낫다. VSCode New Window 열때마다 STM32 확장프로그램.. 2026. 7. 1.
전기차 관리 방법 1. 평소 배터리 잔량을 20% ~ 80% 사이로 유지리튬 이온 배터리는 충전량이 80%를 넘거나 20% 미만인 상태, 즉 셀 전압이 너무 높거나 낮은 상태로 오래 방치되면 배터리 셀 내부에 가해지는 물리적, 화학적 스트레스가 커져 수명이 단축될 수 있다. 따라서 평상시 충전 상태를 20% ~ 80% 구간으로 유지하는 것이 좋다. 20%까지 떨어질 때까지 기다렸다가 충전하기보다는, 해당 구간에서 일정량 남아 있을 때 80%까지 자주 충전해주면 된다. 2. 한 달에 한 번은 완속으로 100% 충전한 달에 한 번 정도 잔량이 20% 수준일 때 완속으로 100%까지 채워주는 것이 배터리 셀 밸런싱에 좋다. 7kW 수준의 낮은 전류로 천천히 충전하면, BMS가 먼저 100%에 도달한 셀은 대기 상태로 두고.. 2026. 6. 28.
VSCode ] 인코딩 변경 VSCode의 기본 인코딩은 UTF-8이며, 개별 파일의 인코딩을 변경하여 저장하거나 새로 열려면 우측 하단의 Select Encoding 버튼을 눌러서 수행할 수 있다. 전체 파일의 인코딩 기본값을 변경하려는 경우 단축키 Ctrl + , 를 눌러 설정을 연다. 검색창에 encoding을 입력한다. Files: Encoding 항목에서 원하는 인코딩 방식(UTF-8, EUC-KR 등)을 선택한다. 2026. 6. 28.
Windows/Linux ] 파일의 무결성 검사 도구 해시 알고리즘해시 알고리즘은 임의의 크기를 가진 데이터를 고정된 크기의 고유한 값(해시값)으로 변환하는 일방향 함수다. 입력값이 1비트만 달라져도 완전히 다른 결과를 반환하기 때문에 무결성 검증과 보안(암호화)에 필수적인 요소로 사용된다. 흔히 무결성 검사 기법으로 함께 언급되는 체크섬과 CRC가 네트워크 상의 전송 오류를 걸러내기 위해 설계되었다면, 해시는 연산 속도는 느리지만 악의적인 위변조와 해킹 시도로부터 데이터를 안전하게 보호하기 위해 존재한다. 핵심 특징고정된 출력 길이 : 입력 데이터의 크기와 상관없이 항상 일정한 길이의 해시코드를 출력한다. MD5는 16진수 32자리(128비), SHA256은 16진수 64자리(256비트)를 가진다.일방향성(One-way): 해시값으로 원본 데이터를 복구할.. 2026. 6. 27.
Ubuntu에서 Google Chrome 설치하기 Ubuntu 배포판에는 Firefox가 기본 웹 브라우저로 제공된다. 하지만 Firefox는 snap 패키지 형태로 탑재되어 있어서 사용하기엔 좀 불편한 요소가 있다. ✓ snap이란? snap은 우분투 개발사인 캐노니컬(Canonical)이 만든 리눅스 패키징 시스템이다. 애플리케이션과 실행에 필요한 모든 라이브러리, 의존성 파일을 하나의 패키지로 묶어 의존성 충돌 없이 설치할 수 있다는 장점이 있다. 하지만 Sandbox라고 불리는 독립된 가상 환경에 애플리케이션을 격리하여 실행하는 방식이라 처음 앱을 시작할 때 구동 시간이 오래 걸리고, 실행 중 반응속도도 느리며, 종료 후에도 잠시 백그라운드에서 자원을 정리하는 작업이 남는다. 오픈소스 브라우저인 Chromium도 apt 명령어로 간단하게 설치할 .. 2026. 6. 24.
Linux PCIe Driver 학습 프로젝트 다음은 QEMU 가상환경에서 커스텀 PCI 장치를 직접 만들고, 그 장치를 제어하는 리눅스 커널 드라이버와 유저 애플리케이션을 작성하는 학습 프로젝트이다. https://github.com/joeteo/pci-vip GitHub - joeteo/pci-vipContribute to joeteo/pci-vip development by creating an account on GitHub.github.com 2026.01.18 - [임베디드 개발/임베디드 리눅스] - Linux 호스트에서 QEMU 빌드 Linux 호스트에서 QEMU 빌드대부분 리눅스 배포판 저장소에는 이미 QEMU 바이너리 패키지를 제공하기 때문에 sudo apt install qemu-system-arm 등으로 간단히 설치할 수 있.. 2026. 6. 21.
LDD ] PCIe 디바이스 드라이버와 유저앱 작성하기 - DMA & MSI 이번엔 지난 글에서 다룬 PCI 장치를 제어하기 위한 드라이버와 유저 앱을 작성해 보겠다. 편의상 MMIO + INTx 방식의 장치를 v1, DMA + MSI 방식의 장치를 v2로 구분한다. 드라이버와 유저 앱을 설계할 때 고려한 것은 크게 두 가지다. 1. zero-copy* 구현2. 유저 앱까지 이어지는 파이프라이닝 구조 ✓ Zero-copy란? 데이터를 주고받을 때, CPU가 개입해서 복사하는 횟수를 0회로 만든다는 뜻이다. 먼저 1번. 지난번에 작성한 v1은 zero-copy가 아니었다. 드라이버 단에서 mmap을 사용해 커널과 유저 스페이스 사이의 메모리 복사(copy_to_user, copy_from_user)는 없앴지만, mmap한 대상이 시스템 RAM이 아닌 장치의 BAR 공간으로, 애플.. 2026. 6. 21.
TMS320F28388D] Q. M0, M1 외에 다른 공간을 스택으로 써도 되는가? 관련글 :https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1228631/tms320f280039c-can-stack-be-placed-outside-m0-m1 예제 프로젝트의 링커 커맨드 파일(.cmd)을 보면 기본적으로는 M0, M1 RAM을 스택 공간으로 지정하고 있는데, 이는 Mx RAM이 CPU와 Tightly coupled된 메모리라서 성능과 속도 면에서 최적이기 때문일 것이다. 하지만 하드웨어 제약 조건을 충족하기만 하면 다른 RAM 영역도 스택으로 사용할 수 있다. 먼저 스택 영역을 옮길 때 고려해야할 점은 C28x CPU의 스택 포인터(S.. 2026. 6. 20.
PER (Price Earning Ratio, 주가수익비율) PER (Price Earning Ratio, 주가수익비율) PER(주가수익비율)은 현재 주가를 주당순이익(EPS, Earnings Per Share)으로 나눈 값으로, 기업의 현재 주가가 1년치 순이익 대비 몇 배로 거래되고 있는지를 나타내는 평가 지표다. 계산공식은 다음과 같다.PER = 주가 ÷ 주당순이익(EPS)주당순이익(EPS) = 당기순이익 ÷ 총 발행 주식 수혹은 다음과 같이 계산할 수도 있다.PER = 시가총액 ÷ 당기순이익 PER이 낮으면 기업의 이익 대비 주가가 저렴하여 상대적으로 주식이 저평가되었음을 의미하고, PER이 높으면 주당순이익에 비해 주가가 비싸지만 시장에서 해당 기업의 미래 성장 잠재력을 높게 평가하고 있음을 의미하기도 한다. 참고로 PER은 업종과 기업의 성격에 .. 2026. 6. 15.
QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (4) DMA + MSI 이전 글에서 작성한 커스텀 PCIe 장치의 기본 구조와 기능은 유지한채로, 데이터 전송 방식과 인터럽트 방식을 변경하였다.데이터 전송 : 장치의 RAM을 BAR1 영역에 할당하던 방식에서 DMA(Direct Memory Access) 전송 방식으로 변경인터럽트 : 레거시 INTx 방식에서 MSI(Message Signaled Interrupt) 방식으로 변경 PCI DMA의 이해PCI DMA는 CPU의 개입 없이 하드웨어가 시스템 메모리에 직접 접근한다는 점에서 일반적인 생각하는 DMA와 동일하지만, DMA 엔진의 위치와 작동 방식에서 차이가 있다. 보통 임베디드 환경에서 말하는 DMA는 SoC/MCU 내부에 DMA 컨트롤러가 존재한다. 그래서 CPU가 초기 설정만 해두면 이후에는 DMA 컨트롤러.. 2026. 6. 14.
1553B (MIL-STD-1553) 개요MIL-STD-1553은 군용 항공기 내부의 전자 장비 간 통신을 위해 설계된 차동 직렬 데이터 버스 프로토콜이다.1970년대 항공기 내 다양한 서브시스템 간 통신 방식을 표준화하고, 체계 수준에서 데이터 흐름을 예측 가능하게 관리하기 위해 도입되었다.초기 버전인 MIL-STD-1553A가 발간된 이후, 개정된 MIL-STD-1553B가 현재까지 사용되는 표준으로 자리 잡았기 때문에, 통상적으로 짧게 1553B라고도 부른다. 이중화 (Redundancy)1553B는 단일 버스의 고장이 발생하더라도 통신의 연속성과 데이터의 무결성을 확보하기 위해 이중화 구조를 채택하고 있다.Primary Bus (Bus A)Backup Bus (Bus B)두 버스는 전기적으로 완전히 독립되어 있으며, 동일한 네트.. 2026. 6. 7.
TL16C752C, Dual UART (16550 호환 칩) 일단 이 칩은 16550 아키텍처를 기반으로 64-Byte FIFO를 탑재한 Dual UART 컨트롤러 칩이다. 16550이 무엇인가?1980년대 시절 PC의 Serial Port 구현을 위한 외장 UART 컨트롤러로 널리 쓰이던 칩이 National Semiconductor사에서 출시한 8250, 16450, 16550 시리즈였다. 8250, 16450 계열은 데이터 레지스터를 제외한 송수신 버퍼가 따로 없어서 인터럽트 부담이 컸고, 16550에서 16-Byte FIFO가 최초 도입되면서 실사용성이 크게 좋아졌다. 이후 여러 제조사에서 "16550 compatible"을 표방하는 호환 칩이 대량으로 나오며 레지스터 구조가 사실상 표준처럼 굳었다. 현재에도 16550 IP가 널리 쓰이고 있고, 리눅스 .. 2026. 5. 31.
Git ] fatal: detected dubious ownership in repository at '경로' 이 에러는 여러 사람이 함께 사용하는 컴퓨터 환경에서 발생할 수 있는 보안 문제를 막기 위해, Git에 새롭게 추가된 검사 로직 때문에 생긴 것이다.예를 들어, 해커가 공용 폴더나 상위 디렉토리에 몰래 .git 폴더를 만들고 config 파일에 악성 코드를 심어두면, 이후 해당 폴더나 하위 폴더에서 git status 같은 명령어만 실행해도 내 권한으로 악성 코드가 실행될 위험이 있다. 이를 막기 위해 Git은 현재 명령어를 실행하는 로그인한 사용자와 해당 디렉토리의 소유자(Owner) 가 다를 경우 의도적으로 이 에러를 발생시켜 실행을 차단한다. 해결 방법은 다음과 같다. 해결 방법 1. 특정 폴더만 예외 등록하기이 폴더는 신뢰할 수 있는 폴더이니 검사하지 말라고 예외 설정하는 방법이다. git c.. 2026. 5. 27.
UART 흐름제어 (RTS/CTS, DTR/DSR, XON/XOFF) UART 컨트롤러는 자체적으로 흐름 제어(Flow Control) 신호를 처리할 수 있는 기능을 포함하고 있다. 여기서 흐름제어란 데이터가 수신 측의 처리 속도보다 너무 빠르게 들어와서 버퍼 오버플로우가 발생하는 걸 막는 매커니즘을 말한다. 1. 과거의 UART 흐름제어과거 RS-232 통신 규격이 정립되던 시기에는 DTE 장치(PC)가 DCE 장치(모뎀)에 연결되는 것이 기본이었다. 데이터 송수신 자체는 DTE, DCE 모두 할 수 있지만 데이터 전송을 시작하고 종료하는 쪽은 DTE 였으며, 이러한 역할 구분에 따라 TXD, RXD를 포함한 각 신호 핀의 용도가 정의되었다. DTE (Data Terminal Equipment) : 단말기, 컴퓨터DCE (Data Circuit-terminating .. 2026. 5. 24.
인터넷 안되는 폐쇄망 PC에서 Local LLM으로 클로드 코드 무료로 쓰기 (Gemma4 + Ollama) 얼마 전 구글이 Gemma 4를 공개하면서 꽤 화제가 됐다. 그리고 유튜브에서 "Gemma 4를 활용해 로컬에서 무료로 AI 돌리는 법"에 대한 영상이 쏟아져 나왔는데 대부분은 인터넷이 되는 환경에서 손쉽게 설치한 뒤 퍼포먼스를 테스트하는 내용이었다. 나는 업무 특성상 인터넷이 차단된 환경에서 작업할 일이 많기 때문에, 폐쇄망 PC에서도 Local LLM으로 코딩 어시스턴트를 쓸 수 있다면 상당히 유용하겠다 싶었고, 직접 시도해본 뒤 그 과정을 정리한다. Gemma 4는 왜 화제가 됐나?첫 번째는 오픈소스 라이선스다. Gemma 4는 Apache 2.0 라이선스로 공개됐는데, 소스코드 공개 의무가 없고 상업적 사용이 자유로우며 2차 가공 후 라이선스 변경이나 특허 출원도 가능하다는 점 때문에 개발자들.. 2026. 5. 17.
클로드 코드 (Unable to connect to API) - USB 이더넷 어댑터 연결 시 통신 오류 Wi-Fi로 클로드 코드를 사용하던 중 PC에 특정 USB 이더넷 어댑터를 꽂는 순간 API 연결이 끊기는 일이 있었다. 당시 브라우저로 claude.ai에 접속하면 채팅기능은 멀쩡히 쓸 수 있는데 클로드 코드 사용 시에만 네트워크 오류가 발생하는 것이다. 원인을 확인해보니 라우팅 테이블 문제였다. 원인Windows에서 네트워크 어댑터가 여러 개 연결되면 각 어댑터에 default route(0.0.0.0/0)가 생길 수 있다. 이 경우 메트릭이 낮은 쪽이 우선으로 트래픽을 처리하는데, '자동메트릭'으로 설정되어 있으면 어댑터의 Link speed(대역폭)을 기준으로 메트릭이 설정되기 때문에 Wi-Fi보다 유선 연결이 더 낮은 메트릭 값을 할당받는 경우가 많다. 즉, USB 이더넷 어댑터 쪽의 메트릭이.. 2026. 5. 16.
반응형