boot.txt
上传用户:qiulin1960
上传日期:2013-10-16
资源大小:2844k
文件大小:2k
源码类别:

Windows CE

开发平台:

Windows_Unix

  1. /*=====================================================================
  2.     Memory layout on NAND flash:
  3.     
  4.     Block 0 has the NAND boot loader (NBOOT.BIN)
  5.     Block 1 is the TOC block which specifies the layout on the NAND
  6.     Block 2 is the start block for secondary bootloader
  7.     Block n is the start of image. n is defined in the block 1 structure
  8.     
  9.     
  10.     structures:
  11.     
  12.     #define MAX_SG_SECTORS      10
  13.     
  14.     IMAGE_DESCRIPTOR: (116 bytes)
  15.     
  16.     typedef struct _IMAGE_DESCRIPTOR {
  17.         DWORD       dwVersion;
  18.         DWORD       dwSignature;
  19.         UCHAR       ucString[IMAGE_STRING_LEN];
  20.         DWORD       dwFileType;
  21.         DWORD       dwLoadAddress;
  22.         DWORD       dwJumpAddress;
  23.         DWORD       dwTtlSectors;
  24.         SG_SECTOR   sgList[MAX_SG_SECTORS];
  25.     } IMAGE_DESCRIPTOR, *PIMAGE_DESCRIPTOR;
  26.     
  27.     where SG_SECTOR is defined as:
  28.     
  29.     SG_SECTOR: (8 bytes)
  30.     
  31.     typedef struct _SG_SECTOR {
  32.         DWORD       dwSector;
  33.         DWORD       dwLength;
  34.     } SG_SECTOR, *PSG_SECTOR;
  35.     
  36.     The layout on the first sector of TOC block is:
  37.     
  38.     typedef struct _TOC_SECTOR {
  39.         DWORD               dwSignature;        //  4 bytes
  40.         IMAGE_DESCRIPTOR    id[4];              //  480 bytes
  41.         UCHAR               Pad[32];            //  32 bytes
  42.     } TOC_SECTOR, *PTOC_SECTOR;
  43.     Here is what we are doing in the first stage bootloader:
  44.     
  45.     1.  Do the usual things to initialize the hardware
  46.     2.  By default, it will always boot the id[0], unless App4 button is pressed
  47.         and at the same time another app button is pressed. NBOOT will boot from 
  48.         id[num] where num is the app button that is pressed.
  49.     
  50.         For development, we can write our own TOC sector so that id[0] points to 
  51.         Block2 which is the start block for secondary bootloader, more than likely
  52.         Eboot. 
  53.         
  54. */