I'm trying to access an IDE hard drive from my CEPC OS image. I
started by following the instructions here:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcehardware5/html/wce50howHowtoConfigureaHardDiskDriveonaCEPC.asp

but when I boot my image and run the Storage Manager Control Panel
Applet, I don't see my hard drive in the list. I can't dismount or
format. No ATAPI errors show up on the serial console port. In fact, I
don't see any errors.

I'm pretty sure I've got the hard drive hooked up to my hardware
properly - I can see the hard drive in BIOS, and I'm using the
BIOSLOADER to boot off the hard drive (the nk.bin image is actually on
the HD). My HD is setup with two partitions - a FAT16 partition that's
100 MB in size, and a FAT32 partition that's 30 GB in size. It's a
standard IDE WD 40 GB HD. When I boot off the setup.144 floppy, I can
get a directory listing of the drive.

When I look at my workspace to double check that I've included
everything I need, I see the following:

Under the File Systems and Data Store folder:

Storage Manager
-- FAT File System
-- Storage Manager Control Panel Applet

among other things

Under device drivers I see:

Storage Devices
-- ATAPI PCI/IDE Storage Block Driver
-- Promise Controller ATAPI driver

So at this point I don't know how to debug this. Where do I go to get
more clues? Can I set a breakpoint in the ATAPI PCI/IDE Block driver?
I've searched Google groups and this group but didn't find any
additional ideas, maybe I didn't pick the right keywords. Anyway, I'd
appreciate any debugging tips anyone might have.

Thanks in advance.

Re: Windows CE - Cannot access hard disk on my CEPC image by user2084

user2084
Thu Nov 18 22:28:50 CST 2004

user2084@hotmail.com (User 2084) wrote :

> I'm trying to access an IDE hard drive from my CEPC OS image.

Ok, I've got additional debug information. But first a question. On a
CEPC, am I able to use an on-board IDE controller that is part of the
chipset? Or do I have to install a PCI IDE controller? It's not clear
to me what is and isn't supported, but perhaps I haven't read the
documentation carefully enough. Is this specified in the Win CE
documentation? In any case, I've tried several different PC
motherboards without any success. I haven't been able to find a PCI
IDE card with the supported chipsets, but I'd really prefer using
on-board IDE if possible.

I've examined my reginit.ini file and the debug output of my image. It
seems as if all the ATAPI sections are included. I was hoping that
the device would use the GenericIDE configuration, but I never see
that come up on my debug output, only see the ALI14531 device shown. I
get the error message:

0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 3 seconds
remaining

When the device is initialized.

One other question - do I have to enable Hive registry to use a IDE
drive?

I'm hoping someone here might be able to point me in the right
direction. Thanks in advance.

Here is my ATAPI Debug output:

0x83fcf800: ATAPI DLL_PROCESS_ATTACH
0x83fcf800: ATAPI:PCIConfig!DeviceConfig+(2)
0x83fcf800: ATAPI:PCIConfig!ConfigSize+(Bus 0, Device 31, Function 1)
0x83fcf800: ATAPI:PCIConfig!ConfigSize-
0x83fcf800: ATAPI DLL_PROCESS_DETACH
0x83fcf800: ATAPI DLL_PROCESS_ATTACH
0x83fcf800: ATAPI:PCIConfig!DeviceConfig+(3)
0x83fcf800: ATAPI DLL_PROCESS_DETACH
0x83fcf800: DEVICE!RegReadActivationValues

RegQueryValueEx(Drivers\BuiltIn\PCI\Instance\ALI14531\BusPrefix)
returned 2
0x83fcf800: ATAPI DLL_PROCESS_ATTACH
0x83fcf800: Atapi!DumpRegKey> Drivers\Active\06
0x83fcf800: Hnd = 00058050
0x83fcf800: Name = IDE1:
0x83fcf800: Key = Drivers\BuiltIn\PCI\Instance\ALI14531
0x83fcf800: BusParent = 000581D0
0x83fcf800: InterfaceType = 00000005
0x83fcf800: BusName = PCI_0_31_1
0x83fcf800: Atapi!DumpRegKey> Drivers\BuiltIn\PCI\Instance\ALI14531
0x83fcf800: IoLen :
0x83fcf800: 8
0x83fcf800: 4
0x83fcf800: 8
0x83fcf800: 4
0x83fcf800: 10
0x83fcf800: IoBase :
0x83fcf800: a010
0x83fcf800: a020
0x83fcf800: a018
0x83fcf800: a024
0x83fcf800: a000
0x83fcf800: FunctionNumber = 00000001
0x83fcf800: DeviceNumber = 0000001F
0x83fcf800: BusNumber = 00000000
0x83fcf800: InterfaceType = 00000005
0x83fcf800: ProgIF = 0000008A
0x83fcf800: RegisterStride = 00000001
0x83fcf800: StatusPollCyclePause = 00000005
0x83fcf800: StatusPollsPerCycle = 00000020
0x83fcf800: StatusPollCycles = 00000100
0x83fcf800: SoftResetTimeout = 00000003
0x83fcf800: DMAAlignment = 00000004
0x83fcf800: SysIntr = 00000000
0x83fcf800: Irq = 0000000E
0x83fcf800: Legacy = 00000001
0x83fcf800: ConfigEntry = GenericConfig
0x83fcf800: SubClass = 00000001
0x83fcf800: Class = 00000001
0x83fcf800: Order = 00000002
0x83fcf800: Dll = atapi.dll
0x83fcf800: Prefix = IDE
0x83fcf800: IClass :
0x83fcf800: {CDDC3621-3512-4b3f-BB6F-B4DD5E061795}
0x83fcf800: SpawnFunction = CreatePCIHDCD
0x83fcf800: InstanceIndex = 00000001
0x83fcf800: Atapi!IDE_Init> Start of IDE/ATA device enumeration
0x83fcf800: Atapi!IDE_Init> Enumerated IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device3
0x83fcf800: Atapi!IDE_Init> Enumerated IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device2
0x83fcf800: Atapi!IDE_Init> Enumerated IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device1
0x83fcf800: Atapi!IDE_Init> Enumerated IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device0
0x83fcf800: Atapi!IDE_Init> End of IDE/ATA device enumeration
0x83fcf800: Atapi!IDE_Init> Activating IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device0
0x83fcf800: DEVICE!RegReadActivationValues

RegQueryValueEx(Drivers\BuiltIn\PCI\Instance\ALI14531\Device0\BusPrefix)
returned

2
0x83fcf800: Atapi!DumpRegKey> Drivers\Active\07
0x83fcf800: Hnd = 0005B900
0x83fcf800: Name = DSK1:
0x83fcf800: Key = Drivers\BuiltIn\PCI\Instance\ALI14531\Device0
0x83fcf800: Atapi!DumpRegKey>
Drivers\BuiltIn\PCI\Instance\ALI14531\Device0
0x83fcf800: Port = 0005B230
0x83fcf800: TransferMode = 000000FF
0x83fcf800: DeviceId = 00000000
0x83fcf800: LookAhead = 00000001
0x83fcf800: WriteCache = 00000001
0x83fcf800: DrqDataBlockSize = 00000200
0x83fcf800: DoubleBufferSize = 00010000
0x83fcf800: DMA = 00000002
0x83fcf800: InterruptDriven = 00000001
0x83fcf800: Dll = atapi.dll
0x83fcf800: Prefix = DSK
0x83fcf800: IClass :
0x83fcf800: {A4E7EDDA-E575-4252-9D6B-4195D48BB865}
0x83fcf800: Atapi!CPCIDisk::CPCIDisk> device count(1)
0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 3 seconds
remaining
0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 2 seconds
remaining
0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 1 seconds
remaining
0x83fcf800: Atapi!CDisk::ResetController> Timeout
0x83fcf800: Atapi!CDisk::Init> Failed to initialize device
0x83fcf800: Atapi!CPCIDisk::~CPCIDisk> device count(0)
0x83fcf800: DEVICE!LaunchDevice: Init() failed for device 0x0005b900
0x83fcf800: DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK,
index 1,

dll atapi.dll, context 0x602d030
0x83fcf800: Atapi!IDE_Init> Activating IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device1
0x83fcf800: DEVICE!RegReadActivationValues

RegQueryValueEx(Drivers\BuiltIn\PCI\Instance\ALI14531\Device1\BusPrefix)
returned

2
0x83fcf800: Atapi!DumpRegKey> Drivers\Active\08
0x83fcf800: Hnd = 0005BB70
0x83fcf800: Name = DSK1:
0x83fcf800: Key = Drivers\BuiltIn\PCI\Instance\ALI14531\Device1
0x83fcf800: Atapi!DumpRegKey>
Drivers\BuiltIn\PCI\Instance\ALI14531\Device1
0x83fcf800: Port = 0005B230
0x83fcf800: TransferMode = 000000FF
0x83fcf800: DeviceId = 00000001
0x83fcf800: LookAhead = 00000001
0x83fcf800: WriteCache = 00000001
0x83fcf800: DrqDataBlockSize = 00000200
0x83fcf800: DoubleBufferSize = 00010000
0x83fcf800: DMA = 00000002
0x83fcf800: InterruptDriven = 00000001
0x83fcf800: Dll = atapi.dll
0x83fcf800: Prefix = DSK
0x83fcf800: IClass :
0x83fcf800: {A4E7EDDA-E575-4252-9D6B-4195D48BB865}
0x83fcf800: Atapi!CPCIDisk::CPCIDisk> device count(1)
0x83fcf800: Atapi!CDisk::IsDevicePresent> Device 1 is not present;
Error

register(0xff)
0x83fcf800: Atapi!CDisk::InitController> Device did not respond to
identify
0x83fcf800: Atapi!CDisk::Init> Failed to initialize device
0x83fcf800: Atapi!CPCIDisk::~CPCIDisk> device count(0)
0x83fcf800: DEVICE!LaunchDevice: Init() failed for device 0x0005bb70
0x83fcf800: DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK,
index 1,

dll atapi.dll, context 0x602d030
0x83fcf800: Atapi!IDE_Init> Activating IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device2
0x83fcf800: DEVICE!RegReadActivationValues

RegQueryValueEx(Drivers\BuiltIn\PCI\Instance\ALI14531\Device2\BusPrefix)
returned

2
0x83fcf800: Atapi!DumpRegKey> Drivers\Active\09
0x83fcf800: Hnd = 0005BDE0
0x83fcf800: Name = DSK1:
0x83fcf800: Key = Drivers\BuiltIn\PCI\Instance\ALI14531\Device2
0x83fcf800: Atapi!DumpRegKey>
Drivers\BuiltIn\PCI\Instance\ALI14531\Device2
0x83fcf800: Port = 0005B2A0
0x83fcf800: DeviceId = 00000000
0x83fcf800: TransferMode = 000000FF
0x83fcf800: LookAhead = 00000001
0x83fcf800: WriteCache = 00000001
0x83fcf800: DrqDataBlockSize = 00000200
0x83fcf800: DoubleBufferSize = 00010000
0x83fcf800: DMA = 00000002
0x83fcf800: InterruptDriven = 00000001
0x83fcf800: Dll = atapi.dll
0x83fcf800: Prefix = DSK
0x83fcf800: IClass :
0x83fcf800: {A4E7EDDA-E575-4252-9D6B-4195D48BB865}
0x83fcf800: Atapi!CPCIDisk::CPCIDisk> device count(1)
0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 3 seconds
remaining
0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 2 seconds
remaining
0x83fcf800: Atapi!CDisk::ResetController> Device is busy; 1 seconds
remaining
0x83fcf800: Atapi!CDisk::ResetController> Timeout
0x83fcf800: Atapi!CDisk::Init> Failed to initialize device
0x83fcf800: Atapi!CPCIDisk::~CPCIDisk> device count(0)
0x83fcf800: DEVICE!LaunchDevice: Init() failed for device 0x0005bde0
0x83fcf800: DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK,
index 1,

dll atapi.dll, context 0x602d030
0x83fcf800: Atapi!IDE_Init> Activating IDE/ATA device

Drivers\BuiltIn\PCI\Instance\ALI14531\Device3
0x83fcf800: DEVICE!RegReadActivationValues

RegQueryValueEx(Drivers\BuiltIn\PCI\Instance\ALI14531\Device3\BusPrefix)
returned

2
0x83fcf800: Atapi!DumpRegKey> Drivers\Active\10
0x83fcf800: Hnd = 0005C050
0x83fcf800: Name = DSK1:
0x83fcf800: Key = Drivers\BuiltIn\PCI\Instance\ALI14531\Device3
0x83fcf800: Atapi!DumpRegKey>
Drivers\BuiltIn\PCI\Instance\ALI14531\Device3
0x83fcf800: Port = 0005B2A0
0x83fcf800: DeviceId = 00000001
0x83fcf800: TransferMode = 000000FF
0x83fcf800: LookAhead = 00000001
0x83fcf800: WriteCache = 00000001
0x83fcf800: DrqDataBlockSize = 00000200
0x83fcf800: DoubleBufferSize = 00010000
0x83fcf800: DMA = 00000002
0x83fcf800: InterruptDriven = 00000001
0x83fcf800: Dll = atapi.dll
0x83fcf800: Prefix = DSK
0x83fcf800: IClass :
0x83fcf800: {A4E7EDDA-E575-4252-9D6B-4195D48BB865}
0x83fcf800: Atapi!CPCIDisk::CPCIDisk> device count(1)
0x83fcf800: Atapi!CDisk::IsDevicePresent> Device 1 is not present;
Error

register(0xff)
0x83fcf800: Atapi!CDisk::InitController> Device did not respond to
identify
0x83fcf800: Atapi!CDisk::Init> Failed to initialize device
0x83fcf800: Atapi!CPCIDisk::~CPCIDisk> device count(0)
0x83fcf800: DEVICE!LaunchDevice: Init() failed for device 0x0005c050