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

📄 bsp.h

📁 motorola mpc系列 mpc852cpu bsp
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __BSP_H__
#define __BSP_H__


#ifdef MAKE_BOOTROM
#define SMC_TXINT 0 /*发送采用非中断触发*/
#define SMC_RXINT 0 /*接收采用非中断触发*/
#else
/*#define SMC_TXINT 1 发送采用中断触发*/
#define SMC_RXINT 0 /*接收采用中断触发*/
#endif


#define EQUIP_TEST   0

#define     IAMHERE     PressAnyKeyToContinue( __FILE__, __LINE__ );

/*****************************************************************************
                                  FLASH
*****************************************************************************/
/* 使用缓存方式写flash */
#define USE_FLASH_BUFFER                1


/* 定义flash地址 */
#define FLASH_START_ADDR                FLASH_BASE_ADDR

#define FLASH_LENGTH                    (2*1024*1024)
#define FLASH_END_ADDR                  (FLASH_START_ADDR + FLASH_LENGTH)
#define FLASH_BLOCK_SIZE                (32*1024)
#define PROGRAM_MAX_LENGTH              (1024*1024)     
#define DATA_MAX_LENGTH                 (512*1024)     
#define DSP_MAX_LENGTH                  (0*1024)        
#define BIOS_MAX_LENGTH                 (0*1024)        


/* Flash地址分配:
   第一个block用于存放非易失地变量,如加载状态字等;
   第二个block用于存放非易失地变量,如加载状态字等,备份;

   第二个block用于存放错误码头和错误码
   第三,四个block用于存放FPGA
   第五个block用于存放测试flash时保存的数据
   第六,七个block用于存放LOG
   第八个block用于作为第一个block的备份
   以上为前1Mflash的分配情况
   程序从1M开始往后分配
   1.5M用于存放程序A;
   1.5M用于存放程序B
   1M用于存放数据
   1M用于存放补丁
   2M用于存放DSP*/





/* 程序的状态字存放地址(4bytes) */
#define STATE_WORD_PROG_ADDRESS         (FLASH_START_ADDR)

#define BACK_BLOCK_OFFSET				(1*FLASH_BLOCK_SIZE)
#define STATE_WORD_PROG_ADDRESS_BACK    (FLASH_START_ADDR + BACK_BLOCK_OFFSET)

#define STATE_MAGIC_PROG    0x1234

#define USE_A_BACKUP_B      0x06        /*0110*/ /* 当前使用a区,b区备份 */
#define USE_A_NEW_B         0x03        /*0011*/ /* 当前使用a区,b区有新程序 */
#define USE_B_BACKUP_A      0x09        /*1001*/ /* 当前使用b区,a区备份 */
#define USE_B_NEW_A         0x0c        /*1100*/ /* 当前使用b区,a区有新程序 */

/* 程序的加载标志存放地址(4bytes) */
#define BOOT_PROG_FLAG_OFFSET           4
#define BOOT_PROG_FLAG_ADDRESS          (FLASH_START_ADDR + BOOT_PROG_FLAG_OFFSET)
#define BOOT_PROG_FLAG_ADDRESS_BACK     (FLASH_START_ADDR + BACK_BLOCK_OFFSET + BOOT_PROG_FLAG_OFFSET)
/* 数据的加载标志存放地址(4bytes) */
#define BOOT_DATA_FLAG_OFFSET           8
#define BOOT_DATA_FLAG_ADDRESS          (FLASH_START_ADDR + BOOT_DATA_FLAG_OFFSET)
#define BOOT_DATA_FLAG_ADDRESS_BACK     (FLASH_START_ADDR + BACK_BLOCK_OFFSET + BOOT_DATA_FLAG_OFFSET)

#define STORE_TO_FLASH                  0x30
#define NO_STORE_TO_FLASH               0x60
#define BOOT_FROM_FLASH                 0x90

#define DEFAULT_BOOT_TIMES		        3
#define MAX_BOOT_TIMES			        0xf
#define DEFAULT_BOOT_STAB_TIMES         (60*10)/*一分钟*/
#define MAX_BOOT_STAB_TIMES 	        (60*60*10)/*一个小时*/

/* 启动次数,如果加载新程序计数为1,如果在稳定时间内系统稳定
   则由tick中断程序将此计数清0,否则每次启动时累加。1 byte*/
#define BOOT_STATE_COUNT_OFFSET           12
#define BOOT_STATE_COUNT_ADDRESS          (FLASH_START_ADDR + BOOT_STATE_COUNT_OFFSET)
#define BOOT_STATE_COUNT_ADDRESS_BACK     (FLASH_START_ADDR + BACK_BLOCK_OFFSET + BOOT_STATE_COUNT_OFFSET)
/* 启动失败的最大次数,即上面的计数如果大于或等于此值,则回滚。 1 byte*/
#define BOOT_STATE_TIMES_OFFSET           13
#define BOOT_STATE_TIMES_ADDRESS          (FLASH_START_ADDR + BOOT_STATE_TIMES_OFFSET)
#define BOOT_STATE_TIMES_ADDRESS_BACK     (FLASH_START_ADDR + BACK_BLOCK_OFFSET + BOOT_STATE_TIMES_OFFSET)
/* 给DEC中的减数器的值,即设置程序的稳定时间 每100ms减1。 2 byte*/
#define BOOT_STATE_STAB_TIME_OFFSET		  14
#define BOOT_STATE_STAB_TIME_ADDRESS      (FLASH_START_ADDR + BOOT_STATE_STAB_TIME_OFFSET)
#define BOOT_STATE_STAB_TIME_ADDRESS_BACK (FLASH_START_ADDR + BACK_BLOCK_OFFSET + BOOT_STATE_STAB_TIME_OFFSET)

/* 单板MAC/IP/MASK/GATE等地址存放地址(224bytes) */
#define BOOT_INFO_OFFSET				32
#define BOOT_INFO_IN_FLASH              (FLASH_START_ADDR + BOOT_INFO_OFFSET)
#define BOOT_INFO_IN_FLASH_BACK         (FLASH_START_ADDR + BACK_BLOCK_OFFSET + BOOT_INFO_OFFSET)

#define BOOT_DATA_BACK_SIZE				(BOOT_INFO_OFFSET + sizeof(BootInfo))

/* 定义单板存储器自检时的状态以及需要恢复的数据 */
/* 选择存储的地址不能为需要检测的地址 */
/*
#define SELFTEST_INFO_ADDRESS           (FLASH_START_ADDR + 0x1000 + 16)
*/

/* bsp错误码头存放地址,第三Block */
#define DRV_ERROR_LOG_HEAD_ADDRESS      (FLASH_START_ADDR + 2*FLASH_BLOCK_SIZE)   
/* bsp错误码存放地址 */
#define DRV_ERROR_LOG_ADDRESS           (FLASH_START_ADDR + 2*FLASH_BLOCK_SIZE + 100)

/* FPGA的存放地址,第四Block */
#define FPGA_START_ADDRESS              (FLASH_START_ADDR + 3*FLASH_BLOCK_SIZE)
#define FPGA_MAX_LENGTH                 (FLASH_BLOCK_SIZE * 2)


/* 现在用一个block最为测试用block,第六Block。 */
/* 测试数据线时需要擦除整个BLOCK,所以需要保存的数据为一个BLOCK。 */
#define SELFTEST_SAVE_DATA_ADDRESS      (FPGA_START_ADDRESS + FPGA_MAX_LENGTH)
#define SELFTEST_TEST_START_ADDRESS     (FPGA_START_ADDRESS + FPGA_MAX_LENGTH + 16)
#define SELFTEST_SAVE_DATA_SIZE         (FLASH_BLOCK_SIZE)


/* 系统需要写入的变量。第7个block */
#define SYSTEM_VARIABLE_BASE_ADDRESS    (FLASH_START_ADDR + 6*FLASH_BLOCK_SIZE)
#define SYSTEM_VARIABLE_LENGTH           FLASH_BLOCK_SIZE


/*
256K(第8个Block)到512K空闲
*/



/* 数据的存放地址,从FLASH地址+512K开始*/
#define DATA_START_ADDRESS              (FLASH_START_ADDR + 80000)

/* 程序A、B的存放地址从FLASH地址+1M开始*/
#define PROGRAM_A_START_ADDRESS         (FLASH_START_ADDR + 100000)
#define PROGRAM_B_START_ADDRESS         PROGRAM_A_START_ADDRESS   



/* 对外提供的函数 */

/*BootParamInfo is stored in the flash start at BOOT_INFO_IN_FLASH*/
#define MAC_STR_ADDR_SIZE   0x12
#define MAC_ADDR_SIZE       0x6
#define MAC_STORE_SIZE      0x14

#define IP_ADDR_SIZE        0x10
#define BOOT_DIRC_SIZE      80
#define TFTP_LOADNAME_SIZE  40

enum Boot_ProgFlag
{
    STORE2FLASH,
    NO_STORE2FLASH,
    BOOT_FROMFLASH,
};

typedef struct _BootInfoString
{
    char InnerIpAddr[IP_ADDR_SIZE];
    char InnerMacAddr[MAC_STORE_SIZE];
    char OuterIpAddr[IP_ADDR_SIZE];
    char OuterMacAddr[MAC_STORE_SIZE];
    char OuterIpMask[IP_ADDR_SIZE];
    char OuterGateAddr[IP_ADDR_SIZE];

    char HostIpAddr[IP_ADDR_SIZE];
    char BootDirection[BOOT_DIRC_SIZE];
    char LoadFileName[TFTP_LOADNAME_SIZE];
    char DeviceWorkMode[1];
}BootInfoString;

typedef struct _BootInfo
{
    _U32 InnerIp;
    _U32 InnerIpState;

    _U8  InnerMac[MAC_ADDR_SIZE+2];/*4 bytes对齐*/
    _U32 InnerMacState;

    _U32 OuterIp;
    _U32 OuterIpState;

    _U8  OuterMac[MAC_ADDR_SIZE+2];
    _U32 OuterMacState;

    _U32 OuterIpMask;
    _U32 OuterIpMaskState;

    _U32 OuterGateAddr;
    _U32 OuterGateAddrState;

    _U32 HostIp;
    _U32 HostIpState;

    char BootDirc[BOOT_DIRC_SIZE];
    _U32 BootDircState;

    char LoadFileName[TFTP_LOADNAME_SIZE];
    _U32 LoadFileNameState;

    _U32 DeviceWorkMode;
    _U32 DeviceWorkModeState;

    _U16 Reserved;
    _U16 InfoCrc;
}BootInfo;



extern _U8 gFPGAMACValue[MAC_ADDR_SIZE];

/* Loopback() */
#define DRV_ENET_NOLOOPBACK             0
#define DRV_ENET_LOOPBACK               1
#define DRV_ENET_EXT_LOOPBACK           2
#define DRV_ENET_DISABLE                0xffffffff


/*****************************************************************************
                                DRIVER
*****************************************************************************/
#define DRV_ENET_TX_MINFLR              0x004A

/*装备测试使用*/
#define EQUIP_TEST_RESULT_LEN   2048
#define EQUIP_TEST_RESERVE_LEN  256
#define EQUIP_TEST_FACT_LEN     (EQUIP_TEST_RESULT_LEN-EQUIP_TEST_RESERVE_LEN)

#define EQUIP_MAX_CHIP_NUM     4
#define EQUIP_MAX_CHANNEL_NUM  512

#define BLOCK_49LV040_SIZE     0x00080000

#define EQUIP_TEST_OK           0
#define EQUIP_GENERAL_ERR      1
#define EQUIP_FLASH_ERASE_ERR  2
#define EQUIP_FLASH_WRITE_ERR  3
#define EQUIP_FLASH_READ_ERR   4
#define EQUIP_E1_GEN_ERR       9
#define EQUIP_NET_INIT_ERR     10
#define EQUIP_NET_WRITE_ERR    11
#define EQUIP_RTC_GET_ERR      12
#define EQUIP_RTC_SET_ERR      13
#define EQUIP_LSW_GET_ERR      14
#define EQUIP_LSW_SET_ERR      15
#define EQUIP_DSP0_RAM_ERR     16
#define EQUIP_DSP1_RAM_ERR     17



#define  MAX_DRV_ADDR_SIZE          	8       /* 驱动的硬件地址字节数 */

#define  MAX_DRV_NAME_SIZE          	12      /* 驱动的名字长度 */

#define MAX_ENET_DRIVER_NUM         	1
#define MAX_SERIAL_DRIVER_NUM       	1

#define DRV_BOOTINFO_MODEFIED       	0x03
#define DRV_BOOTINFO_UN_MODEFIED    	0x06

/* 驱动的IO命令 */
#define  DRV_ENET_RESET_RXBD             0x0001
#define  DRV_ENET_RESET_TXBD             0x0002
#define  DRV_ENET_RESET_DRIVER           0x0003
#define  DRV_ENET_RESET_ALLBD            0x0004
#define  DRV_ENET_RESET_STATIC           0x0005
#define  DRV_ENET_GET_STATIC             0x0007
#define  DRV_ENET_SET_HARDWARE_ADDR      0x0008
#define  DRV_ENET_GET_HARDWARE_ADDR      0x0009
#define  DRV_ENET_GET_BD_STATUS          0x000A
#define  DRV_ENET_GET_REG_STATUS         0x000B
#define  DRV_ENET_GET_LOOP_STATUS        0x000C

#define  DRV_ENET_LOOP_ENABLE		     0x000D
#define  DRV_ENET_LOOP_DISABLE           0x000F
#define  DRV_ENET_GET_LOOP_TYPE          0x0010
#define  DRV_ENET_OPEN                   0x0011
#define  DRV_ENET_CLOSE                  0x0012
#define  DRV_ENET_SET_ALLOC              0x0013
#define  DRV_ENET_SET_FREE               0x0014
#define  DRV_ENET_TX_PRINT       		 0x0015
#define  DRV_ENET_RX_PRINT  	 		 0x0016
#define  DRV_ENET_TEST0                  0x0017
#define  DRV_ENET_TEST1                  0x0018
#define  DRV_ENET_TEST2                  0x0019
#define  DRV_ENET_TEST_RESULT            0x0020

#define  DRV_ENET_RESTART_TX             0x0021

#define  DRV_ENET_SET_STATICS_TIME       0x0025
#define  DRV_ENET_GET_STATICS_INFO       0x0026
#define  DRV_ENET_SET_PACKAGE_DIAG_TIME  0x0027
#define  DRV_ENET_GET_PACKAGE_DIAG_TIME  0x0028
#define  DRV_ENET_GET_PACKAGE_PROC_TIME  0x0029

#define  DRV_BOOT_SET_OUTER_IP           0x0101
#define  DRV_BOOT_GET_OUTER_IP           0x0102
#define  DRV_BOOT_SET_OUTER_MASK         0x0103
#define  DRV_BOOT_GET_OUTER_MASK         0x0104
#define  DRV_BOOT_SET_OUTER_GATE         0x0105
#define  DRV_BOOT_GET_OUTER_GATE         0x0106
#define  DRV_BOOT_SET_OUTER_MAC          0x0107
#define  DRV_BOOT_GET_OUTER_MAC          0x0108
#define  DRV_BOOT_SET_INNER_IP           0x0109
#define  DRV_BOOT_GET_INNER_IP           0x010A
#define  DRV_BOOT_SET_INNER_MAC          0x010B
#define  DRV_BOOT_GET_INNER_MAC          0x010C
#define  DRV_BOOT_SET_HOSTIP             0x010D
#define  DRV_BOOT_GET_HOSTIP             0x010E
#define  DRV_BOOT_SET_BOOTDIRC           0x010F
#define  DRV_BOOT_GET_BOOTDIRC           0x0110
#define  DRV_BOOT_SET_BOOTFILE           0x0111
#define  DRV_BOOT_GET_BOOTFILE           0x0112
#define  DRV_BOOT_SET_WORKMODE           0x0113
#define  DRV_BOOT_GET_WORKMODE           0x0114

#define  DRV_BOOT_SET_LOADPROGSTATE      0x0115
#define  DRV_BOOT_GET_LOADPROGSTATE      0x0116
#define  DRV_BOOT_SET_LOADDATASTATE      0x0117
#define  DRV_BOOT_GET_LOADDATASTATE      0x0118

#define  DRV_BOOT_SET_BOOT_TIMES		 0x0119
#define  DRV_BOOT_GET_BOOT_TIMES		 0x011A
#define  DRV_BOOT_SET_BOOT_STAB_TIME	 0x011B
#define  DRV_BOOT_GET_BOOT_STAB_TIME	 0x011C
#define  DRV_BOOT_SET_BOOT_COUNT		 0x011D
#define  DRV_BOOT_GET_BOOT_COUNT		 0x011E


#define  DRV_BOOT_SET_OUTER_IP_STATE     0x0121
#define  DRV_BOOT_GET_OUTER_IP_STATE     0x0122
#define  DRV_BOOT_SET_OUTER_MASK_STATE   0x0123
#define  DRV_BOOT_GET_OUTER_MASK_STATE   0x0124
#define  DRV_BOOT_SET_OUTER_GATE_STATE   0x0125
#define  DRV_BOOT_GET_OUTER_GATE_STATE   0x0126
#define  DRV_BOOT_SET_OUTER_MAC_STATE    0x0127

⌨️ 快捷键说明

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