Developer Document

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

코 독 코 독 CoderDocument

Embedded SW 기초 31

TCP, UDP 통신

네트워크란네트워크란 여러 시스템이 프로토콜을 사용하여 데이터를 주고받는 것들을 하나의 단위로 통칭한 것이라고 할 수 있다. 즉, 다수의 시스템을 전송 매체(케이블, 공기, 무선 신호 등)로 연결해 구성한 시스템들의 집합체이다. 여기서 시스템이란 일반적으로 컴퓨터 시스템을 의미하지만 ‘내부 규칙에 따라 능동적으로 동작하는 대상’을 말한다. 자동차나 자판기, 컴퓨터 등과 같은 물리적 장치 뿐만 아니라 운영체제, 프로세스 등과 같은 논리적 대상 또한 시스템이라고 할 수 있다. 또한 프로토콜은 시스템이 전송 매체를 통해 데이터를 교환할 때 따르는 ‘표준화된 특정 규칙’을 말한다.  네트워크를 얘기하면 흔히 뒤따라오는 것이 있다. 바로 OSI 7 계층이다. OSI 7 계층이란 통신 기능을 7개의 기능으로 모듈화 ..

WiFi

Wifi란?Wi-Fi는 전자기기들이 무선랜(WLAN, 무선 근거리 통신망)에 연결할 수 있게 하는 기술. 즉, 두 대 이상의 전자기기들을 무선 신호 전달 방식으로 연결할 수 있게 하는 기술이며, IEEE802.11 표준 규격을 사용한다.  ieee802.11이란 WLAN에 사용되는 표준 규격으로, 유선 LAN인 이더넷의 단점을 보완하기 위해 고안된 기술이다. 802.11 프로토콜에 따라 다르지만 주가 되는 동작 주파수는 2.4GHz, 5GHz 이다.    자주 접하는 용어 와이파이에 대해 보다보면 Frequency, Channel, BandWidth, Bonding이라는 용어를 많이 접하게 될 것이다. 이 용어들은 아래와 같은 의미를 가지고 있다. Frequency : 말 그대로 주파수를 의미한다. Ba..

Embedded SW 기초 2024.06.17

컴파일러 & 크로스 컴파일

컴파일러란?인간의 언어에 가까운 소스코드(maic.c)를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정으로 컴파일된 파일을 Object File(main.o)이라고 부른다.컴파일러의 종류로는 gcc, g++ clang 등이 존재한다. 컴파일 과정전처리 (Pre-processing) 과정전처리기를 통해 소스코드 파일(*.c)을 전처리된 파일 (.*i)으로 변환하는 과정이다.주석을 제거하고, #include 지시문을 만나면 해당 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해 소스코드에 삽입, =#define 지시문에 정의된 매크로를 저장하고 해당 내용을 치환한다.컴파일 (Compilation) 과정컴파일러를 통해 전처리된 파일(*.i)을 어셈블리어 파일(*. s)로 변환하는 과정어셈블리 (Asse..

Embedded SW 기초 2024.06.15

git 기초 명령어

git은 분산 버전관리 시스템으로 소프트웨어 개발 과정에서 소스 코드의 변경 사항을 추적하고 관리하는 데 사용된다.git을 사용하면 여러 개발자가 동시에 작업할 수 있으며, 변경 내용을 효과적으로 병합하고 관리할 수 있다. 자신이 원하는 디렉터리에 git 저장소를 생성git init 위의 명령어를 디렉터리 안에. git 이 생성된다. 이 디렉터리에는 Git이 버전 관리를 하기 위한 메타 정보가 담겨있으며, 구체적으로 어떤 내용인지는 Git을 사용할 때 크게 중요하지 않다. 정말 중요한 것은 이 디렉토리를 지우는 순간, 해당 Git 저장소의 모든 변경 이력은 소실되고 일반 디렉터리로 돌아온다는 것이다. 로컬에 github 계정 정보 등록하기git config --global user.name "Your U..

Embedded SW 기초 2024.06.14

Peripheral과의 통신 - 3. I2C

I2C란?I2C(Inter-Integrated Circuit [아이스퀘어드시])는 1980년대 초반 필립스에서 개발한 직렬 버스로, 임베디드 시스템 혹은 휴대전화 등에 저속의 Peripheral을 연결하기 위해 사용된다. 즉, 빠른 속도를 요구하지 않는 간단한 주변 장치들에 적합하며, 통신 길이가 짧은 통신에 적합하다. I2C는 풀업 저항이 연결된 SDA(직렬 데이터), SCL(직렬 클럭) 이라는 두 개의 양 방향 라인을 사용한다. SDA는 데이터를 주고받는 라인, SCL은 타이밍을 동기화 하기 위한 클럭 라인이다.  이처럼 I2C는 CLK(클럭)이 있는 동기식 통신 방식이다.동기식 통신이란 송/수신측 간 통신에서 데이터를 주고 받는 시점(타이밍)을 정확하게 일치&유지 시키는 것이다. 이때, 그 시점을 ..

Embedded SW 기초 2024.06.13

리눅스 명령어 & rootfs

rootfs (root file system)리눅스는 모든 시스템을 파일로 관리한다. 파일시스템의 최상위 디렉터리는 루트 파일 시스템(이하 rootfs)이다.리눅스 시스템 부팅을 위한 모든 파일을 포함하고 있다. 다른 파일시스템을 부팅하는데 필요한 모든 실행파일과 라이브러리를 포함하고 있다. 시스템이 설치되면, 다른 모든 파일 시스템은 루트 파일시스템의 하위 디렉터리에 설치된다. /binuser 실행파일을 포함, binary의 약자/boot리눅스 컴퓨터를 부팅하는 데에 사용되는 정적 부트로더와 커널 실행파일, 구성 파일을 포함/devdevice 장치 파일 디렉터리시스템에 연결된 하드웨어 기기의 디바이스 파일을 포함 디바이스 드라이버가 아닌, 컴퓨터에 연결된 기기를 나타내고 그 기기에 접근을 가능하도록 하..

Embedded SW 기초 2024.06.13

네트워크 구조

우리는 인터넷을 매일 사용한다 해도 과언이 아니다. 그만큼 일상에서도 많이 사용하는 네트워크에 대해 조금 알아보고자 한다.LAN(Local Area Network)한정된 영역에 존재하며, 일반적으로 인터넷 연결의 단일 중앙 지점을 공유한다. 쉽게 말하면 집, 회사, IP 전화기 같은 작은 단위라고 생각하면 된다. 이때 컴퓨터끼리 직접 연결하지 않고 공유기나 스위치 등을 이용해 연결한다.이더넷 선은 버스 구조로 CSMA/CD방식을 무선 LAN은 CSMA/CA 방식을 사용하고 있다. CSMA:  데이터를 전송하고 싶은 노드가 케이블의 통신 상황을 감시하여 케이블이 열리면 송신을 개시하는 임의의 다중 접속 프로토콜이다.CSMA /CD (Collision Dection) : 전송 후 충돌을 감지하여 재전송을 시..

IPC와 RPC 차이

프로세스는 프로세스 간에 메모리를 공유하지 않는다. 그렇기 때문에 프로세스 간의 통신이 필요한데 이런 통신이 뭐가 있을까?? 또한 각기 다른 디바이스들이 어떻게 통신을 할까?? 이번 글에는 IPC와 RPC차이를 알아보고자 한다. IPC와 RPC는 async call로 스레드에서 하부작업 요청 시 요청된 하부작업의 실행 또는 종료와 관계없이 호출 스레드 또는 프로세스의 실행 흐름은 계속되는 호출을 말한다.IPC (Inter Process Communication)각 프로세스들이 통신하는 모든 형태를 일컽는다. 이에는 여러 형태의 메시지 전달 방식이 포함된다IPC의 종류Shard Memory프로세스간 공유되는 메모리 영역을 만들어 사용하는 방법커널에 만들어짐프로세스들은 읽기/쓰기를 통해 공유 영역을 수정할 ..

Peripheral과의 통신 - 2. UART

UART(범용 비동기화 송수신기: Universal Asynchronous Receiver/Transmitter)란 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다. 메모리 또는 레지스터에 들어 있는 통신 데이터를 차례대로 읽어 직렬화 하여 통신하며, 최대 8비트가 기본 단위이다.  직렬통신은 Serial 통신이라고 하며, 병렬통신은 Parallel 통신이라고 한다.UART는 Rx와 Tx. 두 개의 입출력 핀이 있다. UART의 U는 범용을 가리키는데 이는 자료 형태나 전송 속도를 직접 구성할 수 있고 실제 전기 신호 수준과 방식이 일반적으로 UART 바깥의 특정한 드라이버 회로를 통해 관리를 받는다는 뜻이다. Clock이 존재하는 경우를 우리는 동기통신 Cloc..

Embedded SW 기초 2024.06.11

Peripheral과의 통신 - 1. GPIO

임베디드에서 가장 많이 접하게 되는 peripheral과의 3가지 통신 방식이 있다. GPIO, UART, I2C 이다. 이 중 GPIO(범용 입출력: General Purpose Input/Output)는 개발자가 필요에 따라 입력/출력을 설정하여 사용할 수 있도록 한다. 단, 하나의 GPIO포트에 대해 입/출력을 동시에 설정할 수 없으며, 입력과 출력 중 한 가지 모드로 설정해서 사용해야한다. Linux에서 /sys/class/gpio/ 에서 export 된 GPIO 목록을 볼 수 있다. GPIO 입/출력 설정은 ‘direction’값에 ‘in’ 또는 ‘out’값을 넣어 설정한다. ‘in’이면 입력, ‘out’이면 출력이다.GPIO 포트를 입력(in) 설정해야하는 경우의 예로는 버튼이 있고, 출력(o..

Embedded SW 기초 2024.06.11