Porting a WinCE application project from T30 to iMX6

We started using Colibri T30 SoC as our product platform and developing our products in earlier 2017.
We’ve been using Library set from wincelib_v2_0bis_2868.zip and Colibri_SDK_1_0 on Visual Studio 2008. We have been using WinCE as the OS by selecting Toradex_CE600 as the platform SDK in the Visual studio build. This combination has been meeting our needs and performing very well.
We received the notification that T30 will be discontinued soon. Therefore, we’re in the process of transporting code from T30 platform to iMX6 platform and bumping into some issues.
First thing I noticed is that the library set we’ve been using is for T30/T20 Tar
Toradex.h (4.8 KB)
ToradexWrapper.cpp (5.9 KB)
gets. Therefore, I replaced it with toradexcelibraries_2.5-20210803 by populating the …/lib and …/inc folders with those obtained from the new version 2.5 libraries. The issue is that the function names our existing code refers to seem to have changed. For example, the void MapRegister(DWORD pa)in the old MapRegLib.h is nowhere to be found among the header files in the new inc folder.
Actually, we learned and borrowed those library invocation codes from your sample code for T30. One example is:
void MapConfigRegisters() {
g_gmiReg = (GMI_REGISTERS
) MapRegister(GMI_CONF_BASE); // GMI_CONF_BASE =
Sleep(10);
}
The first question is:
Do you provide similar code/projects for iMX6 that we can learn and borrow from for those library usages? Somehow, I cannot find the counterpart of *MapRegister(DWORD) in the libdemos toradexcelibraries_2.5-20210803. And the bad part is I don’t remember how/where I obtained all the info embedded in the attached toradex.h and, therefore, cannot find the counterpart info I need to connect our PLD firmware with our application through GPIO configuration and memory map configuration. I kind of think I seemed to have acquired some useful description/instruction from Toradex to do the work back in 2017. Just don’t quite remember how/where I got all this info back then.
The second question is:
Is the combination of SDK 1.0, Toradex_ CE600, and toradexcelibraries_2.5-20210803 a valid one? Could there be something I have missed?
Your help is greatly appreciated!
Best regards,
Michael

Failed to mention in the previous post that the hardware being used is Colibri iMX6DL 512MB V1.1A

Hi @MichaelFang
The Colibri_SDK_1_0 has become outdated and shouldn’t be used anymore. Please use the latest SDK.
The wincelib_v2_0bis_2868 has been deprecated and not compatible with the new WinCE library. . You have to refactor your code using new library API. The provided libdemos can serve as an example for this purpose. . Instead of using MapRegister() you can use Map_MapMemory() (MapMem.h). Please refer to the included help file (Toradex_CE_Libraries.chm) for details.

Thanks, ALex. I didn’t see any help file (Toradex_CE_Libraries.chm) in the answer. Can you either send it to me at mfang@skylinktechnology.com or point to me where I can find it? Thanks!

That file is included in the WinCE library package (i.e. toradexcelibraries_2.5-20210803.zip)).

On " Please use the latest SDK."

I can see there are tow categories of SDKs available to me: Windows CE 6.0 SDK & Windows Embedded Compack 7 SDK. If I used the latest Windows CE 6.0 SDK, would it work with teh iMX6DL SoC running on BSP Compact 7 1.8-20220622, which I loaded via Easy Installer? (Note that the WinCE library to build the code is still 2.5 | 2021-08-03). Or do I need to use SDK for

Depending on teh answer of teh first question, which SDK I should be using when creating the application project in Visual Studio 2008? (Just in case there areToradex_CE600 and Toradex_CE700 to choose from, just like the old SDK)

Hi @MichaelFang ,

On iMX6 we don’t support Windows CE 6.0, so you will have to switch to Windows CE 7.0 as a base OS.
As for the SDK you can use either CE6 or CE7 SDKs. Using CE6 SDK will just limit the API set a little bit as the header files don’t include new CE7 functions.

Another thing i would recommend you is to plan a few months time for the transition as it might not be as trivial to switch from T30 to iMX6. Not only the Library incompatibility, but also some subtle differences in peripheral functionality and pin compatibility could give you quite a bit of work.
Maybe setting up a last time buy contract for T30 might be a good idea and give you more time to do the switch. Depending on how long you still need to support your T30 product line this might even completely eliminate the need to do the porting.

1 Like

Hi Germano,

Thank you very much for your clear information on the iMX6 capability and the confusion I’ve had on SDKs. Your advise and recommendation is deeply appreciated. Thnaks to the Toradex team as well!