Attendee
場所
WebEx
日時
10/8(火) : 13:30 - 16:30
前回の確認
F2Fに向けた議論
TODO
進捗
F2F ミーティングの議事内容
https://wiki.automotivelinux.org/agl-distro/sep2019-f2f
9/24 Pre-meeting
目的 : Continental, Volkswagenのメンバとコンセプトの共有
- コンテナアーキの方向性を共有
- VolksWagen, Continental に方針を理解していただいた
- AutosarはCANに対して明確なSWスタックの実装を規定しているので、CANは外にマイコン(CAN Communicator) が必要
- CANの応答(reply)性能を守れるか、が大きな課題になる
- SocketCANはいつからKernelに入っているか?
- 4.14から入っている
9/25 Instrument Cluster EG Update
- 資料
- この資料をベースにAMMのキーノートを作成する
- ただし、デベロッパー向けの資料などは削除する
- AGLはyoctoを利用し、IVI Core Imageを作成している。クラスタのCore ImageはIVI Core Imageと異なる
- KernelのQM対応については、ELISAとコラボすることを伝えた
9/25 CES 2020
- 資料
- CES #3のデモにContainerを利用したデモ
- たにかわさん LEAD
9/26 Instrument Cluster Architecture
- 資料
- Container Architecture
- CAN
- 質疑
- Graphics
- 質疑
- Sound
- 質疑
- 1コンテナに複数のアプリがいたときはどのようにするのか? → 説明が足りていなかったので、Soundに追加しました。Sound
- Authenticationについてジョージから提案あり → Soundに追加しました。
- Pipewireを使う? → PulseかPipe、どちらでも可
- 質疑
AMMに向けた活動
Keynote
- Status
- 原木さんが発表する
- いつ??
- 話の流れは作成完了(原木さん)
- 山口さん、光成レビュー中
- 今後の流れ
- 議事
Session
- Status
- 山口さんが大枠を作成
- 3名が無理? → 2名 x 2セッションで発表する必要がある
- ToDo
CES2020?
- Status
- ToDo
Requirement EGとのコラボについて
- Requirement EG とのコラボ、どうなりますかね?
次回打ち合わせ
- 10/22 - 10/24 : All Member Meeting
ToDo
=== Appendix 9/12の議事 ====
F2Fに向けて
- 進め方の確認
- F2F@ベルリンでコンセプトを説明してキーメンバーに了承得る。その後、AMM-ABで報告を狙う。
- UCBではなく要素開発。現時点ではgerritにはコードを置かないことを伝える。
- アーキテクチャコンセプトレビュー
- 資料レビュ:light weight で用語統一
- Fast boot : 製品向けそのものではなく、今のAGLをどう軽量化すればよいかを示す。
- 作るのは主要機能部分。機能安全そのもの、isolation method部分 は対象外とすることをはっきり伝える。
- 将来的にSafety部分をLinuxで実現することもあるだろうが、今回の話題ではない。
- メインファンクションとしてのクラスタは作成。IVIとクラスタを共存させることはしない(相反する)
=>コンテナを使う。
- QM Isolation
- QM isolation に対応するkernel 部分の開発、対応が課題。Elisaで期待できないか。
- 一日目か二日目(AM)にクラスタのアーキの話をして、個別のアーキの話をする
- 資料レビュ:light weight で用語統一
- ToDo
- アーキテクチャの資料の修正(原木さん、山口さん、光成)
- 2日目(25日)の午前中にアーキテクチャの概要のセッションを実施する
- 詳細のアーキは2日目か3日目のAMにする
- 機能安全は初日の感触で。
- 9/18までに個別アーキテクチャを埋める → 全体の課題をまとめたConclusionを23日に作成する@ベルリン
- AGLを使ったとき、コンテナらどうなる?
- GUI
- アプリケーションコンテナでweston起動する(起動のやり方を記述する(アプリコンテナにすることでinitが変わる))
- dmabufの原因を調べる
- CAN
- CANに関わる主要要件をTier1, OEMで議論してCANの資料に載せる
- 進捗
- 機能安全と非機能安全の境界
- Interfaceの具体的なたたきだいを出す(原木さん、丸山さん、田口さん、光成)
- GUI
- Qemu環境でX11と waylandを動かしてみる(谷川さん)
- Containerだけだと少し扱いにくい
- X11を動かした。表示はできるが、このままでは開発には耐えられないので整備が必要(sshでコマンドを送っている)
- デフォルトでGPUアクセラレーションのセットアップができていない
- 原理的には動く
- コンテナマネジメントの方法を考えたい
- Qemuの方は開発環境(LXD)を整える方向で考える
- R-CARでコンテナ上でwaylandを動かしてみる(宗像さんと端山さんのところで相談してもらう)
- westonをコンテナで動かせていない(R-Car)
- x86環境
- Containerはdocker
- コンテナ外: driやXDG_RUNTIME_DIRをbindすれば動作した
- コンテナ内に入れると、いろいろ問題が出た
- input deviceやttyデバイスが見れないと起動できない
- R-Car
- LXCをcontainerとして使う
- driをbindすれば動作する
- ただし、/run/user/<userID>は変更する必要がある
- コンテナ内外GPUにアクセスすることは問題ない?
- GPUのシェアリングは可能
- コンテナに入れるのがClientだけだと専用ドライバ不要で問題ない
- udevが見えない
- アプリケーションコンテナを試す価値はあるかも
- 今はシステムコンテナで動かしており、いろいろ上書きされて何か悪さをしているのかも?
- システムコンテナは今後クラスタの機能を優先して入れるので、コンポジタはアプリケーションコンテナであるほうがよい
- システムコンテナでwestonが動かない
- weston初期化時にpvrモジュール内でdmabuf importに失敗している
- GPUは動いている
- ゴールのClusterでGPUをアクセスするケースがあるので、いずれシステムコンテナでGPUを触れる必要がある → 単独のglアプリが動くのか見てほしい
- GPUの制約を知りたい
- namespaceが絡んでそう
- Qemu環境でX11と waylandを動かしてみる(谷川さん)
- Yocto(山口さん)
- thudに変更した
- Sound
- まだ別コンテナから出力できていない
- pulseaudioのdomain socketのパスを変更することは可能なので、流せると思う
- pulseaudioがユーザセッションでしか起動できない
- CAN
- vcanで評価する環境を作成した
- CAN FDは必要か?
- 直受けは考えていない。Gatewayで間引かれた後で受ける
- CANのままではなく、serialで受ける
- イベントドリブンよりポーリングするほうが時間を守りやすい
- Linuxアプリからは/sys/fsにアクセスすれば加工されたデータがあるとよい
- packetでやると優先度管理や定常的にだれかデータを引き抜く必要がある(Realtimeを守るため、CPUが固定される?)
- 相手(RTOS or CANマイコン)側でStateを持って、shared memory をFIFOでシェア
- OSIモデルにならって3つくらいの階層に切って定義してみるのはどうか
- 演算系は外のRTOSで行い、抽象化されたデータを受け取るのがいいのかな、と思う
- 主要要件をCANの資料の中に記述する
- Tier1, OEMで議論する
- CANのデータのやり取りはOEMによって異なる
- たとえば生データでやり取りする、演算したデータを受ける
- Container Manager(光成)
- LXDについて調査した
- 指摘内容を修正して資料をConfluenceに置く
- 要件
- 整理中
- テスト方法も考え中
- アーキテクチャの資料の修正(原木さん、山口さん、光成)
次回打ち合わせ
- 10/8 webex
- もしF2Fで必要であれば、AMM会期中に行う
=== Appendix 8/28の議事 ====
議事
- 前回の資料の確認
- アーキテクチャコンセプト
- 分散型アーキテクチャの絵を追加
- 一番見せたいのは機能安全も含めた全体像ではなく、複数のシステムが同居していること。機能安全ソリューションがいると言いたいことがぼける
- 分散型アーキのページとProposalの間にワンクッション必要
- 機能安全ソリューションは、手段はいろいろある、程度でとどめる。機能安全の解決方法の例を追加(山口さん)
- 分散型アーキテクチャの絵を追加
- F2Fにおいて話す内容
- ある程度固まったアーキを話したい
- 何を開発する必要があるのか提案したい。
- Container Management
- QMをどうやって達成するか
- Document - 製品側はどうやって使っていくか、カスタマイズしていくか、というものが必要
- セッションは2つに分けたほうがいい。目的をクリアにしないと、手段が目的になりやすい
- どういう製品像を目指しているのかを紹介
- どういうふうに使いたいかを紹介する
- なぜIVIと同じ作り方だとダメなのか
- 経済的観点(機能拡張をすると検証工数が爆発する)
- システム要件(起動時間など)
- SDLなどはOTAなどでのアップデートが前提
- セキュリティが目的ではない
- より技術的な話は、興味を持った人で行う。Graphic, Soundなど、Containerの経験がある人と技術的ディスカッションがしたい
- どういう製品像を目指しているのかを紹介
進捗確認
- 機能安全と非機能安全の境界
- ライブラリのレベルでinterfaceを切ってみた
- kernel subsystemのレベルで吸収したほうがよいのではないか
- ブザーもASILの対象
- 「機能安全を達成する機能」と、「達成手段」は分けて考えたほうがよい
- 機能安全の方法は網羅的に出したほうがよいか?
- やりかたは各社それぞれ
- ライブラリのレベルでinterfaceを切ってみた
- 目標性能
- No update
- Sound
- CarPlayとAndroid Autoの経路の確認
- 構成図があるのでConfluenceにアップする
- レイテンシ要件が厳しい。
- Softwareで解決が難しい場合、SoCに性能達成を要求する必要がある
- 目標性能のみ記載する(NDAが絡むので、なぜそれくらい必要なのかは記載しない)
- Softwareでのノイズキャンセリング/エコーキャンセリングはPrivileged Containerに配置すると思うが、パスが多くて複雑
- パスは一つのサーバーに集約したほうがよい
- pulseaudioでの音声出力
- ユーザセッションでコンテナ内で起動、音声出力確認できた
- システムワイドで起動しない
- pulseaudioみたいなユーザで起動する
- コンテナ間通信をトライする。(domain socketの共有)
- ユーザセッションでコンテナ内で起動、音声出力確認できた
- CarPlayとAndroid Autoの経路の確認
- CAN
- Gatewayの使い方、性能
- no update
- LXCでCANを使えるようにする
- LXCでCANを配信可能
- Domain socket(コンテナ間の通信)はcontainer managerで設定してあげる必要がある。
- Readmeに記載する
- パスを空ける = そのパスを通じてコンテナ内の全アプリが外部アクセスできる。セキュリティ的に大丈夫?
- パスを空けないと通信できない
- セキュリティが必要であれば、カスケードできるものが必要。それは必須事項ではない。
- GUI
- Qemu環境でX11 or Westonを動かす
- no update
- R-Carでコンテナ上でwyalandを動かす
- まずデスクトップで、dockerを使って確認
- Docker Clientでhostのwestonと通信し、wayland clientを動かすことができることを確認した。
- LXCで動かしてみる
- まずデスクトップで、dockerを使って確認
- Qemu環境でX11 or Westonを動かす
- Gatewayの使い方、性能
- Yoctoのバージョン
- thudに変更する
- Container Manager
- リファレンス実装を作成する。製品ではオリジナルになる
- LXCを前提としたものにしたくない
- 機能がAPIやライブラリになっているほうがいい(westonとlibwestonみたいな関係)
- LXDを参考に、どのようなマネジメントが必要なのか整理する
TODO
- アーキテクチャコンセプト
- 機能安全ソリューションは、手段はいろいろある、程度でとどめる。機能安全の解決方法の例を追加(山口さん)
- 機能安全と非機能安全のインターフェイス
- 機能安全達成とinterfaceの絵を分ける、どういう機能が機能安全で必要なのか説明する絵が必要(光成)
- 要件整理(原木さん)
- 目標性能
- 全体アーキテクチャの整理(山口さん)
- 技術課題
- Sound
- CarPlayとAndroid Autoの構成図(日下部さん)
- Container間でSound出力を行う(光成)
- CAN
- Gatewayの使い方、性能(日下部さん)
- コンテナ間通信の方法をREADMEに追記(山口さん)
- GUI
- Qemu環境でLXC上でX11 or westonを起動(谷川さん)
- R-CarでwestonをLXC上で起動(黒川さんチーム)
- Container Manager
- LXDを参考に、どんなマネジメントが必要なのか整理する(光成)
- Sound
=== Appendix 8/8の議事 ====
- 機能安全について
- Incstrument Cluster System全体でASIL-Bをとるには、Linux側もQMを取得する必要がある
- OSS側と量産(機能安全)の時間軸が異なることが課題
- QMも機能安全の一部である
- 機能安全やQM(長時間, 量産)とアップデート可能部分(短時間の開発スパン, OSS, Linux)が同居できるシステムにする必要がある
- Monotithic Architecture
- アプリが死んだらリセットというプロセスになりがち
- スマホはモノリシックアーキテクチャだが、APIで分離(Binder)して、アプリケーションの独立性を高めている
- スマホは汎用コンピュータになっている
- 分散システム
- マルチOSにすることは実は難しい。ハードウェアの違いを吸収するためOSを変更したり、仮想化したり、課題が多い
- やりやすい方法がないか、ということで出たアイディアとしてコンテナ
- 垂直統合であればHypervisorは向いているが、自動車業界は同じレイヤーのソフトウェアに複数のベンダーがいる水平統合
- リアルタイム確保について
- そもそもリアルタイム確保をアプリケーションプロセッサで行うことについて議論すべき
- アプリケーションプロセッサでは時間を予測できない
- コンテナ
- 既存資産を利用しつつ、システムを作りたい
- glibcを使わない、という選択ができる
- 例えばQMが必要な領域に対しては小さいlibcを選ぶことで、検証工数を減らすことができる
- カーネルは選ぶしかない
- 組み込みに適したコンテナ
- サーバー系コンテナはネットワークとストレージしかサポートしていない
- ホットプラグ
- CAN
- 描画
- アプリケーションマネジメント
- メッセージ通信はdbusが一般的
- 今季はなんちゃってでいい
- システムコンテナとアプリコンテナの区別
- Hypervisorとの置き換えが容易
- できるだけアプリコンテナを増やし、ポータビリティを上げたい
- メモリ、ROMは消費する
- 性能要求
- 量産に耐えうるレベルの要求値を出してほしい
- Linuxを採用することに対して
- OSS≠コストダウン
- Sound Architecture
- 特権コンテナにサウンドサーバを置くアーキで合意
- 一方で、従来クラスタはIVIと関係なく音を出すことができる
- クラスタコンテナ専用の音が出せるようにデバイスのprivilegeを与えればよい
- pulseaudioを試す
- エコーキャンセリングなどはどうするか → 次回以降
- CAN
- Linux 4.12からGatewayの機構が入っている
- LXCがCAN GWを設定できないかもしれない → LXCを変更する必要があるか調査する
- CANのラベル
- メータは多くて50前後
- IVIは300 ~ 500くらい
- ルーティング
- 抽象化
- W3Cとか?
- 定義されているもの以上のラベルは競争領域
- W3Cとか?
- ライブラリ(libcan)で各アプリレベルで抽象化するようにしたい
- サーバーを作っても使われない
- First Stepとしてはライブラリがいいのではないか
- CとC++で作ってほしい
- AGL Container Profile
- 対象はHostのみ
- コンテナライフサイクルを管理するものが必要
- GUI
- Compositor
- 必要であればPrivileged コンテナで動作する
- Xでもwaylandでもどちらでもいい
- Containerアーキはそもそも取り換えられることがコンセプト
- SharedやIPCはコンテナで可能
- XはWindow Managerを分離できているが、Waylandはできない(統合されている)
- Chrome Browser
- Input
- 要検討
- Privilegedコンテナから配送するか?
- Home画面(ショートカット)はPrivileged?
- 機能はPrivileged
- HMIはApplication Container
- 9月末までにsimple-egl(GPUアプリ)をPrivilege経由で動かしてみる
- Compositor
- AMMでセッションを開きたい