http://forums.fedoraforum.org/showthread.php?t=217019

'OS > Linux' 카테고리의 다른 글

참고 사이트들  (0) 2016.10.13
Vim 에디터 syntax highlighting 설정하는 법  (0) 2016.09.27
grep 사용법  (0) 2016.09.02
CentOS 5.1 ifconfig command  (0) 2016.06.16
CentOS 5.1 gcc 설치법  (0) 2016.06.16
Posted by 知彼知己百戰不殆
,

상대적으로 하버드 구조에 비해 가격이 싸다, => 복잡도가 낮다

프로그램과 데이터의 저장 공간이 같아서 동시 접근이 불가능하다. (Code 영역에 접근 중이라면 data영역에 접근 불가)

=일과 기억공간의 동시 접근 불가능, Code 영역에 접근 중이라면 data영역에 접근 불가)


상대적으로 폰 노이만 구조에 비해 가격이 비싸다 => 복잡도가 높다

프로그램과 데이터의 저장 공간이 달라서 동시 접근이 가능하다. => 일처리 효율이 좋아진다

=값의 저장과 일 가져오는 것이 동시에 가능하므로 처리 효율이 좋아진다.


Code영역: 일 시키는 명령들의 공간

CPU: 일처리 하는 놈 Central Processing(일처리) Unit

Data, BSS, Heap, Stack: 기억(저장) 공간


'언어 > 큐브인턴(Embedded)' 카테고리의 다른 글

LED on/off  (0) 2016.10.28
printf 함수 리턴  (0) 2016.09.30
MCU, MIPS  (0) 2016.09.04
Transistor Transistor Logic = TTL  (0) 2016.09.04
I/O mapped I/O, memory mapped I/O  (0) 2016.09.04
Posted by 知彼知己百戰不殆
,

MCU = Micro Controller Unit

집적 회로 안에 프로세서와 메모리, 입출력 버스 등의 최소한의 컴퓨팅 요소를 내장한 초소형 컨트롤러. 보통 자동제어에 사용되기 위한 저성능/저전력 연산 장치를 뜻하나, 경우에 따라서는 ARM Cortex-A 시리즈와 같이 스마트폰 등에 사용되는 고성능/저전력 프로세서 제품도 MCU라 표현하기도 한다.

PC에서의 CPU와 비슷하나 이와 다른 가장 큰 특징은 저성능/저전력에 저렴한 가격으로 제작된다는 점, 자동제어에 이용되기 위한 많은 주변장치를 포함하고 있다는 점이다. MCU와 CPU의 구분은 프로세서의 사용 목적에 따라 정해지는 편이다. 고성능의 OS를 설치하여 PC나 서버, 슈퍼컴퓨터 등에 사용하는 경우에는 보통 CPU라 하며, 저성능의 OS를 설치하여 사용하거나 OS 없이 펌웨어만 사용하여 자동제어에 사용되는 경우에는 MCU라 부르는 편이다. 

보통 Embeded System에 적합하게 디자인 된 물건이 많은지라 성능 자체는 뛰어나다고 볼 수 없지만 단순하고 신뢰성있으며 전력 소모가 적으며 저렴하다는 장점이 있으며 현재도 여러 분야에 걸쳐서 널리 쓰이는 장치들이다. 이 분야에서 주로 사용되는 언어는 어셈블리어, C이다.


MIPS = Microprocessor without Interlocked Pipeline Stages) or CPU의 초당 100만 단위의 명령어 처리 능력

밉스 테크놀로지에서 개발한 RISC ISA이다. 

Posted by 知彼知己百戰不殆
,

트랜지스터 트랜지스터 논리

반도체를 이용한 논리 회로의 대표적인 하나. 일반적으로 5V 단일 전원의 모놀리식 집적 회로로 만들어졌다. 간단히 TTL이라고도 한다. DTL의 개량품으로 1970년대에 텍사스 인스트루먼트 사의 표준 논리 IC 종류에 의해 널리 보급됐다.

표준 시리즈부터, 고속용, 저소비 전력용, 고속 및 저소비 전력용같은 변종이 퍼져서 초기 마이크로프로세서의 응용의 확대와 동시에 더욱 보급됐다. 그러나 바이폴러 트랜지스터를 사용했기 때문에 소비전력이 크고, 고집적화 및 고속화되지 않아서 시모스 논리 IC 기술의 발달로 논리 회로의 주력 자리를 시모스에게 양보했다.

'언어 > 큐브인턴(Embedded)' 카테고리의 다른 글

하버드 구조 VS 폰 노이만 구조  (0) 2016.09.21
MCU, MIPS  (0) 2016.09.04
I/O mapped I/O, memory mapped I/O  (0) 2016.09.04
Embeded 기초5(수광소자 = 빛센서)  (0) 2016.09.04
실행 파일과 코드 영역  (0) 2016.09.04
Posted by 知彼知己百戰不殆
,

C언어가 CPU를 건드릴 수 없다.

Embeded System에서 채택한 방식(ARM, ATMEGA). CPU안에 I/O가 있는데 메모리에 I/O 주소값을 할당을 해서 C언어로 I/O에 접근할 수 있도록 한 방식. I/O에 주소가 부여돼 있으므로 C언어에서 pointer를 사용하여 메모리 주소를 이용하면 CPU에 접근이 가능하다.


각각의 장단점:

I/O mapped I/O: 메모리를 많이 사용할 수 있다. 그래서 범용일 때는 이걸 쓴다. 하지만 어셈블리를 사용해야 하므로 생산성이 떨어진다.

I/O mapped memory: 레지스터의 특정 부분이 reserved 돼 있으므로 상대적으로 사용할 수 있는 용량이 줄어든다. 

원래 메모리는 CPU에 있으면 안되는 영역인데 I/O mapped memory는 CPU 안 레지스터에 주소를 부여해서 C언어의 포인터에서 사용이 가능하게 만들어놨다. 다만 용량이 줄어들었을 뿐.. Embeded System에서는 메모리의 용량이 매우 작기 때문에 범용 컴퓨터에서 보면 별거 아닐 수도 있어도 Embeded에서는 크게 신경써야 할 부분이다.

'언어 > 큐브인턴(Embedded)' 카테고리의 다른 글

MCU, MIPS  (0) 2016.09.04
Transistor Transistor Logic = TTL  (0) 2016.09.04
Embeded 기초5(수광소자 = 빛센서)  (0) 2016.09.04
실행 파일과 코드 영역  (0) 2016.09.04
Embeded 기초4(GND, oscillator, watchdog, BOD, ISR)  (0) 2016.09.03
Posted by 知彼知己百戰不殆
,

수광소자 = 빛 에너지를 전기 에너지로 변환시켜 주는 것. 즉, 빛을 받으면 전기 흐름이 바뀌는 것


화소(점)란 Red 수광센서(빨간색에만 반응하는 센서), Green 수광센서, Blue 수광센서가 모여서 1개의 화소를 이룬다. 각 색 소자당 256가지(8bit)의 빛 에너지를 검출 할 수 있으므로(왜? 1Byte로 진폭을 쪼개서..) 1화소는 24bit의 값을 가진다. 그리고 각 수광센서 1개당 ADC가 필요하다.


재밌는 이야기로 디지털 공부하기

디지털 카메라는 현실을 어떻게 캡쳐할까?

720p = HD, 1080p = Full HD

1920*1080(1080p, 가로*세로 점 개수) = 2,073,600개의 점

FHD의 사진 한 장이 갖는 용량 = 3*2,073,600 = 약 5.93Mbyte


FHD의 동영상 용량

사진 1장은 약 6메가바이트

6*20(20프레임이라고 가정) = 120Mbyte/sec = 7200Mbyte/min = 43200Mbyte/hour

약42Gb(1시간 동영상 용량) 근데 이건 사운드 용량은 빠진 것..

사운드도 포함한다고 하면 42+0.65Gb = 약42.65Gb

Posted by 知彼知己百戰不殆
,

실행파일(.exe)의 모양

실행파일을 더블클릭하거나 Enter하면 -> 로더가 메모리에 프로그램을 옮겨줌(하드->메모리)

컴파일 시 메모리에 올라가므로 펌웨어 코드를 최적화 해야 메모리를 적절히 사용 가능.


MCU = 여러가지 기능을 함, 한 꺼번에 집어 넣음


Posted by 知彼知己百戰不殆
,

전압의 기준점: GND

GND가 변하면 전압의 측정값이 변한다. GND는 보통 지구를 기준으로 한다.



RC: 저항(Resistence) + 커패시터

RC회로 조합= 주파수 생성 가능(저주파)

oscillator: CPU를 동작시킴, 주파수 생성기(발진기)

RC-oscillator: 내부적으로 돌리는 주파수 생성, 속도가 늦다 (ex. 엘리베이터)

Crystal oscillator: 외부 발진기, 속도 빠름

위 두개의 oscillator은 특정 주파수를 계속 생성해내는 것들.


Watchdog(워치독): CPU 리셋하는 회로가 있음. OS가 제대로 작동을 못 하면 스스로 재부팅하는 기능. 리셋기능이 있는 타이머라서 OS가 제대로 작동을 하는 지 수시로 확인. 만약 OS가 제대로 작동을 못 해서 타이머 리셋을 못하면 재부팅된다.


Brown-out 상황: 정상작동 전압 이하로 떨어졌을 때 CPU가 오동작하는 현상. CPU는 작동을 안 하는데 CPU 주변 장치들이 움직이거나 하는 상황.

BOD = Brown Out Detection: Brown-out 상황을 방지해주는 기능. 특정 전압 이하로 떨어지면 CPU를 재부팅 시켜준다.


Interrupt 함수: 하드웨어 외부에서 신호가 오면 불리거나 내부에서 불리는 함수. 일반적인 함수가 의도적 호출이라면 Interrupt 함수는 OS가 알아서 불러주는 함수.

ISR = Interrupt Service Routine: 인터럽트 서비스를 제공하는 코드. 인터럽트가 들어왔을 때 처리하는 일 목록.

Posted by 知彼知己百戰不殆
,

비동기식 데이터 전송과 동기식 데이터 전송의 차이: 비동기식은 상대방이 데이터를 언제 보낼지 모름. 동기식은 클럭 신호를 이용해서 데이터를 보내기 전에 상대방에게 미리 알려줄 수 있다.


2개의 선을 사용하는 시리얼 통신(직렬 통신) 방식을 I2C라고 부른다. 시리얼 통신의 반대되는 개념으로는 병렬 통신(버스)이 있다.

그림과 같이 시리얼 통신은 I2C 통신, SPI 통신, UART 통신으로 나눌 수 있다.

위의 그림은 2선으로 구성되는 비동기 통신이다. TX는 송신하는 선, RX는 수신하는 선, GND는 Ground이다. 비동기 통신은 상대방이 데이터를 언제 전송할 지 알 수 없으므로 만약 0(Low) 상태에 있다가 0110 1101 이란 데이터를 수신하게 된다고 하면, 0110 1101? 의 데이터를 받은 것인지 110 1101? 의 데이터를 받은 것인지 알 수가 없으므로 이에 대한 해결책이 필요하다.

그래서 UART serial 통신을 지원한다고 datasheet에 나와 있다면 데이터의 앞 뒤로 head와 tail부분을 부수적으로 덧붙여주는 기능이 들어가 있는 것이다(Head와 Tail 펄스를 만들어내는 기능). head만 붙일 수도 있는데 그렇다면 1byte씩만 받겠다던지 하는 약속이 정해져 있는 것이다.


 만약 UART serial 통신을 지원하지 않는다고 datasheet에 나와 있다면 저런 기능을 SW적으로 구현을 해줘야한다. 부수적으로 덧붙이는 것을 오버헤드라고 부른다. Serial 통신이 느려지는 이유.


위의 그림은 5선으로 구성된 동기화 통신 방식이다. 예로 USB가 5선식 동기화 통신 방식으로 구성돼 있다. CLK는 클럭선인데 CLK에서 신호를 보내면서 데이터의 송수신이 시작된다. USB는 고속시리얼 통신으로 클럭선을 사용하여 속도가 매우 빠르다.

Posted by 知彼知己百戰不殆
,

Flash, EEPROM = 저장장치


EEPROM(Electrically Erasable PROM)은 On-Board상태에서 사용자가 내용을 Byte단위로 Read하거나 Write 할 수 있으므로 사실상 SRAM처럼 사용 할 수 있는 불휘발성 메모리이다.(NVRAM, Non-Volatile RAM이라고 부르기도 한다.) 그러나, 이것의 Read 동작은 Access동작이 다소 느릴지라도 SRAM과 유사하므로 별 문제가 없는데 비하여, Write 동작을 수행하는 경우에는 1byte를 write 할 때마다 수 ms 이상의 시간지연이 필요하므로 SRAM과 동일하게 사용할 수는 없다. 따라서 EEPROM은 실시간으로 사용되는 변수를 저장하는 메모리나 스택 메모리로는 사용될 수 없으며, 한번 내용을 저장하면 비교적 오랫동안 이를 기억하고 있으면서 주로 이를 읽어 사용하기만 하거나 전원을 꺼도 지워져서는 않되는 중요한 데이터를 백업하여 두어야하는 설정값 저장용 메모리로 적합하다. 이 메모리 소자는 28Cxxx의 형태로 이름을 짓는 경우가 많다. 

Flash Memory는 On-board 상태에서 사용자가 내용을 Byte단위로 자유로이 Read 할 수는 있지만, Write는 Page 또는 Sector라고 불리는 Block 단위로만 수행 할 수 있는 변형된 EEPROM이다. 블록의 크기는 Memory 소자나 Maker에 따라 다르지만 대체로 64Byte, 128Byte, 246Byte 등에서 부터 128KB까지도 사용한다. 이렇게 Flash Memory는 EEPROM과 매우 유사하지만 Byte단위로 Write하는것이 불가능하므로 Page mode write 기능만 가지는 EEPROM이라고 생각하면 되며, 따라서 역시 SRAM처럼 실시간 Data memory로 사용하는 것은 불가능하다. 그러나, Flash memory는 EEPROM보다 Memory Cell 구조가 간단하여 휠씬 대용량의 메모리 소자를 만드는데 적합하며, 1개의 Block 전체를 Write하는데 수 ms 정도가 걸리므로 대용량 Data를 Write할 때는 EEPROM보다 훨씬 빠르다는 장점을 가진다. 

그런데, Flash memory는 내부 구조에 따라서 NOR형 Flash와 NAND형 Flash memory로 나누 수 있다. NOR형 Flash는 다른 Memory 소자와 같이 외북 구자가 Address bus, Data bus, 그리고 몇가지의 제어신호 및 전원으로 되어 있어서 프로그램 저장용으로 널리 사용된다. NOR형 Flash memory는 대부분 29Cxxx 형태의 이름을 가지고 있다. 그러나, NAND형 Flash memory는 Address bus와 Data bus가 따로 있는 것이 아니고 8개(또는 16개)의 Data 신호와 몇 개의 제어신호 및 전원핀을 가지고 있다. 8개의 Data 신호선은 Address 및 제어명령을 Write하거나 Data값을 읽고 쓰는 용도로 사용된다. 이렇게 하면 Memory를 읽고 쓴느 동작은 좀 번거로워지지만 Memory 용량이 증가하더라도 핀 수가 늘어나지 않으므로 하드웨어 규격을 통일 할 수있어서 Flash memory를 마치 Hard disk처럼 사용하는 것이 가능하다. 특히, 요즈음에는 휴대용 기기를 염두해 두고 1.8[V]나 3.3[V]의 저전압에서 동작하는 수십 MB~ 수 GB짜리 대용량의 NAND형 Flash memory가 많이 개발되어 휴대용 통신기기, 디지털 카메라, MP3 Player, 이동형 USB Memory등과 같은 용도에 널리 사용되고 있다. 

참조: AVR ATmega128 마스터, 44Page (Oho사, 윤덕용 저) 


PWM = Pulse Width Modulation (펄스 폭 변조)

사용용도: ex) 크리스마스 트리 전구의 서서히 밝아졌다가 서서히 어두워지는 기능 등


OCM = Output Compare Modulator (출력 비교 변조기)

ex) 자동차 RPM 측정 등


channel = 핀개수, 다리 개수, 회로 개수 = 즉, 기능을 똑같이 하는 것들을 채널이라고 부름


Posted by 知彼知己百戰不殆
,