FlashDisk Disappeared After Disabling Asynchronous Driver Loading

Hello,

I am having some problems with the FlashDisk drive disappearing after I disabled asynchronous driver loading:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]
	"Dll"="BusEnum.dll"

Initially, the value was “BusEnum2.dll” and the reason why we did it was because this was the suggested solution for another problem we encountered displaying Chinese/Japanese/Korean fonts. This was the solution suggested in “Additional fonts on WinCE7 V1.4b4 for iMX6” and initially, it did work: the fonts were being displayed properly.

However, when we booted up the device the following day, we began having problems accessing the \FlashDisk folder on the device. At first I could still see the \FlashDisk folder in the FileExplorer but when I tried to enter the folder it was empty. It was supposed to hold our application and several other files but then it was empty.

I rebooted the device but this time the \FlashDisk folder was missing entirely and I have not been able to recover it anymore.

Although, the problem only appeared after an overnight of being powered down, I could say that the most likely cause was the disabling of the asynchronous driver loading because this was the only modification done on the device before the problem occurred. Furthermore, this was also done on another iMX6 device we have and now the \FlashDisk folder is missing on that one as well.

I tried to set back the registry entry to enable asynchronous driver loading but Registry Editor could no longer save the modified registry. It gives an error “Error saving registry” when I try to save the registry.

I also tried to re-flash the image using the UpdateTool but it also fails half-way.

I also tried the suggestion in \Flashdisk disappearing on VF50 by issuing the eraseflash filesystem command in the bootloader menu. I received the “Done” response but the FlashDisk folder was still missing after rebooting.

Is there a way to bring back (mount) the FlashDisk?

Can you please check output on UARTA after you enable debug messages with:
set dbg.serial 1
in the bootloader console?
This could give an hint about what’s happening.
Does the device takes longer than usual to boot?

Hello, I did as you suggested and got the following debug output during boot up:

I only copied the failures:


Loading GPIO Multiplexer…
Failed(0) Loading GPIO Multiplexer (1 ms)

Waiting for flash disk \Flashdisk for 30 seconds
Mount timeout

Loading iMX6 PCIE driver…
Failed(0) Loading iMX6 PCIE driver (0 ms)

Loading SPI2…
Multiplexing must be specified for non standard SPI port.
Failed(0) Loading SPI2 (5 ms)

And yes, the device does take longer than usual to boot.

Hello, I tried your suggestion and I got the following output:

===================
System ready!
Preparing for download...
Loading compressed image...
Reading image from sector 40962.
Extracting 45853976 bytes from compressed image of 25153408 bytes
.......................

Done.
Launching image at 10200000.

Toradex Windows CE 7.0 1.4
for iMX6 Built on Dec 13 2018
Colibri iMX6 Solo 256MB
Wait mode Disabled
SMP support disabled
RTC origin set to: 2006/01/01.
Registry - loading version 186 from 16386.
Registry loaded.
Loading Clock...
GPU enabled.
DVFS not enabled.
Done Loading Clock (14 ms)
Loading GPIO Multiplexer...
Failed(0) Loading GPIO Multiplexer (1 ms)
Loading I2C2...
Done Loading I2C2 (1 ms)
Loading I2C1...
Done Loading I2C1 (0 ms)
Loading SD Bus...
Done Loading SD Bus (0 ms)
Loading external SD interface...
SD clock always on on slot 2
SD slot 2 is using custom multiplexing.
Done Loading external SD interface (311 ms)
Waiting for flash disk \Flashdisk for 30 seconds
Mount timeout
Loading iMX6 PCIE driver...
Failed(0) Loading iMX6 PCIE driver (0 ms)
Loading Audio...
Done Loading Audio (599 ms)
Loading PMIC...
Done Loading PMIC (2 ms)
Loading USB Host Controller...
USB HOST: Forcing Full Speed
Done Loading USB Host Controller (35 ms)
Loading USB OTG...
Done Loading USB OTG (2 ms)
Loading USB OTG Host...
Done Loading USB OTG Host (31 ms)
Loading SD card...
Done Loading SD card (304 ms)
Loading 2D/3D Graphic Accelerator...
Done Loading 2D/3D Graphic Accelerator (69 ms)
Loading Image Processing Unit...
Done Loading Image Processing Unit (1 ms)
Loading SPI2...
Multiplexing must be specified for non standard SPI port.
Failed(0) Loading SPI2 (5 ms)
Loading SPI1...
Done Loading SPI1 (1 ms)
Loading UARTC...
Done Loading UARTC (0 ms)
Loading UARTB...
Done Loading UARTB (0 ms)
Loading UARTA...
Port is used for OS debug! 
Failed(0) Loading UARTA (3 ms)
Loading Ethernet...
Loading DHCP v4...
Done Loading DHCP v4 (0 ms)
Loading HDCP v6...
Done Loading HDCP v6 (0 ms)
Ethernet: Disconnected 
          Done Loading Ethernet (172 ms)
          Loading Display...
          IPU base driver is not loaded.
          Splash screen is not configured in config block, using setting from registry.
          Graphic accelerator driver is not loaded!
          GPU2D disabled.
          Done Loading Display.
          Turning display ON.
          Load TouchButton: PosX 4,PosY 495,width 132,height 45,vkKey 58 <LF><CR>Load TouchButton: PosX 136,PosY 495,width 132,height 45,vkKey 59 <LF><CR>Load TouchButton: PosX 268,PosY 495,width 264,height 45,vkKey 60 <LF><CR>Load TouchButton: PosX 532,PosY 495,width 132,height 45,vkKey 62 <LF><CR>Load TouchButton: PosX 664,PosY 495,width 132,height 45,vkKey 63 <LF><CR>Loading Touch...
          Maximum Allowed Error 5:
Done Loading Touch.
Reading RTC failed.
No external RTC found
RTCSync: Completed.
         WS2 server driver is not loaded!
Display: 800x480@60Hz PCLK: 29000000
         Loading PP...
         Done Loading PP (1 ms)
         Loading NETUI...
         Done NETUI
===============================

When the Waiting for flash disk \Flashdisk for 30 seconds appears, about 30 seconds later comes Mount timeout.

And the device does take longer to boot.

Ok.

  • GPIO multiplexer error is normal, this driver is designed to just do initialization and then immediately unload
  • PCIE driver works only on Apalis, and it’s ok that is not loading on Colibri
  • SPI2 doesn’t have a default pinout on Colibri, so it’s also normal that driver unloads (we need that to have same image on Apalis and Colibri)

I expected to see a message like: Loading eMMC, but I don’t see that in your output.
Can you please check contents of HKLM\Drivers\Builtin\USDHC3 key in your registry?

I don’t see any message about eMMC driver loading, that would explain the issue.
What do you have under:
[HKLM\Drivers\Builtin\USDHC3]
In your registry?
Are you building a custom image or using our standard one?

Hello, we are actually just using the standard image (ver 1.4 EC7). We were finally able to recover the device by using the recovery procedure with Easy Installer over USB connection. After successfully installing the OS with Easy Installer, the device was back to its original state with the FlashDisk already mounted.

As for the settings under [HKLM\Drivers\Builtin\USDHC3], they are just the standard entries that come with the OS image.

Thank you for the help.

I think I found the issue.
Currently the SDBus driver and the USDHC3 (emmc) driver have the same order (0x10), this means that it may work or not, depending from which driver is loaded first.
Sdbus must be loaded first, so setting:

[HKEY_LOCAL_MACHINE\Drivers\Builtin\USDHC3] 
"Order"=dword:11

(11 is 0x11, so 17 decimal)
should work and allow you to see flashdisk again.
Another issue is that when the flashdisk driver is not loaded you can’t save/clear registry in the right way, that explains why it was not possilbe to recover the disk.