← Docs hub

QCS6490 Platform Vendor Brief

이 문서는 기존 플랫폼 벤더 역할을 이어받아 개발을 수행할 협력업체와 회의할 때 사용할 AOSP/SoC 업무 범위 설명 자료다.

목표는 “A1 현재 코드만 유지보수할 사람”이 아니라, A2 이후 모델에서도 시스템 미들웨어 + 서비스 레이어 + vendor HAL + driver/DTS 포팅 일부까지 이어서 맡을 수 있는 업체인지 판단하는 것이다.

이 문서는 이제 SK-Intellix Framework and SDK HubPlatform Enablement 하위 자료로도 읽는다. 즉 플랫폼 벤더 범위는 단순 AOSP 외주가 아니라, A1 DeviceAgent API/runtime과 후보 SDK surface가 실제 보드, HAL, driver, DTS 위에서 동작하게 만드는 platform package다.

AOSP and QCS6490 Platform Overview Stack

위 overview는 Android 공식 문서의 일반 platform architecture와 AOSP architecture overview를 기준으로 App, Framework, Runtime/Native, HAL, Kernel 레이어를 잡고, 그 위에 QCS6490의 QSSI/UM split build와 A1 DeviceAgent/product service hub 위치를 겹쳐 본 그림이다. VINTF/Treble 경계는 framework side와 vendor side가 Binder/AIDL/HIDL/VINTF 계약으로 만나는 지점으로 표시한다.

QCS6490 Platform Enablement Map

Build Partition Flow

DeviceAgent Peer Agent Topology

HAL DTS Driver Validation Flow

1. 회의에서 먼저 맞출 결론

항목 설명
현재 기준 플랫폼 Qualcomm QCS6490 계열 AOSP split tree. 작업 트리는 g13qcs6490/LA.QSSI.13.0.R1, g13qcs6490/LA.UM.9.14.1.R1
현재 제품 단계 A1 기준 platform vendor overlay, DeviceAgent, vendor HAL/service, init/sepolicy/DTS 일부가 이미 존재
기대 역할 AOSP 빌드 반영, system/system_ext 앱/권한, vendor HAL/service, init/VINTF/sepolicy, kernel module, DTS/driver 포팅까지 연결 관리
장기 방향 A2/next model에서도 동일한 구조를 재사용하되, 보드/센서/MCU/음성/로봇 제어 차이를 vendor layer에서 흡수
중요한 품질 기준 단순 빌드 성공이 아니라, 부팅 후 service 등록, Binder/HIDL 동작, SELinux denial 정리, 장치 노드/DTS/driver 정합성, OTA/릴리즈 산출물 검증

2. AOSP 풀 구조와 Platform Vendor 반영 방식

현재 workspace에는 Qualcomm split 구조가 존재한다.

SoC/
  g13qcs6490/
    LA.QSSI.13.0.R1/   # QSSI, system/system_ext 중심
    LA.UM.9.14.1.R1/   # UM/target, vendor/kernel/device 중심
  <qssi-vendor-overlay>/       # QSSI 쪽 platform vendor overlay
  <um-vendor-overlay>/         # UM 쪽 platform vendor overlay

platform vendor overlay는 단순히 폴더가 존재한다고 제품에 반영되지 않는다. QSSI/UM 각각의 AOSP tree 아래 vendor/<platform-vendor>로 배치되어야 product makefile에서 포함된다.

구분 현재 overlay AOSP 반영 위치 product include
QSSI <qssi-vendor-overlay>/ g13qcs6490/LA.QSSI.13.0.R1/vendor/<platform-vendor>/ device/qcom/qssi/qssi.mkvendor/<platform-vendor>/vendor.mk를 include
UM <um-vendor-overlay>/ g13qcs6490/LA.UM.9.14.1.R1/vendor/<platform-vendor>/ device/qcom/lahaina/lahaina.mkvendor/<platform-vendor>/vendor.mk를 include

운영 스크립트는 sync_vendor_overlay.sh다. 회의에서 업체에게는 “overlay 수정 -> vendor/<platform-vendor> 반영 -> QSSI/UM 분리 빌드 -> merge/package 검증” 흐름을 기준으로 설명하면 된다.

3. 레이어별 책임 범위

레이어 업체가 맡아야 할 일 현재 근거
Product/build orchestration build_project.sh, QSSI/UM lunch, dist, merge, package, version file, release artifact 관리 g13qcs6490/build_project.sh, docs/VENDOR_REPO_INTEGRATION_ANALYSIS.md
QSSI system/system_ext privileged app, permissions/sysconfig allowlist, HIDL interface definition, framework matrix, system properties <qssi-vendor-overlay>/vendor.mk, <qssi-vendor-overlay>/prebuilts/packages.mk, <qssi-vendor-overlay>/airbot/hardware/interfaces/*
System middleware/service app DeviceAgent, IotAgent, StartupService, UpdateAgent, VisionAgent, MCUAgent 등 system app/priv-app 패키징과 권한 정합성 <qssi-vendor-overlay>/prebuilts/packages/*, a1-packages/apps/*
UM vendor service vendor HAL service binary, vendor/bin/hw, vendor/etc/init, VINTF xml, vendor properties <um-vendor-overlay>/airbot/external/device_manager/service, <um-vendor-overlay>/airbot/init.airbot.rc
HAL contract vendor.<platform-vendor>.hardware.device_manager@1.0, soundflowservice@1.0 HIDL 계약, callback, service registration <qssi-vendor-overlay>/airbot/hardware/interfaces/*, <um-vendor-overlay>/airbot/external/*/service
Hardware backend MCU RS485, fan/thermal sysfs, serial/MAC persist file, Kardome/soundflow audio stack, OTA files <um-vendor-overlay>/airbot/external/device_manager/service, <um-vendor-overlay>/thirdparty/Kardome
SELinux/VINTF/init service domain, hwservice context, file context, init rc, device framework matrix 정합성 <um-vendor-overlay>/airbot/device/sepolicy/*, <um-vendor-overlay>/airbot/device_framework_matrix_vendor.xml
Kernel module/DTS/driver vendor kernel module inclusion, UART/RS485/device node 확인, board DTS include 관리, next-model board variation 반영 <um-vendor-overlay>/airbot/airbot.mk, g13qcs6490/LA.UM.9.14.1.R1/kernel/msm-5.4/arch/arm64/boot/dts/qcom/sc171L-evk/vendor-uart.dtsi
Release validation QSSI/UM 산출물, merged super/OTA, boot service, Binder/HIDL smoke, SELinux denial, device log evidence RELEASE/OTA, RELEASE/PKG, logcat/dmesg/avc evidence

4. DeviceAgent, 서비스 Agent, HAL 실행 흐름

현재 DeviceAgent source는 a1-packages/apps/DeviceAgent에 있고, 제품 이미지에는 QSSI/system 쪽 source package 또는 prebuilt privileged APK 흐름으로 반영될 수 있다. 제품 관점에서는 단순 앱이 아니라 외부 client API, peer agent binding, 상태/정책/event, HAL bridge를 묶는 product-level SystemServer/service hub다.

Client / DeviceControlAPI
  -> DeviceAgent IDeviceControl.sendModuleCommand(Bundle)
  -> MainApi / framework command / TaskManager / domain managers
  -> AMRAgent / IotAgent / UpdateAgent / PairingAgent / VisionAgent
  -> vendor.<platform-vendor>.hardware.device_manager@1.0 or soundflowservice@1.0
  -> vendor HAL service in /vendor/bin/hw
  -> MCU / SoundFlow / sysfs / DTS-backed device nodes

회의에서 확인해야 할 핵심은 업체가 Android app만 보거나 HAL만 보는 것이 아니라, 위 전체 경로를 장애 원인별로 추적할 수 있는지다.

기능군 확인 포인트
DeviceAgent boot/service privileged permission, boot receiver, IDeviceControl service, connectServices(), sysconfig allowlist
Peer agent binding AMR/IoT/Update/Pairing/Vision service action, AIDL, callback, bind 실패 log
DeviceManager HAL HIDL service 등록, VINTF manifest, callback null-safety, dlopen/dlsym backend binding
MCU/RS485 packet validation, queue/thread lifecycle, event callback, UART device node, timing drift
Fan/Thermal sysfs node 권한, sepolicy allow rule, thermal zone mapping, fan RPM calibration
OTA /mnt/data2/update/*FW.bin, normal/recovery state machine, result callback/report

5. 업무 흐름

권장 업무 흐름은 아래 순서다.

단계 산출물 업체 책임
1. Baseline bring-up QSSI/UM sync 상태, 빌드 옵션, 현재 boot log vendor/<platform-vendor> 반영 상태와 vendor.mk include 여부 확인
2. Source map 작성 app/service/HAL/driver/DTS/sepolicy map 수정 대상과 산출 partition을 먼저 구분
3. 변경 설계 API/HAL/DTS/sepolicy 영향표 system/system_ext/vendor/kernel 영향과 rollback 계획 작성
4. 구현 overlay, HAL/service, init, sepolicy, DTS/driver patch 작은 단위로 빌드 가능한 diff 유지
5. 분리 빌드 QSSI dist, UM target dist QSSI/UM 각각 실패 원인 분리
6. Merge/package merged target files, super/OTA, version file release artifact 생성과 버전 추적
7. Device validation logcat, dmesg, avc, service list, hwservicemanager, 기능 로그 부팅/서비스/HAL/MCU/센서/OTA 단위 evidence 제출
8. Handoff diff summary, risk list, test evidence, open issues 다음 모델에 재사용 가능한 구조로 문서화

6. A1에서 A2/next model로 넘어갈 때의 기대 역할

A2 이후 모델에서 플랫폼 벤더의 역할은 단순히 A1 파일을 다음 보드에 복사하는 것이 아니다. 제품 기능 확장, 기존 미들웨어/서비스 레이어 정리, SK-Intellix framework화, 장기 SDK화까지 이어지는 platform enablement 영역으로 본다.

영역 기대 역할 산출물 / 판단 기준
신규 기능 개발 A2/next model에서 추가되는 센서, MCU, 음성, vision, mobility, cleaning, connectivity 기능을 AOSP/BSP/HAL/DeviceAgent 경계에 맞춰 구현한다. 신규 HAL/service/interface 영향표, DeviceAgent 연동 설계, 실기기 기능 log, rollback 계획
기존 미들웨어/서비스 레이어 리팩토링 A1에 이미 존재하는 DeviceAgent, IotAgent, UpdateAgent, VisionAgent, StartupService, vendor service, init/sepolicy 구성을 다음 모델에서도 유지보수 가능한 구조로 정리한다. 특히 DeviceAgent로 상태/명령/callback 책임이 과도하게 중앙화된 부분을 풀고, 기기 상태와 자원 관리는 실제 기기/도메인 서비스가 담당한다는 ownership rule을 회복해야 한다. service map, state/resource ownership matrix, callback/event contract, package/include 정리, 권한/sysconfig/sepolicy 정합성, boot/service registration evidence
SK-Intellix Framework화 기존 기능들을 제품별 ad-hoc command가 아니라 DeviceAgent product service hub, TaskManager, domain manager, policy/state/event contract 기준으로 묶는다. DeviceAgent API/runtime contract, TaskManager reason/event/callback contract, framework command 표준화, domain별 acceptance checklist
장기 SDK화 내부 DeviceControlAPI와 Binder/Bundle 계약을 외부/협력업체가 안정적으로 사용할 수 있는 SDK surface로 단계적으로 포장한다. 후보 AAR/API spec, sample app, mock transport, versioning/deprecation 정책, Gradle test, release note

이 네 영역은 서로 분리된 프로젝트가 아니라 같은 전환 축이다. 신규 기능은 먼저 미들웨어/서비스 레이어에 들어오고, 반복되는 호출/상태/정책 패턴은 SK-Intellix Framework 계약으로 올라가며, 장기적으로는 협력업체와 앱 개발자가 쓰는 SDK surface로 정리된다.

현재 구조에서 특히 중요한 리팩토링 포인트는 DeviceAgent의 역할을 “모든 상태와 자원을 직접 소유하는 중앙 객체”가 아니라 “제품 기능의 service hub이자 command/callback broker”로 재정의하는 것이다. DeviceAgent는 외부 API 진입점, TaskManager, 정책/상태 snapshot, callback fan-out을 담당하되, 기기 상태의 source of truth와 자원 점유 판단은 AMR, IoT, vendor HAL/service, domain manager 등 실제 기기/도메인 owner가 책임지는 구조로 내려야 한다.

따라서 다음 모델로 넘어갈 때는 명령 실행 여부, busy/resource conflict, cancel/rollback, callback 완료 조건을 DeviceAgent 내부 ad-hoc 분기만으로 판단하지 않고, domain owner가 상태와 자원 lock을 보고 reason/event를 반환하는 계약으로 정리해야 한다. 이 정리가 되어야 SK-Intellix Framework화와 장기 SDK화가 단순 wrapper가 아니라 실제로 안정적인 platform API가 된다.

Android Platform Aligned SK-Intellix Framework Structure

이 구조가 구현되면 DeviceAgent는 제품 레벨의 SystemServer 역할, 즉 service hub와 command/callback broker 역할을 유지한다. 다만 상태 source of truth, 자원 lock, 실행 가능 여부, busy/reason 판단, callback 완료 조건은 AMR/IoT/Vision/Update 같은 domain owner가 판단한다. DeviceAgent는 command를 정규화해 domain owner로 라우팅하고, domain owner가 반환한 reason/event/callback을 표준 envelope로 fan-out한다.

구조적으로는 Android Developers의 Platform Architecture가 설명하는 System Apps -> Java API Framework -> Runtime/Native -> HAL -> Linux Kernel 흐름을 따라간다. SK-Intellix Framework는 Android Java API Framework를 대체하거나 우회하는 계층이 아니라, 그 옆에 붙는 제품 미들웨어 Framework다. 즉 외부 앱/클라우드/음성 진입점에는 DeviceManagerTask API facade, mobility/cleaning/perception 같은 domain facade를 제공하되, Android 자원은 Activity/Package/Resource/Notification/Connectivity/Media/Camera 등 Java API Framework와 Binder permission/lifecycle 규칙을 통해 사용해야 한다. callback은 독립된 상위 CallbackManager라기보다 EventBus와 task result contract가 담당하는 하위 결과/이벤트 전달 계약으로 보는 편이 자연스럽다.

DeviceAgentService는 Android의 system_server처럼 제품 레벨 서비스 허브 역할을 맡는다. 이 계층은 Binder 진입점, service registry, lifecycle, routing을 담당하되, 모든 실행을 직접 처리하지 않는다. 실행 중심은 TaskManager Core로 두고, goal-to-task decomposition, queue, priority, retry, timeout, cancellation, composite-command orchestration을 담당하게 한다. 그 아래 지원 계층에는 Safety/Policy, Resource, StateMirror, Event, CapabilityRegistry, Dispatcher를 두어 TaskManager가 domain owner로 내려가기 전에 안전성, 자원 충돌, 상태 mirror, 결과 이벤트, capability routing을 확인하게 한다. 단, StateMirror는 domain state의 semantic mirror/cache이지 실제 기기 상태의 source of truth가 아니다.

핵심은 Domain/Capability Manager 계층이다. 장기적으로 AI robotics 관점에서는 A2A/AI planner/voice가 raw command를 직접 HAL로 밀어 넣는 구조가 아니라, goal/command를 TaskManager에 제출하고 TaskManager가 mobility, cleaning, perception, system capability로 분해해 실행하는 구조가 되어야 한다. MobilityManager, CleaningManager, PerceptionManager, SystemManager 같은 domain manager가 실제 기기 상태의 owner가 되고, 각 manager가 canExecute(command, state, resourceLock), execute, cancel, rollback 계약을 가진다. DeviceAgentService와 TaskManager는 이 판단을 대신하지 않고, domain manager의 결과를 표준 reason/event/task-result로 정규화해 상위 API/SDK와 AI planner가 이해할 수 있는 evidence로 올린다.

따라서 리팩토링 산출물은 단순 클래스 분리가 아니라 state/resource ownership matrix, domain canExecute() 계약, reason/event/callback schema, HAL/service validation evidence까지 포함해야 한다. 이 기준이 있어야 다음 모델에서 신규 기능을 추가하더라도 DeviceAgent에 분기가 계속 누적되지 않고, framework/SDK surface로 올릴 수 있는 안정적인 플랫폼 계약이 된다.

7. 현재 확인된 리스크

리스크 의미 회의 액션
vendor/<platform-vendor> 미반영 시 빌드 영향 없음 overlay가 있어도 최종 image에 들어가지 않는다. sync/check 절차를 release gate로 둔다.
source/prebuilt 반영 경로 혼동 a1-packages source와 QSSI prebuilt overlay 중 실제 빌드에 들어가는 경로를 착각할 수 있다. PRODUCT_PACKAGES, prebuilts/packages.mk, build output의 system/priv-app을 함께 확인한다.
DeviceAgent 과중앙화 DeviceAgent가 상태 source of truth, 자원 점유 판단, callback 완료 조건까지 직접 소유하면 “기기 상태와 자원 관리는 기기가 담당한다”는 rule이 깨진다. state/resource ownership matrix를 만들고, domain owner가 busy/reason/event/callback을 반환하는 계약으로 리팩토링한다.
HAL callback null-safety와 thread lifecycle runtime crash/deadlock 가능성이 있다. vendor service 안정화 항목으로 분리한다.
sync() 주기 flush 비용 eMMC 수명/latency 영향 가능성이 있다. 실측 기반 조정 여부를 논의한다.
DTS/driver evidence 부족 현재 문서화는 일부 DTS include 확인 수준이다. 보드 bring-up 때 DTS/driver ownership을 명시한다.

8. 연결 문서

문서 용도
DeviceAgent / SoC Category SK-Intellix 실행 계층과 TaskManager 방향
SoC TaskManager Framework Cloud/MQTT/App/예약/로컬 음성을 DeviceAgent 실행 체계로 묶는 구조
Vendor Handoff 업체 구현 산출물과 인수 기준
Source and Evidence Catalog 이 위키가 기대는 source/test/evidence 색인

9. 회의용 한 문장

플랫폼 벤더에게 기대하는 역할은 QCS6490 AOSP/BSP/HAL 경계를 이해한 상태에서 신규 기능 개발, 기존 미들웨어/서비스 레이어 리팩토링, SK-Intellix Framework화, 장기 SDK화까지 이어지는 platform enablement를 책임지는 것이다.

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date