Colibri iMX6DL 512MB V1.1A HW design considerations

Hello to TORADEX community,

Colibri iMX6DL 512MB V1.1A HW design considerations, as suggested by heading (I read a bit about the iMX6DL module, so I am curious to find answers on my following questions)!

The module I am talking about is: NXP/Freescale i.MX6 Computer on Module - Colibri iMX6 - Übersicht

The pictures representing the module are:

The questions:

[1] Connector X1 (200 pins): does it follow any known standards, or it is TORADEX proprietary (if proprietary, please, explain in details why such a layout)?

[2] Connector X2: Does Colibri iMX6 module support HDMI 1.4a?

[3] Using Colibri Evaluation Board (CEB): http://developer.toradex.com/products/colibri-evaluation-board#Product_Revision_History , does it support all 3 GFX interfaces: VGA, DVI and LVDS (display attached) at once?

[4] It seems that on CEB LVDS is supported by RGB I/F to LVDS external silicon conversion (since internal LVDS I/F is not out on X1)?

[5] It seems that X1 connector does not support SATA and PCIe, since it is too “short” (too few pins) for these controllers’ pins to be put out from iMX6 SoC?

[6] Does TORADEX plan for 8GB flash + 2GB DDR3 down for future Colibri iMX6 module creations, or these could be customized on the present module?

Thank you,
nobody

Hi - Welcome to the Toradex community

  1. The connector is a standard SODIMM 200 pin connector; however, the pinout is standard only for Toradex Colibri. You may find some non-Toradex SODIMM modules which adhere to a similar pinout, but it is not an industry standard. That said, all Toradex Colibri modules are pin compatible.

  2. Yes, it supports HDMI 1.4a

  3. Yes, LVDS & VGA are driven by the Colibri iMX6’s RGB display interface. The DVI is connected to the Colibri’s DVI FFC interface.

  4. That is correct

  5. That is correct. These are not Colibri standard interfaces. However, they are available (along with native LVDS) on Apalis iMX6.

  6. No this configuration is not planned for Colibri iMX6. However, a 2GB DDR3 configuratoin is available with Apalis iMX6. An 8GB eMMC flash would be possible in a build-to-order configuration on either Colibri or Apalis, but not as a standard SKU.

Hello Brandon,

Thank you very much for the answers. Let me clarify couple of things, and add few new:

[3] Yes, I am aware of that, what you wrote here. But I am curious if all three I/F (LVDS, VGA and DVI) could work simultaneously (at the same time)?! I see that LVDS (touch display) and VGA (attached analog 19" monitor) are simultaneously working, as well as serial interface (while booting). If I attach DVI (digital) monitor, will it work as third one?

[6] Since I plan to do embedded development with rocko (poky 2.4) with Qt5 added to this configuration, and maybe some other packages, let me ask for the estimation, how much it’ll take in flash (some estimation)? Considering having standard 4GB flash? This actually drives this requirement. I can add 1GB of Qt5 application on the top of system capacity.

And, continuing, what would be the price for such a customized Colibri iMX6 with 8GB flash? How much more it’ll cost (roughly, in added % on the top of original price)? I do not thing DDR2 is an issue (in capacity terms - 512MB)?!

_###########################

Few more addendums!

Having LVDS (touch screen) and VGA monitor working simultaneously, my DVI monitor does not work. I obviously added flat cable from X2 to CEB, as required. Is it that I need to switch some jumper somewhere and enable it, (taking OFF VGA, for example)?

As I understood, TORADEX will continue to support and sell Colibri iMX6 module till end of the Y2028?

Thank you in advance,
nobody

  1. The LVDS & VGA share the RGB interface & therefore also the framebuffer. However, the DVI is using a separate interface and a separate framebuffer. Both framebuffers can be configured for different display resolution/timings and can be used completely independently, but can be active simultaneously allowing you to use all the interfaces at once.

  2. Probably 500-800MB. It seems you will have plenty of space for your 1GB application. If you require a custom SKU with 8GB eMMC, we will need to discuss your expected volume to accurately determine the cost. I suggest we continue that discuss via email - feel free to shoot me a message at brandon.shibley@toradex.com. Alternatively, you may place additional storage (2nd eMMC, SD card, etc) on the carrier board.

You will need to adjust the framebuffer configuration to enable HDMI/DVI. This is generally done in U-boot with the ‘vidargs’ variable that is passed to the kernel at boot.

You are correct, we guarantee availability of Colibri iMX6 to 2028.

Any take on latest, written by me?

Thank you,
nobody

OK, Marcel. Let me go step by step.

Step 1: You are correct. By changing the following line:

vidargs=video=mxcfb0:dev=lcd,640x480M@60,if=RGB666 video=mxcfb1:off fbmem=8M to:

vidargs=video=mxcfb0:dev=hdmi,1024x768M@60,if=RGB24 video=mxcfb1:off fbmem=8M

My 19" monitor (which has both VGA and DVI I/Fs) start showing that DVI is alive and working (exactly showing resolution 1024x768). Which says that the flat cable attached to Colibri iMX6 X2 connector and to Colibri Development board (on the other end) does work. But, ONLY DVI works, nothing else does work, LCD does not work either (maybe it should be like that).

Step 2: I changed vidargs to the following:

vidargs=video=mxcfb0:dev=hdmi,640x480M@60,if=RGB666 video=mxcfb1:off fbmem=8M

But still, I have only DVI output, which draws the conclusion that LCD and VGA are hard wired from the same (analog) RGB source I/F, and there is some analog to digital conversion (analog RGB signal to digital LVDS via external silicon, which already was described), which serves/suits to LCD.

In other words, Vivante driver recognizes hdmi and lcd tokens via command line (assembled from U-Boot script), and uses (in total two) different HW I/F respectively. Am I right?

So either I can use ONLY DVI, either both LCD + VGA via /dev/fb0, There are no some other choices (as for example DVI and LCD) using /dev/fb0 by Colibri iMX6… Am I right here???

Can you, please, elaborate my findings in more details?!

Thank you in advance,
nobody

Hello Brandon,

Thank you for the answers. Having taken (even) 1GB of flash by the system FW and SW, additional 3GB for application will be far enough… The only remaining concern is that 8GB flash and 2GB DDR2 will be very soon cheaper that outdated 4GB flash and 512MB DDR2. This is the paradox I not once observed/have experienced in digital HW world!?

Regarding the following: http://developer.toradex.com/knowledge-base/display-output-resolution-and-timings-linux I tried couple of my own, homemade vidargs:

[genesis] vidargs=video=mxcfb0:dev=lcd,640x480M@60,if=RGB666 video=mxcfb1:off fbmem=8M (for this one VGA works [my best guess out of fb2] by default)

[addendum 1] vidargs=video=mxcfb0:dev=lcd,640x480M@60,if=RGB666 video=mxcfb1:off fbmem=8M video=mxcfb2:dev=hdmi,1024x768M@60,if=RGB24

[addendum 2] vidargs=video=mxcfb0:dev=lcd,640x480M@60,if=RGB666 video=mxcfb1:off fbmem=8M video=mxcfb2:dev=dvi,1024x768M@60,if=RGB24

[addendum 3] vidargs=video=mxcfb0:dev=lcd,640x480M@60,if=RGB666 video=mxcfb1:off video=mxcfb2:dev=hdmi,1024x768M@60,if=RGB24 fbmem=32M

[addendum 4] vidargs=video=mxcfb0:dev=lcd,640x480M@60,if=RGB666 video=mxcfb1:off video=mxcfb2:dev=hdmi,640x480M@60,if=RGB24 fbmem=8M

But none of additions makes DVI output to work for me (still default VGA works as always/usually)???

Any take on this?

Thank you,
nobody

As mentioned in the above referenced article, only the first framebuffer can be used by the Vivante X driver.

Ok, @nobody. I really don’t understand why you don’t understand. Our article really does state it quite crystal clear isn’t it?

Step 1: You are correct. By changing the following line:

But, ONLY DVI works, nothing else does work, LCD does not work either (maybe it should be like that).

Yes, as stated before the Vivante X driver only supports the first framebuffer.

Step 2: I changed vidargs to the following:

But still, I have only DVI output, which draws the conclusion that LCD and VGA are hard wired from the same (analog) RGB source I/F, and there is some analog to digital conversion (analog RGB signal to digital LVDS via external silicon, which already was described), which serves/suits to LCD.

Yes, as @brandon.tx already stated and could be found out by looking at the CEB datasheet/schematics.

In other words, Vivante driver recognizes hdmi and lcd tokens via command line (assembled from U-Boot script), and uses (in total two) different HW I/F respectively. Am I right?

No, again the Vivante X driver only supports one single one.

So either I can use ONLY DVI, either both LCD + VGA via /dev/fb0, There are no some other choices (as for example DVI and LCD) using /dev/fb0 by Colibri iMX6… Am I right here???

Using just /dev/fb0 not, no. However there may be other options e.g. using Qt as e.g. the Toradex Easy Installer demonstrates.

Can you, please, elaborate my findings in more details?!

Yes, I hope I did.

Hello Marcel,

Here is my reply. Vivante X driver just supports one /dev/fb0 in Colibri, but Vivante driver needs to know what to hook up beneath, to DRM in kernel space, which one: DVI or VGA device driver? These are two very different drivers (I hope you do get this), so somebody needs to tell to it/DRM what to do?! My best guess, kernel cmdline gets parsed, and upon finding token ‘hdmi’ or ‘lcd’, it can then determine the correct component setting.

Considering Qt, I have no idea or just slight idea what Qt is, since I never dealt with Qt application space (and I never will). Now I am looking into Device Tree, trying to understand HW requirements, and for me, being home all alone, it is far enough, don’t you think?!

So, can I set up /dev/fb2 to be used from U-Boot (setting kernel command line)? My best guess, there is no such a possibility. Or somehow in Linux, NOT using Qt, but some ordinary CLI magic?

Thank you,
nobody

Here is my reply. Vivante X driver just supports one /dev/fb0 in Colibri, but Vivante driver needs to know what to hook up beneath, to DRM in kernel space, which one: DVI or VGA device driver?

Yes, exactly. Just what is specified by vidargs resp. given in the device tree.

These are two very different drivers (I hope you do get this), so somebody needs to tell to it/DRM what to do?! My best guess, kernel cmdline gets parsed, and upon finding token ‘hdmi’ or ‘lcd’, it can then determine the correct component setting.

Absolutely.

Considering Qt, I have no idea or just slight idea what Qt is, since I never dealt with Qt application space (and I never will). Now I am looking into Device Tree, trying to understand HW requirements, and for me, being home all alone, it is far enough, don’t you think?!

Yes, as we do not know any of your requirements I am afraid we won’t be able to assist you in this process.

So, can I set up /dev/fb2 to be used from U-Boot (setting kernel command line)? My best guess, there is no such a possibility. Or somehow in Linux, NOT using Qt, but some ordinary CLI magic?

Yes, of course it can be used e.g. for camera or multimedia output, just not for Vivante’s X driver.