컴파일(Compile)과 빌드(Build) 차이

컴파일(Compile) 컴파일은 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하여 목적코드(Object Code)를 생성하는 과정을 말한다. 예를들어 C언어에서 목적코드의 확장자는 *.o다. 이러한 컴파일을 수행해주는 프로그램을 컴파일러(Compiler)라고 한다. C언어에서 사용하는 GCC(GNU Compiler Collection), Java에서 사용하는 javac가 이러한 컴파일러에 해당한다. 컴파일과정은 컴파일언어로 작성된 소스코드에게만 필요한 과정이다. 대표적인 컴파일 언어로는 C, Java가 있다.다른건 인터프리터 언어가 있다. 빌드(Build) 위에 서술했듯이 C언어 … Read more

PC, 임베디드 시스템에서 시스템 버스의 필요성

시스템 버스(System Bus)의 필요성 PC나 MCU와 같은 Core를 가지고 있는 시스템에서 Core, Memory, Peripheral간 데이터 전송은 버스를 이용한다. 예를들어 A가 B에게 데이터 전달시 서로 직접 전달하는것이 아닌 A장치는 버스로 데이터를 보내고 B장치는 버스로부터 데이터를 받는다. 이는 국도를 달리고 있던 차가 빠르게 이동하기 위해 고속도로(버스)로 올라가는것과 같다. 만약 버스를 이용하지 않는다면 주변장치들을 직접 연결해서 데이터를 전달할 … Read more

HSM(Hardware Security Module) 개념 요약

HSM(Hardware Security Module) 임베디드 장비에 네트워크가 들어가면서 보안의 중요성이 대두되었고 이에 따라 관련 법규들도 제정되고 있다. 임베디드 장비에 보안을 어떻게 적용할 것인가에 대한 문제의 해결책 중 하나는 보안을 위한 전용 하드웨어 모듈인 HSM을 장착하는 것이다. HSM을 사용하지 않는 시스템의 시나리오 HSM을 사용하지 않는 데이터 보안은 어플리케이션이 DB에서 암호문을 받은 후 가지고 있는 복호화키로 암호문을 해독한다. … Read more

핀먹스 (Pinmux, Pin Multiplexer) 개념

Mux (Multiplexer) pinmux는 pin을 mux하는 것이다. 따라서 pinmux를 이해하기 위해서는 먼저 mux를 이해할 필요가 있다. 디지털 논리회로 중 mux(멀티플렉서)라고 있다. Select신호를 이용하여 여러 개의 입력 중 하나를 선택하는 장치다. 아래 그림은 입력이 두개, 출력이 하나인 2X1 MUX다. SELECT신호가 0이면 OUTPUT은 입력 신호 중 하나인 A가 출력되고 SELECT신호가 1이면 B가 출력된다. Pinmux (Pin Multiplexer) 아두이노의 ADC에 … Read more

빅 엔디안(big endian)과 리틀 엔디안(little endian)

바이트 오더(Byte Order) 바이트 오더는 데이터를 메모리에 배열하는 순서에 대한 방법을 뜻한다. 바이트 오더는 여러 종류가 있으며 그중 빅 엔디안과 리틀 엔디안이 가장 많이 쓰인다. 개인적으로는 둘 외에 본 적이 없다. 빅 엔디안 (Big Endian) 사람이 일반적으로 읽는것과 같이 큰 값부터 왼쪽에서 순차적으로 메모리에 할당한다. 이때 두개씩 묶이는 이유는 최소 저장 단위가 8bit(1byte)이기 때문이다. (0x12345678은 … Read more

임베디드에서의 메일박스(Mailbox) 사용

IPC(Inter Process Communication) 최근 SoC는 MCU, DSP, GPU 등 여러 프로세스를 내장하고 있기 때문에 프로세스 간 데이터 통신을 필연적으로 사용해야 하는 경우가 많다. 그런데 기본적으로 프로세스들은 안전성을 위해 자신에게 할당된 메모리 영역 이외의 다른 프로세스의 메모리 영역에는 접근이 불가능하다. 그래서 데이터 통신을 위한 방법이 필요하고 이러한 방법들을 통틀어 IPC라고 한다. 이 IPC를 위한 방법은 직접 … Read more

DMA(Direct Memory Access) 뜻과 장점

시작하기 전에 내가 경험했던 디스플레이에 이미지를 그리는 프로젝트들은 항상 DMA가 강제되었다. DMA를 사용하지 않으면 이미지가 한박자 늦게 출력되었다. 심지어 사이즈가 큰 이미지의 경우 출력시 왼쪽에서 오른쪽으로 스프레드되는 과정까지 볼 수 있었다. DMA는 대부분의 AP(or MCU)에서 함수로 제공이 될 것이다. DMA를 깊게 이해하고 사용하기는 어려움이 있을지라도 해당 AP의 예제를 따라하는 수준이라도 DMA 유무는 충분히 체감할 수 … Read more

IPU(Intelligence Processing Unit) 정리

서론 어느 AP(SOC)의 코어에 MPU, DSP, GPU 외에 IPU가 있었다. 처음보는 코어라 검색을 했는데, 데이터시트의 IPU(Image Processing Unit)가 아닌 다른 IPU(Intelligence Processing Unit)를 검색하고 있었음을 알게 되었다. 들였던 시간이 아까우니 간단하게 기록을 남긴다. IPU(Intelligence Processing Unit)

임베디드에서의 UART, I2C, SPI 사용 비교

직렬 전송방식 임베디드 시스템에서 통신으로 가장 많이 사용하는 것이 UART, I2C, SPI다. 이들은 모두 직렬 전송 방식이다. 병렬 전송방식은 데이터 전송을 위한 단자와 선이 많이 필요하기 때문에 직렬 대비 속도가 빠름에도 선호되지 않는다. 단자와 선이 많으면 단가가 올라간다. 개인적인 경험상 그림의 TI AMIC110과 같은 모든 SoC는 UART, SPI, I2C 인터페이스를 모두 내장하고 있었다. UART, I2C, … Read more

UART에 RS232를 연결하는 이유

다른 글 임베디드에서의 UART, I2C, SPI 사용 비교 서론 임베디드는 대부분 호스트 PC에서 디버깅이 필요하다. 따라서 호스트 PC와 타겟보드간 연결이 필요하고 이 연결을 주로 UART가 담당한다. 시중에 판매하는 UART to USB Converter를 구매하면 쉽게 연결할 수 있다. 학교에서는 위와 같은 방법으로 디버깅을 했다. 그런데 실무에 와서 보니 UART에 RS232를 연결하여 PC와 통신한다. 이유는 무엇인가? 장거리 … Read more