728x90
반응형

IT 686

SPI

3-WIRE 시리얼 통신규격으로 주로 I2C등장 이전까지 자주 사용되던 통신 프로토콜이다. I2C와 마찬가지로 보드내에 있는 여러 디바이스간의 데이터 교환을 위해 사용하였다. SPI프로토콜을 가진 대표적인 칩은 93C46(EEPROM)이 있다. 요사이는 I2C의 등장으로 SPI의 사용이 다소 줄었지만, 워낙 오랜 역사를 가지고 있는 프로토콜이기 때문에, SPI로 동작되는 디바이스들이 아직도 현존하고 있다.(주로 모토롤라의 디바이스들) SPI는 3가닥으로 통신을 한다. 데이터입력(SDI),데이터출력(SDO), 클럭(SCK)이 있고 SPI의 동작을 허가하는 선택관이 별도로 존재한다.(결과적으로 4가닥이 필요하다는 뜻이다.) PIC16C74는 SPI프로토콜을 FULL지원하고 있다. 마스터모드, 슬레이브 모드를..

GPIO

PXA270의 GPIO 개요 GPIO(General Purpose Input Output)는 하나의 연결 단자를 입력이나 출력으로 고정시키지 않고 선택적으로 사용할 수 있게 융통성을 높인 범용 입출력 단자 PXA270은 121개의 GPIO 단자를 제공하고 이 중 119개만 사용. 각 단자는 입력 혹은 출력으로 설정하거나 부가 기능을 위해 양방향으로 설정. 32비트 레지스터 36개를 사용하여 설정. GPIO 단자를 입력으로 프로그램하면 인터럽트 소스로 사용 가능 일부 GPIO 단자는 프로세서를 휴면 상태에서 깨우는 사건(event)를 생성 GPIO 레지스터의 기능 입출력 방향 설정 레지스터(GPDR, GPIO Pin Direction Register) GPIO port pins의 각각에 대한 방향 제어 비..

Streams

최근의 SNS들은 글 뿐만 아니라 사진, 위치, 동영상 등 많은 정보를 담고 있습니다. Blog가 업데이트 되는 것을 쉽게 알기 위해서는 RSS/Atom을 사용하면 되지만 RSS/Atom은 뉴스/블로그에만 적합할 뿐 사진, 위치, 인물 등의 정보를 표현하기 하기 어렵습니다. 그래서 새로운 feed가 필요하다는 공감대가 형성 되면서 Activity Streams 라는 것이 대두되었는데요. 최근에 JSON 형식 버젼의 1.0이 공개되었습니다. (Atom 형식으로는 예전에 이미 공개) 그렇다면 Activity Streams라는 것은 무엇이며 기존의 RSS/Atom 과는 무엇이 다를까요? 배경 이미 널리 쓰이고 있는 표준으로 RSS와 Atom이 있습니다. 주로 블로그를 구독하기 위한 간단한 XML 규약이지요. ..

Memo Management Unit

MMU (Memory Management Unit) MMU 는 CPU의 Memory 주소를 감쪽같이 속이는 거짓말쟁이에요. MMU는 표현하고 행동해요. CPU가 Memory를 Access할 때 마다 주소를 속인답니다. 주소를 속여서 어떻게 하느냐, Physical Address와 Virtual Address (Logical Address라고도 부르죠)의 Mapping을 자기가 갖고서 장난을 치는 거죠. CPU는 자기가 속았는지도 몰라요~ MMU를 왜 사용하느냐, MMU를 사용함으로써, 도대체 System에 무슨 이득이 있을까요. Task 마다 또는 Program마다 똑같은 주소를 사용해도 되게 만들어 주는 거에요. 모든 Task는 0x0~0x3000 번지까지 자리 잡도록 Compile하더라도, MMU를 ..

opengl 1.1 2.0 비교

OpenGL ES는 OpenGL for Embedded Systems의 약자로, OpenGL을 만든 Khronos Group에서 모바일 임베디드 기기를 위해 제작한 3D Graphics API이다. OpenGL ES는 OpenGL을 기반으로 임베디드 시스템에 최적화된 API를 제공한다. 거의 쓰이지 않거나 중복된 기능을 수행하는 API들을 과감히 제거하고 임베디드 시스템에 적합한 데이터 타입을 추가하는 등 최대한 간결하고 작게 만드는 것을 목표로 하면서도 기존의 OpenGL을 사용하여 구현할 수 있는 거의 대부분의 기능을 똑같이 구현할 수 있도록 디자인 되었다. OpenGL ES를 사용하는 이유 모바일 3D API로 OpenGL ES를 사용하면 다음과 같은 이점이 있다. 업계 표준으로 자리잡은 시스템의 ..

dalvik.vm.heapsize

OOM(Out Of Memory) 상태에서의 원활한 시스템 운영을 위해 메모리 사용 임계치를 정하는 방법이다. minfree에는 애플리케이션을 6 개의 부류로 나누고 각각의 메모리 사용 임계치를 설정하도록 되어 있다. lowmemorykiller는 minfree의 설정값을 보고 메모리 사용 임계치에 다다르면 해당 부류의 앱들을 죽이기 시작한다. 애플리케이션 분류는 중요도에 따라 oom 값으로 표현한다. oom 값은 -16부터 15까지의 값을 갖는데, -1 이하는 OOM 상태에서도 죽지 않는 시스템 애플리케이션들이다. 0 이상은 OOM 상태에서 죽어도 관계 없는 일반 애플리케이션들로 아래와 같이 6 가지로 분류한다. - Foreground_app(oom=0): 현재 사용중인 최상위 화면의 애플리케이션 또는..

SurfaceFlinger,AudioFlinger

Android Native Server 개념에 크게 Surface Flinger와 Audio Flinger란 것이 있다. 사 실 Flinger란 단어가 참 낯설게 느껴지는데 사전적인 의미로는 투수(무언가 던지거나 차는 사람)란 의미가 가장 의미가 와 닿는 것 같은데 Application에서의 데이터를 한데 모아서 출력쪽으로 던져주는 역활을 한다는 의미로 사용한 것이 아닐까 싶다. (언제나 그렇듯이 추측이다) Surface Flinger는 단연히 여러가지 Surface 데이터를 한데 모아서 Frame Buffer를 업데이트하는 것이고 Audio Flinger는 여러가지 오디오 샘플을 한데 모아서, 즉 Audio Mixing을 해서 ALSA 쪽으로 보내는 역활을 한다고 볼 수 있다. Surface Fling..

init.rc

오늘은 안드로이드 초기화 과정인 init 에 대해서 이야기를 할까 합니다. 다들 알고 계시겠지만, 안드로이는 linux 커널이 시작되면서 init daemon 을 실행시켜서 뭐 이 initd 에서 대충 서비스를 시작한다 정도로 알고 있을 것입니다. 하지만 어떻게 Kernel 로 시작해서 linux 의 데몬인 initd 가 Android 에 framewokr 에 기본이 되는 서비스들을 살릴 수 있을까요? 이 것에 대한 의문으로 오늘 이야기는 시작되었습니다. 물론 ODE 실행 후 FOTA 업데이트가 제대로 안되어서 fota update 를 보다가 fota.rc 를 수정해야 하고 또 이 .rc 파일들이 linux 에서 사용하는 그냥 init 파일과 다르게 Android Init Language (AIL) 이라..

728x90
반응형