📄 syscfg.h
字号:
#ifndef __SYSCCFG_H__
#define __SYSCCFG_H__
/*************************************************************************
PF管脚硬件设计:
PF0 : I2C的SDATA
PF1 : I2C的SCLK
PF2 : SPI的选通标志
PF3 : Flash的状态位
PF4 : 视频1行完成中断
PF5 : 视频1场完成中断
PF6 : 键盘中断
PF7,9:尚未使用
PF10: 温度输入,
PF11-PF15,作为FPGA的配置信号,其中
PF11: nConfig
PF12: DATA
PF13: DCLK
PF14: Config-Done
PF15: nStatus
有关配置的时序手册,请参见《dsconf Configuration Devices for SRAM-Based LUT Devices.pdf》
*************************************************************************/
/*************************************************************************
目前系统使用到的中断有:
0 : Emnlation,使用RTE从中断返回
1 : RTS,使用RTS从中断返回
2 : NMI,使用RTN从中断返回
3 : EVT,exception,使用RTX从中断返回
4 : 内核保留
5-15:使用RTI从中断返回
6 号中断,不需在这设置,Core Timer
7 号中断,PF_A中断,为最主要的行、场中断使用
8 号中断,语音通过SPORT0进行录制及回放
9 号中断,电池电压值通过SPI0得到
10 号中,UART0
11 号中断,Timer2使用
12 号中断,PCI,USB,RTC
13 号中断,PF_B中断,键盘使用
这里,我们将MemDMA的中断由默认的13更改为9(见SetupInterrupt),是因为
在PF_A的12号中断时,需调用MemDMA进行数据传输,如果MemDMA中断优先级 < PF 中断的优先级
会导致只有PF_A中断退出后,才能引发MemDMA, 这违背了程序设计时序。
****************************************************************************/
/*************************************************************************
ASYNC 0: 挂512K的存放程序的Flash,地址空间从0x2000,0000 --- 0x2007,ffff
ASYNC 1: 挂64M 的存放数据的Flash,地址空间从0x2400,0000 --- 0x27ff,ffff,我们定义其中Addr:0x2600,0000,Command:0x2500,0000,Data:0x2400,0000
ASYNC 2: 挂两块1K的FIFO,该两块FIFO硬件上设置,不能同时存取。两者除读使能/写使能不同外,其它的均使用相同的连接。地址空间从0x2800,0000 --- 0x0x2BFF,FFFF
ASYNC 3: 挂键盘,地址空间从0x2C00,0000 --- 0x0x2FFF,FFFF
*************************************************************************/
/****************************************************************************
系统 杂项设置
****************************************************************************/
#define RUN_IN_EZKITS 0 //1:程序运行在EZ-Kits BF535上,0:公司的开发板
#define KEYCODE_RUN_IN_L1 0 //1:关键代码运行在L1,0:运行在L2
#define SUPERVISOR_MODE_EN 0 //1:系统运行在管理模式,0:用户模式
#define UCOS_EN 1 //1:使能UCOS,0:不使能UCOS
#define ISR_SHARE_EN 0 //1:所有中断共享一个ISR,0:不同的中断使用不同的ISR
#define PERIPHERY_BUS_WIDTH32 1 //外设系统总线宽度,0:16bits,1:32bits
#define TEST_MEMDMA_TIME_EN 0 //1:测试MEMDMA时间,0:不测试
#define TEST_DATAPROC_TIME_EN 0 //1:测试数据处理时间,0:测试数据处理时间
/*************************************************************************
配置注意:
若VIDEO_TESTLOGO_EN == 1,则在0x00处,填充320*240 Y(16bit),输出logo图像
若VIDEO_TESTLOGO_EN == 0,则不需填充数据,输出实际采集的图像
*************************************************************************/
#define VIDEO_TESTLOGO_EN 1 //1:输出LOGO视频,0不输出LOGO视频
#define VIDEO_HISTOGRAM_EN 1 //1:统计直方 ,0:不统计直方
#define VIDEO_HISTOGRAM_SHOW_EN 0 //1:显示直方图图像,0:不显示直方图图像
#define VIDEO_HISTOGRAM_FINE_EN 0 //1:显示精细直方图,0:显示一级直方
#define VIDEO_PROCESS_HOOK_EN 0 //1:使能HOOK,0:不使能
//输入的数据源方式及输出配置
#define VIDEO_2POINT_CORRECTION_EN 1 //1:对原始数据进行2点校正 0:原始数据进行2点校正
#define VIDEO_GAIN_EN 1 //1:进来的数据乘gainn系数,0:不乘
#define VIDEO_DISPLAY_REVERSE_EN 1 //1:视频输出的数据反相,0:正相
#define ORIGINAL_DATA_SIGNAL_EN 1 //仅在VIDEO_2POINT_CORRECTION_EN为1时有效,1:原始输入为有符号数,0:原始输入为无符号数
#define VIDEO_BADPIXEL_CORRECT_EN 1 //1:坏点修正使能,0:坏点修正不使能
#define VIDEO_BADGRAY_CORRECT_EN 0 //1:对极大负数的灰度值进行修正,0:不修正
#define VIDEO_STREAM_DRIVERBY_HALFFULL 0 //1:视频流被半满中断驱动,0:2行中断
#define VIDEO_MAX_GRAY_ZOOM_LEVEL 16 //灰度放大最大数(1<<VIDEO_GRAY_ZOOM_LEVEL),10-31可调
#define VIDEO_HISTOGRAME_COUNT 1 //1:每帧都形成直方图, 2:每2帧都形成直方图..
#define VIDEO_MAX_VALUE 0x3FFF //定义原始Y数据的最大值(1<<14 = 16K)
#define HISTOGRAM_OFFSET 0x2000 //直方计算时,提正数据所使用的一个偏移量
#define VIDEO_HISTOGRAM_LIMITVALUE 0x10 //直方统计限定值
#define VIDEO_MIDDLE_FILTER_EN 1 //1:使能中值滤波,0:不使能中值滤波
#define VIDEO_ZOOM_EN 1 //1:视频支持电子放大,0:不支持电子放大
#define VIDEO_COLOR_EN 0 //1:显示彩色视频,0:显示黑白色视频
#if VIDEO_MIDDLE_FILTER_EN
#define MIDDLE_5POINT_FILTER_EN 0 //1:使用5点求中值,0:使用3点求中值
#endif
#define QUERY_DEAD_PIXELS_EN 1 //求死点
#define VIDEO_CALCTEMP_EN 0 //1:测温使能,0:测温不使能
#define TEMP_CALETEMP_COUNT 25 //1:每帧都计算温度, 2:每2帧都计算温度..
#define USER_INIT_EN 1 //1:用户初始化使能,0:不使能
#define UNGZIP_EN 1 //1:使能解压缩数据,0:不使能解压缩数据
#define SETUPPLL_EN 0 //1:设置PLL,0:不设置
#define SDRAM_INIT_EN 0 //1:在程序中初始化sdram,0:使用脚本初始化sdram
#define UART_EN 1 //1:使能stdio,0:不使能stdio
#define KEYBOARD_EN 0 //1:使能KEYBOARD,0:不使能KEYBOARD
#define MENU_EN 0 //1:使用菜单,0:不使用菜单
#define NET_EN 0 //1:使能网络,0:不使能网络
#define GUI_EN 1 //1:使能GUI,0:不使能GUI
#define PACKET_PROCESS_EN (UART_EN | NET_EN) //是否处理包由UART_EN与NET_EN决定
#define OSINTNESTING_SELFPLUSPLUS_EN 1 //1:在中断ISR中,使用OSIntNesting++,0:使用call OSIntEnter()
#define STACK_SW_IN_OSINTEXIT_EN 0 //1:在中断退出函数OSIntExit里进行任务堆栈中切换,0:其它地方切换。应为0
#define TASK_WORKQ_EN 1 //1:使能WorkQ任务,0:不使能WorkQ任务
#define TASK_TIMER_EN 1 //1:使能Timer任务,0:不使能Timer任务
#if KEYBOARD_EN
#define KEYBOARD_INT_TRIGGER 1 //1:键盘由中断触发,0:查询方式
#else
#define KEYBOARD_INT_TRIGGER 0 //1:键盘由中断触发,0:查询方式
#endif//KEYBOARD_EN
#if VIDEO_ZOOM_EN
#define VIDEO_ZOOM_ORI_LEVEL 10 //原始数据在未缩放前的默认值
#define VIDEO_ZOOM_MIN_LEVEL 10 //最小缩小值
#define VIDEO_ZOOM_MAX_LEVEL 20 //最大放大值
#define VIDEO_ZOOM_STEP 1 //缩放时步时值
#define VIDEO_NOZOOM 0 //图像未缩放
#define VIDEO_ZOOMIN 1 //图像放大
#define VIDEO_ZOOMOUT 2 //图像缩小
#endif //VIDEO_ZOOM_EN
#if RUN_IN_EZKITS
#define STEP_MEMDMA_EN 0 //1:MemDMA时使用单步MEMDMA,0:使用一组MEMDMA描述符一次进行
#define CFG_FPGA_EN 0 //1:使能配置FPGA,0:不使能配置FPGA
#define TESTDEVICE_EN 0 //1:测试设备使能,0:测试设备不使能
#else
#define STEP_MEMDMA_EN 0 //1:MemDMA时使用单步MEMDMA,0:使用一组MEMDMA描述符一次进行
#define CFG_FPGA_EN 1 //1:使能配置FPGA,0:不使能配置FPGA
#define TESTDEVICE_EN 1 //1:测试设备使能,0:测试设备不使能
#endif
#if UART_EN
#define STDIO_UART UART0 //STDIO使用UART0
#define UCOS_VIEW_UART UART0 //ucos-view使用UART0
#define STDIO_DEFAULT_BOUDRATE UART_BAUD_9600 //系统默认的波特率
#endif
#define DEBUG 1 //1:调试程序模式,0:正式运行模式
#if DEBUG
#define TRACE trace
#define TRACE0(strForamt) trace(strForamt)
#define TRACE1(strForamt,a1) trace(strForamt,a1)
#define TRACE2(strForamt,a1,b2) trace(strForamt,a1,b2)
#define TRACE3(strForamt,a1,b2,c3) trace(strForamt,a1,b2,c3)
#define TRACE4(strForamt,a1,b2,c3,d4) trace(strForamt,a1,b2,c3,d4)
#define TRACE5(strForamt,a1,b2,c3,d4,e5) trace(strForamt,a1,b2,c3,d4,e5)
#else
#define TRACE
#define TRACE0(strForamt)
#define TRACE1(strForamt,a1)
#define TRACE2(strForamt,a1,b2)
#define TRACE3(strForamt,a1,b2,c3)
#define TRACE4(strForamt,a1,b2,c3,d4)
#define TRACE5(strForamt,a1,b2,c3,d4,e5)
#endif
#if TESTDEVICE_EN
#define TEST_SDRAM_EN 1 //1:测试SDRAM使能,0:不使能
#define TEST_FLASH_EN 1 //1:测试512KFlash使能,0:不使能
#define TEST_VIDEODVC_EN 1 //1:测试视频使能 ,0:不使能
#endif
/****************************************************************************
uCOS 任务优先级定义
****************************************************************************/
#define TASK_BADPIXEL_CORRECT_PRIO 4 //死点修正任务优先级
#define TASK_KEYBOARDPROCESS_PRIO 5 //键盘处理任务优先级
#define TASK_HISTOGRAMPROCESS_PRIO 6 //帧中断处理任务优先级
#define TASK_UART_PRIO 7 //UART处理任务优先级
#define TASK_ROOT_PRIO 10 //初始化任务优先级
#define TASK_CMDPACKET_PRIO 11 //命令包处理任务优先级
#define TASK_WORKQ_PRIO 12 //工作队列任务优先级
#define TASK_TIMER_PRIO 14 //定时器任务优先级
/****************************************************************************
512K Flash数据存放区间配置定义
****************************************************************************/
#define PROGRAM_DATA_MAX_LEN (212*1024) //最大程序大小212K
#define SYS_DATA_MAX_LEN (292*1024) //系统数据大小292K
#define CONFIG_DATA_MAX_LEN (8*1024) //配置数据大小8K(4K正常配置,4K备用)
/****************************************************************************
关键代码存放区域定义
****************************************************************************/
#if KEYCODE_RUN_IN_L1
#if defined(__ADSPBF535__)
#ifndef _LANGUAGE_ASM
#define SECTION_L1_CODE section("L1_code")
#else
#define SECTION_L1_CODE .section L1_code;
#endif
#else
#define SECTION_L1_CODE
#endif
#else
#if defined(__ADSPBF535__)
#ifndef _LANGUAGE_ASM
#define SECTION_L1_CODE
#else
#define SECTION_L1_CODE .section program;
#endif
#else
#define SECTION_L1_CODE
#endif
#endif
/****************************************************************************
SDRAM内存区域定义
****************************************************************************/
/****************************************************************************
uCOS 任务堆栈大小定义
****************************************************************************/
#define STACK_SIZE 500 // 任务堆栈大小,以32bits计
//Heap内存开始地址
#define TASK_HEAP_MEM_START 0xFF800000 //片内a内存开始地址
#define TASK_HEAP_MEM_SIZE 0x3000
/****************************************************************************
系统 运行速度及外设速度定义
****************************************************************************/
#if RUN_IN_EZKITS
#define EXTERN_CLOCK (20*1000000) //外部晶振为20M
#else
#define EXTERN_CLOCK (27*1000000) //外部晶振为27M
#endif
#define CORE_CLOCK (0x16 * EXTERN_CLOCK) //内核时钟 = 外部外部晶振CLK * 倍频数
#define SYS_CLOCK (unsigned long)(CORE_CLOCK / 4) //系统时钟 = 内核时钟/4
/****************************************************************************
视频 宽度/高度定义
****************************************************************************/
#define WIDTH_VIDEO 320 //视频宽度/列数
#define HEIGHT_VIDEO 240 //视频高度/行数
#define ALPHA_MENU (256*30/100) //Alpha Menu,Menu:30%,YUV:70%
#define ORIGINAL_DATA_BITS_NUM 14
#define VIDEO_FILTER_DIV 2
#define VIDEO_TBL_MULDIV (ORIGINAL_DATA_BITS_NUM - 8)//视频对应表的压缩率,即将 实际数据>>VIDEO_TBL_MULDIV
#define VIDEO_TBL_LEN 256 //YUV表数据长度
#define HISTOGRAM_TBL_LEN 1024
#define VIDEO_INT_PROCESS_COUNT (2*WIDTH_VIDEO) //视频一次中断时处理的数据个数
/****************************************************************************
SPI 设置
****************************************************************************/
#define SPI0_BAUD_VALUE 100 //100
/****************************************************************************
UART 设置
****************************************************************************/
/****************************************************************************
字模点阵 设置
****************************************************************************/
#define HZ_LATTICE_WIDTH 16 //每个汉字点阵宽度
#define HZ_LATTICE_HEIGHT 16 //每个汉字点阵高度
#define HZ_LATTICE_LINE_BITS 16 //每个汉字点阵一行占用的比bits,比如,12*12的点阵,每行占用16bits
#define ASC_LATTICE_WIDTH 8 //每个ASCII点阵宽度
#define ASC_LATTICE_HEIGHT 16 //每个ASCII点阵高度
#define ASC_LATTICE_LINE_BITS 8 //每个ASCII点阵一行占用的比bits,比如,6*12的点阵,每行占用8bits
/****************************************************************************
GUI参数设置
****************************************************************************/
#define MENU_INTERLACED_EN 0 //因PAL,NTSC存在着隔行扫描,故为了使窗口显示更精致,使能窗口隔行传输
#if MENU_INTERLACED_EN
#define FONT_WIDTH_DIVS 2
#else
#define FONT_WIDTH_DIVS 1
#endif
#define MENU_1D_BORDER_EN 0 //1:菜单有1D边框,0:无1D边框
#define MENU_3D_BORDER_EN 1 //1:菜单有3D边框,0:无3D边框,如果使能MENU_3D_BORDER_EN,必须设置SM_BORDER_CX = SM_BORDER_CY = 2
#define MENU_BORDER_EN (MENU_3D_BORDER_EN | MENU_1D_BORDER_EN) //1:菜单有边框,0:无边框
#define MENU_STYLE_DOWN_POPUP 1 //1:菜单项使用下拉风格,0:使用windows的开始菜单风格
#if MENU_STYLE_DOWN_POPUP
#define ROOT_MENU_POSITION_X 26
#define ROOT_MENU_POSITION_Y (HEIGHT_VIDEO - HZ_LATTICE_HEIGHT - 2*2 -1) //2*2 = (2边框)*(边框宽度2)
#else
#define ROOT_MENU_POSITION_X 26
#define ROOT_MENU_POSITION_Y (HEIGHT_VIDEO - 5*HZ_LATTICE_HEIGHT - 2*2 -1) //2*2 = (2边框)*(边框宽度2)
#endif
#endif//__SYSCCFG_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -