readme-bin.txt Driver File Contents (s3c2410bsp_ce410_v102.zip)

********************************************************************************
*                                                                              *
*                           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

How To Update Drivers Manually

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.

server: web2, load: 0.65