| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- memcmp
- HDR
- DMA
- context
- usb2.0
- 젠킨스
- 디스크 축소
- 소캣
- 디스크립터
- Shared Folder
- fprintf
- jenkins
- 속도저하
- sprintf
- context switch
- pagefile.sys
- interrupt context
- layouts
- intents
- 문자형 디바이스 파일
- activities
- ubuntu
- fscanf
- makefile
- interrupt handler
- 프레임버퍼
- sscanf
- 멀티프로세싱
- 환경 변수
- gparted
- Today
- Total
목록분류 전체보기 (78)
do{학습}while
샘플링(Sampling)이란?디지털 오디오나 영상에서 자주 등장하는 개념 중 하나가 바로 샘플링(Sampling)이다. 이 개념은 아날로그 신호를 디지털 신호로 변환하기 위한 필수 과정이다.샘플링(Sampling)샘플링이란, 연속적인 아날로그 신호를 일정한 시간 간격마다 측정하여 이산적인 디지털 값으로 바꾸는 작업을 말한다.예를 들어 마이크로 소리를 녹음할 때, 소리는 연속된 파형(아날로그)이지만, 디지털 장치는 이 신호를 일정한 간격으로 짚어가며 숫자로 저장한다.샘플 주기(Sample Period)샘플 주기(Sample Period)는 한 번의 샘플링을 수행하는 데 걸리는 시간을 의미한다.즉, 샘플 간의 시간 간격을 나타내며, 단위는 초 (s)를 사용한다.예를 들어, 샘플 주기가 0.000125초라면 ..
스마트폰 카메라로 배경을 찍다보면 어느 한 영역은 고조도(너무 밝고), 다른 한 영역은 저조도(너무 어둡다고) 생각한적이 있을 겁니다. 일반적으로 사진을 찍을때는 하나의 노출 시간으로 인해 사진의 디테일을 놓치게 되는 것입니다. HDR이런 문제를 해결하기 위해 HDR 이라는 기능이 존재합니다.해당 기능 카메라가 한 번의 노출로 담을 수 없는 넓은 밝기 범위(명암비)를 여러 장의 서로 다른 노출 이미지를 합성하여 하나의 이미지로 표현하는 기술입니다. 카메라 디바이스 드라이버 초기화JX-K302P CMOS 이미지 센서에서 HDR 기능을 위한 초기화 작업을 해보았습니다.데이터 시트를 확인해보면, 특정 레지스터에서 HDR short exposure lines을 조정이 가능하였습니다.HDR short expos..
0. 동기화란?동기화(Synchronization)란 두 개 이상의 실행 흐름(예: 스레드, 인터럽트, 프로세스 등)이 공유 자원에 접근할 때,서로 충돌하지 않도록 그 접근 순서나 타이밍을 제어하는 과정을 말한다.운영체제나 커널 환경에서는 다음과 같은 상황에서 동기화가 필수적이다:여러 스레드가 같은 변수에 동시에 값을 쓰는 경우하나의 프로세스가 값을 읽는 도중, 다른 프로세스가 그 값을 변경하는 경우인터럽트 핸들러가 처리 중인 버퍼를 메인 루틴이 동시에 접근하는 경우이러한 상황에서 동기화 없이 접근하게 되면 race condition, 데이터 손상, 비정상 동작이 발생할 수 있다.따라서 동기화는 시스템 안정성과 신뢰성 보장을 위한 핵심 메커니즘이다.1. 크리티컬 섹션(Critical Section)이란?..
인터럽트와 인터럽트 컨텍스트란 무엇인가?임베디드 시스템이나 커널 수준의 프로그래밍을 하다 보면 인터럽트(Interrupt)와 인터럽트 컨텍스트(Interrupt Context)라는 개념을 자주 접하게 된다. 이 글에서는 인터럽트가 무엇인지, 인터럽트 컨텍스트란 어떤 의미인지, 그리고 왜 인터럽트 핸들러는 짧게 실행되어야 하는지에 대해 정리한다.1. 인터럽트란?인터럽트(Interrupt)는 외부 또는 내부에서 발생한 사건을 CPU에 알리는 신호이다.이 신호는 CPU가 현재 수행 중인 작업을 잠시 중단하고, 해당 사건을 처리하도록 만든다.외부 인터럽트 예시키보드 입력마우스 클릭네트워크 패킷 수신외부 장치의 상태 변화내부 인터럽트 예시타이머 만료소프트웨어 인터럽트 (softirq)시스템 호출 트랩 (sysca..
프로세스와 스레드의 차이 정리시스템 프로그래밍을 하다 보면 자주 마주치는 개념이 바로 프로세스(Process) 와 스레드(Thread) 이다. 두 개념은 모두 실행의 단위이지만, 메모리 구조와 데이터 공유 측면에서 큰 차이가 있다. 이 글에서는 이 둘의 차이를 명확히 정리한다.1. 프로세스란?프로세스는 실행 중인 프로그램을 의미하며, 운영체제에서 독립적인 메모리 공간을 갖는 단위이다. 각각의 프로세스는 코드 영역, 데이터 영역, 힙 영역, 스택 영역을 가지며, 이 메모리 공간은 다른 프로세스와 완전히 분리되어 있다. 이러한 격리 덕분에 하나의 프로세스에서 발생한 오류나 충돌이 다른 프로세스에 영향을 미치지 않는다.하지만 동시에 이 말은 기본적으로 프로세스 간에는 데이터를 직접 공유할 수 없다는 뜻이기도 ..
운영체제에서 멀티태스킹을 구현하기 위해 가장 중요한 개념 중 하나가 바로 "Context"와 "Context Switch"다. 이 글에서는 context가 의미하는 바와 context switch 과정에서 정보가 어떻게 저장되고 관리되는지를 설명한다.Context란?Context는 일반적으로 "문맥" 또는 "상황"을 의미하지만, 운영체제나 커널 레벨에서는 "CPU가 어떤 프로세스를 실행하던 시점의 상태 정보"를 의미한다. 이 상태 정보에는 다음과 같은 것들이 포함된다:레지스터 값프로그램 카운터(PC)스택 포인터(SP)프로세서 플래그그 외 아키텍처에 따라 필요한 정보들다시 쉽게 설명하자면... 여러 업무를 하고 있다고 가정할 때, 기존에 하던 업무를 잠시 멈추고 다른 업무를 하기 전에정해진 형식(threa..
✅ 프레임 워크란?특정 목적을 가진 소프트웨어 개발을 돕기 위해 설계된 재사용 가능한 구조입니다.프레임워크는 개발자가 따라야 할 일정한 흐름(프로세스)과 확장 가능한 구조(콜백/훅)를 제공하며, 제어권은 프레임워크가 가지고, 개발자는 그 흐름 안에서 필요한 기능만 구현하여 끼워 넣는 방식으로 동작합니다. 예를 들어, 제가 카메라 디바이스 드라이버를 만들고 싶다고 가정해 보겠습니다.이때 커널과 사용자 공간 어플리케이션이 카메라 장치와 통신할 수 있도록 도와주는 대표적인 프레임워크가 바로 V4L2입니다. 만약 V4L2가 없다면, 영상을 촬영하기 위해 센서 초기화, 데이터 포맷 설정, 프레임 버퍼 처리 등을 모두 직접 구현해야 합니다. 구조체도 새로 만들고, I/O 처리를 위한 함수도 일일이 작성해야 합니다...
🧩 Yocto 레시피에서 Git 소스를 fetch하는 두 가지 방법Yocto에서는 외부 Git 레포지토리에서 소스를 받아와 빌드할 수 있다.보통은 SRC_URI 변수에 Git 주소를 설정하면 자동으로 fetch되지만, 네트워크 환경이나 개발 목적에 따라 로컬 소스를 사용하는 방법도 유용하다.이번 글에서는 helloworld라는 간단한 Git 프로젝트를 대상으로,Yocto 레시피에서 GitHub에서 소스를 fetch하는 방법과 로컬 디렉토리에서 소스를 fetch하는 방법 두 가지를 비교해서 정리해본다.✅ 1. GitHub에서 fetch하기🔧 레시피 예제 (helloworld_git.bb)DESCRIPTION = "Simple Hello World app"LICENSE = "MIT"LIC_FILES_CH..
Yocto Dunfell 기준으로 간단하게 정리🔧 기본 문법 정리 (Yocto / BitBake 기준)1. 변수 설정문법 설명VAR = "value"지연 할당: 파싱 시점에 값 할당. 다른 확장된 변수로 다시 확장될 수 있음.VAR := "value"즉시 할당: 파싱 시점에 즉시 값을 확정. 이후 참조에 영향 없음.VAR ?= "value"기본값 할당: VAR이 아직 정의되지 않았을 때만 할당.VAR ??= "value"약한 기본값 할당: 레시피에서 기본 설정처럼 사용됨. 보통 bitbake.conf 쪽에서 많이 씀.2. 변수 확장문법 설명${VAR}변수 참조. 다른 변수나 경로 등에서 주로 사용."${VAR}/something"문자열 내 확장. 경로나 이름 연결할 때 자주 씀.3. 변수 조작문법 설명..
✅ Yocto 디버깅 명령어 – 상황별 정리🔹 1. 🔍 변수 확인 / 환경 확인📌 bitbake -e해당 레시피의 모든 환경 변수 값을 출력 (override 포함)bitbake busybox -e | grep ^SRC_URIbitbake core-image-minimal -e | grep ^IMAGE_INSTALL🔹 2. 🧪 태스크 단독 실행 (테스트용)📌 bitbake -c 특정 태스크만 실행할 때 (예: compile, install, devshell, menuconfig)bitbake -c compile busyboxbitbake -c menuconfig virtual/kernelbitbake -c devshell busybox🧠 참고: devshell은 해당 소스 디렉토리로 진입..