| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- fprintf
- 문자형 디바이스 파일
- Shared Folder
- intents
- interrupt context
- activities
- pagefile.sys
- context
- 멀티프로세싱
- gparted
- 프레임버퍼
- sscanf
- 환경 변수
- interrupt handler
- 소캣
- 속도저하
- HDR
- layouts
- 젠킨스
- ubuntu
- jenkins
- 디스크립터
- fscanf
- memcmp
- sprintf
- 디스크 축소
- context switch
- DMA
- usb2.0
- makefile
- Today
- Total
목록분류 전체보기 (78)
do{학습}while
공유폴더( Shared Folder )Windows의 특정 폴더를 공유 폴더로 지정하고, Ubuntu 가상머신(virtualbox)에서 이를 마운트해 두 시스템 간 파일을 쉽게 주고받을 수 있습니다. 공유폴더 설정 방법가상머신을 전원을 킨 상태에서 [장치] -> [공유 폴더] -> [공유 폴더 설정]공유폴더를 새롭게 생성하기 위해 아래 '+'(플러스 버튼)을 클릭한다. "폴더 경로" = 윈도우 상에서 공유폴더로 선택할 폴더의 경로"폴더 이름" = 선택된 공유폴더의 이름 윈도우 상에서 공유폴더로 선택할 폴더 선택 "읽기 전용" = 게스트 VM에서 파일 수정 불가, 읽기만 가능 (저는 작업중에 파일에 오고 가서 비활성화)"자동 마운트" ✅ = VM이 부팅될 때 공유폴더가 자동으로 마운트"항..
문제 배경Ubuntu 환경에서 gitlab으로부터 프로젝트를 다운로드 이후 시스템 재부팅 후 더 이상 정상적으로 부팅되지 않는 현상이 발생했습니다.부팅 과정에서 검은 화면에 깜빡이는 언더스코어(_) 커서만 나타나며, 어떤 입력도 받아들이지 않는 상태가 지속되었습니다.문제 상황 정리Ubuntu 시스템에서 git 프로젝트 설치 이후 부팅부팅 과정에서 검은 화면과 깜빡이는 커서에서 멈춤키보드 입력 무반응, 강제 종료 외 다른 방법 없음여러 번 전원을 껐다 켜봐도 동일한 현상이 반복되면서, 시스템이 완전히 망가진 것처럼 보였습니다.원인 분석 - 디스크 용량 부족핵심 원인: 하드디스크 용량 부족으로 인한 커널 로드 실패git 프로젝트 과정에서 디스크 용량이 가득 참커널이 제대로 로드되지 않아 부팅 과정 중단복구 ..
문제 배경블랙박스와 안드로이드 테블릿 간의 직접 이더넷 연결을 통해 데이터를 주고받는 프로젝트를 진행하던 중, 물리적으로는 케이블이 연결되어 있음에도 불구하고 양쪽 장치 간 통신이 되지 않는 현상이 발생했습니다.처음에는 단순한 설정 문제일 거라 생각했지만, ping 테스트조차 실패하면서 LAN이 제대로 형성되지 않았다는 점을 확인하게 되었습니다.문제 상황 정리블랙박스는 192.168.0.100 / 255.255.255.0테블릿은 192.168.1.10 / 255.255.255.0두 장치를 이더넷 케이블로 직접 연결결과적으로 서로를 같은 네트워크 대역으로 인식하지 못했고, ARP 주소 확인도 실패하여 통신이 전혀 이루어지지 않았습니다. 원인 분석 – LAN이 형성되지 않은 이유1. 서브넷 불일치서브넷 마스..
문제 인식영상 데이터를 USB로 전송하는 과정에서 프레임 지연 현상 발생blocking 함수인 write() 함수 1회 호출 시 평균 16ms, 최대 25ms 소요됨을 확인원인 분석gettimeofday() 기반으로 전처리 시간과 write 시간 분리 측정분석 결과, 전처리 시간은 짧았고, write 구간에서 가장 큰 시간 지연 발생해결을 위한 접근디바이스 측 점검USB 2.0 High-Speed 환경 및 FIFO 용량(4KB) 확인write 단위를 4096B 이하로 조정하여 FIFO block 방지전처리 구간(프레임 복사, 지연 계산 등)에서 추가 병목 없는 것 확인호스트 환경 요청수신 애플리케이션의 빠른 데이터 수신 대기(polling) 및 지연 없는 read 처리 요청수신 처리 병목이 발생할 경우 ..
문제 상황USB 가젯 초기화 중 디스크립터 write error 발생/dev/ffs/.../UDC에 UDC 정보를 기록하는 단계에서 실패원인 분석UDC 파일에 UDC 이름이 아닌 전체 명령어 출력 결과를 redirect다음과 같은 명령어 차이로 오류 발생:UDC = "/sys/kernel/config/usb_gadget/mygadget/UDC"ls -1 /sys/class/udc > $UDC # ❌ (파일 내용이 \\n 포함됨 → write error 발생)echo "$(ls -1 /sys/class/udc)" > $UDC # ✅ (정상: 순수 문자열로 입력됨)해결 방법UDC에는 반드시 UDC 이름을 문자열 형태로 echo해야 함echo를 사용해 문자열로 넣는 방식으로 수정하여 ..
문제 상황시스템이 해당 디바이스를 **USB 1.1(Full Speed)**으로 인식하는 문제가 발생하였습니다. 결과적으로 데이터 전송 속도가 제한되어 실시간 영상 전송에 지연이 발생했습니다.원인 분석bcdUSB 설정 누락/sys/kernel/config/usb_gadget//bcdUSB에 0x0200 값을 echo하지 않아, 기본값(USB 1.1)으로 인식됨.디스크립터 정의 부족High Speed 디스크립터만 선언하고 Full Speed 디스크립터를 누락함.USB 호스트는 Dual-Speed 디바이스로 인식되려면 두 속도에 대한 디스크립터가 모두 정의되어 있어야 함. You will notice we have not included speed identification for High Speed mod..
문제 상황VirtualBox에서 Ubuntu 가상머신을 운영하던 중, 네트워크 성능 개선 위한 테스트를 위해 가상 이더넷 종류를 변경한 후 SSH 원격 연결이 불가능한 상황이 발생했습니다.증상:기존에 정상 작동하던 VSCode Remote SSH 연결이 갑자기 실패Windows 호스트에서 가상머신으로 ping은 정상적으로 응답SSH 연결만 특정적으로 실패하는 현상환경:호스트: Windows 11가상머신: Ubuntu (VirtualBox)네트워크: 브리지 어댑터 모드변경사항: USB FE Family Controller → PCIe GbE Family Controller원인 분석1. ARP(Address Resolution Protocol) 캐시 충돌 확인Windows에서 ARP 테이블을 확인해본 결과:..
간단한 캐릭터 디바이스 드라이버 만들기 (문자열 출력 예제)이번 글에서는 리눅스 커널에서 캐릭터 디바이스 드라이버를 직접 작성하여, 사용자 공간에서 cat /dev/mychardev 명령어로 커널에서 정의한 문자열을 출력하는 방법을 다룹니다.1. 디바이스 드라이버 코드 (mychardev.c)#include #include #include #define DEVICE_NAME "mychardev"static int major;static ssize_t my_read(struct file *f, char __user *buf, size_t len, loff_t *off) { char *msg = "Hello from kernel!\n"; int msg_len = strlen(msg); if ..
QEMU와 Buildroot로 ftrace 실습 환경 만들기이번 글에서는 QEMU와 Buildroot를 이용해 ftrace를 실습할 수 있는 환경을 구축하는 방법을 정리한다. ftrace는 Linux 커널 내부의 동작을 추적할 수 있는 매우 강력한 도구이며, 별도의 추가 설치 없이 커널만 잘 구성해도 바로 사용할 수 있다. 이 실습은 x86_64 환경을 기준으로 진행된다.1. ftrace란?ftrace는 Linux 커널에 내장된 트레이싱 프레임워크로, 다음과 같은 작업에 사용된다:함수 호출 추적스케줄링 전환 추적인터럽트 오프/온 상태 추적IRQ 지연 분석 등ftrace는 /sys/kernel/debug/tracing 디렉토리를 통해 접근할 수 있으며, debugfs 파일 시스템이 마운트되어 있어야 한다...
QEMU Cheat Sheet (x86_64, 커널 디버깅 중심)qemu 가상머신에서 컴파일된 커널이미지를 실행 시키는 명령어입니다.rootfs 없이 커널만을 실행이 가능합니다.qemu-system-x86_64 \ -kernel arch/x86/boot/bzImage \ -append "console=ttyS0 nokaslr" \ -nographic -s -S핵심 옵션옵션설명-kernel bzImage부팅할 커널 이미지 (압축된 bzImage) 지정-append "..."커널 부트 인자 전달 (console, init, nokaslr 등)-nographicVGA 끄고 시리얼로 모든 출력 (터미널 기반)-sGDB 서버 포트 1234 열기 (= -gdb tcp::1234)-S부팅 직후 CPU..