Hi, we are having problem using a 800x1280 MIPI-DSI panel with Android 9.0.
We have successfully driven this panel in the Yocto system. It works very well. But when we ported its driver to Android 9.0, the panel did not work properly. It doesn't show anything.
The device tree image is dtbo-imx8mm-mipi-panel.img.We looked at the log to make sure that the driver was loaded.The system generates /dev /graphics /fb0 node.
We used ADB for screenshots. The captured picture is as follows:
Could anyone provide any insight of how to fix this issue?
Thank you.
Hello Jinlong,
From the information you listed, I only know your MIPI pannel can normally work on Linux platform, which means it's driver is no problem. BUT we don't know where android run or stop.
So could you try your best to provide more information of your system?
For example, boot log on console, device tree , u-boot environment etc.
Have a nice day!
BR,
Weidong
Hi, Jinlong,
我感觉你好想烧写错了image,你检查一下!在我们开发板的DEMO image中,你可以比较列表里烧写的文件:
(I think you want to burn the wrong image. Check it! In demo image of our development board, you can compare the files burned in the list.)uuu-android-mx8mm-evk-emmc.lst中:
uuu_version 1.1.81
# uuu scripts for imx8mm Android maddev_pi9.0 eMMC
SDP: boot -f u-boot-imx8mm-evk-uuu.imx
# This command will be run when use SPL
SDPU: delay 1000
SDPU: write -f u-boot-imx8mm-evk-uuu.imx -offset 0x57c00
SDPU: jump
# This command will be run when ROM support stream mode
# SDPS: boot -f u-boot-imx8mm.imx
FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev 1
FB: ucmd mmc dev 1
FB[-t 600000]: flash gpt partition-table.img
FB: flash bootloader0 u-boot-imx8mm.imx
# erase environment variables of uboot
FB: ucmd mmc dev 1 0
FB: ucmd mmc erase 0x2000 8
FB: ucmd mmc partconf 1 0 1 0
FB: flash boot_a boot.img
FB: flash boot_b boot.img
FB[-t 100000]: flash system_a system.img
FB[-t 100000]: flash system_b system.img
FB: flash vbmeta_a vbmeta-imx8mm.img
FB: flash vbmeta_b vbmeta-imx8mm.img
FB: flash vendor_a vendor.img
FB: flash vendor_b vendor.img
FB: flash dtbo_a dtbo-imx8mm.img
FB: flash dtbo_b dtbo-imx8mm.img
# erase userdata and misc partition
FB[-t 600000]: ERASE userdata
FB: ERASE misc
FB[-t 100000]: ERASE presistdata
FB[-t 100000]: ERASE fbmisc
FB: done
Have a nice day!
BR,
weidong
The default firmware's display interface is DSI-HDMI(adv7535).But our display is LED panel(jd9366), so the device tree image we use is "dtbo-imx8mm-mipi-panel.img".
The uuu script is as follows:
uuu_version 1.2.68
SDP: boot -f u-boot-imx8mm-evb-uuu.imx
SDPU: delay 1000
SDPU: write -f u-boot-imx8mm-evb-uuu.imx -offset 0x57c00
SDPU: jump
SDPV: delay 1000
SDPV: write -f u-boot-imx8mm-evb-uuu.imx -skipspl
SDPV: jump
FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev 0
FB: ucmd mmc dev 0
FB: ucmd mmc erase 0x2000 0x8
FB: flash gpt partition-table-7GB.img
FB: ucmd setenv fastboot_dev sata
FB: ucmd setenv fastboot_dev mmc
FB: flash bootloader u-boot-imx8mm.imx
FB: flash dtbo_a dtbo-imx8mm-mipi-panel.img
FB: flash boot_a boot.img
FB: flash system_a system.img
FB: flash vendor_a vendor.img
FB: flash vbmeta_a vbmeta-imx8mm-mipi-panel.img
FB[-t 600000]: erase misc
FB[-t 600000]: erase presistdata
FB[-t 600000]: erase fbmisc
FB[-t 600000]: erase userdata
FB: done
OK! 由于我这里只能以I.MX8MM EVK为例来和你讨论,我们按照MIPI DSI显示的思路来理一下内核的deivce tree文件的使用顺序,然后你也对照一下自己的。
在内核和device tree中,无论I.MX8MM EVK使用DDR3L,DDR4还是LPDD4,那么板子的配置都是完全一样的。因为不同的板子上,只有内存类型不同。
在arch/arm64/boot/dts/freescale目录中,EVK有两种:DDR4_EVK和LPDDR4_EVK。另外的使用DDR3L的是validation板,这个验证板是不发布出来的。
所以,按照I.MX8MM EVK的device tree,使用MIPI DSI直接显示在OLED上,那么调用顺序是:
fsl-imx8mm-evk-rm67191.dts<------fsl-imx8mm-evk.dts<--------fsl-imx8mm.dtsi
所以,如果您的板子是参考EVK设计的,那么需要基于fsl-imx8mm-evk.dts上修改或者创建新的dts文件。
【English】
Because I can only take i.mx8mm evk as an example to discuss with you here, let's follow the Mipi DSI display idea to sort out the use order of the kernel's deivce tree file, and then you can also compare your own.
In the kernel and device tree, whether i.mx8mm evk uses ddr3l, DDR4 or lpdd4, the board configuration is exactly the same. Because on different boards, only memory types are different.
In the arch / arm64 / boot / DTS / Freescale directory, there are two kinds of evk: ddr4_evk and lpddr4_evk. In addition, the validation board that uses ddr3l is not released.
Therefore, according to the device tree of i.mx8mm evk, Mipi DSI is used to display directly on OLED. Then the calling sequence is:
fsl-imx8mm-evk-rm67191.dts<------fsl-imx8mm-evk.dts<--------fsl-imx8mm.dtsi
Therefore, if your board is designed with reference to evk, you need to modify or create a new DTS file based on fsl-imx8mm-evk.dts.
Have a nice day!
BR,
Weidong
感谢回复!
我们的设计是参考EVK来设计的,也是基于fsl-imx8mm-evk.dts创建新的dts文件,由于我们使用的是DDR3L内存,因而在命名上加上了ddr3l用以区别。对于DSI接口显示面板,我们的调用顺序也为:
fsl-imx8mm-ddr3l-evb-jd9366.dts <-- fsl-imx8mm-ddr3l-evb.dts <--fsl-imx8mm.dtsi
相应的设备树和内核在linux系统下是可以正常显示的,显示效果也很好。但移植到Android系统下就没有显示,查看了log,如之前回复,确认了面板驱动是已经被加载运行的。同时,通过adb调试工具,可以获取到上述的系统截图,这说明整个Android系统是可以正常运行的。同时,我们也测试了两个系统下DSI的信号、时钟、复位等波形,二者基本相同。
至于uboot环境变量,参考的是<Android_Quick_Start_Guide.pdf>,androidboot.primary_display=imx-drm.
是不是除了底层驱动需要移植外,还需要修改Android文件系统的相关配置?
或者,有没有Android dsi 适配的相关文档以供参考?
Hello Jinlong,
我和i.MX Expert team请教了这个问题,大家认为从目前的情况,很难看出来问题在哪里。如果可以的话,你是否可以请客户发一套板子和LCD屏到上海,请Expert team给找一下原因?
伟东
Hi Wigros:
当前调试的接线方式是Mini SAS转接至FFC,接线较为凌乱,不方便寄出去。后续改版后再考虑。
最后,非常感谢您的回复。