******************************************************************************** * * * README-BIN-COMPAQ.TXT * * * * PocketStore * * * * Version 0.21 * * * * Copyright (C) 2000-2002 Samsung Electronics, Co., Ltd. * * * * - written by SongHo Yoon * * * ******************************************************************************** 1. Introduction The PocketStore is a Full-package of NAND Flash memory software for PocketPC2002. The PocketStore is consist of 7 modules. Currently, The PocketStore only supports S3C2410 NAND Controller Feature. - NAND flash memory low level access module (OEMFlashIO.c) This module includes ECC module. - NAND flash memory Device Manager (FDMgr.lib) Currently, the PocketStore only suports the initial BadBlock Management. The PocketStore will support the Run-time Bad Block Management in the future. - PocketPC2002 Registry Management module (PocketStoreReg.lib) - NAND flash memory block device driver module (SSR_PS.lib) - NAND flash memory Partition Manager (PocketStoreOEM.c) - Multiple XIP Update module (PocketStoreXIPUpdate.lib) - Software ECC module (PocketStoreECC.lib) << PocketStore Directory Structure >> PocketStore -+- bin +- doc +- inc +- OEM +- Sample -+- EBOOT +- src ----+- FlashIO +- inc +- SSRFS +- XIPUpdate 2. PocketStore Architecture +-------------+------------+-----------------------+ | XIP Regions | Registry | SSR | | Management | Management | (Block Device Driver) | ==> Application Layer +-------------+------------+-----------------------+ | PocketStoreOEM | ==> Partition Managing Layer +--------------------------------------------------+ | Flash Device Manager | ==> Bad Block Managing Layer +--------------------------------------------------+ | Low level Access OEM Functions | ==> Hardware Interface Layer +--------------------------------------------------+ 2. NAND flash memory Partition NAND flash memory MAP PocketStore Module +----------------+ | | ===================> PocketStoreOEM.c | | ===================> SSR.lib | Filesystem | ===================> FGMgr.lib | | ===================> PocketStoreECC.lib | | ===================> OEMFlashIO.c +----------------+ | | ===================> PocketStoreOEM.c | Registry | ===================> PocketStoreReg.lib | | ===================> FDMgr.lib | | ===================> PocketStoreECC.lib | | ===================> OEMFlashIO.c +----------------+ | | ===================> PocketStoreOEM.c | Windows CE | ===================> PocketStoreXIPUpdate.lib | OS Image | ===================> FDMgr.lib | | ===================> PocketStoreECC.lib | | ===================> OEMFlashIO.c +----------------+ | | ===================> PocketStoreOEM.c | Bootloader | ===================> FDMgr.lib | | ===================> PocketStoreECC.lib | | ===================> OEMFlashIO.c +----------------+ 3. Development Environment PC Target Board +------------+ +---------------+ | | Network | | | ESHELL |<================>| EBOOT | | | | | +------------+ +---------------+ 1) Implement EBOOT by using "PocketStore EBOOT sample source code" 2) Download Multiple XIP Image (Windows CE OS image) from ESHELL(PC) to EBOOT(Target Board) thru Network 3) EBOOT write Window CE OS image to NAND flash memory 4) Boot by Bootloader (shadowing Windows CE OS image from NAND flash memory to SDRAM) 4. OEM Modification Part 1) Copy 'PocketStore' directory to $(_TARGETPLATROOT) Copy 5 library files 1) PocketStoreReg.lib 2) PocketStoreECC.lib 3) FDMgr.lib 4) SSR_PS.lib 5) PocketStoreXIPUpdate.lib , which is located at $(_TARGETPLATROOT)\PocketStore\bin, to $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH) 2) Implement File ("PocketStoreOEM.c), which is located at $(_TARGETPLATROOT)\PocketStore\OEM. Let build at $(_TARGETPLATROOT)\PocketStore\OEM. OEM can modify the paramenter of The PocketStore. void GetPocketStoreParameter( PocketStoreParm *pParm ) { pParm->dwStartBlockOfXIPRegions = 0; /* Block Number of starting OS region */ pParm->dwStartBlockOfOS = 1; /* Block Size of OS region */ pParm->dwStartAddressOfOS = 0x80040000; pParm->dwBlocksOfXIPRegions = 2015; /* BootStrap : 16, OS : 1536 for 24.0MB */ pParm->dwStartBlockOfRegistry = 2015; /* Block Number of starting Registry */ pParm->dwBlocksOfRegistry = 32; /* Block Size of Registry */ pParm->dwStartBlockOfFilesystem = 2047; /* Block Number of starting Filesystem */ pParm->dwBlocksOfFilesystem = 2039; /* Block Size of Filesystem */ pParm->dwStartBlockOfBadReserved= 4086; /* Block Number of starting BadReserved */ pParm->dwBlocksOfBadReserved = 10; /* Block Size of BadReserved */ pParm->dwNumOfDevice = 1; pParm->dwBlocksOfDevice = 4096; } [CAUTION] The value of "pParm->dwBlocksOfBadReserved" must be greater than 2. Because 2 Blocks is used by "BAD Block MAP Table". NAND flash memory MAP Blk 4095 +----------------+ <== pParm->dwBlocksOfDevice - 1 <---+ | Bad Reserved | | pParm->dwBlocksOfBadReserved | Block | | Blk 4086 +----------------+ <== pParm->dwStartBlockOfBadReserved <---+ | | | | | | | Filesystem | | pParm->dwBlocksOfFilesystem | | | | | | Blk 2047 +----------------+ <=== pParm->dwStartBlockOfFilesystem <---| | | | | Registry | | pParm->dwBlocksOfRegistry | | | Blk 2015 +----------------+ <=== pParm->dwStartBlockOfRegistry <---+ | | | | Windows CE | | | OS Image | | | | | pParm->dwBlocksOfXIPRegions Blk 1 +----------------+ <=== pParm->dwStartBlockOfOS | | Bootloader | | | | | Blk 0 +----------------+ <=== pParm->dwStartBlockOfXIPRegions <---+ 3) Modify $(_TARGETPLATROOT)\kernel\BUILDEXE\NOKD\sources $(_TARGETPLATROOT)\kernel\BUILDEXE\PROFILER\sources $(_TARGETPLATROOT)\kernel\BUILDEXE\PROFKD\sources $(_TARGETPLATROOT)\kernel\BUILDEXE\WITHKD\sources Add the following lines to 'sources' files. TARGETLIBS=$(TARGETLIBS) $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\PocketStoreOEM.lib TARGETLIBS=$(TARGETLIBS) $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\OEMFlashIO.lib TARGETLIBS=$(TARGETLIBS) $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\FDMgr.lib TARGETLIBS=$(TARGETLIBS) $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\PocketStoreReg.lib TARGETLIBS=$(TARGETLIBS) $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\PocketStoreXIPUpdate.lib TARGETLIBS=$(TARGETLIBS) $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\PocketStoreECC.lib 4) Implement Function('OEMInit') in OEM Adaptation Layer. This is the registry support part. /* PocketStore: Added to implement the read & write registry functionality */ extern BOOL PocketStoreReg_Initialization(void); extern BOOL WriteRegistryToOEM(DWORD dwFlags, LPBYTE lpData, DWORD cbData); extern DWORD ReadRegistryFromOEM(DWORD dwFlags, LPBYTE lpData, DWORD cbData); extern BOOL (*pReadRegistryFromOEM)(DWORD dwFlags, LPBYTE lpData, DWORD cbData) = ReadRegistryFromOEM; extern DWORD (*pWriteRegistryToOEM)(DWORD dwFlags, LPBYTE lpData, DWORD cbData) = WriteRegistryToOEM; /* End of PocketStore Registry Externals */ // PocketStore: Initialize the Registry library for OEM Reg handling lpWriteDebugStringFunc(TEXT("OEM Init: Initializing the PocketStore Registry library...\r\n")); if (TRUE == PocketStoreReg_Initialization()) { } else { pReadRegistryFromOEM = NULL; pWriteRegistryToOEM = NULL; } // End of PocketStore Registry Init 5) Implement Function('OEMIoControl') in OEM Adaptation Layer. This is the Mutiple XIP Update Support Part. Let refer to the sample source code, which is located at $(_TARGETPLATROOT)\PocketStore\src\XIPUpdate\OEMIOCTL.C, in order to adapt Multiple XIP Update feature. To support Multiple XIP Update, OEM must implement OEMIOControl Function.(case IOCTL_HAL_XIPCHAIN, case IOCTL_HAL_WRITE_XIP) 6) Implement EBOOT using EBOOT Sample, which is located at $(_TARGETPLATROOT)\PocketStore\sample\EBOOT\main.c BOOL WriteXIPRegionsToNAND(void) ==> Write XIP Image From SDRAM to NAND UINT ShadowXIPRegions(void) ==> Shadow XIP Image From NAND to SDRAM 7) Build SSRFS_PS.dll let build at $(_TARGETPLATROOT)\PocketStore\src\SSRFS 8) Update "platform.bib" MODULES ssrfs_ps.dll $(_FLATRELEASEDIR)\ssrfs_ps.dll MISC SH 9) Update "platform.reg" [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PocketStore] "Prefix"="DSK" "Dll"="ssrfs_ps.dll" "Index"=dword:1 "Order"=dword:1 "Ioctl"=dword:4 "FSD"="fatfs.dll" 10) If OEM want to adapt PocketStore to Other Platform, OEM must implement OEMFlashIO.c , which is located at $(_TARGETPLATROOT)\PocketStore\src\FlashIO. The source file("OEMFlashIO.c") is consist of 12 Functions INT FM_OEMOpen (UINT drv) void FM_OEMClose (UINT drv) INT FM_OEMReadPage (UINT drv, UINT PageNum, UINT ReadPos, UCHAR *pBuf) INT FM_OEMWritePage(UINT drv, UINT PageNum, UINT ReadPos, UCHAR *pBuf) INT FM_OEMWriteBlk (UINT drv, UINT PageNum, UCHAR *pBuf) INT FM_OEMReadBlk (UINT drv, UINT PageNum, UCHAR *pBuf) INT FM_OEMRead (UINT drv, UINT PageNum, UINT Offset, UCHAR *pBuf, UINT Length) INT FM_OEMWrite (UINT drv, UINT PageNum, UINT Offset, UCHAR *pBuf, UINT Length) INT FM_OEMEraseBlk (UINT drv, UINT PageNum) INT FM_OEMIsBadBlk (UINT drv, UINT PageNum) void FM_OEMReadXID (UINT drv, UCHAR *pIDStr) INT FM_OEMCopyBack (UINT drv, UINT SrcPageNum, UINT TgtPageNum)Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.