HDMI output on i.MX6 SABRE-SD

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

HDMI output on i.MX6 SABRE-SD

Jump to solution
12,565 Views
michaelworster
Contributor IV

I'm trying to get some output over the HDMI from my SABRE board but I'm not getting anything. I'm using a standard HDMI cable connected to a SAMSUNG HDMI monitor, no converters, and I've verified the monitor and the cable work just fine via another input source.

I'm using a 6SX SABRE SDB board... either rev C (SCH-27962 REV C) or A2 (700-27962 REV A2), there's two stickers on the back. On the LCD expansion port (J11) I've connected a Freescale HDMI Port Card (SCH-26673 REVC3/700-26673 REV F).

All the connections seem sound, but I never see anything on the display. I've built both the fsl-image-gui and the fsl-image-qt5 image (with framebuffer backend) but neither seem to output anything. I did some searching and thought it might be a problem with the boot args, another thread got me thinking about that, I tried updating my boot arguments to:

setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=/dev/mmcblk2p2 rootwait rw video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24'

but still no luck. How should I go about figuring out this issue? any thoughts?

Labels (3)
0 Kudos
1 Solution
2,990 Views
michaelworster
Contributor IV

The final solution to get HDMI out of the MCIMXHDMICARD with the SoloX SDB board was a combination of environment variables in u-boot being set correctly and a new kernel version. First an upgrade of the base software version to the 3.14.38 branch:

     repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.38-6UL_ga

Then I used that to build the fsl-image-gui for the solox sabre sd board, and at the bootloader I had to initialize the previously mentioned variables:

     setenv fdt_file 'imx6sx-sdb-lcdif1.dtb'

     setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} video=${video}'

     setenv panel 'MCIMX28LCD'

     setenv video 'mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24'

Finally I was able to boot and get video out of the HDMI. I'm not having the same issue with a static root prompt that I noted in a different thread:
GUI on the fsl-image-gui build

But at least the video is working. 

View solution in original post

0 Kudos
7 Replies
2,990 Views
chenghaibo
Contributor III

  repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.38-6UL_ga

can you test it at i.MX6 Quad SABRE board?  i have build it several times , the hdmi i's not works

0 Kudos
2,991 Views
michaelworster
Contributor IV

The final solution to get HDMI out of the MCIMXHDMICARD with the SoloX SDB board was a combination of environment variables in u-boot being set correctly and a new kernel version. First an upgrade of the base software version to the 3.14.38 branch:

     repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.38-6UL_ga

Then I used that to build the fsl-image-gui for the solox sabre sd board, and at the bootloader I had to initialize the previously mentioned variables:

     setenv fdt_file 'imx6sx-sdb-lcdif1.dtb'

     setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} video=${video}'

     setenv panel 'MCIMX28LCD'

     setenv video 'mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24'

Finally I was able to boot and get video out of the HDMI. I'm not having the same issue with a static root prompt that I noted in a different thread:
GUI on the fsl-image-gui build

But at least the video is working. 

0 Kudos
2,990 Views
michaelworster
Contributor IV

Another interesting point. I just got a i.MX6 Quad SABRE board (with embedded HDMI). I used the exact same setup (HDMI cable, monitor, linux/bootloader version, SD card) bootloader args. And everything works fine on that board.

To clarify, using the same version of the software I made a new build directory with:

MACHINE=imx6qsabresd source fsl-setup-release.sh –b build-qsaber-fb –e fb

bitbake fsl-image-gui

Instead of my original:

MACHINE=imx6sxsabresd source fsl-setup-release.sh –b build-qsaber-fb –e fb

bitbake fsl-image-gui

Then I loaded the .sdcard image to the SD card. I had to set one environment variable on my Quad board:

setenv video 'mxcfb0:dev=hdmi,1920x1080M@60,bpp=32'

setenv mmcargs 'setenv bootargs console=${console},${baudrate} video=${video} root=${mmcroot}'

Then when I booted the board I got output out of the HDMI from the Quad board and I saw the "Yocto" boot progress bar on the screen. When I do the EXACT SAME set of steps (except configuring for the SoloX) on the SoloX board, I do not see any output from the HDMI.

0 Kudos
2,990 Views
gururaghavendra
Contributor I

Hi Michel,

I tried the above command and can see that HDMI screen is up. but the gui is not fitting to the screen correctly.

i am using Lilliput 8"-inch lilliput display and Imx6qp sabre-sd board.

Regards,

Guru V

0 Kudos
2,990 Views
igorpadykov
NXP Employee
NXP Employee

Hi Michael

this card was used for i.MX53, usage with i.MX6SX is described on

https://community.freescale.com/thread/353083

https://community.freescale.com/message/363791#363791

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
2,990 Views
michaelworster
Contributor IV

I also missed one possible option for the "video" setting which I've now tried, but with the same lack of success:

video=mxcdi0fb:RGB24,1920x1080M@60 hdmi di0_primary

0 Kudos
2,990 Views
michaelworster
Contributor IV

Hi Igor,

    Good links, but it doesn't seem to be helping with the exception of gathering more data. It's correct that like the first link I'm also trying to get a MCIMXHDMICARD to work on a i.MX6 Solo X SABRE board, and I was using the same kernel version and initially loading the same device tree as that user, but adding the additional environment variables into my bootloader set up didn't seem to help. Here's some excerpts from my bootlog:

Bootloader Environment:

=> printenv

baudrate=115200

boot_fdt=try                                                                                                                                                             

bootcmd=mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run neti

bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};                                                                                               

bootdelay=3                                                                                                                                                              

bootscript=echo Running bootscript from mmc ...; source                                                                                                                  

console=ttymxc0                                                                                                                                                          

ethact=FEC0                                                                                                                                                              

ethaddr=00:04:9f:03:89:1c                                                                                                                                                

ethprime=FEC                                                                                                                                                             

fdt_addr=0x83000000                                                                                                                                                      

fdt_file=imx6sx-sdb-lcdif1.dtb                                                                                                                                           

fdt_high=0xffffffff                                                                                                                                                      

image=zImage                                                                                                                                                             

initrd_addr=0x83800000                                                                                                                                                   

initrd_high=0xffffffff                                                                                                                                                   

ip_dyn=yes                                                                                                                                                               

loadaddr=0x80800000                                                                                                                                                      

loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};                                                                                                   

loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}                                                                                                         

loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}                                                                                                          

loadm4image=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4image}                                                                                                      

m4boot=sf probe 1:0; bootaux 0x78000000                                                                                                                                  

m4image=m4_qspi.bin                                                                                                                                                      

mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_stora

mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot} video=${video}                                                                                    

mmcautodetect=yes                                                                                                                                                        

mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if t;

mmcdev=2                                                                                                                                                                 

mmcpart=1                                                                                                                                                                

mmcroot=/dev/mmcblk3p2 rootwait rw                                                                                                                                       

netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp                                                       

netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt};

panel=MCIMX28LCD                                                                                                                                                         

script=boot.scr

update_m4_from_sd=if sf probe 1:0; then if run loadm4image; then setexpr fw_sz ${filesize} + 0xffff; setexpr fw_sz ${fw_sz} / 0x10000; setexpr fw_sz ${fw_sz} * 0x10000; i

video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24                                                                                                                             

                                                                                                                 

Environment size: 2444/8188 bytes                                                                                                                                        

So there you can see I've set the "panel", "fdt_file", and "video" as requested. For video that was my second attempt, I tried the noted: "video=mxc_lcdif:SEIKO-WVGA,bpp=16" but that didn't work either and I think that's incorrect for the HDMI anyway.

=> boot                                                                                                                                                                  

mmc2 is current device                                                                                                                                                   

reading boot.scr                                                                                                                                                         

** Unable to read file boot.scr **                                                                                                                                       

reading zImage                                                                                                                                                           

5545424 bytes read in 256 ms (20.7 MiB/s)                                                                                                                                

Booting from mmc ...                                                                                                                                                     

reading imx6sx-sdb-lcdif1.dtb                                                                                                                                            

48947 bytes read in 19 ms (2.5 MiB/s)                                                                                                                                    

Kernel image @ 0x80800000 [ 0x000000 - 0x549dd0 ]                                                                                                                        

## Flattened Device Tree blob at 83000000                                                                                                                                

   Booting using the fdt blob at 0x83000000                                                                                                                              

   Using Device Tree in place at 83000000, end 8300ef32                                                                                                                  

switch to ldo_bypass mode!                                                                                                                                               

                                                                                                                                                                         

Here in the boot command you can see it found and is reading the correct  dtb file. Then below in the boot log you can see the command line I set as well as the linux version I'm using:

Starting kernel ...                                                                                                                                                      

                                                                                                                                                                         

Booting Linux on physical CPU 0x0                                                                                                                                        

Linux version 3.10.53-1.1.0_ga+g496fbe0 (jenkins@scmbl1) (gcc version 4.8.2 (GCC) ) #1 SMP PREEMPT Mon Jan 5 15:55:14 CST 2015

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d                                                                                                         

CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache                                                                                                 

Machine: Freescale i.MX6 SoloX (Device Tree), model: Freescale i.MX6 SoloX SDB Board                                                                                     

cma: CMA: reserved 320 MiB at ac000000                                                                                                                                   

Memory policy: ECC disabled, Data cache writealloc                                                                                                                       

PERCPU: Embedded 8 pages/cpu @81598000 s8960 r8192 d15616 u32768                                                                                                         

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096                                                                                              

Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk3p2 rootwait rw video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24

PID hash table entries: 4096 (order: 2, 16384 bytes)                                                                                                                     

Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)                                                                                                         

Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)                                                                                                           

Memory: 1024MB = 1024MB total                                                                                                                                            

Memory: 697256k/697256k available, 351320k reserved, 0K highmem

Nothing more interesting in the boot of the kernel, but here after the boot finishes you can see the command line, uname, dmesg (searching for any HDMI messages), also loaded device drivers and framebuffer information:

Stopping Bootlog daemon: bootlogd.                                                                                                                                       

                                                                                                                                                                         

Poky (Yocto Project Reference Distro) 1.6.2 imx6sxsabresd /dev/ttymxc0                                                                                                   

                                                                                                                                                                         

imx6sxsabresd login: root                                                                                                                                                

root@imx6sxsabresd:~# cat /proc/cmdline                                                                                                                                  

console=ttymxc0,115200 root=/dev/mmcblk3p2 rootwait rw video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24                                                                      

root@imx6sxsabresd:~#                                                                                                                                                    

root@imx6sxsabresd:~# uname -a

Linux imx6sxsabresd 3.10.53-1.1.0_ga+g496fbe0 #1 SMP PREEMPT Mon Jan 5 15:55:14 CST 2015 armv7l GNU/Linux

root@imx6sxsabresd:~#

root@imx6sxsabresd:~# dmesg | grep "hdmi"

[    0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk3p2 rootwait rw video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24

root@imx6sxsabresd:~#

root@imx6sxsabresd:~# fbset -i

mode "800x480-60"

    # D: 33.501 MHz, H: 31.515 kHz, V: 60.259 Hz

    geometry 800 480 800 480 16

    timings 29850 89 164 23 10 10 10

    rgba 5/11,6/5,5/0,0/0

endmode

Frame buffer device information:

    Name        : mxs-lcdif0

    Address     : 0xb4600000

    Size        : 8358400

    Type        : PACKED PIXELS

    Visual      : TRUECOLOR

    XPanStep    : 0

    YPanStep    : 1

    YWrapStep   : 0

    LineLength  : 1600

    Accelerator : No

root@imx6sxsabresd:~#

root@imx6sxsabresd:~# cat /sys/class/graphics/fb

fb0/   fb1/   fbcon/

root@imx6sxsabresd:~# cat /sys/class/graphics/fb0/modes

U:800x480p-60

U:800x480p-60

root@imx6sxsabresd:~# cat /sys/class/graphics/fb1/modes

U:1024x768p-60

root@imx6sxsabresd:~#

root@imx6sxsabresd:~# lsmod

Module                  Size  Used by

ov5642_camera          75119  0

mxc_vadc_tvin           6408  0

mxc_dcic                5334  0

ov5640_camera          17959  0

evbug                   1476  0

csi_v4l2_capture       17745  1

fsl_csi                 5380  1 csi_v4l2_capture

In here it's interesting that fbset is telling me that it's 800x480p-60 so clearly it's using fb0. Seems that the video option isn't setting anything for the framebuffer.

0 Kudos