Upgrading to T20 from PXA270

Hello,

I am trying to upgrade to Colibri T20 from PXA270.
I changed the C++ codes accordingly and created a new exe file.
I changed the pin connections to my FPGA in the VHDL code and on the hardware.
But when I run the new exe file it shows a purple screen.
Does anyone know what I should do ?

Thanks

@shiva_eghbal: Are you using your own carrier board? Did you check the color mapping in the Datasheet of the T20 (page 25 / 26).

Yes I am. I used it with PXA270 and WinCE5 but now I need to upgrade it to T20.
I will check the colour mapping now.

I looked at the colour mapping section and I couldn’t find anything helpful there.
I should clarify that the Toradex screen does come up but when I run the exe file, a purple window opens instead of the screen I am looking for.

Can you send us a pciture of the screen that is shown?

Sure.
The first picture is the Toradex screen.
The second is when I opened the exe file and purple screen comes up.

[upload|3KX+gFpMaIHkjrHZk6PIA6Pb8FE=]

[upload|Nfw3Tt990FiQLK1CZ1GipcMtLEk=]

As the status bar still shows correctly, I think your application uses some kind of frame buffer setting which isn’t configured right for Tegra. Can you try to run a dummy application without graphics like console application and then create another application with graphics with just a message box pop up. I do not think this is hardware issue, should be related to software.

As the status bar still shows correctly, I think your application uses some kind of frame buffer setting which isn’t configured right for Tegra. Can you try to run a dummy application without graphics like console application and then create another application with graphics with just a message box pop up. I do not think this is hardware issue, should be related to software.

@shiva_eghbal,
Please check our latest response in this thread. It must be an issue with the application as the windows status bar shows correctly. Please let us know what kind of application you have. Is it using any frame works? How do you “show” something on the screen? I could imagine, that it’s an incompatibility of bit depths or similar. Could it be, that you set the display bit depth of the PXA270 or T20 to 16-bit and no the other to 18-bit?
See Display Driver Registry Settings | Toradex Developer Center for details.

We worked with Colibri PXA270 running on WIN CE5 and now we are going to use T20 which runs on WIN CE6.
We have the source codes in C++ and build them successfully in Visual Studio 2008. Our code was written for WinCE5.
I added the necessary libraries and headers to the solution file. The name of the flash memory has been changed accordingly.
We modified the few different T20 pin connections to FPGA on the hardware.
Now when I deploy the solution the purple screen comes up instead of running our application.
Other window and task bar display correctly. So, We believe the display is correctly interfaced to the T20.
I have tried running other codes from the tutorials available on the Toradex website, such as “welcome to Toradex” or the date and they worked fine.
I looked at the display bit depth in the Colibri Tweak and they were set to 18-bit.

@shiva_eghbal,
How are the graphics (dialogs, etc.) done in your application? Which APIs are you using for your user interface? Can you debug your application and see when the screen starts to behave like this? If that doens’t shed any light on the issue, please strip down your application to the minimum needed to still show the issue and share it with us.

The framework is .NET 2.0.
The dialogs are in bitmap form.
Native Win32 programming API is used.
When debugged, It seems that the problem occurs when line
pI2C->ISAR runs; and it goes into:

#define I2C_BASE  0x40301000 
typedef volatile struct structI2CReg //Address: 0x40301680
{  DWORD Res[0x68*4];
   DWORD IBMR;  //Bus Monitor Register
   DWORD reserved1;
   DWORD IDBR; //Data Register
   DWORD reserved2;
   DWORD ICR; //Control Register
   DWORD reserved3;
   DWORD ISR; //Status Register
   DWORD reserved4;
   DWORD ISAR; //Slave Address Register
}  I2CReg;

The I2C access you have in your code uses the I2C addresses and registers of PXA270. This causes problems on Tegra of course, as you are accessing/overwriting stuff where you shouldn’t. Please check your code accordingly. Whenever you directly accessed registers on PXA270 in your code, you have to port this to Tegra. The register addresses/layout are completely different from PXA270 to T20. We recommend using our libraries instead of accessing the registers directly. This would even allow you to write code which works on PXA and Tegra as we have a library which supports both:

I was missing one of the libraries for Tegra 20 and the screen that I was looking for comes up now.
But then even with the old codes the same screen comes up.
Also now the FPGA information is wrong. I tried reprogramming the FPGA with the updated program but same values are shown.
How can I be sure that application is working properly now ?

Could you please give us more information about your problem with the FPGA? How did you connect it to the Colibri module? How do you access it in detail? What do you mean with: The FPGA information is wrong?
Please give us all these details (and more?) but please create a new question as this question here is answered. Thanks.