Asynchronous driver loading

Colibri iMX6DL 512MB
WinCE7 BSP 1.6

I run into problems after updating our image to WinCE 7 BSP v1.6 (from v1.3) because the driver loading order was different afterwards since asynchronous driver loading got enabled.

Since we do GPIO configuration in some of our driver init functions we need to make sure those configurations are not overridden. How do we make sure our drivers will be initialized after all other drivers have been loaded?

Asynchronous approach:

  • What is the recommended approach (e.g. by configuring dependencies) to make sure a driver will be loaded after all other drivers?
  • If a driver key contains the “order” parameter but misses the “LoadAsync”=dword:1 - when will it be loaded? Before or after loading those drivers using LoadAsync=dword:1?

Synchronous approach *:

  • What would be the order for drivers having a “LoadAsync” but no “order” value?
  • Will defined dependencies (DependsOn) still considered?
  • Revert back to synchronous loading can be done by enter a registry key according to Asyc Driver Loading

Please check this article about deice driver loading.

After updating our WinCE 7 BSP to v1.6 (from v1.3) the display of one of our devices does not turn on anymore.

We suspect differences in PIN configurations to be the reason for that behavior. We see differences when we compare the configuration after booting the device using the iMX6 GPIO tool.

Some drivers configure GPIOs during init() and since new async driver loading alters the initialization sequence that might be the root cause.

→ How to figure out what driver is responsible for what configuration?
→ Above all what driver (maybe colibri_lcd.dll ?) sets PIN 88 to alt function Ipu1.IPU1_CS…?
→ Does there exist a way to log the init sequence of Toradex drivers?

Comparing the GPIO configuration between new (v 1.6) and old (v 1.3) image shows a series of pins with differences in configuration. The following excerpt shows different configurations we suspect to be the source of our display issue.

31 UART1 GPIO Input Output 0 1
88 GPIO Ipu1.IPU1_CS… Output Input 0 0

If your display requires some specific pin configuration you can configure pins by some application which you can start automatically after system boot up.