[imx6 ]Android4.4.3--surfaceflinger导致系统起不来,ldb显示问题

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[imx6 ]Android4.4.3--surfaceflinger导致系统起不来,ldb显示问题

Jump to solution
6,313 Views
qg
Contributor II

急!!!!!!好几天了,求指教!

我们板子参照sabresd设计的。之前使用系统android4.2.2,现在移植官网BSP android4.4.3

目前surfaceflinger导致系统启动失败。一直打印如下红色显示的信息。

request_suspend_state: wakeup (3->0) at 7437213333 (1970-01-01 00:00:04.592911333 UTC)

130|root@sabresd_6dq:/ # request_suspend_state: wakeup (0->0) at 956991823113 (1970-01-01 00:15:54.147520447 UTC)

init: untracked pid 6193 exited

request_suspend_state: wakeup (0->0) at 961401889447 (1970-01-01 00:15:58.557587114 UTC)

init: untracked pid 6221 exited

uboot环境变量设置setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:dev=off video=mxcfb2ff video=mxcfb3ff vmalloc=400M androidboot.console=ttymxc0 consoleblank=0 androidboot.hardware=freescale cma=384M androidboot.serialno=110ea1d4df646307

Logcat中:

I/SurfaceFlinger(  119): SurfaceFlinger is starting

I/SurfaceFlinger(  119): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...

D/libEGL  (  119): loaded /system/lib/egl/libEGL_VIVANTE.so

D/libEGL  (  119): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so

D/libEGL  (  119): loaded /system/lib/egl/libGLESv2_VIVANTE.so

I/imx6.gralloc(  119): fb_device_open dispid:0, fb:0

I/imx6.gralloc(  119): 32bpp setting of Framebuffer with RGBA8888 format!

W/imx6.gralloc(  119): using (fd=18)

W/imx6.gralloc(  119): id           = DISP3 BG - DI1

W/imx6.gralloc(  119): xres         = 1024 px

W/imx6.gralloc(  119): yres         = 768 px

W/imx6.gralloc(  119): xres_virtual = 1024 px

W/imx6.gralloc(  119): yres_virtual = 2304 px

W/imx6.gralloc(  119): bpp          = 32

W/imx6.gralloc(  119): r            =  0:8

W/imx6.gralloc(  119): g            =  8:8

W/imx6.gralloc(  119): b            = 16:8

W/imx6.gralloc(  119): width        = 163 mm (159.568100 dpi)

W/imx6.gralloc(  119): height       = 122 mm (159.895081 dpi)

W/imx6.gralloc(  119): refresh rate = 60.01 Hz

I/FslHwcomposer(  119): using fsl hwc!!!

I/FslHwcomposer(  119): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**),553

I/FslHwcomposer(  119): using fsl hwc!

I/FslHwcomposer(  119): fb0 is ldb

I/FslHwcomposer(  119):  device

I/FslHwcomposer(  119): fb1 is overlay device

W/FslHwcomposer(  119): open /sys/class/graphics/fb2 failed

W/FslHwcomposer(  119): open /sys/class/graphics/fb3 failed

W/FslHwcomposer(  119): open /sys/class/graphics/fb4 failed

W/FslHwcomposer(  119): open /sys/class/graphics/fb5 failed

I/FslHwcomposer(  119): hwcomposer: open framebuffer fb0

由于新内核使用dts。我跟Android4.2.2的内核相比较如下:

1、4.4.3时,使用LVDS接口,不知道是不是这么配置就可以了????

①kernel_imx/arch/arm/boot/dts/imx6qdl-sabresd.dtsi

mxcfb1: fb@0 {

        compatible = "fsl,mxc_sdc_fb";

        disp_dev = "ldb";

        interface_pix_fmt = "RGB666";

        mode_str ="1024x600M@60";

        default_bpp = <32>;

        int_clk = <0>;

        late_init = <0>;

        status = "okay";

    };

2、4.2.2时,我们使用LVDS接口,值修改添加了两个文件,是OK的。

①kernel_imx/drivers/video/mxc/ldb.c

②kernel_imx/arch/arm/mach-mx6/board-mx6q_sabresd.c

  在board-mx6q_sabresd.c文件中添加BT101IW01模式,如下:

{ /*fb0*/

    .disp_dev = "ldb",

    .interface_pix_fmt = IPU_PIX_FMT_RGB666,

    .mode_str = "BT101IW01",

    .default_bpp = 32,

    .int_clk = false,

    .late_init = false,

    },

Labels (2)
0 Kudos
1 Solution
1,428 Views
qg
Contributor II

非常感谢您的回复!

kernel中打开gpu导致系统启动失败是由于,我们没有使用电源管理的芯片,dts中跟gpu、vpu相关的电压设置采用了原来的导致的。将相应的pu-supply = <&reg_pu>;全部设置成<&reg_pu>,就OK了,ldb显示也OK了。主要对dts中很多参数不理解。

View solution in original post

0 Kudos
7 Replies
1,428 Views
huangkc
Contributor I

我跟你碰到同样的问题啊,将相应的pu-supply = <&reg_pu>;全部设置成<&reg_pu>,你这里说得不清楚,具体是怎么改的?

0 Kudos
1,428 Views
BiyongSUN
NXP Employee
NXP Employee

If you are using the discrete power supply. You need to  use the i.MX6 internal PMU rather than hard coding a code.

That will make system unstable.

In the default build, it uses the ldo bypass dts(mx6q-sabresd.dts), which will bypass the internal LDO in PMU.

Basically, the discrete power supply need the internal PMU to help. It should use the imx6q-sabresd-ldo.dts.

9 #include "imx6q-sabresd.dts"

10

11 &cpu0 {

12         arm-supply = <&reg_arm>;

13         soc-supply = <&reg_soc>;

14 };

15

16 &gpc {

17         /* use ldo-enable, u-boot will check it and configure */

18         fsl,ldo-bypass = <0>;

19         /* watchdog select of reset source */

20         fsl,wdog-reset = <1>;

21 };

22

23 &wdog1 {

24         status = "okay";

25 };

26

27 &wdog2 {

28         status = "disabled";

29 };

~

0 Kudos
1,428 Views
jimmychan
NXP TechSupport
NXP TechSupport

So, have you try mode_str ="BT101IW01" ?

0 Kudos
1,428 Views
qg
Contributor II

Thank you for your suggestion。

In Android4.2.2,“BT101IW01"  is wrote in "kernel_imx/arch/arm/boot/dts/imx6qdl-sabresd.dtsi".But in Android4.4.3, I have no write in dts.

Now,I modify "arch/arm/boot/dts/imx6qdl-sabresd.dtsi", as follows:

&ldb {

    status = "okay";

    lvds-channel@0 {

        fsl,data-mapping = "spwg";

        fsl,data-width = <18>;

        status = "okay";

        display-timings {

            native-mode = <&timing0>;

            timing0: hsd100pxn1 {

                clock-frequency = <48653926>;

               hactive = <1024>;

                vactive = <600>;

                hback-porch = <220>;

                hfront-porch = <40>;

                vback-porch = <21>;

                vfront-porch = <7>;

                hsync-len = <60>;

                vsync-len = <10>;

            };

        };

    };

when boot in kernel,I can see the two Penguin .Then boot android,I can see "Android_" a little while。(android启动时我可以看到android字体几秒,然后就无显示了)

The logcat as follow:

NOTE : "F/SurfaceFlinger(  118): no suitable EGLConfig found, giving up"

Do you have some suggestion?Thank you very mach.

I/OrionSvc(  129): Enter control_ipc thread

D/libEGL  (  118): loaded /system/lib/egl/libEGL_VIVANTE.so

D/libEGL  (  118): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so

D/libEGL  (  118): loaded /system/lib/egl/libGLESv2_VIVANTE.so

I/imx6.gralloc(  118): fb_device_open dispid:0, fb:0

I/imx6.gralloc(  118): 32bpp setting of Framebuffer with RGBA8888 format!

W/imx6.gralloc(  118): using (fd=18)

W/imx6.gralloc(  118): id           = DISP3 BG - DI1

W/imx6.gralloc(  118): xres         = 1024 px

W/imx6.gralloc(  118): yres         = 600 px

W/imx6.gralloc(  118): xres_virtual = 1024 px

W/imx6.gralloc(  118): yres_virtual = 1824 px

W/imx6.gralloc(  118): bpp          = 32

W/imx6.gralloc(  118): r            =  0:8

W/imx6.gralloc(  118): g            =  8:8

W/imx6.gralloc(  118): b            = 16:8

W/imx6.gralloc(  118): width        = 163 mm (159.568100 dpi)

W/imx6.gralloc(  118): height       = 95 mm (160.421051 dpi)

W/imx6.gralloc(  118): refresh rate = 56.74 Hz

I/mediaserver(  121): ServiceManager: 0x7724b470

I/AudioFlinger(  121): Using default 3000 mSec as standby time.

I/CameraService(  121): CameraService started (pid=121)

I/FslHwcomposer(  118): using fsl hwc!!!

I/FslHwcomposer(  118): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**),553

I/FslHwcomposer(  118): using fsl hwc!

I/FslHwcomposer(  118): fb0 is ldb

I/FslHwcomposer(  118):  device

I/FslHwcomposer(  118): fb1 is overlay device

W/FslHwcomposer(  118): open /sys/class/graphics/fb2 failed

W/FslHwcomposer(  118): open /sys/class/graphics/fb3 failed

W/FslHwcomposer(  118): open /sys/class/graphics/fb4 failed

W/FslHwcomposer(  118): open /sys/class/graphics/fb5 failed

I/FslHwcomposer(  118): hwcomposer: open framebuffer fb0

I/imx6.gralloc(  118): fb_device_open dispid:0, fb:0

I/imx6.gralloc(  118): display already initialized...

I/FslHwcomposer(  118): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**),426

I/SurfaceFlinger(  118): Using composer version 1.3

W/SurfaceFlinger(  118): no suitable EGLConfig found, trying a simpler query

F/SurfaceFlinger(  118): no suitable EGLConfig found, giving up

F/libc    (  118): Fatal signal 6 (SIGABRT) at 0x00000076 (code=-6), thread 118 (surfaceflinger)

I/CameraService(  121): Loaded "Freescale CameraHal Module" camera module

I/FslCameraHAL(  121): Face Back Camera is ov5640_mipi, orient is 0

I/FslCameraHAL(  121): Face Front Camera is uvc,ov5642_camera,ov5640_camera, orient is 0

I/FslCameraHAL(  121): Checking the camera ov5640_mipi

I/FslCameraHAL(  121): Checking the camera uvc

I/FslCameraHAL(  121): Checking the camera ov5642_camera

I/FslCameraHAL(  121): Checking the camera ov5640_camera

I/AudioPolicyManagerBase(  121): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf

W/audio_hw_primary(  121): card 0, id sgtl5000audio ,driver sgtl5000-audio, name sgtl5000-audio

W/audio_hw_primary(  121): out rate 44100

I/DEBUG   (  117): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG   (  117): Build fingerprint: 'Freescale/qseven_6dq/qseven_6dq:4.4.3/2.0.0-rc2/20150123:user/dev-keys'

I/DEBUG   (  117): Revision: '0'

I/DEBUG   (  117): pid: 118, tid: 118, name: surfaceflinger  >>> /system/bin/surfaceflinger <<<

I/DEBUG   (  117): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------

I/DEBUG   (  117):     r0 00000000  r1 00000076  r2 00000006  r3 00000000

I/DEBUG   (  117):     r4 00000006  r5 00000002  r6 00000076  r7 0000010c

I/DEBUG   (  117):     r8 00000001  r9 7754e52c  sl 00000001  fp 7ecd49ec

I/DEBUG   (  117):     ip 77591e80  sp 7ecd44a0  lr 76e750bd  pc 76e84088  cpsr 000f0010

I/DEBUG   (  117):     d0  0000000000000000  d1  0000000000000000

I/DEBUG   (  117):     d2  43206bc7431f9168  d3  0000000000000000

I/DEBUG   (  117):     d4  481ca94342be0000  d5  44800000000272a5

I/DEBUG   (  117):     d6  000272a546cb3333  d7  447a0000481ca940

I/DEBUG   (  117):     d8  0000000000000000  d9  0000000000000000

I/DEBUG   (  117):     d10 0000000000000000  d11 0000000000000000

I/DEBUG   (  117):     d12 0000000000000000  d13 0000000000000000

I/DEBUG   (  117):     d14 0000000000000000  d15 0000000000000000

I/DEBUG   (  117):     d16 3fc99b8000000000  d17 4010ccdc00000000

I/DEBUG   (  117):     d18 408f400000000000  d19 0000000000000000

I/DEBUG   (  117):     d20 4016b26180000000  d21 404c5ef9e0000000

I/DEBUG   (  117):     d22 0000000000000000  d23 0000000000000000

I/DEBUG   (  117):     d24 0000000000000000  d25 0000000000000000

I/DEBUG   (  117):     d26 404c5ef9e0000000  d27 0000000000000000

I/DEBUG   (  117):     d28 0000000000000000  d29 0000000000000000

I/DEBUG   (  117):     d30 0000000000000000  d31 4000000000000000

I/DEBUG   (  117):     scr 20000010

0 Kudos
1,427 Views
qg
Contributor II

I close the GPU in kernel。

when I open GPU in kernel。Boot kernel will be failed.

0 Kudos
1,427 Views
jimmychan
NXP TechSupport
NXP TechSupport

Please try this :

kernel_imx/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_probe.c

    /* Create the device class. */

    //device_class = class_create(THIS_MODULE, "gpu_class");

    device_class = class_create(THIS_MODULE, "graphics_class");

0 Kudos
1,429 Views
qg
Contributor II

非常感谢您的回复!

kernel中打开gpu导致系统启动失败是由于,我们没有使用电源管理的芯片,dts中跟gpu、vpu相关的电压设置采用了原来的导致的。将相应的pu-supply = <&reg_pu>;全部设置成<&reg_pu>,就OK了,ldb显示也OK了。主要对dts中很多参数不理解。

0 Kudos