We have been asked to develop a WinIoT device for our customer based on the CM3 module. This device has to include a TFT display attached, preferably 7” LVDS (since we already use this in other products)
(and yes, we aware of that CM3 is not official supported by MS)
We consider ourselves having good experience with SOM and carrierboard designs; we have several designs based on Win7 compact and PXA300, Nvidia T20 etc.
So using CM3 is our 1.st encounter with the Broadcom chip and the RPI community/forum.
What we have learned so far based on the following HW and SW.
HW: We have RPI3+, CM3L and CM carrierboard V3, also we have the RPI 7” TFT with the 22W to 15W converter.
SW: Win10IoT downloaded in latest version, Raspbian downloaded using NOOBS in latest version.
What we have learned so far, is that DSI port is somewhat “closed country” meaning so far only the RPI original screen will work.
The RPI screen being a standard RGB display using the SC5004/SC5005 TFT controller IC, and finding the RPI are using the TOSHIBA chip to converter from DSI to RGB24 we had the idea that we could develop our own carrierboard using a Ti chip making DSI to LVDS as long as timing etc is the same for the actual TFT drive IC’s .
We have done some testing for proof of concept and to understand the RPI HW /firmware and OS’s
What we have learned so far: (using 3 SD cards, one Win10 IoT, one Raspbian std, one Raspbian with dt-blob.bin)
RPI3+ and HDMI using Win10IoT = works out of the box. TFT is HD, so resolution is HD.
RPI3+ and RPI 7” using Win10IoT= works out of the box ( did not spend time to get the CAP touch working)
RPI3+ and RPI 7” and HDMI connected using Win10IoT, boot OK, RPi 7” is the active screen
RPI3+ and HDMI using standard Raspbian OS = works out of the box
RPI3+ and RPI7” using standard Raspbian (used in CM3 setup look below) works out of the box including touch which is routed on the W15 cable
RPI3+ and RPI7” using Raspbian with modified dt-blob.bin (used in CM3 setup look below) works out of the box including touch which is routed on the W15 cable
Now comes the more disturbing part….CM3:
CM3 and HDMI using Win10Iot = OK, boots to expected screen resolution in this case HD = 1366x768
CM3 and RPI 7” connected, also HDMI connected, Win10IoT, boot OK, but screen resolution on HDMI is set to something like 800x480, no picture on RPI 7”
CM3 and RPI 7” connected, Win10IoT, No picture on RPI 7”
CM3 and HDMI using Raspbian standard, OK boot to HD resolution
CM3 and RPI 7” using standard Raspbian standard, not picture. (start.elf only)
CM3 and RPI 7” using Raspbian with CM3 dt-blob.bin , OK boot , picture and touch working.
CM3 and RPI 7”, also with HDMI connected at the same time using Raspbian with CM3 dt-blob.bin ,we find that the “splashscreen” and Raspian boot logo appears on the HDMI HD screen, then HDMI HD screen goes dark and RPi 7” start showing content (Raspbian booting)
So all this testing leads us to believe that CM3 is not fully compatible with the RPI3+ on the DSI port.
As understood a standard Raspbian in Start.elf has included dt-blob.bin settings and therefor dt-blob.bin is not needed.
.As informed here:
https://github.com/stweil/raspberrypi-d ... display.md
You will for CM3 need the dt-blob.bin for making RPI 7” working on CM3, this is aligned with our findings, that CM3 with HDMI and RPi 7”
installed, shows the 1-st part of the GPU booting on the HDMI channel, and then dt-blob-bin settings are invoked, and output from GPU is directed to DSI port = RPI 7”.
On RPI3+ running WinIOT, the same setup (both RPI 7” and HDMI attached) shows that output is directed to the DSI port, nothing seen on the attached HDMI screen.
Based on this: CM3 and RPI 7” connected, also HDMI connected, Win10IoT, boot OK, but screen resolution on HDMI is set to something like 800x480, no picture on RPI 7”
It looks very much like that DSI port on CM3 has recognized something, since HDMI screen attached (HD screen 1366x768) suddenly becomes 800x480.
Based on that standard CONFIG.TXT on WIN10 Iot seems not to “care” when used on RPI3+ and is able to boot no matter 7” or HDMI or combo attached. In this case DSI is ruled 1st. if attached before HDMI.
This being different on the CM3, both the fact that dt-blob.bin is needed to make the 7” RPI TFT to work on Raspbian and also the fact that Win10 IoT is not working on CM3 with RPI 7” attached.
This led me to the following questions: ( please remember we are in no way familiar with how all the GPU /graphic drivers are managed in Linux (Raspbian)
1) What is different in the standard Raspbian Start.elf file compared to the settings in the dt-blob.bin file which is taken from this link: (as informed) sudo wget https://goo.gl/Ah6XD5 -O /boot/dt-blob.bin (when it comes to controlling screen output (DSI port)
https://github.com/stweil/raspberrypi-d ... 1-only.dts
2) Not working on CM3 but on RPI3+ makes us wonder if the GPU firmware is on the same level (version)(CM3 vs RPI3+) we do not find anything on the DSI port on CM3 compared to RPI3+ on HW level that makes us believe the issue is HW related. This goes both for standard Raspbian but also for Win10IoT which is our main goal to be able to use on CM3.
I hope that some of you are interested in the same challenge, to get a 7” or other display to work in Win10 IoT and use CM3 as the SOM.