/******************************************************************************* 版权所有: 文件名称: bspconfig.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2012-05-10 功能说明: 冷火实时LINUX的配置文件。 其它说明: 修改记录: */ #ifndef _BSPCONFIG_H_ #define _BSPCONFIG_H_ #include "rt.h" #include "MCF54418.h" #include "build_info.h" #include "defineSys.h" //----------------------------- BSP版本 --------------------------- #define __DFTU_V4_HV0102__ 1 // sunxi 20180724 第二版 #define PROTECT_AC_ADJUST //保护电流校准 #define EQUIP_NAME_STRING "OLE-DFTU" // 装置名称 #define EQUIP_TYPE_STRING "OLE-DFTU" // 装置类型 #define KO_FILE_NAME "/app/dtu_t536" #define KO_FILE_NAME_1 "dtu_t536" //----------------------------- 设备架构 --------------------------- #define EQU_SLOT_NUM_MAX 16 #define EQU_SLOT_AC_BEGIN 1 // 采样板起始槽位 #define EQU_SLOT_AC_NUM 1 // 一个装置支持AC板的最大槽数。1 -> 2 DTUv5采用两块采样板 #define EQU_SLOT_AC_CHN 16 // 每个槽中支持的最大AC通道数 #define EQU_DB_YX_NUM 32 // 数据总线长度 #define EQU_SLOT_NUM_06 6 // DTUv5 目前配置卡槽数量为6,后续根据需求修改 #define EQU_SLOT_AC_BEGIN06 0 // 定义6卡槽DTUv5中AC采样板的卡槽开始位置 //----------------------------- 线路开关 --------------------------- #define SWITCH_NUM_MAX 6 // 开关数量,本装置实际支持的开关数,不包含级联部分。 #define SWITCH_NUM_EXT 31 // 扩展开关数量,后面部分供级联用。 #define SWITCH_NUM_EXT_PUB 32 // 扩展开关数量加公共部分,后面部分供级联用。此值不能超过32 //----------------------------- 设备级联 --------------------------- #ifdef FUN_NETWORK_ADD40 #define CFG_LINK_104_NUM 48 // 104级联数目 #else #define CFG_LINK_104_NUM 8 // 104级联数目 #endif #define CFG_LINK_101_NUM 6 // 101级联数目 #define CFG_LONK_EQU_SOE_NUM 10 // 级联装置保存SOE数量 //----------------------------- CPU主时钟 --------------------------- #define CFG_EXT_OSC_CLK 50000000 //外部晶体频率 #define CFG_CPU_CLK 250000000 //CPU时钟根据外部晶体频率和系统配置算出来 //----------------------------- 中断级别 --------------------------- //MCF54418用3bits表示中断级别(LEVEL),其中0表示不产生中断,7表示不可屏蔽中断。 //数字越大,中断优先级越高。由于我们将来有可能在一颗CPU上同时运行保护和人机功能, //所以我们将中断分为两个部分:实时(保护)和非实时(人机)。中断级别1~3分配给非实时部分, //4~6分配给实时部分。在原Linux中关中断时只屏蔽中断1~3,不屏蔽4~6。 //MCF54418有三个中断控制器INTC0、INTC1、INTC2,每个中断控制器有64个中断源。在设置为相同 //中断级别的情况下,INTC0的优先级最高,INTC2最低;在相同的中断控制器中,数值大的优先级高, //数值小的优先级低: 63最高,0最低。 //NET1: INTC0(49~61) //NET0: INTC0(36~48) //DTM(0~3): INTC0(32~35) //UART(0~3): INTC0(26~29) //DMA INTC0(8~24) //EPORT INTC0(1~7) //UART(4~9): INTC1(48~53) //CAN1: INTC1(04~07) //CAN0: INTC1(00~03) //PIT(0~3): INTC2(13~16) //实时 #define CFG_INT_LEVEL_CAN 5 // CAN总线 //非实时。级别相同的,依MCF54418的规则,排前面的优先级更高。 //非实时中断,如果没有指定优先级,在request_irq函数中将默认指定为2。 //----------------------------- 外部中断 --------------------------- //-------------------------------- FlexBus ----------------------------------- //目前假设CPU最高频率为250MHZ,那么FlexBus的时钟频率为62.5MHZ,周期16ns。 //默认情况下每个占用256M地址空间,基址为片选索引乘256M。 //CS0,NOR FLASH,在U-BOOT中设置,kernel中不重新设置。 //CS1,外部AD1 //-------------------------------- 网络 -------------------------------- // #define CFG_ETH_MAX_PHY 3 // 实体网口phy数量 #define CFG_ETH_MAX_LOGIC 4 // 逻辑网卡最大数量 //FUXI 共享内存地址,请参看《fuxi核间通信结构体定义.doc》 //1. linux核->裸核空间定义如下: #define SHM_ADDR_D_FREQ_TR 0x00000000 //频率跟踪 #define SHM_ADDR_D_RFV_1 0x00000040 //第一片AD7616参考电压范围 #define SHM_ADDR_D_RFV_2 0x00000080 //第二片AD7616参考电压范围 #define SHM_ADDR_D_RFV_3 0x000000C0 //第三片AD7616参考电压范围 #define SHM_ADDR_D_RFV_4 0x00000100 //第四片AD7616参考电压范围 #define SHM_ADDR_D_TIME 0x00001000 //系统时间 linux向裸核校时 #define SHM_ADDR_D_HB 0x00001040 //心跳 //2. 裸核->linux核空间定义如下: #define SHM_ADDR_U_TIME 0x00001000 //系统时间 裸核向linux校时 #define SHM_ADDR_U_FREQ 0x00001040 //频率 #define SHM_ADDR_U_DC 0x00001080 //直流 #define SHM_ADDR_U_WP 0x000010C0 //AD7616采样点写指针 #define SHM_ADDR_U_WR 0x00001100 //打印信息读写指针 #define SHM_ADDR_U_VER 0x00001140 //裸核版本信息 #define SHM_ADDR_U_PRO_W_F 0x00001180 //裸核程序空间写完标志结构体 #define SHM_ADDR_U_DEBUG_MSG 0x00005000 //打印缓冲区 #define SHM_ADDR_U_E907_PRO 0x00005200 //存放裸核的程序 #define SHM_ADDR_U_ADC_1 0x00040000 //第一片AD7616 采样数据区 #define SHM_ADDR_U_ADC_2 0x00060000 //第二片AD7616 采样数据区 #define SHM_ADDR_U_ADC_3 0x00080000 //第三片AD7616 采样数据区 #define SHM_ADDR_U_ADC_4 0x000A0000 //第四片AD7616 采样数据区 #define SHM_ADC_SIZE (SHM_ADDR_U_ADC_2 - SHM_ADDR_U_ADC_1) //-------------------------------- ADC -------------------------------- // #define CFG_256_DOTS_PER_PERIOD // 一周波采256点 #ifdef CFG_256_DOTS_PER_PERIOD #define CFG_ADC_MOD_NUM 8 //256采样时8个点抽一个,抽取32个计算,比率为8 #else #define CFG_ADC_MOD_NUM 4 #endif #define CFG_ADC_DOTS_PER_PERIOD 32 // 每个周波的采样点数。 #define CFG_ADC_DOTS_PER_CHANNEL 256 // 每个ADC通道保存的采样点数(8个周波)。 #define CFG_ADC_DOTS_MASK (CFG_ADC_DOTS_PER_CHANNEL-1)// 每个ADC通道保存的采样点数的MASK。 #define CFG_ADC_BUF_MASK (~(CFG_ADC_DOTS_PER_CHANNEL*2)) // 提供给MAC设置用(short->byte*2) #define CFG_ADC_OS_BASE 0 // 过采样基数 #define CFG_ADC_OS_NUM (1<