커널 - 리누즈 토발즈가 제작한 OS의 핵심 코드
리눅스 배포판 - 리눅스 커널 + Shell + Utility + App 을 포함시킨 하나의 OS
2 (안드로이드는 무료로 있는 리눅스 소스코드를 수정시킨 하나의 배포판이다.)
현재 안드로이드 TV, 냉장고 등 가전제품과 자동차에 적용되기 위한 노력중이다.
또한 안드로이드는 android x86, android wear 등등
Android Wear의 경우
임베디드 SW 개발을 시작할 때 선택!
우리 회사의 HW에 맞게 OS 소스코드를 수정하는 작업
AOSP 다운로드 - 빌드 - 회사에서 만든 뉴 hw에 넣어서 켰는데 안켜짐 - 디버깅 어떻게? (디버깅 장비들을 가지고 와서 포팅해야됨 = BSP 팀이 담당)
4중 하나
1. 안드로이드 포팅 후 Application 개발해서 장치 제어
2. 리눅스 포팅 후 Application 개발해서 장치 제어
3. RTOS 포팅 후 Application 개발해서 장치 제어
4. OS 자체를 직접만듦 - Firmware
리니지 OS
https://download.lineageos.org/devices/crownlte/builds
안드로이드 미들웨어 개발자 - HAL 개발하여 api 제공
정리
- 커널과 배포판 차이
- 포팅이 무엇인지 (4가지 중 하나의 방식으로)
CLI : 잘 안바뀜, 시스템 관리 편리, 명령어 몇 줄로 많은 처리 가능
GUI : CLI로 할 수 있는 모든 걸 할 수 있음
프로그램이 HW를 제어하기 위한 SW
Software Interface를 통해 App이 HW Spec을 이해하지 않아도 된다.
앱이 장치를 제어하지 못하므로 커널이 장치를 제어하도록 하기 위해 커널 안에 들어가는 것이 드라이버. 그러면 앱이 드라이버를 통해 장치 제어 가능. 장치마다 드라이버가 있음
어떠한 HW의 OS를 펌웨어로 만들었을 때 다른 디바이스에 같은 펌웨어를 넣을 수 없고 장치 데이터 시트의 모델명, 부팅 로직 등등에 따라 모두 바꿔야 한다.
따라서 이 사이에 Kernel API layer를 추가해 HW의 변화에 따라 Kernel 소스코드만 수정하면 되도록 한다.
드라이버 개발 준비물
Application단에서 디바이스 드라이버로 연결된 장치 파일의 데이터를 가져오기 위해서 api를 호출. 그 api가 만들어지는 영역이 미들웨어, HAL이다.
Firmware로 게임 제작했으면 그래픽카드 바뀌었을 때 게임을 다시 Build 해야 함
Embedded Linux용 게임 제작했다.
그래픽 카드만 바뀌었을 때, 게임을 다시 Build 할 필요 없다. 대신 드라이버를 교체해야 한다.