본문 바로가기
공부/임베디드

[임베디드] 임베디드시스템 SW 개발과정

by 로디네로 2021. 8. 17.
반응형

 

우선 임베디드 소프트웨어의 구조를 간단히 살펴보고자 한다.

 

 

하드웨어를 기반으로 OS 포팅, 디바이스 드라이버 제작, 통신 등의 미들웨어, GUI 제작 등의 과정이 필요하다.

 

 


 

- OS 포팅

 

커널을 올리는 과정이다.

 

포팅되어있지 않는 단말기에 커널을 올려서 동작이 가능하게 한다.

 

즉 어떤 기능을 쓸 준비가 되어있지 않은 단말기에, 기능을 쓸 수 있게끔 해주는 과정

 

말은 간단하지만 실제 리눅스 커널을 이용한 개발과정에서 가장 어려워하는 부분 중 하나가 리눅스 커널의 포팅이다.

 

커널 포팅에 대한 지식 ↓ 접은글 ↓

더보기

1. 임베디드 리눅스 구성 및 배경지식

    APP --- File System --- Kernel --- Boot loader

    이들은 어떻게 연계되어 작동할까?

    - Cross Compiler : Host PC는 CPU, Target Board는 Arm 이라고 가정한다면 두 보드에서 모두 호환되는 프로그램을 만들 수 있을까? 이때 사용하는것이 크로스 컴파일러이다.

    - Boot Loader : Kernel을 부팅하는 용도 및 하드웨어 초기화, 디바이스 셋팅의 역할을 한다. 대표적으로는 u-boot이 있다.




2. Host PC와 Target Board

    Host PC는 빌드를 진행, Target Board에서 동작

    이 둘을 어떻게 연결할지에 대한 문제가 발생하게 된다.

    UART 시리얼통신 / TFTP 파일시스템 이용한 통신 / NFS 네트워크 파일시스템 이용한 통신




3.  타겟 보드 정보 확인

부팅시 확인해야 될 내용을 확인한다.

printenv를 치면 shell환경에서 여러 정보들을 확인할 수 있다.

bootdelay / ipaddr / bootargs / initrd / zimage 등

bootcmd의 ramdisk와 initrd는 같은 주소여야 한다. bootm은 zimage의 주소와 같아야 한다.




4. 환경 구성 및 커널 컴파일

TFTP 서버 구축

- TFTP 서버를 데몬으로 등록한다

 

Network 설정

- Board와 PC를 연결한다.

 

TFTP이용해서 필요파일 다운로드

- 디렉토리를 설정해주었기 때문에 해당위치에 파일을 넣고 부팅이 가능해진다.

 

크로스컴파일러 다운 및 환경변수 등록

- Target Board에 맞는 버전의 크로스컴파일러를 다운, 환경변수 PATH 등록하기

 

커널 컴파일

- 아래 블로그를 참조한다.

- .config 파일이 생성되고 커널이 컴파일된다. 크로스컴파일러에 맞게 makefile을 수정해줘야된다.

https://richong.tistory.com/178

 

Linux Kernel Build

항상 커널 만들 때, 아무 생각없이 명령어만 따라 쳤는데, 정리하려고 한다. 리눅스 커널을 만드는 과정은 크게 3단계로 나뉘어진다. 1. 커널 구성 : Kernel Configuration 2. 커널 컴파일 : Kernel Compile 3.

richong.tistory.com

 

 

출처 : https://richong.tistory.com/243

 

 


 

- 디바이스 드라이버 제작

 

여러 장치를 구동시키기 위해서 OS는 장치 드라이버를 필요로 한다.

 

임베디드 리눅스는 캐릭터,블럭,네트워크 디바이스 드라이버로 구분한다.

 

  • 캐릭터 디바이스 드라이버 : 터치, 사운드, 화면 등의 디바이스 드라이버 제작
  • 블럭 디바이스 드라이버 : 파일 시스템과 밀접한 관계 - 플래시 제어하는 디바이스 드라이버 (MTD)
  • 네트워크 디바이스 드라이버 : TCP/IP 제어를 받는 이더넷 디바이스 드라이버를 구현

 

 


 

- 미들웨어 제작

 

미들웨어란 응용소프트웨어가 OS로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 소프트웨어이다.

 

즉 양 쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어이다.

 

TCP/IP 기반 프로토콜을 사용한 통신을 예로 들 수 있다.

 

 


 

- GUI 등 어플리케이션 제작

 

임베디드 시스템 프로그래밍을 하는 것은 결국 Edge 단에서 사용자에게 보여지게 된다.

 

이를 위한 Graphical User Interface 가 필요할 것이다.

 

단지 심미적인 이유 라고 할 수도 있지만 그리 간단하지 않다.

 

제한된 크기의 디스플레이에 원하는 내용을 모두 구현해 내기 위한 프로그래밍이 필요하다.

 

 

 

 

 

 

반응형

댓글