Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

FMD driver problem - Unable to add FlashDisk to my OS Design

121 views
Skip to first unread message

ageisreiter

unread,
Jun 8, 2009, 9:31:02 AM6/8/09
to
I am trying to add an FlashDisk to my WinCE OS design. My hardware is an
PXA270 modul with Intel strata NOR flash. The driver i am using is the sample
FMD code given by Microsoft for NOR flashes (strata folder in MSFLASHFMD). I
am not able mount the "NOR folder" at boot time. For this i have included the
SYSGEN_MSFLASH_STRATAD=1 in the environmental variables and i included the
stratad.dll in platform.bib like
stratad.dll $(_FLATRELEASEDIR)\stratad.dll NK SHK

I have added the Registry settings to Project.reg file like
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
"Dll"="stratad.dll"
"Order"=dword:2
"Prefix"="DSK"
"Ioctl"=dword:4
"Profile"="MSFlash"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"MemBase"=dword:01000000
"MemLen"=dword:01000000
"BlockSize"=dword:20000
"WriteBufferSize"=dword:20
"SectorSize"=dword:200
"IsPairedFlash"=dword:0 ; 16 bit Data-Bus width

; Support XIP in IMGFS
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]
"XIP"=dword:1

; Override names in default profile
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"Name"="MSFLASH for STRATAFLASH"
"Folder"="NOR Flash"

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]
"DriverPath"="Drivers\\BuiltIn\\StrataFMD"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:0
"Order"=dword:0
"BootPhase"=dword:0

IF IMGULDR
; Allow xip and read-only filesys regions to be written to
; in the update loader only
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
"UpdateReadOnly"=dword:1

I have updated the oemaddrtab_cfg.inc to
DCD 0x9AA00000, 0x01000000, 16 ; MAINSTONEII: nCS0: Storage (16MB).
DCD 0x9BA00000, 0x00000000, 16 ; MAINSTONEII: nCS0: Boot Flash
(16MB).

Now i am downloading the Image to Flash. But at the WinCE start I get the
debug message:
DEVICE!LaunchDevice: Init() failed for device 0xd0423a10
Unloading Module 'stratad.dll' (0x83D94024) at address 0xC0D20000-0xC0D41000
in Process 'NK.EXE' (0x813D9AA0)

And at my Debugging-Tool I get the message MMUFail if the physikal Address
0x01000000 is assigned to the FMD driver variable pBaseAddress.

Is there any failure in the OEM AddressTable? And which registry settings do
I need for my Flash device? (Flash with 16bit databus)

Thanks,
Andreas

Gary Swalling

unread,
Jun 8, 2009, 2:24:27 PM6/8/09
to
Hi Andreas,
Can you set a breakpoint in the FMD_Init and step through it?

Regards,
Gary

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message
news:DF0C7166-1CDE-4D14...@microsoft.com...

Bruce Eitman [eMVP]

unread,
Jun 8, 2009, 7:55:22 PM6/8/09
to
IIRC, the membase is a Virtual address, but you have used a physical
address.

--
Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message
news:DF0C7166-1CDE-4D14...@microsoft.com...

ageisreiter

unread,
Jun 9, 2009, 8:10:02 AM6/9/09
to
Hi Bruce and Gary,

I have changed MEMBase to 9AA00000. This is the virtual address which is
denoted in the OEMAddressTabel. But is MEMBase really an virtual address?
Because I now get an virtual address as return value of the function
GetPhysicalSectorAddress() (file
C:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD\STRATA\fmd.cpp). I
think the function name say's, that I should get an physical address as
return value.

But I have started the OS design with the virtual address for MEMBase, I
don't get the MMUFail error. But now I get other errors:

STRATA Error: Programming Error for Block 0 ... Lower flash.
FMD_EraseBlock: Unable to whack block signature
VerifySignatures: error in FMD_EraseBlock, bailing
ERROR: FMD_Init: Error while trying to verify block signatures.
Unknown: DEBUGCHK failed in file
C:\ymzki\private\winceos\DRIVERS\msflash\src\.\falmain.cpp at line 201

Faulted in KCall, pCurThread->dwStartAddr = c0471120, PageFreeCount =
0000110d!!
Original Context when thread faulted:
Exception 'Data Abort'(4) Thread-Id=00bf0002(pth=83f93600) PC=801324d0
BVA=d02eeff8, dwInfo = 00000406
R0=0000b373 R1=00bf0002 R2=00000000 R3=00000000
R4=c048829c R5=00000000 R6=00000000 R7=00000000
R8=00000000 R9=00009999 R10=00001010 R11=d023e388
R12=00000000 SP=d023e124 Lr=c0d29720 Psr=6000001f

I think that some other registry settings are wrong. Which settings do I
need for my hardware?
Description:
- 32MB Intel StrataFlash P30
- Block Size 128kB
- 16bit databus
- physical addresses: 0x00000000 - 0x02000000
- physical address range for FlashDisk: 0x01000000 - 0x01FFFFFF (16MB)
- physical address range for Bootloader and nk.bin: 0x00000000 - 0x00FFFFFF
(16MB)
- asynchronous connection to CPU

I can't find an description of the registry settings at the internet. And
I'm not sure, that I can split the Flash memory in two pieces. The second
part should be the FlashDisk form the address 0x01000000 up to 0x01FFFFFF.

Thanks,
Andreas

Gary Swalling

unread,
Jun 9, 2009, 7:20:14 PM6/9/09
to
Hi Andreas,
you are getting into FMD_Init...does it seem like you are talking to flash
at all? Is there some kind of check for CFI or ID codes? I thought the FMD
would take a physical address and generate virtual address with system
calls, but I'm not very familiar with this FMD.

Regards,
Gary

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:EA12CED7-DE74-4569...@microsoft.com...

ageisreiter

unread,
Jun 10, 2009, 11:12:01 AM6/10/09
to
Hi Gary,

I can use CFI, if I don't specify the registry settings "WriteBufferSize"
and "BlockSize". Then the driver try to connect the Flash via the CFI.
But I get the following error message:

OSAXST1: >>> Loading Module 'stratad.dll' (0x83DC7438) at address

0xC0D20000-0xC0D41000 in Process 'NK.EXE' (0x813D9AA0)

Kernel DLL 'stratad.dll' needs thread creation/deletion notification
Exception 'Data Abort' (4): Thread-Id=00bf0002(pth=83f93600),
Proc-Id=00400002(pprc=813d9aa0) 'NK.EXE', VM-active=00400002(pprc=813d9aa0)
'NK.EXE'
PC=c0637390(k.ceddk.dll+0x00007390) RA=c0d3b3c0(stratad.dll+0x0001b3c0)
SP=d023df9c, BVA=01000000
Exception 'Raised Exception' (-1): Thread-Id=00bf0002(pth=83f93600),
Proc-Id=00400002(pprc=813d9aa0) 'NK.EXE', VM-active=00400002(pprc=813d9aa0)
'NK.EXE'
PC=c00f985c(k.coredll.dll+0x0003985c) RA=80131e08(kernel.dll+0x00019e08)
SP=d023d764, BVA=ffffffff
DEVICE!LaunchDevice: exception in Init for device 0xd04221b0
DEVICE!LaunchDevice: Init() failed for device 0xd04221b0
DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK, index 1, dll
stratad.dll, context 0xd023e67c
OSAXST1: <<< Unloading Module 'stratad.dll' (0x83DC7438) at address

0xC0D20000-0xC0D41000 in Process 'NK.EXE' (0x813D9AA0)

And I'm not sure if the driver needs the virtual or the physical address.
But if I set the registry setting MEMBase to the physical address, I get the
error MMUFAIL at my debugging tool.
Generally is the hardware working, because I can access the flash form the
bootloader.
Do you have an idea, what I can do?

Thank you,
Andreas

Bruce Eitman [eMVP]

unread,
Jun 12, 2009, 5:18:40 PM6/12/09
to
I just realized that you have P30 Flash. The last time I looked, Microsoft
didn't support P30. If your driver has this:

if (g_FMDInfo.Geometry.NumEraseBlocks != 1)
{
DEBUGMSG(1, (TEXT("ERROR: InitializeFlash: more than one block
per erase region (%d).\r\n"), g_FMDInfo.Geometry.NumEraseBlocks));
return(FALSE);
}

in the InitializeFlash() function, then it doesn't support P30.

--
Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:EA341867-ECE5-4932...@microsoft.com...

Gary Swalling

unread,
Jun 12, 2009, 4:48:46 PM6/12/09
to
Hi Andreas,
Do you know what the FMD is doing with the "WriteBufferSize" and "BlockSize"
registry settings?
It seems like these are important configurations. Maybe the exception is
raised from a calculation based on one of these values. Can you step
through the FMD_Init to see which line raises the exception?

You said the FMD use CFI. Do you see reasonable values returned from the
flash? Hardware might work, but maybe the FMD is not able to access it.

Regards,
Gary

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:EA341867-ECE5-4932...@microsoft.com...

ageisreiter

unread,
Jun 15, 2009, 8:03:01 AM6/15/09
to
Hi Bruce,

Yes my driver contains if (g_FMDInfo.Geometry.NumEraseBlocks != 1)....
Can I modify the driver, that it support P30 StrataFlash? I think, that I'm
not the first person, which will use this Flash driver for P30 components.

By the way, I have added an UNLOCK command at the beginning of the
FMD_Init() function. And now I can run through the FMD_Init() function
without an error message. I had read in some internet discussion groups, that
the block lock can be a problem. But I don’t get an Flash Folder at Windows
CE. And I get some errors on the debug output:

FSDMGR!AutoLoadBlockDevice: Auto-loading block driver from
"Drivers\BuiltIn\StrataFMD"FSDMGR!MountStore: Attaching new storage device
"MSFlash"OSAXST1: >>> Loading Module 'stratad.dll' (0x83FAE708) at address

0xC0D20000-0xC0D41000 in Process 'NK.EXE' (0x813D9AA0)

OSAXST1: >>> Loading Module 'k.ceddk.dll' (0x83FAE840) at address
0xC0630000-0xC063E000 in Process 'NK.EXE' (0x813D9AA0)


Kernel DLL 'stratad.dll' needs thread creation/deletion notification

INFO: FMD_Init: -> InitializeFlash() 8 Blocks unlocked from virtual Flash
Address =0x9aa00000
INFO: FMD_Init: Flash Address=0x9aa00000 Length=0x100000.


Unknown: DEBUGCHK failed in file

C:\ymzki\private\winceos\DRIVERS\msflash\src\.\falmain.cpp at line 1409
DEBUG_BREAK @c0d2ddf0 Ignored.
FLASHDRV.DLL:CalculateLogicalRange() - Invalid number of logical blocks 0
FSDMGR!MountStore: Failed mounting store "MSFlash"; error=50
FSDMGR!StoreDisk_t::~StoreDisk_t: deleting store (D0021D30)OSAXST1: <<<
Unloading Module 'stratad.dll' (0x83FAE708) at address 0xC0D20000-0xC0D41000
in Process 'NK.EXE' (0x813D9AA0)
OSAXST1: <<< Unloading Module 'k.ceddk.dll' (0x83FAE840) at address
0xC0630000-0xC063E000 in Process 'NK.EXE' (0x813D9AA0)
FSDMGR!AutoLoadFileSystems: Unable to auto-load
HKLM\System\StorageManager\AutoLoad\MSFlash;
error=50FSDMGR!STOREMGR_StartBootPhase BootPhase=1 (PrevBootPhase=0)
FSDMGR!AutoLoadFileSystems: CurrentBootPhase=1, LoadFlags=1
FSVOL: Using system database volume "\Documents and Settings\default.vol"

What could I do? Is it with little efford possible to adjust the driver for
P30 flash?

ageisreiter

unread,
Jun 15, 2009, 8:11:01 AM6/15/09
to
Hi Gary,

I don't know exactly what the "WriteBufferSize" and "BlockSize" registry
settings are doing. But I have added an UNLOCK command at the beginning of

the
FMD_Init() function. And now I can run through the FMD_Init() function

without an exception. I have read in some internet discussion groups, that

the block lock can be a problem. But I don’t get an Flash Folder at Windows
CE. And I get some errors on the debug output:

FSDMGR!AutoLoadBlockDevice: Auto-loading block driver from
"Drivers\BuiltIn\StrataFMD"FSDMGR!MountStore: Attaching new storage device

"MSFlash"OSAXST1: >>> Loading Module 'stratad.dll' (0x83FAE708) at address

0xC0D20000-0xC0D41000 in Process 'NK.EXE' (0x813D9AA0)

OSAXST1: >>> Loading Module 'k.ceddk.dll' (0x83FAE840) at address

0xC0630000-0xC063E000 in Process 'NK.EXE' (0x813D9AA0)


Kernel DLL 'stratad.dll' needs thread creation/deletion notification

INFO: FMD_Init: -> InitializeFlash() 8 Blocks unlocked from virtual Flash
Address =0x9aa00000
INFO: FMD_Init: Flash Address=0x9aa00000 Length=0x100000.

Unknown: DEBUGCHK failed in file

C:\ymzki\private\winceos\DRIVERS\msflash\src\.\falmain.cpp at line 1409
DEBUG_BREAK @c0d2ddf0 Ignored.
FLASHDRV.DLL:CalculateLogicalRange() - Invalid number of logical blocks 0
FSDMGR!MountStore: Failed mounting store "MSFlash"; error=50
FSDMGR!StoreDisk_t::~StoreDisk_t: deleting store (D0021D30)OSAXST1: <<<

Unloading Module 'stratad.dll' (0x83FAE708) at address 0xC0D20000-0xC0D41000
in Process 'NK.EXE' (0x813D9AA0)


OSAXST1: <<< Unloading Module 'k.ceddk.dll' (0x83FAE840) at address
0xC0630000-0xC063E000 in Process 'NK.EXE' (0x813D9AA0)
FSDMGR!AutoLoadFileSystems: Unable to auto-load
HKLM\System\StorageManager\AutoLoad\MSFlash;
error=50FSDMGR!STOREMGR_StartBootPhase BootPhase=1 (PrevBootPhase=0)
FSDMGR!AutoLoadFileSystems: CurrentBootPhase=1, LoadFlags=1
FSVOL: Using system database volume "\Documents and Settings\default.vol"

But Bruce Eitman wrote, that the driver doesn't support "P30" StrataFlash.
Do you know something about that?

Thanks,

Bruce Eitman [eMVP]

unread,
Jun 15, 2009, 8:46:23 AM6/15/09
to
WriteBufferSize and BlockSize are defined in the data sheet for your flash.

--
Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:2EC663F3-BBFE-4F4A...@microsoft.com...

Bruce Eitman [eMVP]

unread,
Jun 15, 2009, 8:47:58 AM6/15/09
to
Yes, it can be modified to support P30.

Giving it more thought, you probably can get it to work with P30 simply by
avoiding the smaller blocks. That is set the start address or size to keep
the flash disk out of the smaller blocks.

--
Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:45E52357-EF55-4C35...@microsoft.com...

ageisreiter

unread,
Jun 15, 2009, 10:21:01 AM6/15/09
to
I would say that 0x20 for the WriteBufferSize is correct, because a buffered
program command is followed by up to 32 words of data at P30 Flash (from the
datasheet P30 StrataFlash).

But I have tried 10 (0xA) and I get the same error mesages:

By the way, I have no paired flash. I have only 16bit databus width.
Have you another idea?

Thanks,
Andreas

"Bruce Eitman [eMVP]" wrote:

> Double check WriteBufferSize - it should be n, where the actual write buffer
> size is 2 ^ n (2 raised to the power of n) multiplied by 2 if Paired Flash
> is set.
>
> I think that n for P30 is 10 (0xA)


>
> --
> Bruce Eitman (eMVP)
> Senior Engineer
> Bruce.Eitman AT EuroTech DOT com
> My BLOG http://geekswithblogs.net/bruceeitman
>
> EuroTech Inc.
> www.EuroTech.com
>
> "ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

> news:2E398BC4-59BA-4890...@microsoft.com...
> > Hi Bruce,
> >
> > I don't use the smaller blocks at the beginning of the flash. I will split
> > my flash in two parts. The first for the Image: 0x0000_0000 - 0x00FF_FFFF
> > and
> > the seccond for the FlashDisk: 0x0100_0000 - 0x01FF_FFFF
> > But it doesn't work. So I think the failure is in the registry settings or
> > in the OEMAddressTable.
> >
> > Registry settings:
> > --------------------


> > [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
> > "Dll"="stratad.dll"
> > "Order"=dword:2
> > "Prefix"="DSK"
> > "Ioctl"=dword:4
> > "Profile"="MSFlash"
> > "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"

> > ;"XIPEntireFlash"=dword:1
> > "MemBase"=dword:9AA00000
> > "MemLen"=dword:100000


> > "BlockSize"=dword:20000
> > "WriteBufferSize"=dword:20
> > "SectorSize"=dword:200
> > "IsPairedFlash"=dword:0 ; 16 bit Data-Bus width
> >
> > ; Support XIP in IMGFS
> > [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]
> > ;"XIP"=dword:1
> >
> > ; Override names in default profile
> > [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
> > "Name"="MSFLASH for STRATAFLASH"
> > "Folder"="NOR Flash"

> > "DefaultFileSystem"="FATFS"
> > "PartitionDriver"="mspart.dll"
> > "AutoMount"=dword:1
> > "AutoPart"=dword:1
> > "AutoFormat"=dword:1
> > "MountFlags"=dword:6


> >
> > [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]
> > "DriverPath"="Drivers\\BuiltIn\\StrataFMD"
> > ; LoadFlags 0x01 == load synchronously

> > "LoadFlags"=dword:1


> > "Order"=dword:0
> > "BootPhase"=dword:0
> >

> > [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles]
> > "AutoMount"=dword:1
> > "AutoPart"=dword:1
> > "AutoFormat"=dword:1
> > "MountFlags"=dword:6
> > "DefaultFileSystem"="FATFS"
> > "PartitionDriverName"="MSPART"
> > "Folder"="Mounted Volume"


> >
> > IF IMGULDR
> > ; Allow xip and read-only filesys regions to be written to
> > ; in the update loader only
> > [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
> > "UpdateReadOnly"=dword:1

> > ENDIF
> >
> > Config.bib:
> > -------------
> > ...
> > ZBANK 9A500000 00100000 RESERVED ;Reserve
> > ZBANK
> > FLASH 9AA00000 01000000 RESERVED ;Flash
> > Storage
> > EBOOT 9BA00000 00040000 RESERVED ;EBOOT
> > Flash
> > image
> > BOOTCFG 9BA40000 00040000 RESERVED ;BOOT
> > config
> > parm
> > ...
> >
> > OEMAddressTable:
> > ----------------------
> > ...
> > DCD 0x9A900000, 0x08000000, 1 ; MAINSTONEII: nCS2: Ethernet
> > controller


> > DCD 0x9AA00000, 0x01000000, 16 ; MAINSTONEII: nCS0: Storage (16MB)

> > DCD 0x9BA00000, 0x00000000, 16 ; MAINSTONEII: nCS0: BootFlash
> > (16MB)

> > DCD 0x9EA00000, 0x50000000, 1 ; BULVERDE: Camera peripheral
> > interface.
> > ...
> >
> > Please have I look at my settings.

ageisreiter

unread,
Jun 15, 2009, 9:35:01 AM6/15/09
to
Hi Bruce,

I don't use the smaller blocks at the beginning of the flash. I will split
my flash in two parts. The first for the Image: 0x0000_0000 - 0x00FF_FFFF and
the seccond for the FlashDisk: 0x0100_0000 - 0x01FF_FFFF
But it doesn't work. So I think the failure is in the registry settings or
in the OEMAddressTable.

Registry settings:
--------------------


[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
"Dll"="stratad.dll"
"Order"=dword:2
"Prefix"="DSK"
"Ioctl"=dword:4
"Profile"="MSFlash"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"

;"XIPEntireFlash"=dword:1
"MemBase"=dword:9AA00000
"MemLen"=dword:100000

"BlockSize"=dword:20000
"WriteBufferSize"=dword:20
"SectorSize"=dword:200
"IsPairedFlash"=dword:0 ; 16 bit Data-Bus width

; Support XIP in IMGFS
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]
;"XIP"=dword:1

; Override names in default profile
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"Name"="MSFLASH for STRATAFLASH"
"Folder"="NOR Flash"

"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountFlags"=dword:6

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]


"DriverPath"="Drivers\\BuiltIn\\StrataFMD"
; LoadFlags 0x01 == load synchronously

"LoadFlags"=dword:1


"Order"=dword:0
"BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles]
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountFlags"=dword:6
"DefaultFileSystem"="FATFS"
"PartitionDriverName"="MSPART"
"Folder"="Mounted Volume"

IF IMGULDR
; Allow xip and read-only filesys regions to be written to
; in the update loader only
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
"UpdateReadOnly"=dword:1

ENDIF

Config.bib:
-------------
...
ZBANK 9A500000 00100000 RESERVED ;Reserve
ZBANK
FLASH 9AA00000 01000000 RESERVED ;Flash Storage
EBOOT 9BA00000 00040000 RESERVED ;EBOOT Flash
image
BOOTCFG 9BA40000 00040000 RESERVED ;BOOT config
parm
...

OEMAddressTable:
----------------------
...
DCD 0x9A900000, 0x08000000, 1 ; MAINSTONEII: nCS2: Ethernet
controller

DCD 0x9AA00000, 0x01000000, 16 ; MAINSTONEII: nCS0: Storage (16MB)

DCD 0x9BA00000, 0x00000000, 16 ; MAINSTONEII: nCS0: BootFlash (16MB)
DCD 0x9EA00000, 0x50000000, 1 ; BULVERDE: Camera peripheral
interface.
...

Please have I look at my settings.

Thanks,

Bruce Eitman [eMVP]

unread,
Jun 15, 2009, 9:50:59 AM6/15/09
to
Double check WriteBufferSize - it should be n, where the actual write buffer
size is 2 ^ n (2 raised to the power of n) multiplied by 2 if Paired Flash
is set.

I think that n for P30 is 10 (0xA)

--

Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:2E398BC4-59BA-4890...@microsoft.com...

Bruce Eitman [eMVP]

unread,
Jun 15, 2009, 10:36:49 AM6/15/09
to
Actually, I beleive that the data sheet is wrong about that - or at least
inconsistent. Check the Geometry (I think) in the data sheet. But the
actual value will depend on how your driver uses it. I have modified mine
to support P30, so it is considerably different. Mine calculates the write
buffer size based on the information that it reads from flash.

--
Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:3161F0FA-8644-4BCB...@microsoft.com...

ageisreiter

unread,
Jun 15, 2009, 10:53:27 AM6/15/09
to
Ok, I will check the data sheet because of the geometry.
But one other question. What is the SectorSize? Why do I need this registry
setting?

Bruce Eitman [eMVP]

unread,
Jun 15, 2009, 11:29:24 AM6/15/09
to
Sector size is totally software controlled. The driver breaks the hardware
block into smaller pieces which it calls sectors.

--
Bruce Eitman (eMVP)
Senior Engineer
Bruce.Eitman AT EuroTech DOT com
My BLOG http://geekswithblogs.net/bruceeitman

EuroTech Inc.
www.EuroTech.com

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:7F209EF4-AE7D-47E0...@microsoft.com...

Gary Swalling

unread,
Jun 16, 2009, 10:27:24 AM6/16/09
to
Hi Andreas,
Sector size is the file system sector size. 200 (512d) looks right for
FATFS.
It sounds like FMD_GetInfo is reporting invalid geometry to the FAL. I
would set a breakpoint there and take a look at those values. If one seems
strange, I would walk through FMD_Init to see where it comes from.

Regards,
Gary

"Bruce Eitman [eMVP]" <bruce.eit...@EuroTech.com.nospam> wrote in
message news:%23y9aR4c...@TK2MSFTNGP05.phx.gbl...

ageisreiter

unread,
Jun 17, 2009, 10:53:01 AM6/17/09
to
Hi Bruce,

the driver doesn't work, but I think that the geometrie should no be ok:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
"Dll"="stratad.dll"
"Order"=dword:2
"Prefix"="DSK"
"Ioctl"=dword:4
"Profile"="MSFlash"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"XIPEntireFlash"=dword:1
"MemBase"=dword:9AA00000
"MemLen"=dword:100000
"BlockSize"=dword:20000

"WriteBufferSize"=dword:C ; determined from CFI

"SectorSize"=dword:200
"IsPairedFlash"=dword:0 ; 16 bit Data-Bus width

Do you know sonthing about the following registry settings?
1. XIPEntireFlash: I will not start WinCE at the flash. But I will start
executables from the FlashDisk in Windows. Do I need XIP for this?
2. MountFlags ([HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]):
I will not boot from the Flash, but I will use the Flash for Hive Based
Registry. Is the setting 6 for "MountFlags" ok? (This should mount the
partition at the root as a bootable partition.)
3. LoadFlags ([HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]):
LoadFlags 0x01 == load synchronously. What means this?

Gary Swalling

unread,
Jun 17, 2009, 12:45:16 PM6/17/09
to
Hi Andreas,
I believe XIP means raw writes with no flash driver metadata. XIP would be
used for FMD integrated in the OAL for raw binary updates. If you want to
load an executable from a flash disk, then to the FMD this will just be
another file, managed by the filesystem, and it needs the metadata.

Regards,
Gary

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:1E07DA3E-00C4-454A...@microsoft.com...

ageisreiter

unread,
Jun 18, 2009, 9:29:01 AM6/18/09
to
Hi,

The driver still doesn't work. But I have a new idea, what the problem could
be. My StrataFlash is asynchron connected to the PXA270 CPU. But there are
two Read opeartions possible for example: Asynchronous Page-Mode Read and
Synchronous Burst-Mode Read. How does the driver know, how the flash is
connected?

To Gary: So I think, that I doesn't need XIP.

By the way: Could anybody send me his registry settings for the stratad
driver. Then I could compare working settings with my own.

Thanks,
Andreas

Gary Swalling

unread,
Jun 26, 2009, 10:55:08 AM6/26/09
to

Hi Andreas,
The flash is going to power up in asynch mode by default and when using
burst reads, this is generally managed by firmware, like a bootloader. In
my experience, asynch vs. synch reads is generally invisible to the flash
block driver.

Regards,
Gary

"ageisreiter" <ageis...@discussions.microsoft.com> wrote in message

news:7F5D3232-049A-4E57...@microsoft.com...

0 new messages