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 |