코딩뚠뚠

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

공부/임베디드

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

로디네로 2021. 8. 17. 22:38
반응형

 

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

 

 

하드웨어를 기반으로 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 가 필요할 것이다.

 

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

 

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

 

 

 

 

 

 

반응형