Seamless switch between Android/Linux and M4 core using dpu on imx8qxp/qm.

cancel
Showing results for 
Search instead for 
Did you mean: 

Seamless switch between Android/Linux and M4 core using dpu on imx8qxp/qm.

Seamless switch between Android/Linux and M4 core using dpu on imx8qxp/qm.

This document is aimed to introduce seamless switch on rear view camera function in android P9 auto, and this can also be referenced for sharing dpu(display process unit) between A core and m4 core on imx8qxp/qm platform.

OS:

  • Android p9 auto beta. (linux needs some modifies).
  • SDK_2.5.1_MEK-MIMX8QX for m4 core.

Hardware platform:

  • imx8qxp/qm mek board
  • IT6263 lvds to hdmi cable.
  • max9286 deserializer board.
  • ov16035 camera.

Hardware block:

   pastedImage_7.png

Imx8qxp dpu block, for imx8qm there are two dpus:

   pastedImage_2.png

Android/Linux and M4 shared dpu path:

   pastedImage_9.png

The switch function is done by framegen0 unit in dpu, framegen unit can select 7 modes:

  • primary src only
  • second src only
  • primary on second
  • second on primary
  • .....etc.

for more details, please refer to the kernel codes at include/video/dpu.h, fgdm_t type.

Seamless switch booting flow:

pastedImage_11.png

Patches contain three main parts:

  1. Linux kernel: remove init or configure codes of dpu units and lvds used by m4 core, add ui ready rpmsg pipe.
  2. M4 code: modify dpu pipes, add ui ready rpmsg handle.
  3. AOSP init.rc scripts: add sending ui ready message scripts.
Attachments
Comments

添加这个patch后,modetest会白屏.

添加这个patch后,安卓侧的drm有哪些改变和限制?

目前补丁中安卓启动后,不会去回收分配配给m4的dpu资源,使用modetest要确定drm所用的dpu资源是否有冲突。

可否提供下,打上这个patch后,要成功运行modetest,需要加什么参数?

Please provide info below:

1: OS version, android or linux

2: What the drm_plane crtc you are using for modetest

3: What's the platform you are using, 8qxp/qm, and the display connection, different connection needs some modifies.

And modetest using drm/kms, and drm/kms only allows one master, if android has start ui, you can not use modetest at the same time.

1.kernel版本:4.14.78

2.modetest -P33@32:1280x720@XR24

3.8qxp  ldb0

4.执行完stop后,执行modetest -P33@32:1280x720@XR24显示不正常,停止后白屏,无法恢复.

"stop" may deinit the dpu and ldb, as mentioned this patch has removed some initializations of dpu and ldb from Android side since these functions have been initialized by the M4 core, you need to modify the codes this case.

问题是补丁已经从android中删除了dpu的初始化,这是一个巨大的变化。所以我们需要修改代码 myschoolbucks

你好,请问这个实在BETA版本验证的吧?如果在GA版本上面调整的话,需要额外修改什么吗?我看GA版本增加了比较严格的资源权限管理

seamless ui switch between m4 and AP on imx8qxp android ga.  try this, in android ga, it is impossible for m4 and a core to access dpu resource at the same time, so before switching to android ui, m4 will keep the last static frame.

Are there any specific document for DPU? Like what is the difference between fetchdecode/fetchlayer, etc.

And Can this patch use on kenerl 4.19.35 for linux OS?

Is there any patch for MIPI-DSI port?

Thank you!

Version history
Revision #:
1 of 1
Last update:
‎03-04-2019 04:09 AM
Updated by: