Developer Document

Embedded Software 개발을 하면서 습득한 내용을 적은 시니어 개발자들의 글

코 독 코 독 CoderDocument

Embedded SW 기초 31

리눅스 커널& 디바이스 드라이버

일반적으로 디바이스란 컴퓨터에 물려있는 여러 주변장치들을 뜻한다. 네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 키보드, 하드디스크, 플로피디스크, 프린터 등이 바로 디바이스에 해당하고, 이러한 디바이스들을 컨트롤하기 위한 디바이스 드라이버가 존재한다.디바이스 드라이버는 시스템이 지원하는 하드웨어를 사용자가 응용 프로그램에서 사용할 수 있도록 커널의 일부 영역을 사용하여 동작하는 일종의 프로그램이다. 리눅스에서는 모든 것을 파일로 간주하는데, 이러한 디바이스 드라이버 또한 파일로 관리된다. /dev/ 아래에 들어있는 파일들이 바로 디바이스 드라이버 인터페이스이고, 하드웨어와는 독립적으로 응용프로그램이 파일 open, read, 같은 함수로 접근할 수 있다.  리눅스에서 사용자가 커널 모드의 디바..

Embedded SW 기초 2024.06.11

메모리 구조

저번 글에서는 임베디드 리눅스 부팅 절차에 대해서 얘기해 봤다.커널이 실행되면 컴퓨터는 여러 프로그램들을 실행한다 이때 각각의 실행 파일은 4G의 가상 메모리 공간에 로드되는데 그렇다면 메모리란 무엇일까? 이번엔 메모리에 대해서 얘기해 보고자 한다. 메모리란?메모리 라는 말은 기억장치라는 뜻을 가지고 있다. 우리가 원하는 작업을 처리하기 위해서는 처리 대상의 내용 또는 처리 결과를 잠시 기억하고 있어야 할 필요성이 생기는데, 이때 사용되는 것이 메모리이다.메모리와 저장소의 차이는 휘발성인지, 비휘발성인지의 차이가 있다.그래서 보통 전원이 켜져 있을 때만 단기적으로 저장되는 RAM(Random Access Memory)은 메모리라고 하고 RAM의 종류는 정적 메모리인 SRAM과 동적 메모리인 DRAM이 있..

Embedded SW 기초 2024.06.10

임베디드 리눅스 부팅 절차

임베디드란 메모리 등의 자원이 한정되어 있는 장치로 작은 컴퓨터라 볼 수 있다.그렇다면 컴퓨터에 전원 버튼을 누르면 어떻게 동작하는지 아는가? 이번 글은 임베디드 리눅스 부팅 절차를 설명해 보려고 한다.ROM -> SPL -> U-Boot -> Kernel임베디드에서 power 버튼을 누르면 부트롬이 실행된다.부트롬 이란?리셋이나 전원을 켠 직후에 실행되는 SoC의 칩상에 저장된 코드로 메모리 컨트롤러가 필요 없는 SRAM만 사용이 가능하며 이 안에는 부트로더를 실행할 수 있는 부트로더 메모리 정보가 담겨있다.부트롬에서 부트로더를 실행할 수 있는 메모리로 이동하게 된다.부트로더란?커널로 제어 넘길 때 보내주는 기본 정보로 장치 트리가 지원되지 않는 파워 PC와 ARM 플랫폼에서 SoC의 종류를 식별하기 ..

Embedded SW 기초 2024.06.10

Yocto 기초

Yocto 란?리눅스를 개발하려면 개발하려는 아키텍처를 확인해야 하고 어떤 OS를 사용할 건지 또 호환되는 버전은 무엇인지 부트로더 roofs 등등... 수많은 선택이 많다. 그걸 다 정했다 하더라도 빌드할 수 있는 환경을 구축하는데도 엄청난 시간이 소요된다. 이런 개발 환경을 좀 더 쉽게 만들어주는 게 빌드 툴이이다. 즉 하드웨어 아키텍처와 무관하게 커스텀 임베디드 리눅스를 만들기 위한 빌드 프레임워크이다, 빌드 툴은 buildroot. LTIB , Yocto 등 여러 가지가 존재하는데 그중 yocto project를 살펴볼 예정이다. yocto에서 다운로드한 컴파일러를 통해서 이미지들이 빌드되기 때문에 개발자는 컴파일러를 설치하려고 찾아다닐 필요가 없다는 큰 장점이 있지만 yocto의 전체 구조를 한..

Embedded SW 기초 2024.06.09

HTTP

HTTP(Hypertet Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜이다.클라이언트의 요청과 서버의 응답 사이에는 여러 프록시 서버가 있다. 이 모든 통신은 안전하게 이뤄지기 위해 TCP연결을 사용한다. Http Header를 보면 많은 정보들이 담겨있고 그 정보들은 key와 value로 존재한다.  Http Header란?클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송하는 데이터이다. 헤더는 크게 4가지로 분류할 수 있다.General Header (공통 헤더)Request Header (요청 헤더)Response Header (응답 헤더)Entity Header (엔티티 헤더)General Header (공통 헤더)요청과 응답 모두에 적용되..

SHELL script

# 쉘 스크립트 시작 표시#!/bin/sh# 입력read NAME# 출력echo "Hello, $NAME!"printf "Hello %s\n" $NAMEtest="SHELL SCRIPT"echo ${test}특별한 변수변수 기능$0스크립트명$1 ~ $9인수, 첫 번째의 인수는 $1, 2번째 인수는 $2로 액세스$#스크립트에 전달된 인수의 수$*모든 인수를 모아 하나로 처리$@모든 인수를 각각 처리$?직전에 실행한 커맨드의 종료 값(0은 성공, 1은 실패)$$이 쉘 스크립트의 프로세스 ID$!마지막으로 실행한 백그라운드 프로세스 ID#!/bin/shecho "\$0(스크립트 명): $0"echo "\$1(1번째 인수): $1"echo "\$2(2번째 인수): $2"echo "\$#(인수의 수): $#"ec..

Embedded SW 기초 2024.06.03

Bluetooth란 + BLE 동작 방식

블루투스란 디지털 기기 사이에 전파를 이용하여 정보를 교환하는 기술로, 디지털 기기를 연결하는 케이블을 대체하는 단거리 무선 통신 시스템이라고 할 수 있습니다.1994년 에릭슨이 최초로 개발하였고, 1998년 Bluetooth SIG(pecial Interest Group) 설립 후 Bluetooth라는 이름을 발표했으며, 현재 블루투스는 Bluetooth SIG을 통해 관리되고 있습니다. 블루투스 시스템은 크게 BR/EDR(Basic Rate/Enhanced Data Rate)과 LE(Low Energy)두 가지로 나눌 수 있습니다.이러한 시스템 구현 방식에 따라 Bluetooth 장치 또한 두 가지 유형으로 구분되는데, BR/EDR 또는 LE 만 구현된 장치는 싱글모드 장치라고 하고, BR/EDR과 ..

Embedded SW 기초 2024.06.03

SQLD 1장 데이터 모델링의 이해

1장. 데이터 모델의 이해1절. 데이터 모델의 이해1. 모델링- 다양한 현상을 추상화, 단순화하여 일정한 표기법에 의해 표현하는 것- 모델이란 현실 세계의 추상화된 반영 2. 모델링의 특징- 추상화 : 일정한 형식에 맞춰서 표현- 단순화 : 제한된 표기법이나 언어로 표현- 명확화(=정확화) : 애매모호함을 제거하여 이해가 쉽게 표현 3. 모델링의 관점- 데이터 관점 (what) : 업무와 데이터 및 데이터 사이의 관계를 모델링- 프로세스 관점 (how) : 업무가 실제로 하고 있는 일, 해야 하는 일 모델링- 데이터와 프로세스의 상관 관점 (interaction) : 데이터에 대한 업무 처리 방식의 영향을 모델링 * 데이터 모델링의 중요성과 유의점(1) 중요성 : 파급효과, 간결한 표현, 데이터 품질 유..

Embedded SW 기초 2024.06.02

GStreamer 기초

GStreamer란?스트리밍 미디어 응용 프로그램을 만들기 위한 프레임 워크로 모든 유형의 스트리밍 멀티미디어 응용 프로그램을 작성할 수 있습니다. 구성요소를 임의의 파이프라인에 혼합하여 응용 프로그램을 작성할 수 있는 장점이 있습니다. GStreamer 구성요소  1. PipelineGStreamer 파이프라인은 멀티미디어 데이터를 처리하는 element들로 구성되어 있습니다.데이터가 입력되는 src 요소와 출력되는 sink 요소,  encoding, decoding filtering 등의 특정 작업을 수행하는 요소들이 존재합니다.   2. ElementsElements는 파이프라인을 구성하는 추상화된 Block형태를 정의합니다. 서로 연결된 elements를 만들고 이를 통해 데이터가 흐르도록 합니다..

프레임 (GOP) & 영상 품질 요소 ( Bit rate / Frame rate)

지난 글에 2024.05.23 - [Embedded SW 기초] - Stream 구조와 원리를 보셨다면 마지막에 손실압축과 무손실 압축이 있다는 것을 아실 수 있습니다. 사람의 눈은 시시각각 바뀌는 영상에 모든 정보를 담지 못합니다. 또한 같은 화면인 경우 같은 데이터를 준다면 중복 데이터로 인해 전송이 더 느려질 수 있습니다. 이러한 내용을 보완하고자 손실압축이 생겨 났습니다. GOP(Group Of Pictures)란?MPEG standard 비디오 압축 기술에서 사용되는 표현으로 인코딩한 이미지 프레임 그룹입니다.즉, 여러 장의 연속적으로 나열된 이미지 프레임들을 하나의 이미지 프레임 그룹으로 인코딩합니다.GOP의 구성은 IFrame BFrame PFrame이 있습니다. 그림에서 보듯  IFrame..