Android OS 9

AIDL HAL 인터페이스

AIDL HAL 인터페이스 system.img의 경우와 같은 프레임워크 구성요소 및 vendor.img의 경우와 같은 하드웨어 구성요소 간의 커뮤니케이션하는 HAL은 안정적으로 AIDL을 사용해야한다.​하지만 ! 특정 HAL에서 다른 HAL로 커뮤니케이션하는 것과 같이 파티션 내에서 커뮤니케이션 할 때는 사용되는 IPC 매커니즘의 제한 사항이 없다. ​​  AIDL HAL 인터페이스 찾기​HAL용 AOSP 안정적 AIDL인터페이스는 HIDL인터페이스와 동일한 AIDL 폴더에 있다. hardware/interfacesframeworks/hardware/interfacessystem/hardware/interfaces ​ 확장 인터페이스는 vendor 또는 hardware의 다른 hardware/interf..

Android OS 2024.11.12

안드로이드 포팅 : AOSP 빌드 시스템

1.  안드로이드 포팅: AOSP 빌드 시스템 안드로이드 빌드 시스템의 설정방식은 안드로이드 셸 환경에서 envsetup.sh와 lunch로 동적으로 생성하거나, Buildspec.mk 파일로 미리 정의해둔 변수들을 활용할 수 있다. 또한 빌드 시스템은 소스파일과 같은위치에 객체파일 등의 중간 출력을 생성하지 않고, 모든 생성물은 out/ 디렉터리에 저장한다.   1.1  Android Build System​Envsetup.sh와 lunch는 명령을 실행한 셀에서 빌드할 땐 두 명령을 수행해야한다. 위 그림에서 묘사한대로 빌드 시스템 입장에서 타당한 진입점을 /build/core/ 디렉터리의 main.mk 파일이다. 이 파일은 최상의 Makefile을 호출한다.      1.2  Build Target..

Android OS 2024.11.07

Ubuntu에서 NDK 설치, 설정, 실행해보기

1.  Ubuntu에서 NDK 설치, 설정, 실행해보기   1.1  NDK  install1) NDK 를 다운로드 받는다. 2) .bashrc 에서 ndk 경로를 설정한다. 3) rc재실행 후 확인​​​  1.2  NDK  Build 1) ndk디렉터리 밑에 jni 디렉터리 생성  2) jni 디렉터리 안에 컴파일 할 c 파일과 Android.mk 파일 생성 - ​안드로이드 mk 파일 내용 추가 LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_CFLAGS += -fPIE -pieLOCAL_MODULE := user_processLOCAL_SRC_FILES := user_process.cinclude $(BUILD_EXECUTABLE) 3) Ndk 빌드  ..

Android OS 2024.11.07

Android Boot & Init

Android Boot & init   Android Boot는 커널에서 시작한다. init는 커널의 맨 처음 동작을 말한다.​  1.  android init는 /system/bin/init 에 있다.   2.  Log system 초기화   3.  /init.rc와 /init.%hardware%.rc를 파싱   4.  3번에서 파싱된 사항 중 early_init 부분 수행   5.  디바이스 노드 생성 및 펌웨어 다운로드   6.  우선순위 시스템 및 소유권 초기화   7.  3번에서 파싱된 사항 중 init 수행   8.  우선 순위 시스템 및 소유권 정책 작용   9.  앞 단계에서 파싱된 사항 중 Early-Boot 와 boot 부분 수행 및 나머지 작업 수행  ※ 펌웨어 HDD혹은 Flush ..

Android OS 2024.11.01

Android Binder

1.  Binder    1.1  Binder란?​  안드로이드에서 바인더는 각각 독립된 프로세서들을 연결해주는 역할을 한다.    리눅스에서 시스템의 기능을 이용하기 위해서 시스템 콜(system call)을 사용하여 시스템에서 제공하는 프로세서, 파일 시스템 기능을 이용하도록 제공하고 있다. ​  하지만 안드로이드에서는 각 독립적으로 운영되는 프로세스, 특히 서비스의 기능을 이용할 수 있도록 제공하는 것이 바인더의 핵심이다. ​  안드로이드 시스템을 개발하는 시스템 개발자의 입장에서 기존 서비스의 변경이나 기능 추가 또는 새로운 서비스를 구성하기위해 어떠한 표준 인터페이스를 통해 서비스를 구현해야 하는지 알아야하기 때문에 바인더에 대해 이해하고 있어야한다. ​​운영체제 혹은 시스템에서 제공해 주는 기..

Android OS 2024.11.01

Android.mk

1.  Intro  Android.mk 파일은 프로젝트의 jni/ 디렉터리에 속한 하위 디렉터리에 있으며, 빌드 시스템에 대한 소스 및 공유 라이브러리를 설명한다. 이 파일은 실제로는 빌드 시스템이 한 번 또는 그 이상 파싱하는 작은 GNU Makefile 프레그먼트이다. Android.mk파일은 Application.mk, 빌드 시스템, 환경 변수가 정의 되어있지 않은 상태로 남겨두는 프로젝트의 전반의 설정을 정의하는데 유용하다.​  1.1  Android.mk의 구문을 사용해 소스를 모듈로 그룹화할 수 있다. ​  모듈은 정적 라이브러리, 공유 라이브러리, 독립형 실행 파일이다. 각각의 Android.mk 파일에서 하나 이상의 모듈을 정의할 수 있고 여러 모듈에서 같은 소스 파일을 사용할 수 있다. ..

Android OS 2024.10.31

Android Platform 구조

l/d/-/x이름역할ㅣAndroid.dpbuild~ㅣbootstrap.bashbuild~dart컴파일러dbionicBDS기반 Androids 라이브러리 (libc ... )dbootable부트로더 시스템 및 시스템 부팅 관련 정보 dbuildcore, tool, 타켓 및 보드 관련 정보dcompatibility dcts데이터 통신, LOW이면 데이터를 보낸다ddalvik컴파일러ddevelopment NDK, PDF, Amulator, Simulator, ADB, testrunner 등 개발 관련 정보 ddevicexml, pem, board-infodenternal APP 저장소, QEMU, SQLite 등 존재dframeworks  dhardwareOverlay 등 H/W 라이브러리, WIFI, GPS..

Android OS 2024.10.31

HAL (Hardware Abstraction Layer : 하드웨어 추상화 계층)

하드웨어 추상화(Hardware Abstraction) 하드웨어 추상화(hardware abstraction)는 특정 플랫폼의 구체적인 부분과 하드웨어의 자원을 직접 접근을 흉내내는 소프트웨어들의 집합이다.하드웨어 추상화는 프로그램 인터페이스를 통해 하드웨어 리소스에 대한 액세스 권한을 프로그램에 제공한다.프로그래머가 장치 독립적인 프로그램을 작성하도록 하고 운영 체제의 하드웨어 호출을 무시함으로써 고성능의 응용 프로그램 작성을 허용한다     하드웨어 추상화 계층 (HAL, Hardware Abstraction Layer)    2.1  HAL (Hardware Abstraction Layer, 하드웨어 추상화 계층)  컴퓨터에서 프로그램이 수많은 하드웨어를 별 차이 없이 다룰 수 있도록 하는 추상화..

Android OS 2023.11.08