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 知彼知己百戰不殆
,