임베디드 개발 8

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

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

[ 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..

[ Embedded ] 09. MUTEX를 이용한 쓰레드 동기화

MUTEX를 이용한 쓰레드 동기화 1. 공유자원에 대한 접근 제어 다수의 객체가 공유 자원에 접근하려고 하면, (공유 자원의 종류에 따라서) 접근 시점을 동기화 시켜줄 필요가 생긴다. 여기에서 동기화란 시간과 공간을 맞추어 준다는 의미로, 즉 공유 자원 영역(공간)에 접근하는 객체들의 진입 시간을 제어할 수 있어야 함을 의미한다. Multi Thread(멀티 쓰레드) 프로그램 역시 공유 자원에 여러 개의 쓰레드가 접근할 수 있으므로 공유 자원 영역에 대한 동기화가 필요하다. 카운팅 프로그램을 예로 들어보자. 카운트 변수는 전역변수(:12)로 A,B 두개의 쓰레드가 공유하면서, 1씩 증가하는 카운팅 정보를 유지하기 위해 사용된다. 공유자원 영역 즉 "count 값을 읽어 오고, 연산을 해서 저장하는" 영역..

[ Embedded ] 08. DMA모드란?

DMA 모드 Direct Memory Access I/O로 인한 성능 감소 방지를 위해 CPU 개입 없이 I/O 장치와 기억장치 간 직접 데이터 전송 방식 처리기를 거치지 않고 DMA컨트롤러에 의해 주변기기로부터 데이터가 메모리로 직접 전송되는 것을 뜻한다. 이 때 각 주변기기는 DMA 컨트롤러 칩의 지시에 따라 데이터를 주고받게 되며 DMA가 지원되지 않는 보드나 주변기기에서 이 부분을 체크하게 되면 컴퓨터가 작동을 멈추는 수가 있으므로 확인하고 사용하는 것이 좋다. DMA I/O Direct I/O(DMA 미사용) DMA 기반 Data 처리 중 CPU는 다른 프로세스 처리 Data I/O 처리 시 완료까지 작업 중지, CPU 대기 필요 DMA 구성도/구성요소 DMA 전송을 위한 중앙처리장치 버스 신호..

[ Embedded ] 07. FDMA(주파수분할 다중접속)

FDMA frequency division multiple access : 주파수분할 다중접속 통신망을 통해 전달되는 데이터중 가장 많은 양을 차지하는 것이 음성일 것이다. 사람의 음성을 전달하는 데 필요한 최소한의 주파수 대역폭은 300 ~ 3400 Hz로 알려져 있는데 이러한 음성 신호를 전기적인 신호로 변환하여, 통신망을 통해서 다른 곳으로 전달하기 위해서는 음성 신호를 전송하기에 적합한 전기적인 신호로 바꾸어 주고, 수신하는 쪽에서 이를 다시 음성 신호로 역변환을 하게 된다. 통신망에서 사용하는 전송 시스템의 특성을 살펴보면 전송가능한 주파수 대역이 음성 대역폭 보다는 월등이 크고, 훨씬 높은 주파수까지도 전송할 수 있다. 이런 전송로는 단 한 사람의 통신을 위해서만 사용하는 것은 경제적으로나 시..

[ Linux Kernel ] 15. Kernel Preemption

19. Kernel Preemption 19.1 Mutual Exclusion — 상호 배제 컴퓨터 시스템을 얘기할 때 가장 중요한 파트 중 하나가 상호 배제 문제이다. 시스템이 정상적으로 작동하기 위해서는 이 상호 배제 개념은 반드시 필요하다. 설명을 진행하기 전, 먼저 X++이라는 연산이 정확하게 어떻게 이루어져 있는지부터 이해하고 가자. 우리가 보통 프로그래밍 언어를 사용할 때 X++과 같은 단항연산자를 사용하면, 하나의 명령만으로 덧셈이 정상적으로 이루어지는 것 같지만 실제로 동작하는 기계 입장에서 이 단항연산 과정은 3단계로 나누어진다. 그 과정은 아래와 같다. X를 저장소로부터 읽어서 CPU 레지스터로 읽어들인다. CPU 안에서 ALU 연산을 진행한다. CPU 로부터 나온 결과를 다시 저장소에..

[ Linux Kernel ] 03. 인터럽트와 트랩

5. 인터럽트와 트랩 인터럽트는 시스템 내에서 하드웨어가 생성한 흐름 변경이다. 인터럽트 원인을 처리하기 위해 인터럽트 처리기가 사용된다. 제어는 인터럽트된 컨텍스트 및 명령으로 리턴된다. 트랩은 소프트웨어가 생성한 인터럽트다. 장치 폴링의 필요성을 없애기 위해 인터럽트를 사용하여 I/O의 완료를 알릴 수 있다. 트랩을 사용하여 운영 체제 루틴을 호출하거나 산술 오류를 포착 할 수 있다. 인터럽트는 하드웨어 인터럽트이며 트랩은 소프트웨어 호출 인터럽트이다. 하드웨어 인터럽트 발생은 일반적으로 다른 하드웨어 인터럽트를 비활성화하지만 트랩에는 해당되지 않는다. 트랩이 제공 될 때까지 하드웨어 인터럽트를 허용하지 않으려면 명시 적으로 인터럽트 플래그를 지워야한다. 일반적으로 컴퓨터의 인터럽트 플래그는 트랩이 ..