/******************************************************************************* 版权所有: 文件名称: bspconfig.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2012-05-10 功能说明: 冷火实时LINUX的配置文件。 其它说明: 修改记录: */ #ifndef _BSPCONFIG_H_ #define _BSPCONFIG_H_ #include "rt.h" #include "MCF54418.h" #include "gpio_def.h" #include "build_info.h" #include "defineSys.h" //----------------------------- BSP版本 --------------------------- // #define BSP_FTU 1 // 单回路配电终端,f308 //#define BSP_DTU2 2 // DTU2.0 f306 //#define BSP_DTU3 3 // DTU3.0 #define BSP_DFTU 4 // DTU、FTU混合版本;支持4回路二遥标准型DTU、单回路FTU;支持电磁式、电子式互感器。 #define BSP_VERSION BSP_DFTU #define __DFTU_V4_HV0102__ 1 // sunxi 20180724 第二版 //BSP类型.如果是FTU,打开宏BSP_TYPE_FTU。如果是DTU,打开宏BSP_TYPE_DTU。两者只能选其一,不能同时打开。 #define BSP_TYPE_FTU //#define BSP_TYPE_DTU //#define VER_NUM 0x00010205 // 版本号 //#define VER_TIME "2019-02-09 13:12:26" // 程序生成时间 #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_MAIN 0 // 主板 #define EQU_SLOT_KZ 1 // 控制板 #define EQU_SLOT_HMI 2 // 面板 #define EQU_SLOT_AC_BEGIN 1 // 采样板起始槽位 #define EQU_SLOT_AC_NUM 1 // 一个装置支持AC板的最大槽数。 #define EQU_SLOT_AC_CHN 16 // 每个槽中支持的最大AC通道数 #define EQU_DB_YX_NUM 32 // 数据总线长度 //----------------------------- 线路开关 --------------------------- #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时钟根据外部晶体频率和系统配置算出来 #define CFG_VECTOR_ADDRESS 0x40000000 //----------------------------- 中断级别 --------------------------- //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_DMA 6 // 采样DMA中断 #define CFG_INT_LEVEL_PIT 6 // PIT3,156US #define CFG_INT_LEVEL_CLOCK 5 // GPS对时,ms定时器 #define CFG_INT_LEVEL_FREQ 5 // 频率测量 #define CFG_INT_LEVEL_CAN 5 // CAN总线 #define CFG_INT_LEVEL_5MS 4 // 保护中断,PIT2,5ms,保护中断在特定的情况下持续时间太长,所以优先级不能高于clock和测频。 //非实时。级别相同的,依MCF54418的规则,排前面的优先级更高。 //非实时中断,如果没有指定优先级,在request_irq函数中将默认指定为2。 #define CFG_INT_LEVEL_UART 3 // 2个外扩485,一个调试UART、一个打印UART、一个面板通讯485. #define CFG_INT_LEVEL_DTIM_KERNEL 2 // LINUX 内核 DTIM #define CFG_INT_LEVEL_ETHERNET 1 // 2个ETHERNET口 //----------------------------- 外部中断 --------------------------- #define CFG_EPORT_VECTOR_BEGIN 64 //IRQ1,GPS信号输入管脚,非中断 #define CFG_INT_VECTOR_IRQ1 (CFG_EPORT_VECTOR_BEGIN + 1) //IRQ2,INT_B,DP83849 #define CFG_INT_VECTOR_NET_0 (CFG_EPORT_VECTOR_BEGIN + 2) //IRQ3,INT_A,DP83849 #define CFG_INT_VECTOR_NET_1 (CFG_EPORT_VECTOR_BEGIN + 3) //IRQ4,DREQ0 #define CFG_INT_VECTOR_IRQ4 (CFG_EPORT_VECTOR_BEGIN + 4) //IRQ6,无 #define CFG_INT_VECTOR_IRQ6 (CFG_EPORT_VECTOR_BEGIN + 6) //IRQ7 ,无 #define CFG_INT_VECTOR_IRQ7 (CFG_EPORT_VECTOR_BEGIN + 7) //-------------------------------- FlexBus ----------------------------------- //目前假设CPU最高频率为250MHZ,那么FlexBus的时钟频率为62.5MHZ,周期16ns。 //默认情况下每个占用256M地址空间,基址为片选索引乘256M。 //CS0,NOR FLASH,在U-BOOT中设置,kernel中不重新设置。 //CS1,外部AD1 //-------------------------------- 网络 -------------------------------- // #define CFG_ETH_MAX_PHY 4 #if defined NET3_IP5 #define CFG_ETH_MAX_LOGIC 5 //逻辑网卡最大数量 #elif defined NET4_IP5 #define CFG_ETH_MAX_LOGIC 5 //逻辑网卡最大数量 #else #define CFG_ETH_MAX_LOGIC 3 //逻辑网卡最大数量 #endif //-------------------------------- ADC -------------------------------- // //#define __MINI_DTU__ //小型化DTU #ifdef __MINI_DTU__ #define BRAM_CTRL_0 0x80000000 #else #define BRAM_CTRL_0 0x40000000 #endif #define MEM_LEN (1024 * 4) #define DIN_OFFSET 0x9000 #define WRITE_PTR_OFFSET 0x0FF0 #define BRAM_LEN 0x1000 #define FREN1_CNT_OFFSET 0x0FF4 #define ADC_FOLLOW_FREN1_OFFSET 0x0000 #define ADC_WRITE_PTR_OFFSET 0x0FF0 #define ADC_CH01_OFFSET 0x1000 #define ADC_CH23_OFFSET 0x2000 #define ADC_CH45_OFFSET 0x3000 #define ADC_CH67_OFFSET 0x4000 #define ADC_CH89_OFFSET 0x5000 #define ADC_CHAB_OFFSET 0x6000 #define ADC_CHCD_OFFSET 0x7000 #define ADC_CHEF_OFFSET 0x8000 #define CFG_ADC_BASE_ADDR 0x1000 #define BRAM_CTRL_MEM_SIZE 0x1000 //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_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< /dev/ttyS0 UART1 -> /dev/ttyS1 CFG_UART_232_0 -> /dev/ttyS2 CFG_UART_232_1 -> /dev/ttyS3 CFG_UART_485_0 -> /dev/ttyS4 CFG_UART_485_1 -> /dev/ttyS5 CFG_UART_485_2 -> /dev/ttyS8 ... */ //TODO. noted by sunxi: 根据实际情况,定义串口号 #define CFG_UART_RT_CONSOLE 0 //内部已实现console功能 #define CFG_UART_HMI 1 // #define CFG_UART_232_0 2 //232_2 #define CFG_UART_232_1 3 //232_3 #define CFG_UART_485_0 4 //485_4 #define CFG_UART_485_1 5 //485_5 #define CFG_UART_485_2 8 //485_8 #define CFG_UART_485_3 7 #define CFG_UART_GPRS_IN 10 //此UART物理上不存在,虚拟给内部GPRS用 #define CFG_UART_GPS (CFG_UART_232_0)//暂定 #define CFG_UART_CHIP_S1 11 //此UART物理上不存在,虚拟给南网加密芯片用 #define CFG_UART_NUM_MAX 11 // 最大UART数量 #ifdef __GOOSE_USING_DOUBLE_ETH__ #define CFG_ETH_NUM_MAX 3 //网络数量 #else #define CFG_ETH_NUM_MAX 2 #endif //-------------------------------- CAN ---------------------------------------- #define CFG_CAN_VECTOR_BEGIN (128 + 0) //中断向量 //-------------------------------- DMA ---------------------------------------- #define CFG_DMA_VECTOR_BEGIN (64 + 8) //中断向量 //-------------------------------- I2C ---------------------------------------- #if 1 /* I2C CMODULE 2 */ #define MCF_I2AR *(volatile unsigned char *)(0xEC010000) /* I2C Address */ #define MCF_I2FDR *(volatile unsigned char *)(0xEC010004) /* I2C Frequency Divider */ #define MCF_I2CR *(volatile unsigned char *)(0xEC010008) /* I2C Control */ #define MCF_I2SR *(volatile unsigned char *)(0xEC01000C) /* I2C Status */ #define MCF_I2DR *(volatile unsigned char *)(0xEC010010) /* I2C Data I/O */ #else /* I2C MODULE 0 */ #define MCF_I2AR *(volatile unsigned char *)(0xFC058000) /* I2C Address */ #define MCF_I2FDR *(volatile unsigned char *)(0xFC058004) /* I2C Frequency Divider */ #define MCF_I2CR *(volatile unsigned char *)(0xFC058008) /* I2C Control */ #define MCF_I2SR *(volatile unsigned char *)(0xFC05800C) /* I2C Status */ #define MCF_I2DR *(volatile unsigned char *)(0xFC058010) /* I2C Data I/O */ #endif //-------------------------------- E2PROM(24LC256) ----------------------------- #ifdef SOE_PARA_ALL_SAVE #define CFG_E2PROM_SIZE (256*1024) #else #define CFG_E2PROM_SIZE (128*1024) #endif #define CFG_E2PROM_PAGE_SIZE 64 //-------------------------------- RTC(DS1338) --------------------------------- #define CFG_RTC_BUFFER_SIZE (16) #define CFG_RTC_NVRAM_SIZE (1) //-------------------------------- DSPI ---------------------------------------- #define CFG_DSPI_INDEX 0 //-------------------------------- FLASH(AT45DB321) ---------------------------- #define CFG_FLASH_PAGE_SIZE 512 //页面大小 #define CFG_FLASH_PAGE_NUM 8192 //页面数 #define CFG_FLASH_SIZE (CFG_FLASH_PAGE_SIZE*CFG_FLASH_PAGE_NUM)//FLASH的大小 //-------------------------------- GPIO -------------------------------------- /* // 核心板GPIO配置 NOR_WP:MII0_COL/RMII1_MDC/ULPI_STP/GPIOJ0 WDOG:DSPI0_PCS0/SS_B/I2C3_SDA/SDHC_DAT3/GPIOD7 RUN:SDHC_DAT1/PWMA2/DSPI1_PCS1/GPIOF0 ERR:SDHC_DAT2/PWMB1/DSPI1_PCS2/GPIOF1 PWM1:SDHC_CMD/PWMB0/DSPI1_SIN/GPIOG6 PWM2:SDHC_CLK/PWMA0/DSPI1_SCK/GPIOG5 PWM3:SDHC_DAT0/PWMB2/DSPI1_SOUT/GPIOG7 PWM4:SDHC_DAT3/PWMA1/DSPI1_PCS0/GPIOF2 DSPIO_PCS1:DSPI0_PCS1/SBF_CS_B/GPIOC0 GPIO_0:SSI0_MCLK/SSI_CLKIN/SIM1_CLK/GPIOH4 GPIO_1:SIM0_XMT/PWM_FAULT2/SDHC_DAT7/GPIOG4/RGPIO GPIO_2:SIM0_VEN/PWM_FAULT0/GPIOG3/RGPIO GPIO_3:SIM0_CLK/PWM_FAULT1/SDHC_DAT4/GPIOG0/RGPIO GPIO_4:SIM0_RST/PWM_FORCE/SDHC_DAT6/GPIOG2/RGPIO GPIO_5:SIM0_PD/PWM_SYNC/SDHC_DAT5/GPIOG1/RGPIO GPIO_6:DDATA[0]/GPIOI6 GPIO_7:DDATA[1]/GPIOI7 GPIO_8:DDATA[2]/GPIOH0 GPIO_9:DDATA[3]/GPIOH1 GPIO_10:MII0_TXER/RMII1_MDIO/ULPI_DATA4/GPIOK7 */ //看门狗/运行灯(看门狗边沿有效,运行灯低有效) #define GPIO_WATCHDOG_BIT 7 #define GPIO_WATCHDOG_LOW() GPIO_D_L(GPIO_WATCHDOG_BIT) #define GPIO_WATCHDOG_HIGH() GPIO_D_H(GPIO_WATCHDOG_BIT) #define GPIO_WATCHDOG_STATUS() GPIO_D_S(GPIO_WATCHDOG_BIT) #define GPIO_WATCHDOG_INIT() GPIO_D_L(GPIO_WATCHDOG_BIT); \ GPIO_D_O(GPIO_WATCHDOG_BIT) //NOR flash写保护(低禁止写) J0 #define GPIO_WP_NORFLASH_BIT 0 #define GPIO_WP_NORFLASH_LOW() GPIO_J_L(GPIO_WP_NORFLASH_BIT) #define GPIO_WP_NORFLASH_HIGH() GPIO_J_H(GPIO_WP_NORFLASH_BIT) #define GPIO_WP_NORFLASH_INIT() GPIO_J_L(GPIO_WP_NORFLASH_BIT); \ GPIO_J_O(GPIO_WP_NORFLASH_BIT) #if 0 //GPIO_DSPI_CS_FLASH = C0 #define GPIO_DSPI_CS_FLASH_BIT 0 #define GPIO_DSPI_CS_FLASH_LOW() GPIO_C_L(GPIO_DSPI_CS_FLASH_BIT) #define GPIO_DSPI_CS_FLASH_HIGH() GPIO_C_H(GPIO_DSPI_CS_FLASH_BIT) #define GPIO_DSPI_CS_FLASH_INIT() GPIO_DSPI_CS_FLASH_HIGH();\ GPIO_C_O(GPIO_DSPI_CS_FLASH_BIT) #else //ESAM加密芯片 //DSPI0_CTRN:IRQ7:C6(电源控制) //#define GPIO_ESAM_POWER_BIT 6 #define GPIO_ESAM_POWER_LOW() esam_power_ctrl(0)//GPIO_C_L(GPIO_ESAM_POWER_BIT) #define GPIO_ESAM_POWER_HIGH() esam_power_ctrl(1)//GPIO_C_H(GPIO_ESAM_POWER_BIT) //#define GPIO_ESAM_POWER_INIT() GPIO_C_L(GPIO_ESAM_POWER_BIT);GPIO_C_O(GPIO_ESAM_POWER_BIT) //GPIO_DSPI_CS_ESAM = C0(片选控制) //#define GPIO_DSPI_CS_ESAM_BIT 0 //#define GPIO_DSPI_CS_ESAM_LOW() GPIO_C_L(GPIO_DSPI_CS_ESAM_BIT) //#define GPIO_DSPI_CS_ESAM_HIGH() GPIO_C_H(GPIO_DSPI_CS_ESAM_BIT) //#define GPIO_DSPI_CS_ESAM_INIT() GPIO_DSPI_CS_ESAM_HIGH();GPIO_C_O(GPIO_DSPI_CS_ESAM_BIT) #endif //GPS_对时,使用两个管脚,一个用作捕获,一个用作检查检查管脚电平。 //这是因为用作捕获的管脚,在MCF5441X上没有办法取得管脚的状态 //GPS_INT1 = IRQ1/PC1 //GPS_INT2 = T3IN #define GPIO_GPS_INT_BIT 1 #define GPIO_GPS_INT_STATUS() GPIO_C_S(GPIO_GPS_INT_BIT) #define GPIO_GPS_INT_INIT() if(0)//do{ MCF_PAD_PAR_TIMER |= (3<<(CFG_DTIM_GPS_CAP*2));}while(0) //GPS对时输出(给各个分板) #define GPIO_GPS_LOW() {} #define GPIO_GPS_HIGH() {} #define GPIO_GPS_INIT() {} //外部ADC //ADC_BUSY1:IRQ4:C4 #define GPIO_ADC_BUSY1_BIT 4 #define GPIO_ADC_BUSY1_STATUS() GPIO_C_S(GPIO_ADC_BUSY1_BIT) #define GPIO_ADC_BUSY1_INIT() GPIO_C_I(GPIO_ADC_BUSY1_BIT) //ADC_RESET:GPIO_1:G4 #define GPIO_ADC_RESET_BIT 4 #define GPIO_ADC_RESET_LOW() GPIO_G_L(GPIO_ADC_RESET_BIT) #define GPIO_ADC_RESET_HIGH() GPIO_G_H(GPIO_ADC_RESET_BIT) #define GPIO_ADC_RESET_INIT() GPIO_G_L(GPIO_ADC_RESET_BIT); \ GPIO_G_O(GPIO_ADC_RESET_BIT) //ADC_CONVST:GPIO_2:G3 #define GPIO_ADC_CONVST_BIT 3 #define GPIO_ADC_CONVST_LOW() GPIO_G_L(GPIO_ADC_CONVST_BIT) #define GPIO_ADC_CONVST_HIGH() GPIO_G_H(GPIO_ADC_CONVST_BIT) #define GPIO_ADC_CONVST_INIT() GPIO_G_L(GPIO_ADC_CONVST_BIT); \ GPIO_G_O(GPIO_ADC_CONVST_BIT) //LED //GPIO_LED_RUN F0 #define GPIO_LED_RUN_BIT 0 #define GPIO_LED_RUN_ON() GPIO_F_L(GPIO_LED_RUN_BIT) #define GPIO_LED_RUN_OFF() GPIO_F_H(GPIO_LED_RUN_BIT) #define GPIO_LED_RUN_STATUS() GPIO_F_S(GPIO_LED_RUN_BIT) #define GPIO_LED_RUN_INIT() GPIO_F_H(GPIO_LED_RUN_BIT); \ GPIO_F_O(GPIO_LED_RUN_BIT) //GIIO_LED_ERR F1 #define GPIO_LED_ERR_BIT 1 #define GPIO_LED_ERR_ON() GPIO_F_L(GPIO_LED_ERR_BIT) #define GPIO_LED_ERR_OFF() GPIO_F_H(GPIO_LED_ERR_BIT) #define GPIO_LED_ERR_STATUS() GPIO_F_S(GPIO_LED_ERR_BIT) #define GPIO_LED_ERR_INIT() GPIO_F_H(GPIO_LED_ERR_BIT); \ GPIO_F_O(GPIO_LED_ERR_BIT) #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版 //GPIO_LED_COMM 去掉了 #define GPIO_LED_COMM_ON() do{}while(0) #define GPIO_LED_COMM_OFF() do{}while(0) #define GPIO_LED_COMM_STATUS() 0 #define GPIO_LED_COMM_INIT() do{}while(0) //GPIO_LED_ACT 去掉了 #define GPIO_LED_ACT_ON() do{}while(0) #define GPIO_LED_ACT_OFF() do{}while(0) #define GPIO_LED_ACT_STATUS() 0 #define GPIO_LED_ACT_INIT() do{}while(0) #else // sunxi 20180724 第一版 //GPIO_LED_COMM H4 #define GPIO_LED_COMM_BIT 4 #define GPIO_LED_COMM_ON() GPIO_H_L(GPIO_LED_COMM_BIT) #define GPIO_LED_COMM_OFF() GPIO_H_H(GPIO_LED_COMM_BIT) #define GPIO_LED_COMM_STATUS() GPIO_H_S(GPIO_LED_COMM_BIT) #define GPIO_LED_COMM_INIT() GPIO_H_H(GPIO_LED_COMM_BIT); \ GPIO_H_O(GPIO_LED_COMM_BIT) //GPIO_LED_ACT G0 #define GPIO_LED_ACT_BIT 0 #define GPIO_LED_ACT_ON() GPIO_G_L(GPIO_LED_ACT_BIT) #define GPIO_LED_ACT_OFF() GPIO_G_H(GPIO_LED_ACT_BIT) #define GPIO_LED_ACT_STATUS() GPIO_G_S(GPIO_LED_ACT_BIT) #define GPIO_LED_ACT_INIT() GPIO_G_H(GPIO_LED_ACT_BIT); \ GPIO_G_O(GPIO_LED_ACT_BIT) #endif //开出(16路,低有效) //KOUT0 I6 #define GPIO_KOUT0_BIT 6 #define GPIO_KOUT0_ON() GPIO_I_L(GPIO_KOUT0_BIT) #define GPIO_KOUT0_OFF() GPIO_I_H(GPIO_KOUT0_BIT) #define GPIO_KOUT0_INIT() GPIO_I_H(GPIO_KOUT0_BIT); \ GPIO_I_O(GPIO_KOUT0_BIT) //KOUT1 I7 #define GPIO_KOUT1_BIT 7 #define GPIO_KOUT1_ON() GPIO_I_L(GPIO_KOUT1_BIT) #define GPIO_KOUT1_OFF() GPIO_I_H(GPIO_KOUT1_BIT) #define GPIO_KOUT1_INIT() GPIO_I_H(GPIO_KOUT1_BIT); \ GPIO_I_O(GPIO_KOUT1_BIT) //KOUT2 H0 #define GPIO_KOUT2_BIT 0 #define GPIO_KOUT2_ON() GPIO_H_L(GPIO_KOUT2_BIT) #define GPIO_KOUT2_OFF() GPIO_H_H(GPIO_KOUT2_BIT) #define GPIO_KOUT2_INIT() GPIO_H_H(GPIO_KOUT2_BIT); \ GPIO_H_O(GPIO_KOUT2_BIT) //KOUT3 H1 #define GPIO_KOUT3_BIT 1 #define GPIO_KOUT3_ON() GPIO_H_L(GPIO_KOUT3_BIT) #define GPIO_KOUT3_OFF() GPIO_H_H(GPIO_KOUT3_BIT) #define GPIO_KOUT3_INIT() GPIO_H_H(GPIO_KOUT3_BIT); \ GPIO_H_O(GPIO_KOUT3_BIT) //KOUT4 G2 #define GPIO_KOUT4_BIT 2 #define GPIO_KOUT4_ON() GPIO_G_L(GPIO_KOUT4_BIT) #define GPIO_KOUT4_OFF() GPIO_G_H(GPIO_KOUT4_BIT) #define GPIO_KOUT4_INIT() GPIO_G_H(GPIO_KOUT4_BIT); \ GPIO_G_O(GPIO_KOUT4_BIT) //KOUT5 G1 #define GPIO_KOUT5_BIT 1 #define GPIO_KOUT5_ON() GPIO_G_L(GPIO_KOUT5_BIT) #define GPIO_KOUT5_OFF() GPIO_G_H(GPIO_KOUT5_BIT) #define GPIO_KOUT5_INIT() GPIO_G_H(GPIO_KOUT5_BIT); \ GPIO_G_O(GPIO_KOUT5_BIT) #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版 //KOUT6 H4 #define GPIO_KOUT6_BIT 4 #define GPIO_KOUT6_ON() GPIO_H_L(GPIO_KOUT6_BIT) #define GPIO_KOUT6_OFF() GPIO_H_H(GPIO_KOUT6_BIT) #define GPIO_KOUT6_INIT() GPIO_H_H(GPIO_KOUT6_BIT); \ GPIO_H_O(GPIO_KOUT6_BIT); //KOUT7 G0 #define GPIO_KOUT7_BIT 0 #define GPIO_KOUT7_ON() GPIO_G_L(GPIO_KOUT7_BIT) #define GPIO_KOUT7_OFF() GPIO_G_H(GPIO_KOUT7_BIT) #define GPIO_KOUT7_INIT() GPIO_G_H(GPIO_KOUT7_BIT); \ GPIO_G_O(GPIO_KOUT7_BIT); #else // sunxi 20180724 第一版 //KOUT6 E5 #define GPIO_KOUT6_BIT 5 #define GPIO_KOUT6_ON() GPIO_E_L(GPIO_KOUT6_BIT) #define GPIO_KOUT6_OFF() GPIO_E_H(GPIO_KOUT6_BIT) #define GPIO_KOUT6_INIT() GPIO_E_H(GPIO_KOUT6_BIT); \ GPIO_E_O(GPIO_KOUT6_BIT); \ {MCF_GPIO_PAR_UART2 =(MCF_GPIO_PAR_UART2 & MCF_GPIO_PAR_UART2_U2RTS_MASK);}while(0) #if 0 //KOUT7 K7 #define GPIO_KOUT7_BIT 7 #define GPIO_KOUT7_ON() GPIO_K_L(GPIO_KOUT7_BIT) #define GPIO_KOUT7_OFF() GPIO_K_H(GPIO_KOUT7_BIT) #define GPIO_KOUT7_INIT() GPIO_K_H(GPIO_KOUT7_BIT); \ GPIO_K_O(GPIO_KOUT7_BIT); \ do{ MCF_PAD_PAR_FEC = 0X05;}while(0) #else //KOUT7 G0 #define GPIO_KOUT7_BIT 0 #define GPIO_KOUT7_ON() GPIO_G_L(GPIO_KOUT7_BIT) #define GPIO_KOUT7_OFF() GPIO_G_H(GPIO_KOUT7_BIT) #define GPIO_KOUT7_INIT() GPIO_G_H(GPIO_KOUT7_BIT); \ GPIO_G_O(GPIO_KOUT7_BIT); #endif #endif //PWM0 G6 #define GPIO_KOUT_PWM0_BIT 6 #define GPIO_KOUT_PWM0_ON() GPIO_G_L(GPIO_KOUT_PWM0_BIT) #define GPIO_KOUT_PWM0_OFF() GPIO_G_H(GPIO_KOUT_PWM0_BIT) #define GPIO_KOUT_PWM0_INIT() GPIO_G_H(GPIO_KOUT_PWM0_BIT); \ GPIO_G_O(GPIO_KOUT_PWM0_BIT) //PWM1 G5 #define GPIO_KOUT_PWM1_BIT 5 #define GPIO_KOUT_PWM1_ON() GPIO_G_L(GPIO_KOUT_PWM1_BIT) #define GPIO_KOUT_PWM1_OFF() GPIO_G_H(GPIO_KOUT_PWM1_BIT) #define GPIO_KOUT_PWM1_INIT() GPIO_G_H(GPIO_KOUT_PWM1_BIT); \ GPIO_G_O(GPIO_KOUT_PWM1_BIT) //PWM2 G7 #define GPIO_KOUT_PWM2_BIT 7 #define GPIO_KOUT_PWM2_ON() GPIO_G_L(GPIO_KOUT_PWM2_BIT) #define GPIO_KOUT_PWM2_OFF() GPIO_G_H(GPIO_KOUT_PWM2_BIT) #define GPIO_KOUT_PWM2_INIT() GPIO_G_H(GPIO_KOUT_PWM2_BIT); \ GPIO_G_O(GPIO_KOUT_PWM2_BIT) //PWM3 F2 #define GPIO_KOUT_PWM3_BIT 2 #define GPIO_KOUT_PWM3_ON() GPIO_F_L(GPIO_KOUT_PWM3_BIT) #define GPIO_KOUT_PWM3_OFF() GPIO_F_H(GPIO_KOUT_PWM3_BIT) #define GPIO_KOUT_PWM3_INIT() GPIO_F_H(GPIO_KOUT_PWM3_BIT); \ GPIO_F_O(GPIO_KOUT_PWM3_BIT) //KOUT_EN0 C5 #define GPIO_KOUT_EN0_BIT 5 #define GPIO_KOUT_EN0_ON() GPIO_C_H(GPIO_KOUT_EN0_BIT) #define GPIO_KOUT_EN0_OFF() GPIO_C_L(GPIO_KOUT_EN0_BIT) #define GPIO_KOUT_EN0_INIT() GPIO_C_L(GPIO_KOUT_EN0_BIT); \ GPIO_C_O(GPIO_KOUT_EN0_BIT) //KOUT_EN1 T2IN #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版 H7 #define GPIO_KOUT_EN1_BIT 7 #define GPIO_KOUT_EN1_ON() GPIO_K_H(GPIO_KOUT_EN1_BIT) #define GPIO_KOUT_EN1_OFF() GPIO_K_L(GPIO_KOUT_EN1_BIT) #define GPIO_KOUT_EN1_INIT() GPIO_K_L(GPIO_KOUT_EN1_BIT); \ GPIO_K_O(GPIO_KOUT_EN1_BIT) #else // sunxi 20180724 第一版 D1 #define GPIO_KOUT_EN1_BIT 1 #define GPIO_KOUT_EN1_ON() GPIO_D_H(GPIO_KOUT_EN1_BIT) #define GPIO_KOUT_EN1_OFF() GPIO_D_L(GPIO_KOUT_EN1_BIT) #define GPIO_KOUT_EN1_INIT() GPIO_D_L(GPIO_KOUT_EN1_BIT); \ GPIO_D_O(GPIO_KOUT_EN1_BIT) #endif //测试管脚 #if 0 #define MCF_GPIO_PAR_FBCTL_ALE_MASK (0x3F) #define GPIO_TP1_BIT 7 #define GPIO_TP1_LOW() GPIO_A_L(GPIO_TP1_BIT) #define GPIO_TP1_HIGH() GPIO_A_H(GPIO_TP1_BIT) #define GPIO_TP1_STATUS() GPIO_A_S(GPIO_TP1_BIT) #define GPIO_TP1_INIT() GPIO_A_L(GPIO_TP1_BIT); \ GPIO_A_O(GPIO_TP1_BIT); \ do{ MCF_PAD_PAR_FBCTL &= MCF_GPIO_PAR_FBCTL_ALE_MASK;}while(0) #define MCF_GPIO_PAR_FBCTL_FBCLK (0x08) #define GPIO_TP2_BIT 7 #define GPIO_TP2_LOW() GPIO_B_L(GPIO_TP2_BIT) #define GPIO_TP2_HIGH() GPIO_B_H(GPIO_TP2_BIT) #define GPIO_TP2_STATUS() GPIO_B_S(GPIO_TP2_BIT) #define GPIO_TP2_INIT() GPIO_B_L(GPIO_TP2_BIT); \ GPIO_B_O(GPIO_TP2_BIT); \ do{ MCF_PAD_PAR_FBCTL &= ~MCF_GPIO_PAR_FBCTL_FBCLK;}while(0) #define MCF_GPIO_PAR_BE_BE0_MASK (0xFC) #define GPIO_TP3_BIT 0 #define GPIO_TP3_LOW() GPIO_A_L(GPIO_TP3_BIT) #define GPIO_TP3_HIGH() GPIO_A_H(GPIO_TP3_BIT) #define GPIO_TP3_STATUS() GPIO_A_S(GPIO_TP3_BIT) #define GPIO_TP3_INIT() GPIO_A_L(GPIO_TP3_BIT); \ GPIO_A_O(GPIO_TP3_BIT); \ do{ MCF_PAD_PAR_BE &= MCF_GPIO_PAR_BE_BE0_MASK;}while(0) //目前是NF_WP管脚 #define MCF_GPIO_PAR_BE_BE1_MASK (0xF3) #define GPIO_TP4_BIT 1 #define GPIO_TP4_LOW() GPIO_A_L(GPIO_TP4_BIT) #define GPIO_TP4_HIGH() GPIO_A_H(GPIO_TP4_BIT) #define GPIO_TP4_INIT() GPIO_A_L(GPIO_TP4_BIT); \ GPIO_A_O(GPIO_TP4_BIT); \ do{ MCF_PAD_PAR_BE &= MCF_GPIO_PAR_BE_BE1_MASK;}while(0) #endif #if 0 //这个管脚目前做事件捕获,不做普通测试管脚了。 #define GPIO_TP9_BIT 7 #define GPIO_TP9_LOW() GPIO_E_L(GPIO_TP9_BIT) #define GPIO_TP9_HIGH() GPIO_E_H(GPIO_TP9_BIT) #define GPIO_TP9_STATUS() GPIO_E_S(GPIO_TP9_BIT) #define GPIO_TP9_INIT() GPIO_E_L(GPIO_TP9_BIT); \ GPIO_E_O(GPIO_TP9_BIT); #endif #define MCF_REG08(x) x #define MCF_REG16(x) x #define MCF_REG32(x) x #define CFG_BSP_DEBUG 1 //linux #define PROC_NAME_BSP_VERSION "bspversion" //Linux bsp version file's name #define CFG_IOCTL_TYPE 0XF8 #define CFG_IOCTL_NR_CLOCK 0 #define CFG_IOCTL_NR_CAN 32 #endif //_BSPCONFIG_H_