This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SK-AM62P-LP:与 Android Automotive 一起实现基于 R5F 的指示灯显示器(支持双显示)

Guru**** 2835775 points

Other Parts Discussed in Thread: AM62P

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1629420/sk-am62p-lp-implementing-r5f-based-telltale-display-alongside-android-automotive-dual-display-support

器件型号: SK-AM62P-LP
主题: AM62P 中讨论的其他器件

尊敬的团队:

 

SDK 版本: Android SDK v10.00.00 (Android 14)

内核: Cortex-A53 (AAOS)、Cortex-R5F(Telltale 应用)

我正在使用 AM62P 满足双显示器的要求。 我的目标是实现以下目标:

  1. Cortex-A53: 持续更新 Android Automotive OS (AAOS) 以驱动 LVDS 显示

  2. Cortex-R5F: 独立运行 指示灯应用程序 以驱动 HDMI 显示屏

我一直在以下位置查看 Android 源代码树中的 IPC 实现:vendor/ti/am62x/firmware/Android.bp(参考:git.ti.com)

 我需要在 R5F 内核上运行一个驱动 HDMI 显示屏的 Telltale 应用、而 A53 内核运行 Android Automotive、驱动 LVDS 显示屏。

  1. DSS 共享: 能否对 DSS 硬件进行分区、以便 R5F 拥有 HDMI 流水线、A53 同时拥有 LVDS 流水线?

  2. 引导顺序: 为了满足信号灯的汽车“快速引导“要求、如何加载 R5F 二进制文件? 位置  SPL (U-Boot) 或 远程处理 vendor-ti-am62xIPC 样片中看到的加载?

  3. 固件命名: 如果我使用 Androidfirmware/Android.bp 方法来包含二进制文件、Android 构建系统是否会自动处理 AM62P 上 HSM(硬件安全模块)所需的签名?

    请指导我完成此操作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Shanooj:

    请问 您为什么还在使用 SDK 10.0 (Android 14),而我们已经发布了基于 Android 16 的 SDK ?
    建议迁移到最新的 SDK。

    Linux + RTOS SDK 组合已经演示#1(DSS 共享)和#2(引导顺序)。 Android SDK 上不会复制此内容(组合 Android + RTOS SDK)。
    Android SDK 引导流程与 Linux 引导流程 R5 SPL -> A53 SPL -> A53 u-boot 类似。

    参考资料:
    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62PX/latest/exports/docs/api_guide_am62px/EXAMPLES_DRIVERS_DSS_DISPLAY_SHARE.html
    https://software-dl.ti.com/processor-sdk-
    Linux/ESD/AM62PX/11_02_08_02/exports/docs/linux/how_to_Guides/Target/How_to_enable_display_sharing_between_remotecore_and_Linux.html
    https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/11_02_08_02/exports/docs/linux/How_to_Guides/Target/How_to_boot_quickly.html


    #3(固件命名)-不理解问题?  作为构建过程的一部分、android.bp 只是将文件从供应商树复制到文件系统。


    此致、
    Vishal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Vishal Mahaveer 

    请问 您为什么还在使用 SDK 10.0 (Android 14)、而我们已经发布了基于 Android 16 的 SDK?
    建议移至最新的 SDK。

    我们当前的产品运行在  SDK 10.0 (Android 14) 上。

    我看到了此参考: 链接

    那么、如何管理 R5 Hold HDMI 显示和 A53 (Android) Hold LVDS 显示?

    链接 通过此更改、我 能够 将 HDMI 用于 R5。 如何将 A53 配置为 LVDS?

    #3(固件命名)-不理解问题?  作为构建过程的一部分、android.bp 只是将文件从供应商树复制到文件系统。

    我的意思是我需要 IPC 和 Telltales 应用程序。 文件系统中已有 IPC、我能够 通过 IPC 将消息从 A53 发送到 R5、但除此之外、我还需要将 Tellales 应用程序刷写到 R5 中。 我该怎么做?

    这是否像将 tellales 应用和 IPC 组合成一个输出文件 (.out) 并遵循与系统中相同的流程?  

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好, 维沙尔 Mahaveer 对此有任何建议吗?

    我已经检查了代码库。

    我可以在我的设备 2  Remoteproc 中看到:

    /sys/class/remoteproc/remoteproc0: 名称 79000000.r5f 并加载了固件 am62p-mcu-R5f0_0-fw  - mcu r5

    	mcu_r5fss0: r5fss@79000000 {
    		compatible = "ti,am62-r5fss";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x79000000 0x00 0x79000000 0x8000>,
    			 <0x79020000 0x00 0x79020000 0x8000>;
    		power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
    		status = "disabled";
    
    		mcu_r5fss0_core0: r5f@79000000 {
    			compatible = "ti,am62-r5f";
    			reg = <0x79000000 0x00008000>,
    			      <0x79020000 0x00008000>;
    			reg-names = "atcm", "btcm";
    			ti,sci = <&dmsc>;
    			ti,sci-dev-id = <9>;
    			ti,sci-proc-ids = <0x03 0xff>;
    			resets = <&k3_reset 9 1>;
    			firmware-name = "am62p-mcu-r5f0_0-fw";
    			ti,atcm-enable = <0>;
    			ti,btcm-enable = <1>;
    			ti,loczrama = <0>;
    			sram = <&mcu_ram>;
    			wakeup-source;
    		};
    	};

    /sys/class/remoteproc/remoteproc1:名为 78000000.r5f 且加载的固件显示为 未知。   - wkup r5:  

      

    wkup_r5fss0: r5fss@78000000 {
    		compatible = "ti,am62-r5fss";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges = <0x78000000 0x00 0x78000000 0x8000>,
    			 <0x78100000 0x00 0x78100000 0x8000>;
    		power-domains = <&k3_pds 119 TI_SCI_PD_EXCLUSIVE>;
    		status = "disabled";
    
    		wkup_r5fss0_core0: r5f@78000000 {
    			compatible = "ti,am62-r5f";
    			reg = <0x78000000 0x00008000>,
    			      <0x78100000 0x00008000>;
    			reg-names = "atcm", "btcm";
    			ti,sci = <&dmsc>;
    			ti,sci-dev-id = <121>;
    			ti,sci-proc-ids = <0x01 0xff>;
    			resets = <&k3_reset 121 1>;
    			firmware-name = "am62-wkup-r5f0_0-fw";
    			ti,atcm-enable = <1>;
    			ti,btcm-enable = <1>;
    			ti,loczrama = <1>;
    		};
    	};

    MCU R5 加载了固件:am62p-mcu-R5f0_0-fw、通过实现  

    TI-AOSP-14/VENDOR/ti/am62x/firmware/android.bp

    // ti-ipc firmware
    prebuilt_firmware {
        name: "am62p-mcu-r5f0_0-fw",
        vendor: true,
        src: "vendor/firmware/ti-ipc/am62p-mcu-r5f0_0-fw",
        proprietary: true,
    }

    使用 IPC 应用程序进行确认并验证是否能够刷写我的应用程序以进行 IPC 通信、可以使用此消息在 MCU R5 上写入。

    但我的要求是加载一个显示信号灯的显示应用。 已尝试用我的显示应用程序替换输出文件。  

    但所有可用的显示共享应用程序都适用于 wkupR5。

    我想知道将其保留在 wkupR5 中的原因是什么、是否可以在 mcuR5 中刷写?

    和中  

    wkup_r5fss0_core0r5f@78000000 我可以看到它正在加载。 “am62-wkup-R5f0_0-fw",“,在、在检查 ttyUSB2 上的 minicom 日志时、其确认已加载 IPC 应用程序。
    如何将 IPC 应用替换为 DSS 应用程序以在 HDMI 屏幕上显示信号灯?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Shanooj:
    我们尚未在同一 DSS 中验证单独的 VP 共享、即使使用 Linux 也是如此、并且尚未在 Android 上测试显示共享。
    根据在同一内核上运行 2 个应用程序的 RTOS 查询、您需要创建一个单独的应用、使这 2 个应用程序具有单独的任务、并管理两者之间的任何优先级资源冲突。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Divyansh Mittal 

    好的。

    根据在同一内核上运行 2 个应用程序的 RTOS 查询 IPC+DSS、您需要创建一个单独的应用程序、使这 2 个应用程序具有单独的任务、并且还管理两者之间的任何优先级和资源冲突。

    是的。

    还有几个问题:

    1.我们可以将 DSS 应用添加到 MCU R5 中而不是 wkupR5 中吗?

    2.在 Android 的情况下,我们是否需要在 Android 端启用 DSS ? 如果没有启用它、如果我从 Android 内核禁用 HDMI 并通过 HDMI 配置从 MCU R5 运行 Display 应用程序、它会工作吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Shanooj:

    是的、您可以查看我们在 DM-R5 中的实现方式来在 MCU-R5 上实现 DSS。  

    如果您希望同时启用 Android 的 DSS0 和 DSS1、您应该能够修改内核以支持它。 但正如我的同事 Divyansh 提到的显示共享尚未测试 Android。  

    您能否让我们了解一下您使用 Android 进行的设计、以及远程内核的用途是什么?

    此致

    Suren

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Suren Porwar 

    [引述 userid=“533957" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1629420/sk-am62p-lp-implementing-r5f-based-telltale-display-alongside-android-automotive-dual-display-support/6286333

    是的、您可以查看我们在 DM-R5 中的实现方式来在 MCU-R5 上实现 DSS。  

    [/报价]

    您是否有任何示例或样片?

    您能告诉我们您的 Android 设计以及远程内核的用途吗?

    我计划用于计划书的远程内核。
    目前、我们在 LVDS 上安装了 Android (AaOS)。

    我计划将 MCU-R5 连接到 HDMI。 想办法做到这一点吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:
    感谢您的查询。 有关专家因** TI 印度**假期而离职。
    请预计响应会延迟。 感谢您的耐心和理解。

    此致、
    TI E2E 支持团队
    ——
    *这是一个自动通知。*

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Shanooj:

    您是否有任何示例或样片?

    E2E 社区的一位工程师在  AM62P 上分享了他们的补丁:在 MCU R5F (AM62Px MCU+ SDK 11.02.00) 上运行 DSS Display Share 示例 、但请注意、我们不能支持此用例。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Divyansh Mittal :

    已尝试此项并能够在 MCU R5 中添加显示应用。

    并使用 android.bp 文件刷写了图像、然后能够在 LVDS 显示屏中启动显示应用程序。 但在这种情况下、Android 无法引导(注意:我尚未启用 k3-am62p5-sk-dss-shared-mode.dtso) 。

    日志:  

    Verify GPT: success!
    Loading Android boot partition...
    switch to partitions #0, OK
    mmc0(part 0) is current device
    misc partition number:0x3
    ANDROID: Invalid CRC-32 (expected 807077e9, found 00000000),re-initializing A/B metadata.
    ANDROID: Attempting slot a, tries remaining 7
    ANDROID: Booting slot: a
    A/B cmdline addition: androidboot.slot_suffix=_a
    Running without AVB...
    
    MMC read: dev # 0, block # 29696, count 81920 ... 81920 blocks read: OK
    
    MMC read: dev # 0, block # 193536, count 65536 ... 65536 blocks read: OK
    Preparing FDT...
      Reading DTB for am62px...
    Working FDT set to 88000000
    
    MMC read: dev # 0, block # 357376, count 16384 ... 16384 blocks read: OK
      Applying DTBOs...
    Running Android...
    ## Booting Android Image at 0x82000000 ...
    Kernel load addr 0x92000000 size 16888 KiB
    Kernel extra command line: androidboot.selinux=enforcing uvcvideo.quirks=128 console=ttyS2,115200 cma=768M 8250.nr_uarts=10 androidboot.lcd_density=213 video=HDMI-A-1:1920x120g
    RAM disk load addr 0xe9000000 size 16849 KiB
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
       Uncompressing Kernel Image
       Loading Ramdisk to 8ef8b000, end 8ffff1ce ... OK
       Loading Device Tree to 000000008ef78000, end 000000008ef8a7b6 ... OK
    Working FDT set to 8ef78000
    
    Starting kernel ...
    
    [    0.446904][   T75] BPF:     Invalid name_offset:2363296
    [    0.466175][   T76] omap-mailbox 29020000.mailbox: no available mbox devices found
    [    0.466218][   T76] omap-mailbox 29030000.mailbox: no available mbox devices found
    [    0.483163][   T83] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
    [    0.487068][   T83] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
    [    0.487106][   T83] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
    [    0.487255][   T83] debugfs: Directory 'pd:244' with parent 'pm_genpd' already present!
    [    0.487421][   T83] debugfs: Directory 'pd:186' with parent 'pm_genpd' already present!
    [    0.832126][    T1] init: Failed to copy /avb into /metadata/gsi/dsu/avb/: No such file or directory
    [    1.828160][    T1] init: [libfs_avb] Invalid hash size: 
    [    1.833644][    T1] init: [libfs_avb] Failed to verify vbmeta digest
    [    1.895184][    T1] logwrapper: Cannot log to file /dev/fscklogs/log
    [    1.899969][  T134] logwrapper: executing /system/bin/e2fsck failed: No such file or directory
    [    1.901600][    T1] logwrapper: 
    [    1.910181][  T134] logwrapper: 
    [    2.159979][    T1] init: Could not update logical partition
    [    2.166086][    T1] init: Could not update logical partition
    [    2.176466][    T1] init: Failed to open package /system/etc/selinux/apex/SEPolicy.zip: No such file or directory
    [    2.424942][    T1] selinux: SELinux:  Could not stat /dev/selinux: No such file or directory.
    [    2.567946][    T1] init: Do not have permissions to set 'ro.vecv.model' to 'Luminara' in property file '/vendor/build.prop': SELinux permission check failed
    [    2.582603][    T1] init: Do not have permissions to set 'persist.device_config.activity_manager_native_boot.offload_queue_enabled' to 'false' in property file '/vendor/buid
    [    2.634001][    T1] selinux: SELinux: Could not set context for /dev/block/mmcblk0p15:  Permission denied
    [    2.634100][    T1] selinux: SELinux: Could not set context for /dev/block/mmcblk0p13:  Permission denied
    [    2.653285][    T1] selinux: SELinux: Could not set context for /dev/block/mmcblk0p9:  Permission denied
    [    2.674015][    T1] selinux: SELinux: Could not get canonical path for /metadata/ota/rollback-indicator restorecon: No such file or directory.
    [    2.686946][    T1] selinux: SELinux:  Could not stat /metadata/gsi: No such file or directory.
    [    2.993830][  T140] apexd: Failed to scan /system_ext/apex : Can't open /system_ext/apex for reading : No such file or directory
    [    3.005641][  T140] apexd: Failed to scan /product/apex : Can't open /product/apex for reading : No such file or directory
    [    3.016860][  T140] apexd: Failed to scan /vendor/apex : Can't open /vendor/apex for reading : No such file or directory
    [    3.082844][  T142] ueventd: LoadWithAliases was unable to load of:Nl2-cache0T(null)Ccache
    [    3.087243][  T144] ueventd: LoadWithAliases was unable to load platform:ti-cpufreq
    [    3.092014][  T142] ueventd: LoadWithAliases was unable to load platform:snd-soc-dummy
    [    3.092443][  T143] ueventd: LoadWithAliases was unable to load of:Nregulator-30T(null)Cregulator-fixed
    [    3.093786][  T143] ueventd: LoadWithAliases was unable to load of:NpsciT(null)Carm,psci-1.0
    [    3.094277][  T143] ueventd: LoadWithAliases was unable to load platform:Fixed MDIO bus
    [    3.095794][  T143] ueventd: LoadWithAliases was unable to load of:Ncan-phy3T(null)Cti,tcan1042
    [    3.097198][  T143] ueventd: LoadWithAliases was unable to load of:NtimerT(null)Cti,am654-timer
    [    3.098385][  T143] ueventd: LoadWithAliases was unable to load of:NbusT(null)Csimple-bus
    [    3.100558][  T144] ueventd: LoadWithAliases was unable to load of:Nregulator-0T(null)Cregulator-fixed
    [    3.101863][  T144] ueventd: LoadWithAliases was unable to load of:NsramT(null)Cmmio-sram
    [    3.106657][  T145] ueventd: LoadWithAliases was unable to load platform:reg-dummy
    [    3.108143][  T142] ueventd: LoadWithAliases was unable to load of:NledsT(null)Cgpio-leds
    [    3.126677][  T142] ueventd: LoadWithAliases was unable to load of:NtimerT(null)Cti,am654-timer
    [    3.135952][  T145] ueventd: LoadWithAliases was unable to load of:Nregulator-2T(null)Cregulator-fixed
    [    3.172859][  T145] ueventd: LoadWithAliases was unable to load of:NbusT(null)Csimple-bus
    [    3.182498][  T143] ueventd: Cannot get SELinux label on '/dev/block/mmcblk0p13' device: Permission denied
    [    3.182668][  T143] ueventd: Cannot chown /dev/block/mmcblk0p13 0 4294967295: Permission denied
    [    3.198114][  T143] ueventd: LoadWithAliases was unable to load of:NbusT(null)Csimple-bus
    [    3.204540][  T145] ueventd: LoadWithAliases was unable to load of:Ndss-oldi-io-ctrlT(null)Csyscon
    [    3.247337][  T145] ueventd: Cannot get SELinux label on '/dev/block/mmcblk0p15' device: Permission denied
    [    3.247458][  T145] ueventd: Cannot chown /dev/block/mmcblk0p15 0 4294967295: Permission denied
    [    3.261675][  T145] ueventd: LoadWithAliases was unable to load of:NtimerT(null)Cti,am654-timer
    [    3.304121][  T143] ueventd: LoadWithAliases was unable to load of:NbusT(null)Csimple-mfd
    [    3.306046][  T145] ueventd: LoadWithAliases was unable to load of:NtimerT(null)Cti,am654-timer
    [    3.309722][  T144] pinctrl-single f4000.pinctrl: pin PIN45 already requested by 20020000.i2c; cannot claim for 20711000.can
    [    3.309736][  T144] pinctrl-single f4000.pinctrl: pin-45 (20711000.can) status -22
    [    3.309744][  T144] pinctrl-single f4000.pinctrl: could not request pin 45 (PIN45) from group main-mcan1-pins-default  on device pinctrl-single
    [    3.309751][  T144] m_can_platform 20711000.can: Error applying setting, reverse things back
    [    3.311048][  T144] ueventd: LoadWithAliases was unable to load mmc:block
    [    3.320557][  T144] ueventd: Cannot get SELinux label on '/dev/block/mmcblk0p9' device: Permission denied
    [    3.320676][  T144] ueventd: Cannot chown /dev/block/mmcblk0p9 0 4294967295: Permission denied
    [    3.337665][  T145] ueventd: LoadWithAliases was unable to load of:NtimerT(null)Cti,am654-timer
    [    3.354263][  T145] ueventd: LoadWithAliases was unable to load of:NbusT(null)Csimple-bus
    [    3.364974][  T142] ueventd: LoadWithAliases was unable to load of:Ndma-controllerT(null)Cti,am64-dmss-bcdma
    [    3.421636][  T145] ueventd: LoadWithAliases was unable to load usb:v1D6Bp0002d0601dc09dsc00dp01ic09isc00ip00in00
    
    CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.8 | VT102 | Offline | ttyUSB0                                                                                                 
    
    

    我已经在启用 k3-am62p5-sk-dss-shared-mode.dtso 后进行了尝试 (将 dtso 更改与 k3-am62p5-sk.dts 结合)。 在这种情况下、MCU R5 和 A53 Android 也无法正常工作。

    日志:

    Hi  Divyansh Mittal (7481571) ,
    
    Tried this already and was able to bring the display app in MCU R5.
    
    And flashed the image using the Android.bp file, and it's able to bring up the display app in the LVDS display. but android is not booting in this case (Note: I have not enabled the k3-am62p5-sk-dss-shared-mode.dtso).
    
    Log: 
    
    Verify GPT: success!
    Loading Android boot partition...
    switch to partitions #0, OK
    mmc0(part 0) is current device
    misc partition number:0x3
    ANDROID: Invalid CRC-32 (expected 807077e9, found 00000000),re-initializing A/B metadata.
    ANDROID: Attempting...Code
    
    
    
    And I have tried after enabling k3-am62p5-sk-dss-shared-mode.dtso (combining the dtso changes with k3-am62p5-sk.dts). In this scenario, both MCU R5 and A53 Android are also not working: 
    
    Log:
    
    

    在这两种情况下、IPC 程序都加载到 WKUP R5 中。  

    您能检查一下吗?


    如何将我的程序写入 WKUP R5 ?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Shanooj:
    在您的情况下、MCUR5 和 Android 之间可能存在一些资源争用、因此可能无法启动、但如前所述、这还不是已测试的用例、我们无法提供太多帮助。

    [引述 userid=“648186" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1629420/sk-am62p-lp-implementing-r5f-based-telltale-display-alongside-android-automotive-dual-display-support/6292595
    如何将程序写入 WKUP R5

    与刷写到 MCU R5 中的方式相同。 您需要修改刷写时所用的引导加载程序配置文件中使用的 DM 映像。