⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prep_nvram.h

📁 嵌入式系统设计与实例开发实验教材二源码 多线程应用程序设计 串行端口程序设计 AD接口实验 CAN总线通信实验 GPS通信实验 Linux内核移植与编译实验 IC卡读写实验 SD驱动使
💻 H
字号:
/* * BK Id: SCCS/s.prep_nvram.h 1.7 05/17/01 18:14:25 cort *//* * PreP compliant NVRAM access *//* Corey Minyard (minyard@acm.org) - Stolen from PReP book.   Per the   license I must say:     (C) Copyright (Corey Minyard), (1998).  All rights reserved *//* Structure map for NVRAM on PowerPC Reference Platform *//* All fields are either character/byte strings which are valid either  endian or they are big-endian numbers.  There are a number of Date and Time fields which are in RTC format,  big-endian. These are stored in UT (GMT).  For enum's: if given in hex then they are bit significant, i.e. only  one bit is on for each enum.*/#ifdef __KERNEL__#ifndef _PPC_PREP_NVRAM_H#define _PPC_PREP_NVRAM_H#define MAX_PREP_NVRAM 0x8000#define PREP_NVRAM_AS0	0x74#define PREP_NVRAM_AS1	0x75#define PREP_NVRAM_DATA	0x77#define NVSIZE 4096	/* size of NVRAM */#define OSAREASIZE 512	/* size of OSArea space */#define CONFSIZE 1024	/* guess at size of Configuration space */typedef struct _SECURITY {  unsigned long BootErrCnt;	    /* Count of boot password errors */  unsigned long ConfigErrCnt;	    /* Count of config password errors */  unsigned long BootErrorDT[2];	    /* Date&Time from RTC of last error in pw */  unsigned long ConfigErrorDT[2];   /* Date&Time from RTC of last error in pw */  unsigned long BootCorrectDT[2];   /* Date&Time from RTC of last correct pw */  unsigned long ConfigCorrectDT[2]; /* Date&Time from RTC of last correct pw */  unsigned long BootSetDT[2];	    /* Date&Time from RTC of last set of pw */  unsigned long ConfigSetDT[2];	    /* Date&Time from RTC of last set of pw */  unsigned char Serial[16];	    /* Box serial number */} SECURITY;typedef enum _OS_ID {  Unknown = 0,  Firmware = 1,  AIX = 2,  NT = 3,  MKOS2 = 4,  MKAIX = 5,  Taligent = 6,  Solaris = 7,  MK = 12} OS_ID;typedef struct _ERROR_LOG {  unsigned char ErrorLogEntry[40]; /* To be architected */} ERROR_LOG;typedef enum _BOOT_STATUS {  BootStarted = 0x01,  BootFinished = 0x02,  RestartStarted = 0x04,  RestartFinished = 0x08,  PowerFailStarted = 0x10,  PowerFailFinished = 0x20,  ProcessorReady = 0x40,  ProcessorRunning = 0x80,  ProcessorStart = 0x0100} BOOT_STATUS;typedef struct _RESTART_BLOCK {  unsigned short Version;  unsigned short Revision;  unsigned long ResumeReserve1[2];  volatile unsigned long BootStatus;  unsigned long CheckSum; /* Checksum of RESTART_BLOCK */  void * RestartAddress;  void * SaveAreaAddr;  unsigned long SaveAreaLength;} RESTART_BLOCK;typedef enum _OSAREA_USAGE {  Empty = 0,  Used = 1} OSAREA_USAGE;typedef enum _PM_MODE {  Suspend = 0x80, /* Part of state is in memory */  Normal = 0x00   /* No power management in effect */} PMMode;typedef struct _HEADER {  unsigned short Size;       /* NVRAM size in K(1024) */  unsigned char Version;     /* Structure map different */  unsigned char Revision;    /* Structure map the same -may                                be new values in old fields                                in other words old code still works */  unsigned short Crc1;       /* check sum from beginning of nvram to OSArea */  unsigned short Crc2;       /* check sum of config */  unsigned char LastOS;      /* OS_ID */  unsigned char Endian;      /* B if big endian, L if little endian */  unsigned char OSAreaUsage; /* OSAREA_USAGE */  unsigned char PMMode;      /* Shutdown mode */  RESTART_BLOCK RestartBlock;  SECURITY Security;  ERROR_LOG ErrorLog[2];  /* Global Environment information */  void * GEAddress;  unsigned long GELength;  /* Date&Time from RTC of last change to Global Environment */  unsigned long GELastWriteDT[2];  /* Configuration information */  void * ConfigAddress;  unsigned long ConfigLength;  /* Date&Time from RTC of last change to Configuration */  unsigned long ConfigLastWriteDT[2];  unsigned long ConfigCount; /* Count of entries in Configuration */  /* OS dependent temp area */  void * OSAreaAddress;  unsigned long OSAreaLength;  /* Date&Time from RTC of last change to OSAreaArea */  unsigned long OSAreaLastWriteDT[2];} HEADER;/* Here is the whole map of the NVRAM */typedef struct _NVRAM_MAP {  HEADER Header;  unsigned char GEArea[NVSIZE-CONFSIZE-OSAREASIZE-sizeof(HEADER)];  unsigned char OSArea[OSAREASIZE];  unsigned char ConfigArea[CONFSIZE];} NVRAM_MAP;/* Routines to manipulate the NVRAM */void init_prep_nvram(void);char *prep_nvram_get_var(const char *name);char *prep_nvram_first_var(void);char *prep_nvram_next_var(char *name);/* Routines to read and write directly to the NVRAM */unsigned char prep_nvram_read_val(int addr);void prep_nvram_write_val(int           addr,			  unsigned char val);#endif /* _PPC_PREP_NVRAM_H */#endif /* __KERNEL__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -