임베디드 91

[ Embedded ] 20. 임베디드 시스템의 개요와 이해

4. 임베디드 시스템의 이해 - 임베디드 시스템 개요 1. 임베디드 시스템의 의미 임베디드 시스템은 특정 목적을 지닌 시스템이다. PC는 특정 목적이 아닌 범용 목적을 갖는 시스템이다. 예를 들어 PC는 프로그램 개발뿐 아니라 그래픽 작업도 할 수 있고, 게임, 멀티미디어 기능 등 범용의 기능을 제공한다. 하지만 임베디드 시스템인 핸드폰은 통신기능에 특화하여 개발되었고, 게임기도 게임기능에 특화하여 개발된 시스템이다. 임베디드 시스템의 구성은 정해진 기능에 필요한 하드웨어와 소프트웨어로 이루어진다. 2. 임베디드 시스템의 예 가전제품, 유비쿼터스 시스템, 휴대용 정보기기, 의료기기, 공장 자동화 시스템, 비행기, 우주선, 자동차내 정보기기 3. 임베디드 시스템의 특징 기능이 제한적이다 특정 기능에 특화된..

[ Embedded ] 19. 임베디드 OS(운영체제)

3. 운영체제 Non-RTOS 같은 자원에 여러 개의 태스크가 동시에 접근해야 할 경우 사용자 응용 프로그램은 자원에 직접 접근할 수 없다. 사용자 응용 프로그램이 OS를 통해 자원에 접근하는 과정 디바이스 드라이버(Device Driver) 등록: 실제 (하드웨어) 자원을 제어할 디바이스 드라이버가 미리 OS에 등록되어 있어야 한다. 사용자 응용 프로그램 자원 요청: 사용자 응용 프로그램은 OS에게 자원에 대한 접근 권한 요청 해당 디바이스 드라이버 검색: 요청을 받은 OS는 해당 자원을 실제로 제어할 디바이스 드라이버가 자신(OS)에게 등록되어 있는지 검색. 없으면 오류 메세지, 있으면 실행 디바이스 드라이버 자원 제어: 실제 하드웨어 지원을 제어하고 결과를 전달. RTOS 이든 Non-RTOS이든 ..

[ Embedded ] 18. 마이크로 프로세서란?

임베디드 처음 접할 때 MCU가 뭔지 MPU가 뭔지 참 헷갈리는 분들이 많을 겁니다. 이번 챕터에서 확실히 익혀두고 넘어갑시다. 2. 마이크로 프로세서 2.1 MPU vs MCU 마이크로프로세서(CPU) CPU = CPU Core(CPU Architecture) + CPU Peripherals(Controllers) ARM9 프로세서 = ARM9 Core + USB,Ethernet MAC, UART, ADC, … CPU Core CPU Core는 8, 16, 32비트 프로세서로 구분, ARM9 Core는 32비트 리눅스(Linux)구동 가능 CPU Core가 하는 일은 소프트웨어를 실행시킨다. 연산 처리 담당 CPU Peripheral 처리된 연산 결과를 CPU 주변 하드웨어를 제어하는 일 CPU Cor..

[ Embedded ] 17. 임베디드 플랫폼이란?

임베디드 기초 개념을 지금 올리긴 좀 늦은감이 있지만,, 중요한 개념이고 꼭 확실히 짚고 넘어가야 하는 부분 같아서 처음 부터 다시 올리겠습니다 ^^ 1. 임베디드 플랫폼이란? 1.1 임베디드 시스템의 특징 임베디드 시스템의 정의 특정 목적을 수행하기 위해 최적화된 시스템 특정한 제품이나 솔루션에서 주어진 작업을 수행할 수 있도록 추가로 탑재되는 솔루션이나 시스템 핵심 키워드: 특정 목적, 최적화(Optimization), 시스템 확장(Upgrade) 불가능 임베디드 시스템의 반대말이 범용 시스템(General Purpose System) 최적화에 대한 기준은 비용(Cost) 1.2 임베디드 플랫폼 임베디드 플랫폼: 비용 중심의 최적화된 하드웨어와 소프트웨어의 결합 임베디드 개발의 첫 단추는 마이크로 프..

[ Linux Kernel ] 21. 모듈 프로그래밍

21. 모듈 프로그래밍 커널 모듈(Kernel Module) 시스템 부팅후에 동적으로 loading할 수 있는 커널 구성요소를 말한다. 커널을 다시 컴파일하거나 시스템 재부팅 할 필요없이 커널의 일부분을 교체하는 것이 가능하다 디바이스 드라이버, 파일 시스템, 네트워크 프로토콜 등이 모듈로 제공된다. 일반 응용프로그램과 뭐가 다른거죠?? 커널 모듈은 일반 응용 프로그램과 달리 main함수가 없다. 대신에 커널에 로딩 및 제거될 때 불러지는 함수가 존재하는데, 이는 아래와 같다. Loading 시 : module_init()로 지정된 함수 호출 Unloading 시 : module_exit()로 지정된 함수 호출 25.1 리눅스 디바이스 드라이버의 특성 커널 코드 디바이스 드라이버는 커널의 한 부분이므로,..

[ Linux Kernel ] 20. Linux Device Driver

20. Device Driver Device 네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 티보드, 하드디스트, 플로피디스크, 프린터 등과 같은 주변 장치들을 말함 디바이스 구동에 필요한 프로그램, 즉 디바이스 드라이버가 필수적으료 요구됨 Device Driver 실제 장치 부분을 추상화시켜 사용자 프로그램이 정형화된 인터페이스를 통해 디바이스를 접근할 수 있도록 해주는 프로그램 디바이스 관리에 필요한 정형화된 인터페이스 구현에 요구되는 함수와 자료구조의 집합체 표준적으로 동일 서비스 제공을 목적으로 커널의 일부분으로 내장 응용 프로그램이 하드웨어를 제어할 수 있도록 인터페이스 제공 하드웨어 독립적인 프로그램을 작성할 수 있도록 함. 24.1 리눅스 디바이스 드라이버 - 사용자 관점에서의 디바이..

[ Linux Kernel ] 19. Ubuntu에서 Wi-Fi 연결하기

1. USB 연결 제품의 USB단자를 PC에 연결한다. 2. 드라이버 설치 Windows환경에서는 iptime 공식홈페이지에 이 제품에 제공되는 드라이버가 있어서 바로 설치하기만 하면 된다. 하지만 여기서는 리눅스 전용 드라이버를 제공하지 않는다. 대신 별도로 Realtek 88 12BU chipset을 설치하면 된다. 터미널로 들어가서 다음 명령을 실행시켜준다. 드라이버 설치명령 sudo apt update sudo apt install dkms bc git git clone https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959 sudo dkms add ./rtl88x2BU_WiFi_linux_v5.3..

[ Linux Kernel ] 18. Kernel Module

18. 커널 모듈 리눅스 커널에서 module은 광범위하게 쓰인다. 아마 대다수가 device driver로 동작하는 형태일 것이고 드물게는 network protocol이나 filesystem을 지원하는 데도 쓰일 것이다. module 형태를 취함으로써 가질 수 있는 이점은 flexibility가 좋기도 하고, 뭔가 시스템 내에서 변화를 추구할 떄 쉽게 반영하고 그 결과를 확인할 수 있는 점이다. module과 관련하여 Linux에서 제공하는 utility는 다음과 같다. lsmod : load되어 있는 module들을 보여준다. insmod : Insert module, 말그대로 module을 load시켜준다. rmmod : remove module, 말그대로 module을 제거해준다. modprob..

[ Embedded ] 16. Loopback(루프백)

Loopback 루프백(Loopback, loop-back)이란 전기신호의 라우팅, 디지털 미디어 스트림, 또는 품목의 흐름이 의도적인 가공이나 수정 없이 원래의 장치나 장비로 돌아가는 것 주로 전송이나 수송 기반 시설을 테스트하는 수단으로 사용 하나의 종단점(endpoint)만 가지는 커뮤니케잉션 채널, 이러한 채널에서 전송된 메시지는 어떤 것이라도 같은 채널로부터만 즉시 수신됨. Serving switching center로부터 온 액세스 라인의 전송 테스트 수행시 served terminal에서 인력을 필요로 하지 않음 두 라인이 사용되는 스테이션(반드시 인접할 필요는 없음)의 연결 테스트. 한 스테이션에서 그리고 멀리 떨어진 스테이션에서 상호 연결된 두 라인에서 이루어지는 테스트를 동반함. 일반적..

[ Embedded ] 15. 세마포어(Semaphore)

Semaphore 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있다. 즉, 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것으로써 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하는데 이를 위하여 고안된 것이 바로 Semaphore(세마포어)이다. Critical Section이란? OS에서 Critical Section은 아주 중요한 부분이다. 다중 프로그래밍 운영체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 데이터를 액세스하는 프로그램 코드 부분을 가리키는 말이다. 공유 데이터를 여러 프로세스가 동시에 액세스하면 시간적인 차이 때문에 잘못된 결과..

[ VoIP ] 06. VoIP Open Source의 종류

VoIP Open Source의 종류 PJSIP PJSIP는 설치 공간이 매우 작고 성능이 뛰어난 오픈소스 SIP 프로토콜 스택 jsip 는 오픈소스로 제작된 멀티미디어 통신 라이브러리이다. pjsip 에서 제공하는 라이브러리를 이용하면 자동 SIP 콜 테스트 프로그램 등을 쉽게 제작할 수 있다. Library 뿐만 아니라, pjsip 설치시 함께 컴파일되는 모듈 중에 pjsua 라는 모듈이 있는데 이는 CLI(Command line interface) 지원하는 SIP 클라이언트 프로그램이다. 즉, library 를 제공하는 것 뿐만 아니라 CLI 기반 클라이언트 프로그램도 같이 제공한다. 그리고 Library 모듈 중, Python 모듈은 Python 을 이용한 스크립트 제작을 가능하게 해준다. 즉, ..

[ Embedded ] 14. 멀티플렉서(MultiPlexer)

멀티플렉서 Multiplexer (MUX) Demultiplexer(DeMUX) 복수 개의 입력신호로부터 특정 조건에 의해 입력 신호 한 개만 선택할 때 사용하는 것이 멀티플렉서 또는 MUX(먹스)라고 불리운다. 그리고 그 반대의 목적에 사용되는 것이 디멀티플렉서 또는 DeMUX(디먹스) 멀티플렉서(MUX)는 n개의 선택선의 조합에 의해 선택된 2n개의 입력선 중에서 하나를 선택하여 출력선에 연결시켜 주는 회로이며 여러 개의 회로가 단일 회선을 공동으로 이용하여 신호를 전송하는데 사용한다. 아래는 멀티플렉서의 진리표이다. ( 4 x 1 ) S1, S0은 Y 출력을 결정하게 할 결정자 또는 선택자가 된다. 진리표를 보면 S1, S0가 각각 00일 때는 I0이 출력되고, 01일 때는 I1, 10일 때는 I2..

[ VoIP ] 05. PBX와 IP-PBX

IP PBX PBX란? Private Branch Exchange PBX, EPABX는 사설 전화 교환기 인데, 기업용 서비스에 특화가 되어 있는 장비이다. PBX는 기업에 필요한 다양한 기능들을 가지고 있어, 기업에서 전화를 이용해 빠르고 편하게 통신을 할 수 있께 해주는 장비이다. 하지만 예전부터 PBX가 지금의 것처럼 좋았던 것은 아닙니다. 예전에는 전화국의 교환원이 전화코드를 통화를 원하는 사람끼리 연결 해주던 시절이 있었습니다. 전화를 걸고자 하는 사람은 전화기에 달려있는 발전기를 돌려서 신호를 보내면 전화국의 교환원이 받게됩니다. 전화를 받은 교환원은 전화받을 사람을 물어보고 수동으로 연결해 주는 방식이었습니다. 이런 방식은 아직 우리군의 야전용으로 많이 사용되고 있습니다. 하지만 PABX 즉..

[ VoIP ] 04. PCM, TDM과 샘플링 이론

PCM Pulse Code Modulation, 펄스 부호 변조 최초로 실용화된 '음성의 디지털 부호화' 및 '다중화 전송' 방식 => 일반적으로, 최초 입력단에 ADC, 최종 출력단에 DAC를 갖는다 PCM 방식 주요 특징 아날로그 음성신호의 디지털화 PCM 방식의 이론적 근거 : 기본적으로 샘플링 이론(Sampling Theroy)에 근거 아날로그에서 디지털로 변환 -> A/D 컨버터 참조 음성 부호화 최초의 국제 표준 음성 부호화 방식(G.711) 구현 시분할다중화(TDM Multiplexing) 다중화 방식 표준 : T1방식(북미 표준) 및 E1방식(유럽 표준) PCM 디지털화 과정 표본화(Sampling) > 양자화(Quantizing) > 부호화(Coding) 음성신호에 대해 초당 8천번을(1..

[ VoIP ] 03. G.711 코덱?!

G.711 64 kbps PCM을 위한 '음성부호화' 표준 => 음성부호화 중 음성파형부호화에 전형적임 G.711은 PSTN망(전화망)에 적용되는 가장 기초적인 방식 => 그냥 PCM(Pulse Code Modulation, 펄스부호변조) 방식이라고도 한다. G.711의 기술적 주요 특징 대역폭 : 300Hz ~ 3400Hz 대역의 음성 대역 신호 표본화 주파수 : 8kHz (125 us) 양자화 비트수 : 각 표본을 8비트로 부호화 양자화 방식 : 비선형 양자화 (Companding 방식) => mu-Law(u-Law) 또는 A-Law 모두 사용 가능 전송 비트율 : 8000 [표본/초] x 8 [비트] = 64kbps 통화품질 : MOS(Mean Opinion Score) 다른 G 코덱과의 비교 코덱..