포팅

이영준·2023년 5월 12일
0

커널 vs 배포판

커널 - 리누즈 토발즈가 제작한 OS의 핵심 코드
리눅스 배포판 - 리눅스 커널 + Shell + Utility + App 을 포함시킨 하나의 OS
2 (안드로이드는 무료로 있는 리눅스 소스코드를 수정시킨 하나의 배포판이다.)
현재 안드로이드 TV, 냉장고 등 가전제품과 자동차에 적용되기 위한 노력중이다.
또한 안드로이드는 android x86, android wear 등등
Android Wear의 경우

  • 삼성전자의 타이젠 + Android Wear = Wear OS 를 2021년 5월 발표해 구글과 삼성이 공동개발하고 있다.

임베디드 SW 개발을 시작할 때 선택!

  • 거대한 범용 OS (android 급)
  • 더 작은 OS (Linux Kernerl _ 기본 shell만 추가)
  • RTOS (경량 OS를 사용할까?)
  • 직접 OS를 만들까? - Firmware

포팅이란?

우리 회사의 HW에 맞게 OS 소스코드를 수정하는 작업

AOSP 다운로드 - 빌드 - 회사에서 만든 뉴 hw에 넣어서 켰는데 안켜짐 - 디버깅 어떻게? (디버깅 장비들을 가지고 와서 포팅해야됨 = BSP 팀이 담당)

  • 소스코드 다운로드
  • 소스코드 분석
  • 회사 HW 분석
  • HW에 맞게 소스코드 수정
  • 소스코드 빌드
  • 장비를 이용하여 저장장치에 Flashing
  • 부팅이 될때까지 디버깅

임베디드 SW 개발 시작할 때 결정

4중 하나
1. 안드로이드 포팅 후 Application 개발해서 장치 제어
2. 리눅스 포팅 후 Application 개발해서 장치 제어
3. RTOS 포팅 후 Application 개발해서 장치 제어
4. OS 자체를 직접만듦 - Firmware

리니지 OS
https://download.lineageos.org/devices/crownlte/builds

  • 많은 디바이스에 직접 포팅한것들 다 올림
  • 임베디드 SW 개발자들에게 포팅한 예제코드를 보고 직접 포팅하라는 의미


안드로이드 미들웨어 개발자 - HAL 개발하여 api 제공

정리

  • 커널과 배포판 차이
  • 포팅이 무엇인지 (4가지 중 하나의 방식으로)

OS 소스코드를 이용할 수 있는 인터페이스

CLI : 잘 안바뀜, 시스템 관리 편리, 명령어 몇 줄로 많은 처리 가능
GUI : CLI로 할 수 있는 모든 걸 할 수 있음

2

  • Driver가 뭔지(중요)
  • HAL 이 뭔지(중요)
  • App 이 뭔지
  • middleware 개발자가 뭔지
  • systemcall - read, open, close

드라이버

프로그램이 HW를 제어하기 위한 SW
Software Interface를 통해 App이 HW Spec을 이해하지 않아도 된다.

앱이 장치를 제어하지 못하므로 커널이 장치를 제어하도록 하기 위해 커널 안에 들어가는 것이 드라이버. 그러면 앱이 드라이버를 통해 장치 제어 가능. 장치마다 드라이버가 있음

어떠한 HW의 OS를 펌웨어로 만들었을 때 다른 디바이스에 같은 펌웨어를 넣을 수 없고 장치 데이터 시트의 모델명, 부팅 로직 등등에 따라 모두 바꿔야 한다.
따라서 이 사이에 Kernel API layer를 추가해 HW의 변화에 따라 Kernel 소스코드만 수정하면 되도록 한다.

드라이버 개발 준비물

  • 커널 소스코드
  • 커널 빌드 후, 빌드된 커널로 부팅

HAL

Application단에서 디바이스 드라이버로 연결된 장치 파일의 데이터를 가져오기 위해서 api를 호출. 그 api가 만들어지는 영역이 미들웨어, HAL이다.

Firmware로 게임 제작했으면 그래픽카드 바뀌었을 때 게임을 다시 Build 해야 함

Embedded Linux용 게임 제작했다.
그래픽 카드만 바뀌었을 때, 게임을 다시 Build 할 필요 없다. 대신 드라이버를 교체해야 한다.

profile
컴퓨터와 교육 그사이 어딘가

0개의 댓글