From: Ming Wei Date: Thu, 29 Dec 2016 23:17:41 +0000 (-0600) Subject: add realtime_demo_bios/k2g for CMB X-Git-Tag: DEV.AUDIO_PREPROC.01.01.00.00^0 X-Git-Url: https://git.ti.com/gitweb?p=processor-sdk%2Faudio-preprocessing.git;a=commitdiff_plain;h=909b6b0fb1128017a87df6feb0b75b1ee76759c3 add realtime_demo_bios/k2g for CMB Signed-off-by: Ming Wei --- diff --git a/common/components/sys.h b/common/components/sys.h index 0b7882a..d0fa142 100644 --- a/common/components/sys.h +++ b/common/components/sys.h @@ -47,7 +47,9 @@ #define SYS_MICS_MAX 7 /* Maximum number of microphones in the system */ #define SYS_VMICS_MAX 12 /* Maximum number of virtual microphones in the system */ +#define SYS_ADC_FS_HZ 48000 /* ADC sampling rate in Hz */ #define SYS_FS_HZ 16000 /* Sampling rate in Hz */ +#define SYS_FS_RATIO SYS_ADC_FS_HZ/SYS_FS_HZ /* Sampling rate ratio */ #define SYS_FRAME_DURATION_MS 10 /* Frame duration in ms */ #define SYS_FRAME_LENGTH (1L*SYS_FS_HZ*SYS_FRAME_DURATION_MS/1000) /* Frame length in samples */ #define SYS_FRAME_SIZE (TYP_LINSAMPLE_SIZE*SYS_FRAME_LENGTH/TYP_TWORD_SIZE) /* Frame size in bytes */ diff --git a/realtime_demo_bios/k2g/.ccsproject b/realtime_demo_bios/k2g/.ccsproject new file mode 100644 index 0000000..492988b --- /dev/null +++ b/realtime_demo_bios/k2g/.ccsproject @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/realtime_demo_bios/k2g/.cproject b/realtime_demo_bios/k2g/.cproject new file mode 100644 index 0000000..e033145 --- /dev/null +++ b/realtime_demo_bios/k2g/.cproject @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/realtime_demo_bios/k2g/.project b/realtime_demo_bios/k2g/.project new file mode 100644 index 0000000..fa2ee35 --- /dev/null +++ b/realtime_demo_bios/k2g/.project @@ -0,0 +1,125 @@ + + + audioAnalogLoopbackTest + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.rtsc.xdctools.buildDefinitions.XDC.xdcNature + com.ti.ccstudio.core.ccsNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + fil.c + 1 + PARENT-2-PROJECT_LOC/common/components/fil.c + + + fil.h + 1 + PARENT-2-PROJECT_LOC/common/components/fil.h + + + mhm.c + 1 + PARENT-2-PROJECT_LOC/common/components/mhm/src/mhm.c + + + mss.c + 1 + PARENT-2-PROJECT_LOC/common/components/mss/src/mss.c + + + mssproc.c + 1 + PARENT-2-PROJECT_LOC/common/components/mss/src/mssproc.c + + + src + 2 + PROJECT_LOC/src + + + sys.c + 1 + PARENT-2-PROJECT_LOC/common/components/sys.c + + + sys.h + 1 + PARENT-2-PROJECT_LOC/common/components/sys.h + + + sysasnr.c + 1 + PARENT-2-PROJECT_LOC/common/components/sysasnr.c + + + sysbf.c + 1 + PARENT-2-PROJECT_LOC/common/components/sysbf.c + + + sysbfflt.c + 1 + PARENT-2-PROJECT_LOC/common/components/sysbfflt.c + + + sysbfflt.h + 1 + PARENT-2-PROJECT_LOC/common/components/sysbfflt.h + + + syseram.c + 1 + PARENT-2-PROJECT_LOC/common/components/syseram.c + + + syseram.h + 1 + PARENT-2-PROJECT_LOC/common/components/syseram.h + + + sysiram.c + 1 + PARENT-2-PROJECT_LOC/common/components/sysiram.c + + + sysiram.h + 1 + PARENT-2-PROJECT_LOC/common/components/sysiram.h + + + sysmss.c + 1 + PARENT-2-PROJECT_LOC/common/components/sysmss.c + + + + + CSL_INSTALL_PATH + $%7BPARENT-5-PROJECT_LOC%7D/pdk_k2g_1_0_4/packages/ti/csl + + + PDK_INSTALL_PATH + $%7BPARENT-5-PROJECT_LOC%7D/pdk_k2g_1_0_4/packages + + + diff --git a/realtime_demo_bios/k2g/.xdchelp b/realtime_demo_bios/k2g/.xdchelp new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/k2g/audioAnalogLoopbackTest.cfg b/realtime_demo_bios/k2g/audioAnalogLoopbackTest.cfg new file mode 100644 index 0000000..ddd8b88 --- /dev/null +++ b/realtime_demo_bios/k2g/audioAnalogLoopbackTest.cfg @@ -0,0 +1,145 @@ +/* + * audioAnalogTest.cfg + * + * Memory Map and Program intializations for the audio analog test + * + * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* load the required files and packages */ +var Memory = xdc.useModule('xdc.runtime.Memory') +var Task = xdc.useModule ("ti.sysbios.knl.Task"); +var BIOS = xdc.useModule ("ti.sysbios.BIOS"); +var ECM = xdc.useModule ("ti.sysbios.family.c64p.EventCombiner"); +var System = xdc.useModule ("xdc.runtime.System"); +var SysStd = xdc.useModule('xdc.runtime.SysStd'); +var cache = xdc.useModule ("ti.sysbios.hal.Cache"); +var Timestamp = xdc.useModule ("xdc.runtime.Timestamp"); +var Hwi = xdc.useModule ("ti.sysbios.family.c64p.Hwi"); +var Sem = xdc.useModule("ti.sysbios.knl.Semaphore"); +var Log = xdc.useModule('xdc.runtime.Log'); +var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf'); +var SysMin = xdc.useModule('xdc.runtime.SysMin'); +var System = xdc.useModule('xdc.runtime.System'); +var Defaults = xdc.useModule('xdc.runtime.Defaults'); +var Main = xdc.useModule('xdc.runtime.Main'); +var Diags = xdc.useModule('xdc.runtime.Diags'); +var HeapMem = xdc.useModule ("ti.sysbios.heaps.HeapMem"); +var CpIntc = xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc'); + +/* Add the drivers and libraries required */ +//var mcasp = xdc.useModule('ti.drv.mcasp.Settings'); +var devType = "k2g"; +var Csl = xdc.useModule('ti.csl.Settings'); +Csl.deviceType = devType; +//var PlatformLib = xdc.loadPackage('ti.platform.evmk2g'); +var Edma = xdc.loadPackage('ti.sdo.edma3.drv'); + +/* Load the uart package -- required by board */ +var Uart = xdc.loadPackage('ti.drv.uart'); +Uart.Settings.socType = devType; + +//var Board = xdc.loadPackage('ti.board'); +//Board.Settings.boardName = "evmK2G"; + +/* Load the osal package -- required by board & interrupt example */ +var osType = "tirtos" +var Osal = xdc.loadPackage('ti.osal'); +Osal.Settings.osType = osType; +Osal.Settings.socType = devType; + +/* + * The BIOS module will create the default heap for the system. + * Specify the size of this default heap. + */ +BIOS.heapSize = 0x2000; + +/* System stack size (used by ISRs and Swis) */ +Program.stack = 0x4000; + +System.SupportProxy = SysStd; + +var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); +var heapMemParams = new HeapMem.Params(); +heapMemParams.size = 0x28000; +heapMemParams.sectionName = "systemHeap"; +Program.global.heapHandle = HeapMem.create(heapMemParams); + +/* + * Create and install logger for the whole system + */ +var loggerBufParams = new LoggerBuf.Params(); +loggerBufParams.numEntries = 32; +var logger0 = LoggerBuf.create(loggerBufParams); +Defaults.common$.logger = logger0; +Main.common$.diags_INFO = Diags.ALWAYS_ON; + +Program.sectMap["systemHeap"] = "L2SRAM"; +Program.sectMap[".sysmem"] = "L2SRAM"; +Program.sectMap[".args"] = "L2SRAM"; +Program.sectMap[".cio"] = "L2SRAM"; +Program.sectMap[".far"] = "EXT_RAM"; +Program.sectMap[".rodata"] = "L2SRAM"; +Program.sectMap[".neardata"] = "L2SRAM"; +Program.sectMap[".init_array"] = "L2SRAM"; +Program.sectMap[".cinit"] = "L2SRAM"; +Program.sectMap[".bss"] = "L2SRAM"; +Program.sectMap[".const"] = "L2SRAM"; +Program.sectMap[".text"] = "L2SRAM"; +Program.sectMap[".code"] = "L2SRAM"; +Program.sectMap[".switch"] = "L2SRAM"; +Program.sectMap[".data"] = "L2SRAM"; +Program.sectMap[".fardata"] = "L2SRAM"; +Program.sectMap[".vecs"] = "L2SRAM"; +Program.sectMap["platform_lib"] = "L2SRAM"; +Program.sectMap[".stack"] = "L2SRAM"; + +var task0Params = new Task.Params(); +task0Params.priority = 5; +task0Params.instance.name = "task0"; + +Program.global.task0 = Task.create("&Audio_echo_Task", task0Params); + +/* Enable BIOS Task Scheduler */ +BIOS.taskEnabled = true; + +/* + * Enable Event Groups here and registering of ISR for specific GEM INTC is done + * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs + */ + +ECM.eventGroupHwiNum[0] = 7; +ECM.eventGroupHwiNum[1] = 8; +ECM.eventGroupHwiNum[2] = 9; +ECM.eventGroupHwiNum[3] = 10; + + diff --git a/realtime_demo_bios/k2g/bflinker.cmd b/realtime_demo_bios/k2g/bflinker.cmd new file mode 100644 index 0000000..ce327af --- /dev/null +++ b/realtime_demo_bios/k2g/bflinker.cmd @@ -0,0 +1,22 @@ +/* + * bflinker.cmd: Linker command file for Beamformer + */ + +SECTIONS +{ + .bferam: load >> L2SRAM + .bfiram: load >> L2SRAM + .uiaLoggerBuffers load >> EXT_RAM + filOutBuf0 >> EXT_RAM + filBuf0 >> EXT_RAM + filBuf1 >> EXT_RAM + filBuf2 >> EXT_RAM + filBuf3 >> EXT_RAM + filBuf4 >> EXT_RAM + filBuf5 >> EXT_RAM + filBuf6 >> EXT_RAM + filBuf7 >> EXT_RAM + .far >> EXT_RAM +} +/* nothing past this point */ + diff --git a/realtime_demo_bios/k2g/build/makefile b/realtime_demo_bios/k2g/build/makefile new file mode 100644 index 0000000..e0cabd2 --- /dev/null +++ b/realtime_demo_bios/k2g/build/makefile @@ -0,0 +1,216 @@ +# set global environment variables +SDK_INSTALL_PATH ?= C:/ti +C6X_GEN_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/ccsv6/tools/compiler/ti-cgt-c6000_8.1.0 +XDC_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/xdctools_3_32_01_22_core +BIOS_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/bios_6_46_01_38 +UIA_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/uia_2_00_06_52 +XDAIS_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/xdais_7_24_00_04 +VOLIB_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/volib_C66_2_1_0_1 +AER_INSTALL_PATH ?= $(SDK_INSTALL_PATH)/aer_c64Px_obj_17_0_0_0 + +CG_TOOL_ROOT := ${C6X_GEN_INSTALL_PATH} + +GEN_OPTS__FLAG := --cmd_file="configPkg/compiler.opt" +GEN_CMDS__FLAG := -l"configPkg/linker.cmd" + +ORDERED_OBJS += \ +"./fil.obj" \ +"./mhm.obj" \ +"./mss.obj" \ +"./mssproc.obj" \ +"./sys.obj" \ +"./sysasnr.obj" \ +"./sysbf.obj" \ +"./sysbfflt.obj" \ +"./syseram.obj" \ +"./sysiram.obj" \ +"./sysmss.obj" \ +"./src/audio_dc_cfg.obj" \ +"./src/edma_cfg.obj" \ +"./src/main.obj" \ +"./src/mcasp_cfg.obj" \ +"./src/mcasp_osal.obj" \ +"./src/sample_cs.obj" \ +"./src/sample_k2g_cfg.obj" \ +"./src/sample_k2g_int_reg.obj" \ +"./src/sine.obj" \ +"./src/test_exit.obj" \ +"../src/sysbios/BIOS.obj" \ +"../src/sysbios/c62_TaskSupport_asm.obj" \ +"../src/sysbios/c64p_Exception_asm.obj" \ +"../src/sysbios/c64p_Hwi_asm.obj" \ +"../src/sysbios/c64p_Hwi_asm_switch.obj" \ +"../src/sysbios/c64p_Hwi_disp_always.obj" \ +"../src/sysbios/ti_tls_get_tp.obj" \ +"../src/sysbios/timer64_Timer_asm.obj" \ +"../bflinker.cmd" \ +$(GEN_CMDS__FLAG) \ +-llibc.a \ +-lti.addon.audk2g.ae66 \ +-lti.board.ae66 \ +-lti.drv.mcasp.ae66 \ +-laer_c.ae64P \ +-lvau/lib/vau_c.ae66 \ +-lvpe/lib/vpe_a.ae66 \ +-lvpe/lib/vpe_c.ae66 \ +-lutil/lib/util_c.ae66 \ +-lmhm/lib/mhm_c.ae66 \ + +-include ../makefile.init + +OS := $(shell uname) +ifeq ($(OS), Linux) +RM := rm -f +RMDIR := rm -d -f -r +else +RM := rm -f +RMDIR := rm -r -f +endif + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir_vars.mk +-include src/subdir_vars.mk +-include src/sysbios/subdir_vars.mk +-include subdir_rules.mk +-include src/subdir_rules.mk +-include src/sysbios/subdir_rules.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(S62_DEPS)),) +-include $(S62_DEPS) +endif +ifneq ($(strip $(C64_DEPS)),) +-include $(C64_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(CC_DEPS)),) +-include $(CC_DEPS) +endif +ifneq ($(strip $(SV7A_DEPS)),) +-include $(SV7A_DEPS) +endif +ifneq ($(strip $(S55_DEPS)),) +-include $(S55_DEPS) +endif +ifneq ($(strip $(C67_DEPS)),) +-include $(C67_DEPS) +endif +ifneq ($(strip $(CLA_DEPS)),) +-include $(CLA_DEPS) +endif +ifneq ($(strip $(C??_DEPS)),) +-include $(C??_DEPS) +endif +ifneq ($(strip $(CPP_DEPS)),) +-include $(CPP_DEPS) +endif +ifneq ($(strip $(S??_DEPS)),) +-include $(S??_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(C62_DEPS)),) +-include $(C62_DEPS) +endif +ifneq ($(strip $(CXX_DEPS)),) +-include $(CXX_DEPS) +endif +ifneq ($(strip $(C++_DEPS)),) +-include $(C++_DEPS) +endif +ifneq ($(strip $(ASM_UPPER_DEPS)),) +-include $(ASM_UPPER_DEPS) +endif +ifneq ($(strip $(K_DEPS)),) +-include $(K_DEPS) +endif +ifneq ($(strip $(C43_DEPS)),) +-include $(C43_DEPS) +endif +ifneq ($(strip $(INO_DEPS)),) +-include $(INO_DEPS) +endif +ifneq ($(strip $(S67_DEPS)),) +-include $(S67_DEPS) +endif +ifneq ($(strip $(SA_DEPS)),) +-include $(SA_DEPS) +endif +ifneq ($(strip $(S43_DEPS)),) +-include $(S43_DEPS) +endif +ifneq ($(strip $(OPT_DEPS)),) +-include $(OPT_DEPS) +endif +ifneq ($(strip $(PDE_DEPS)),) +-include $(PDE_DEPS) +endif +ifneq ($(strip $(S64_DEPS)),) +-include $(S64_DEPS) +endif +ifneq ($(strip $(C_UPPER_DEPS)),) +-include $(C_UPPER_DEPS) +endif +ifneq ($(strip $(C55_DEPS)),) +-include $(C55_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +EXE_OUTPUTS += \ +audioAnalogLoopbackTest.out \ + +EXE_OUTPUTS__QUOTED += \ +"audioAnalogLoopbackTest.out" \ + +BIN_OUTPUTS += \ +audioAnalogLoopbackTest.hex \ + +BIN_OUTPUTS__QUOTED += \ +"audioAnalogLoopbackTest.hex" \ + + +# All Target +all: audioAnalogLoopbackTest.out + +# Tool invocations +audioAnalogLoopbackTest.out: $(OBJS) $(CMD_SRCS) $(GEN_CMDS) + @echo 'Building target: $@' + @echo 'Invoking: C6000 Linker' + "$(C6X_GEN_INSTALL_PATH)/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number -z -m"audioAnalogLoopbackTest.map" --stack_size=0x2000 -i"${C6X_GEN_INSTALL_PATH}/lib" -i"${C6X_GEN_INSTALL_PATH}/include" -i"C:/ti/pdk_k2g_1_0_4/packages/ti/board/lib/evmK2G/c66/release" -i"C:/ti/pdk_k2g_1_0_4/packages/ti/addon/audk2g/lib/k2g/c66/release" -i"C:/ti/pdk_k2g_1_0_4/packages/ti/drv/mcasp/lib/k2g/c66/release" -i"C:/ti/aer_c64Px_obj_17_0_0_0/packages/ti/mas/aer/lib" -i"C:/ti/volib_C66_2_1_0_1/packages/ti/mas/" --reread_libs --diag_wrap=off --display_error_number --warn_sections --xml_link_info="audioAnalogLoopbackTest_linkInfo.xml" --rom_model -o "audioAnalogLoopbackTest.out" $(ORDERED_OBJS) + @echo 'Finished building target: $@' + @echo ' ' + +audioAnalogLoopbackTest.hex: $(EXE_OUTPUTS) + @echo 'Invoking: C6000 Hex Utility' + "${C6X_GEN_INSTALL_PATH}/bin/hex6x" -o "audioAnalogLoopbackTest.hex" $(EXE_OUTPUTS__QUOTED) + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(GEN_MISC_FILES__QUOTED)$(EXE_OUTPUTS__QUOTED)$(GEN_FILES__QUOTED)$(BIN_OUTPUTS__QUOTED)$(GEN_OPTS__QUOTED)$(GEN_CMDS__QUOTED) + -$(RMDIR) $(GEN_MISC_DIRS__QUOTED) + -$(RM) "fil.d" "mhm.d" "mss.d" "mssproc.d" "sys.d" "sysasnr.d" "sysbf.d" "sysbfflt.d" "syseram.d" "sysiram.d" "sysmss.d" "src\audio_dc_cfg.d" "src\edma_cfg.d" "src\main.d" "src\mcasp_cfg.d" "src\mcasp_osal.d" "src\sample_cs.d" "src\sample_k2g_cfg.d" "src\sample_k2g_int_reg.d" "src\sine.d" "src\test_exit.d" + -$(RM) "fil.obj" "mhm.obj" "mss.obj" "mssproc.obj" "sys.obj" "sysasnr.obj" "sysbf.obj" "sysbfflt.obj" "syseram.obj" "sysiram.obj" "sysmss.obj" "src\audio_dc_cfg.obj" "src\edma_cfg.obj" "src\main.obj" "src\mcasp_cfg.obj" "src\mcasp_osal.obj" "src\sample_cs.obj" "src\sample_k2g_cfg.obj" "src\sample_k2g_int_reg.obj" "src\sine.obj" "src\test_exit.obj" + -@echo 'Finished clean' + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets + diff --git a/realtime_demo_bios/k2g/build/objects.mk b/realtime_demo_bios/k2g/build/objects.mk new file mode 100644 index 0000000..ba12ef3 --- /dev/null +++ b/realtime_demo_bios/k2g/build/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := -llibc.a -lti.addon.audk2g.ae66 -lti.board.ae66 -lti.drv.mcasp.ae66 -laer_c.ae64P -lvau/lib/vau_c.ae66 -lvpe/lib/vpe_a.ae66 -lvpe/lib/vpe_c.ae66 -lutil/lib/util_c.ae66 -lmhm/lib/mhm_c.ae66 + diff --git a/realtime_demo_bios/k2g/build/sources.mk b/realtime_demo_bios/k2g/build/sources.mk new file mode 100644 index 0000000..e8389c3 --- /dev/null +++ b/realtime_demo_bios/k2g/build/sources.mk @@ -0,0 +1,129 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +CPP_SRCS := +K_SRCS := +LD_SRCS := +S67_SRCS := +LDS_SRCS := +CMD_SRCS := +EXE_SRCS := +CXX_SRCS := +CMD_UPPER_SRCS := +ELF_SRCS := +C43_SRCS := +S55_SRCS := +LD_UPPER_SRCS := +C62_SRCS := +S_UPPER_SRCS := +CFG_SRCS := +A_SRCS := +SA_SRCS := +C55_SRCS := +LDS_UPPER_SRCS := +C_UPPER_SRCS := +OUT_SRCS := +INO_SRCS := +CFG_UPPER_SRCS := +OBJ_SRCS := +S62_SRCS := +LIB_SRCS := +PDE_SRCS := +SV7A_SRCS := +ASM_SRCS := +ASM_UPPER_SRCS := +C++_SRCS := +CLA_SRCS := +S??_SRCS := +C_SRCS := +C67_SRCS := +S_SRCS := +S43_SRCS := +OPT_SRCS := +C64_SRCS := +CC_SRCS := +C??_SRCS := +S64_SRCS := +OBJS := +BIN_OUTPUTS := +S_DEPS := +S_UPPER_DEPS := +S62_DEPS := +GEN_MISC_FILES := +C64_DEPS := +ASM_DEPS := +CC_DEPS := +SV7A_DEPS := +S55_DEPS := +C67_DEPS := +CLA_DEPS := +C??_DEPS := +CPP_DEPS := +S??_DEPS := +C_DEPS := +C62_DEPS := +EXE_OUTPUTS := +GEN_MISC_DIRS := +GEN_CMDS := +CXX_DEPS := +C++_DEPS := +GEN_OPTS := +ASM_UPPER_DEPS := +K_DEPS := +C43_DEPS := +INO_DEPS := +S67_DEPS := +SA_DEPS := +S43_DEPS := +OPT_DEPS := +PDE_DEPS := +S64_DEPS := +GEN_FILES := +C_UPPER_DEPS := +C55_DEPS := +CPP_DEPS__QUOTED := +C67_DEPS__QUOTED := +INO_DEPS__QUOTED := +C??_DEPS__QUOTED := +S_UPPER_DEPS__QUOTED := +CLA_DEPS__QUOTED := +ASM_UPPER_DEPS__QUOTED := +C62_DEPS__QUOTED := +CXX_DEPS__QUOTED := +GEN_MISC_FILES__QUOTED := +EXE_OUTPUTS__QUOTED := +S67_DEPS__QUOTED := +GEN_FILES__QUOTED := +BIN_OUTPUTS__QUOTED := +GEN_MISC_DIRS__QUOTED := +C_DEPS__QUOTED := +GEN_OPTS__QUOTED := +C_UPPER_DEPS__QUOTED := +OPT_DEPS__QUOTED := +S_DEPS__QUOTED := +K_DEPS__QUOTED := +S??_DEPS__QUOTED := +C64_DEPS__QUOTED := +GEN_CMDS__QUOTED := +C++_DEPS__QUOTED := +OBJS__QUOTED := +CC_DEPS__QUOTED := +S43_DEPS__QUOTED := +S55_DEPS__QUOTED := +SA_DEPS__QUOTED := +C55_DEPS__QUOTED := +PDE_DEPS__QUOTED := +C43_DEPS__QUOTED := +S62_DEPS__QUOTED := +ASM_DEPS__QUOTED := +SV7A_DEPS__QUOTED := +S64_DEPS__QUOTED := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +src \ +src/sysbios \ + diff --git a/realtime_demo_bios/k2g/build/src/subdir_rules.mk b/realtime_demo_bios/k2g/build/src/subdir_rules.mk new file mode 100644 index 0000000..10f9f92 --- /dev/null +++ b/realtime_demo_bios/k2g/build/src/subdir_rules.mk @@ -0,0 +1,76 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Each subdirectory must supply rules for building sources it contributes +src/audio_dc_cfg.obj: ../../../realtime_demo_bios/k2g/src/audio_dc_cfg.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/audio_dc_cfg.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/edma_cfg.obj: ../../../realtime_demo_bios/k2g/src/edma_cfg.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/edma_cfg.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/main.obj: ../../../realtime_demo_bios/k2g/src/main.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/main.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/mcasp_cfg.obj: ../../../realtime_demo_bios/k2g/src/mcasp_cfg.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/mcasp_cfg.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/mcasp_osal.obj: ../../../realtime_demo_bios/k2g/src/mcasp_osal.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/mcasp_osal.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/sample_cs.obj: ../../../realtime_demo_bios/k2g/src/sample_cs.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/sample_cs.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/sample_k2g_cfg.obj: ../../../realtime_demo_bios/k2g/src/sample_k2g_cfg.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/sample_k2g_cfg.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/sample_k2g_int_reg.obj: ../../../realtime_demo_bios/k2g/src/sample_k2g_int_reg.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/sample_k2g_int_reg.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/sine.obj: ../../../realtime_demo_bios/k2g/src/sine.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/sine.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +src/test_exit.obj: ../../../realtime_demo_bios/k2g/src/test_exit.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${EDMA3LLD_BIOS6_INSTALLDIR}/packages" --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="src/test_exit.d" --obj_directory="src" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/realtime_demo_bios/k2g/build/src/subdir_vars.mk b/realtime_demo_bios/k2g/build/src/subdir_vars.mk new file mode 100644 index 0000000..dfd6442 --- /dev/null +++ b/realtime_demo_bios/k2g/build/src/subdir_vars.mk @@ -0,0 +1,78 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/audio_dc_cfg.c \ +../src/edma_cfg.c \ +../src/main.c \ +../src/mcasp_cfg.c \ +../src/mcasp_osal.c \ +../src/sample_cs.c \ +../src/sample_k2g_cfg.c \ +../src/sample_k2g_int_reg.c \ +../src/sine.c \ +../src/test_exit.c + +OBJS += \ +./src/audio_dc_cfg.obj \ +./src/edma_cfg.obj \ +./src/main.obj \ +./src/mcasp_cfg.obj \ +./src/mcasp_osal.obj \ +./src/sample_cs.obj \ +./src/sample_k2g_cfg.obj \ +./src/sample_k2g_int_reg.obj \ +./src/sine.obj \ +./src/test_exit.obj + +C_DEPS += \ +./src/audio_dc_cfg.d \ +./src/edma_cfg.d \ +./src/main.d \ +./src/mcasp_cfg.d \ +./src/mcasp_osal.d \ +./src/sample_cs.d \ +./src/sample_k2g_cfg.d \ +./src/sample_k2g_int_reg.d \ +./src/sine.d \ +./src/test_exit.d + +C_DEPS__QUOTED += \ +"src\audio_dc_cfg.d" \ +"src\edma_cfg.d" \ +"src\main.d" \ +"src\mcasp_cfg.d" \ +"src\mcasp_osal.d" \ +"src\sample_cs.d" \ +"src\sample_k2g_cfg.d" \ +"src\sample_k2g_int_reg.d" \ +"src\sine.d" \ +"src\test_exit.d" + +OBJS__QUOTED += \ +"src\audio_dc_cfg.obj" \ +"src\edma_cfg.obj" \ +"src\main.obj" \ +"src\mcasp_cfg.obj" \ +"src\mcasp_osal.obj" \ +"src\sample_cs.obj" \ +"src\sample_k2g_cfg.obj" \ +"src\sample_k2g_int_reg.obj" \ +"src\sine.obj" \ +"src\test_exit.obj" + +C_SRCS__QUOTED += \ +"../src/audio_dc_cfg.c" \ +"../src/edma_cfg.c" \ +"../src/main.c" \ +"../src/mcasp_cfg.c" \ +"../src/mcasp_osal.c" \ +"../src/sample_cs.c" \ +"../src/sample_k2g_cfg.c" \ +"../src/sample_k2g_int_reg.c" \ +"../src/sine.c" \ +"../src/test_exit.c" + + diff --git a/realtime_demo_bios/k2g/build/src/sysbios/subdir_rules.mk b/realtime_demo_bios/k2g/build/src/sysbios/subdir_rules.mk new file mode 100644 index 0000000..96e2e82 --- /dev/null +++ b/realtime_demo_bios/k2g/build/src/sysbios/subdir_rules.mk @@ -0,0 +1,6 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Each subdirectory must supply rules for building sources it contributes + diff --git a/realtime_demo_bios/k2g/build/src/sysbios/subdir_vars.mk b/realtime_demo_bios/k2g/build/src/sysbios/subdir_vars.mk new file mode 100644 index 0000000..61d32b3 --- /dev/null +++ b/realtime_demo_bios/k2g/build/src/sysbios/subdir_vars.mk @@ -0,0 +1,16 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +OBJ_SRCS += \ +../src/sysbios/BIOS.obj \ +../src/sysbios/c62_TaskSupport_asm.obj \ +../src/sysbios/c64p_Exception_asm.obj \ +../src/sysbios/c64p_Hwi_asm.obj \ +../src/sysbios/c64p_Hwi_asm_switch.obj \ +../src/sysbios/c64p_Hwi_disp_always.obj \ +../src/sysbios/ti_tls_get_tp.obj \ +../src/sysbios/timer64_Timer_asm.obj + + diff --git a/realtime_demo_bios/k2g/build/subdir_rules.mk b/realtime_demo_bios/k2g/build/subdir_rules.mk new file mode 100644 index 0000000..48eb15f --- /dev/null +++ b/realtime_demo_bios/k2g/build/subdir_rules.mk @@ -0,0 +1,93 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Each subdirectory must supply rules for building sources it contributes +configPkg/linker.cmd: ../audioAnalogLoopbackTest.cfg + @echo 'Building file: $<' + @echo 'Invoking: XDCtools' + "${XDC_INSTALL_PATH}/xs" --xdcpath="${EDMA3LLD_BIOS6_INSTALLDIR}/packages;C:/ti/ccsv6/ccs_base;${BIOS_INSTALL_PATH}/packages;${UIA_INSTALL_PATH}/packages;${PDK_INSTALL_PATH};${AER_INSTALL_PATH}/packages;${VOLIB_INSTALL_PATH}/packages;${XDAIS_INSTALL_PATH}/packages;${XDAIS_INSTALL_PATH}/examples;../../../realtime_demo_bios/platforms/packages;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C66 -p evmTCI66AK2G02Custom -r debug -c "${C6X_GEN_INSTALL_PATH}" "$<" + @echo 'Finished building: $<' + @echo ' ' + +configPkg/compiler.opt: | configPkg/linker.cmd +configPkg/: | configPkg/linker.cmd + +fil.obj: ../../../common/components/fil.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="fil.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +mhm.obj: ../../../common/components/mhm/src/mhm.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="mhm.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +mss.obj: ../../../common/components/mss/src/mss.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="mss.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +mssproc.obj: ../../../common/components/mss/src/mssproc.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="mssproc.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +sys.obj: ../../../common/components/sys.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="sys.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +sysasnr.obj: ../../../common/components/sysasnr.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="sysasnr.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +sysbf.obj: ../../../common/components/sysbf.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="sysbf.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +sysbfflt.obj: ../../../common/components/sysbfflt.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="sysbfflt.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +syseram.obj: ../../../common/components/syseram.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="syseram.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +sysiram.obj: ../../../common/components/sysiram.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="sysiram.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + +sysmss.obj: ../../../common/components/sysmss.c $(GEN_OPTS) $(GEN_HDRS) + @echo 'Building file: $<' + @echo 'Invoking: C6000 Compiler' + "${C6X_GEN_INSTALL_PATH}/bin/cl6x" -mv6600 --abi=eabi --opt_for_speed=5 --include_path="${C6X_GEN_INSTALL_PATH}/include" --include_path="${PDK_INSTALL_PATH}/ti/board/diag/nand/src" --include_path="../../../realtime_demo_bios/k2g/include" --include_path="../../../common/components" --include_path="${PDK_INSTALL_PATH}/ti/drv/mcasp" --include_path="${PDK_INSTALL_PATH}/ti/board" --include_path="${PDK_INSTALL_PATH}/ti/board/src/evmK2G/include" --include_path="${PDK_INSTALL_PATH}/ti/addon/audk2g/include" --include_path="${PDK_INSTALL_PATH}" --include_path="${PDK_INSTALL_PATH}/ti/csl" -g --define=DEVICE_K2G --define=SOC_K2G --define=evmK2G --define=PLATFORM_INIT_IN --define=BUILD_DSP --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="sysmss.d" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/realtime_demo_bios/k2g/build/subdir_vars.mk b/realtime_demo_bios/k2g/build/subdir_vars.mk new file mode 100644 index 0000000..6fa9ea3 --- /dev/null +++ b/realtime_demo_bios/k2g/build/subdir_vars.mk @@ -0,0 +1,110 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +CMD_SRCS += \ +../bflinker.cmd + +CFG_SRCS += \ +../audioAnalogLoopbackTest.cfg + +C_SRCS += \ +../../../common/components/fil.c \ +../../../common/components/mhm/src/mhm.c \ +../../../common/components/mss/src/mss.c \ +../../../common/components/mss/src/mssproc.c \ +../../../common/components/sys.c \ +../../../common/components/sysasnr.c \ +../../../common/components/sysbf.c \ +../../../common/components/sysbfflt.c \ +../../../common/components/syseram.c \ +../../../common/components/sysiram.c \ +../../../common/components/sysmss.c + +OBJS += \ +./fil.obj \ +./mhm.obj \ +./mss.obj \ +./mssproc.obj \ +./sys.obj \ +./sysasnr.obj \ +./sysbf.obj \ +./sysbfflt.obj \ +./syseram.obj \ +./sysiram.obj \ +./sysmss.obj + +C_DEPS += \ +./fil.d \ +./mhm.d \ +./mss.d \ +./mssproc.d \ +./sys.d \ +./sysasnr.d \ +./sysbf.d \ +./sysbfflt.d \ +./syseram.d \ +./sysiram.d \ +./sysmss.d + +GEN_MISC_DIRS += \ +./configPkg/ + +GEN_CMDS += \ +./configPkg/linker.cmd + +GEN_OPTS += \ +./configPkg/compiler.opt + +GEN_FILES += \ +./configPkg/linker.cmd \ +./configPkg/compiler.opt + +GEN_FILES__QUOTED += \ +"configPkg\linker.cmd" \ +"configPkg\compiler.opt" + +GEN_MISC_DIRS__QUOTED += \ +"configPkg\" + +C_DEPS__QUOTED += \ +"fil.d" \ +"mhm.d" \ +"mss.d" \ +"mssproc.d" \ +"sys.d" \ +"sysasnr.d" \ +"sysbf.d" \ +"sysbfflt.d" \ +"syseram.d" \ +"sysiram.d" \ +"sysmss.d" + +OBJS__QUOTED += \ +"fil.obj" \ +"mhm.obj" \ +"mss.obj" \ +"mssproc.obj" \ +"sys.obj" \ +"sysasnr.obj" \ +"sysbf.obj" \ +"sysbfflt.obj" \ +"syseram.obj" \ +"sysiram.obj" \ +"sysmss.obj" + +C_SRCS__QUOTED += \ +"../../../common/components/fil.c" \ +"../../../common/components/mhm/src/mhm.c" \ +"../../../common/components/mss/src/mss.c" \ +"../../../common/components/mss/src/mssproc.c" \ +"../../../common/components/sys.c" \ +"../../../common/components/sysasnr.c" \ +"../../../common/components/sysbf.c" \ +"../../../common/components/sysbfflt.c" \ +"../../../common/components/syseram.c" \ +"../../../common/components/sysiram.c" \ +"../../../common/components/sysmss.c" + + diff --git a/realtime_demo_bios/k2g/include/analog_test.h b/realtime_demo_bios/k2g/include/analog_test.h new file mode 100644 index 0000000..7bc559a --- /dev/null +++ b/realtime_demo_bios/k2g/include/analog_test.h @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file analog_test.h + * + * \brief Common header file for audio analog test + * + */ + +#ifndef _ANALOG_TEST_H_ +#define _ANALOG_TEST_H_ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include "audk2g_audio.h" +#include "audio_dc_cfg.h" +#include "mcasp_cfg.h" +#include "edma_cfg.h" + +/** + * \brief Configures audio DAC module + * + * \return none + */ +void configAudioDAC(void); + +/** + * \brief Function to exit the test + * + * \return None + */ +void testRet(uint32_t status); + +/** + * \brief Function to exit the test + * + * This function should be called by standalone diagnostic + * tests at the end of the test to return to diagnostic test framework + * + * \param result [IN] Test result + * 0 - Test Pass + * 1 - Test Fail + * + */ +void testExit(int result); + +#endif /* _ANALOG_TEST_H_ */ diff --git a/realtime_demo_bios/k2g/include/audio_dc_cfg.h b/realtime_demo_bios/k2g/include/audio_dc_cfg.h new file mode 100644 index 0000000..36c9132 --- /dev/null +++ b/realtime_demo_bios/k2g/include/audio_dc_cfg.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file audio_dc_cfg.h + * + * \brief Audio daughter card configuration header file + * + */ + +#ifndef _AUDIO_DC_CFG_H_ +#define _AUDIO_DC_CFG_H_ + +#include "analog_test.h" + +typedef struct _AdcConfig +{ + uint8_t gain; + Audk2gAdcLeftInputMux adc1LMux; + Audk2gAdcLeftInputMux adc2LMux; + Audk2gAdcRightInputMux adc1RMux; + Audk2gAdcRightInputMux adc2RMux; + Audk2gAdcRxWordLen wlen; + Audk2gAdcDataFormat format; + uint8_t intEnable; +} Audk2gAdcConfig; + +typedef struct _DacConfig +{ + Audk2gDacAmuteCtrl amuteCtrl; + uint8_t amuteEnable; + Audk2gDacSamplingMode samplingMode; + Audk2gDacDataFormat dataFormat; + uint8_t softMuteEnable; + Audk2gDacAttnMode attnMode; + Audk2gDacDeempCtrl deempCtrl; + uint8_t volume; +} Audk2gDacConfig; + +/** + * \brief Initializes ADC module + * + * This function initializes and configures the ADC modules + * on audio daughter card + * + * \param devId [IN] ADC Device Id + * \param config [IN] ADC configuration parameters + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS audioAdcConfig(Audk2gAdcDevId devId, Audk2gAdcConfig *config); + +/** + * \brief Initializes DAC module + * + * This function initializes and configures the DAC modules + * on audio daughter card + * + * \param devId [IN] DAC Device Id + * \param config [IN] DAC configuration parameters + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS audioDacConfig(Audk2gDacDevId devId, Audk2gDacConfig *config); + +#endif /* _AUDIO_DC_CFG_H_ */ + +/* Nothing past this point */ diff --git a/realtime_demo_bios/k2g/include/edma_cfg.h b/realtime_demo_bios/k2g/include/edma_cfg.h new file mode 100644 index 0000000..9ddb70c --- /dev/null +++ b/realtime_demo_bios/k2g/include/edma_cfg.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file edma_cfg.h + * + * \brief eDMA configuration header file + * + */ + +#ifndef _EDMA_CFG_H_ +#define _EDMA_CFG_H_ + +#include "analog_test.h" + +/** + * \brief Configures eDMA module + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS eDmaConfig(void); + +#endif /* _EDMA_CFG_H_ */ + +/* Nothing past this point */ diff --git a/realtime_demo_bios/k2g/include/mcasp_cfg.h b/realtime_demo_bios/k2g/include/mcasp_cfg.h new file mode 100644 index 0000000..e6e221a --- /dev/null +++ b/realtime_demo_bios/k2g/include/mcasp_cfg.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file mcasp_config.h + * + * \brief McASP configuration header file + * + */ + +#ifndef _MCASP_CONFIG_H_ +#define _MCASP_CONFIG_H_ + +#include "analog_test.h" + +/* + * Buffers placed in external memory are aligned on a 128 bytes boundary. + * In addition, the buffer should be of a size multiple of 128 bytes for + * the cache work optimally on the C6x. + */ +#define BUFLEN (960) /* Number of samples in the frame */ +#define BUFALIGN (128) /* Alignment of buffer for use of L2 cache */ + +/** Number of serializers configured for Rx */ +#define RX_NUM_SERIALIZER (4u) +/** Number of serializers configured for Tx */ +#define TX_NUM_SERIALIZER (1u) + +/** Size of the McASP serializer buffers */ +#define BUFSIZE (BUFLEN * sizeof(Ptr)) + +/** Num Bufs to be issued and reclaimed */ +#define NUM_BUFS 2 + +/** + * \brief Configures McASP module and creates the channel + * for audio Tx and Rx + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS mcaspAudioConfig(void); + +#endif /* _MCASP_CONFIG_H_ */ diff --git a/realtime_demo_bios/k2g/src/.exclude b/realtime_demo_bios/k2g/src/.exclude new file mode 100644 index 0000000..8c86331 --- /dev/null +++ b/realtime_demo_bios/k2g/src/.exclude @@ -0,0 +1 @@ +This file exists to prevent Eclipse/CDT from adding the C sources contained in this directory (or below) to any enclosing project. diff --git a/realtime_demo_bios/k2g/src/audio_dc_cfg.c b/realtime_demo_bios/k2g/src/audio_dc_cfg.c new file mode 100644 index 0000000..eff6a45 --- /dev/null +++ b/realtime_demo_bios/k2g/src/audio_dc_cfg.c @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file audio_dc_config.c + * + * \brief Configures Audio daughter card HW modules + * + */ + +#include "audio_dc_cfg.h" + +/** + * \brief Initializes ADC module + * + * This function initializes and configures the ADC modules + * on audio daughter card + * + * \param devId [IN] ADC Device Id + * \param config [IN] ADC configuration parameters + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS audioAdcConfig(Audk2gAdcDevId devId, Audk2gAdcConfig *config) +{ + Audk2g_STATUS status; + + if(config == NULL) + { + IFPRINT(audk2g_write("Invalid Inputs\n")); + return (Audk2g_EINVALID); + } + + /* Initialize all the HW instances of ADC */ + //status = platformAudioAdcInit(devId); + status = (Audk2g_STATUS)audk2g_AudioAdcInit((Audk2gAdcDevId)devId); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformaudioAdcConfig Failed\n")); + return (status); + } + + /* Set ADC channel gain */ + //status = platformAudioAdcSetGain(devId, ADC_CH_ALL, config->gain); + status = (Audk2g_STATUS)audk2g_AudioAdcSetGain((Audk2gAdcDevId)devId, (Audk2gAdcChanId)AUDK2G_ADC_CH_ALL, config->gain); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcSetGain Failed\n")); + return (status); + } + + /* Configure Left input mux for ADC1L */ + //status = platformAudioAdcSetLeftInputMux(devId, ADC_CH1_LEFT, config->adc1LMux); + status = (Audk2g_STATUS)audk2g_AudioAdcSetLeftInputMux((Audk2gAdcDevId)devId, (Audk2gAdcChanId)AUDK2G_ADC_CH1_LEFT, (Audk2gAdcLeftInputMux)(config->adc1LMux)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n")); + return (status); + } + + /* Configure Left input mux for ADC2L*/ + //status = platformAudioAdcSetLeftInputMux(devId, ADC_CH2_LEFT, config->adc2LMux); + status = (Audk2g_STATUS)audk2g_AudioAdcSetLeftInputMux((Audk2gAdcDevId)devId, (Audk2gAdcChanId)AUDK2G_ADC_CH2_LEFT, (Audk2gAdcLeftInputMux)(config->adc2LMux)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n")); + return (status); + } + + /* Configure Right input mux for ADC1R */ + //status = platformAudioAdcSetRightInputMux(devId, ADC_CH1_RIGHT, config->adc1RMux); + status = (Audk2g_STATUS)audk2g_AudioAdcSetRightInputMux((Audk2gAdcDevId)devId, (Audk2gAdcChanId)AUDK2G_ADC_CH1_RIGHT, (Audk2gAdcRightInputMux)(config->adc1RMux)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n")); + return (status); + } + + /* Configure Right input mux for ADC2R */ + //status = platformAudioAdcSetRightInputMux(devId, ADC_CH2_RIGHT, config->adc2RMux); + status = (Audk2g_STATUS)audk2g_AudioAdcSetRightInputMux((Audk2gAdcDevId)devId, (Audk2gAdcChanId)AUDK2G_ADC_CH2_RIGHT, (Audk2gAdcRightInputMux)(config->adc2RMux)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n")); + return (status); + } + + /* Configure audio data format */ + //status = platformAudioAdcDataConfig(devId, config->wlen, config->format); + status = (Audk2g_STATUS)audk2g_AudioAdcDataConfig((Audk2gAdcDevId)devId, (Audk2gAdcRxWordLen)(config->wlen), (Audk2gAdcDataFormat)(config->format)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcDataConfig Failed\n")); + return (status); + } + + /* Configure all the interrupts */ + //status = platformAudioAdcConfigIntr(devId, ADC_INTR_ALL, config->intEnable); + status = (Audk2g_STATUS)audk2g_AudioAdcConfigIntr((Audk2gAdcDevId)devId, (Audk2gAdcIntr)AUDK2G_ADC_INTR_ALL, config->intEnable); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioAdcConfig : platformAudioAdcConfigIntr Failed\n")); + return (status); + } + + return (status); +} + +/** + * \brief Initializes DAC module + * + * This function initializes and configures the DAC modules + * on audio daughter card + * + * \param devId [IN] DAC Device Id + * \param config [IN] DAC configuration parameters + * + * \return Audk2g_EOK on Success or error code + */ +#if AUDK2G_AUDIO_DAC +Audk2g_STATUS audioDacConfig(Audk2gDacDevId devId, Audk2gDacConfig *config) +{ + Audk2g_STATUS status; + + if(config == NULL) + { + IFPRINT(audk2g_write("Invalid Inputs\n")); + return (Audk2g_EINVALID); + } + + /* Initialize Audio DAC */ + //status = platformAudioDacInit(devId); + status = (Audk2g_STATUS)audk2g_AudioDacInit((Audk2gDacDevId)devId); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformaudioDacConfig Failed\n")); + return (status); + } + +#if 0 + /* Configure AMUTE control event */ + //status = platformAudioDacAmuteCtrl(devId, config->amuteCtrl, config->amuteEnable); + status = (Audk2g_STATUS)audk2g_AudioDacAmuteCtrl((Audk2gDacDevId)devId, (Audk2gDacAmuteCtrl)(config->amuteCtrl), config->amuteEnable); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacAmuteCtrl Failed\n")); + return (status); + } + + /* Set sampling mode */ + //status = platformAudioDacSetSamplingMode(devId, config->samplingMode); + status = (Audk2g_STATUS)audk2g_AudioDacSetSamplingMode((Audk2gDacDevId)devId, (Audk2gDacSamplingMode)(config->samplingMode)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacSetSamplingMode Failed\n")); + return (status); + } + + /* Set data format */ + //status = platformAudioDacSetDataFormat(devId, config->dataFormat); + status = (Audk2g_STATUS)audk2g_AudioDacSetDataFormat((Audk2gDacDevId)devId, (Audk2gDacDataFormat)(config->dataFormat)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacSetDataFormat Failed\n")); + return (status); + } + + /* Enable soft mute control */ + //status = platformAudioDacSoftMuteCtrl(devId, DAC_CHAN_ALL, config->softMuteEnable); + status = (Audk2g_STATUS)audk2g_AudioDacSoftMuteCtrl((Audk2gDacDevId)devId, (Audk2gDacChanId)AUDK2G_DAC_CHAN_ALL, config->softMuteEnable); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacSoftMuteCtrl Failed\n")); + return (status); + } + + /* Set attenuation mode */ + //status = platformAudioDacSetAttnMode(devId, config->attnMode); + status = (Audk2g_STATUS)audk2g_AudioDacSetAttnMode((Audk2gDacDevId)devId, (Audk2gDacAttnMode)(config->attnMode)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacSetAttnMode Failed\n")); + return (status); + } + + /* Set De-emphasis control */ + //status = platformAudioDacDeempCtrl(devId, config->deempCtrl); + status = (Audk2g_STATUS)audk2g_AudioDacDeempCtrl((Audk2gDacDevId)devId, (Audk2gDacDeempCtrl)(config->deempCtrl)); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacDeempCtrl Failed\n")); + return (status); + } + + /* Set DAC volume */ + //status = platformAudioDacSetVolume(devId, DAC_CHAN_ALL, config->volume); + status = (Audk2g_STATUS)audk2g_AudioDacSetVolume((Audk2gDacDevId)devId, (Audk2gDacChanId)AUDK2G_DAC_CHAN_ALL, config->volume); + if(status != Audk2g_EOK) + { + IFPRINT(audk2g_write("audioDacConfig : platformAudioDacSetVolume Failed\n")); + return (status); + } +#endif + return (status); +} +#endif +/* Nothing past this point */ diff --git a/realtime_demo_bios/k2g/src/edma_cfg.c b/realtime_demo_bios/k2g/src/edma_cfg.c new file mode 100644 index 0000000..f242c75 --- /dev/null +++ b/realtime_demo_bios/k2g/src/edma_cfg.c @@ -0,0 +1,247 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file edma_config.c + * + * \brief Initializes eDMA module + * + */ + +#include "edma_cfg.h" + +#include +#include +#include + +/** @brief EDMA3 Driver Instance specific Semaphore handle */ +extern EDMA3_OS_Sem_Handle semHandle[]; + +/** To Register the ISRs with the underlying OS, if required. */ +extern void registerEdma3Interrupts (unsigned int edma3Id); +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +extern void unregisterEdma3Interrupts (unsigned int edma3Id); + +/* To find out the DSP# */ +extern unsigned short determineProcId(); + +/** + * To check whether the global EDMA3 configuration is required or not. + * It should be done ONCE by any of the masters present in the system. + * This function checks whether the global configuration is required by the + * current master or not. In case of many masters, it should be done only + * by one of the masters. Hence this function will return TRUE only once + * and FALSE for all other masters. + */ +extern unsigned short isGblConfigRequired(unsigned int dspNum); + +/** + * DSP instance number on which the executable is running. Its value is + * determined by reading the processor specific register DNUM. + */ +unsigned int dsp_num; + +/** + * Shadow Region on which the executable is running. Its value is populated + * with the DSP Instance Number here in this case. + */ +unsigned int region_id; + +/* Number of EDMA3 controllers present in the system */ +extern const unsigned int numEdma3Instances; + +/* External Global Configuration Structure */ +extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[]; + +/* External Instance Specific Configuration Structure */ +extern EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[][EDMA3_MAX_REGIONS]; + +EDMA3_DRV_Handle hEdma0; +EDMA3_DRV_Handle hEdma1; + +/** + * \brief Configures eDMA module + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS eDmaConfig(void) +{ + EDMA3_DRV_Result edmaResult = 0; + uint32_t temp; + + /* Enabling the dmaChannel MCASP2 Events to EDMACC1 (50 & 51) */ + temp=sampleEdma3GblCfgParams[1].dmaChannelHwEvtMap[1]; + sampleEdma3GblCfgParams[1].dmaChannelHwEvtMap[1]= temp | 0x000C0000; + + /* Initialize eDMA 0 */ + hEdma0 = edma3init(CSL_EDMACC_0, &edmaResult); + if((hEdma0 == NULL) || (edmaResult != 0)) + { + IFPRINT(audk2g_write("eDMA instance 0 Initialization Failed\n")); + return (Audk2g_EFAIL); + } + + /* Initialize eDMA 1 */ + hEdma1 = edma3init(CSL_EDMACC_1, &edmaResult); + if((hEdma1 == NULL) || (edmaResult != 0)) + { + IFPRINT(audk2g_write("eDMA instance 1 Initialization Failed\n")); + return (Audk2g_EFAIL); + } + + return (Audk2g_EOK); +} + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver and registers the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode) +{ + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + Semaphore_Params semParams; + EDMA3_DRV_GblConfigParams *globalConfig = NULL; + EDMA3_DRV_InitConfig initCfg; + EDMA3_RM_MiscParam miscParam; + EDMA3_DRV_Handle hEdma = NULL; + + if ((edma3Id >= numEdma3Instances) || (errorCode == NULL)) + return hEdma; + + /* DSP instance number */ + dsp_num = determineProcId(); + + globalConfig = &sampleEdma3GblCfgParams[edma3Id]; + + /* Configure it as master, if required */ + miscParam.isSlave = isGblConfigRequired(dsp_num); + edma3Result = EDMA3_DRV_create (edma3Id, globalConfig , + (void *)&miscParam); + + if (edma3Result == EDMA3_DRV_SOK) + { + /** + * Driver Object created successfully. + * Create a semaphore now for driver instance. + */ + Semaphore_Params_init(&semParams); + + initCfg.drvSemHandle = NULL; + edma3Result = edma3OsSemCreate(1, &semParams, &initCfg.drvSemHandle); + } + + if (edma3Result == EDMA3_DRV_SOK) + { + /* Save the semaphore handle for future use */ + semHandle[edma3Id] = initCfg.drvSemHandle; + + /* Driver instance specific config NULL */ + initCfg.drvInstInitConfig = NULL; + +#ifndef EDMA3_DRV_USE_DEF_RM_CFG + /* Hook for running examples with default RM config */ + /* configuration structure for the Driver */ + initCfg.drvInstInitConfig = &sampleInstInitConfig[edma3Id][dsp_num]; +#endif + + initCfg.isMaster = TRUE; + /* Choose shadow region according to the DSP# */ + initCfg.regionId = (EDMA3_RM_RegionId)dsp_num; + /*Saving the regionId for using it in the sample_cs.c file */ + region_id = (EDMA3_RM_RegionId)dsp_num; + /* Driver instance specific config NULL */ + + initCfg.gblerrCb = NULL; + initCfg.gblerrData = NULL; + + /* Open the Driver Instance */ + hEdma = EDMA3_DRV_open (edma3Id, (void *) &initCfg, &edma3Result); + } + + if(hEdma && (edma3Result == EDMA3_DRV_SOK)) + { + /** + * Register Interrupt Handlers for various interrupts + * like transfer completion interrupt, CC error + * interrupt, TC error interrupts etc, if required. + */ + registerEdma3Interrupts(edma3Id); + } + + *errorCode = edma3Result; + + return (hEdma); +} + + +/** + * \brief EDMA3 De-initialization + * + * This function removes the EDMA3 Driver instance and unregisters the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma) +{ + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + + /* Unregister Interrupt Handlers first */ + unregisterEdma3Interrupts(edma3Id); + + /* Delete the semaphore */ + edma3Result = edma3OsSemDelete(semHandle[edma3Id]); + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Make the semaphore handle as NULL. */ + semHandle[edma3Id] = NULL; + + /* Now, close the EDMA3 Driver Instance */ + edma3Result = EDMA3_DRV_close (hEdma, NULL); + } + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Now, delete the EDMA3 Driver Object */ + edma3Result = EDMA3_DRV_delete (edma3Id, NULL); + } + + return (edma3Result); +} + +/* Nothing past this point */ diff --git a/realtime_demo_bios/k2g/src/main.c b/realtime_demo_bios/k2g/src/main.c new file mode 100644 index 0000000..1369f0c --- /dev/null +++ b/realtime_demo_bios/k2g/src/main.c @@ -0,0 +1,357 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file main.c + * + * \brief Audio DC analog test main file + * + * Audio analog test verifies the functionality of ADC and DAC available on + * audio daughter card. During this test, data received from ADC will be + * sent to DAC. There are two instances of DAC and ADC available on + * audio daughter card. One ADC supports 4 analog channels and one DAC + * supports 8 analog channels. Data received from one DAC shall be sent + * to both the ADCs making 8 channel Rx/Tx. Each DAC should be validated + * separately. + * + */ + +#include "analog_test.h" +#include "board.h" + +/* System header files */ +#include + +#include +#include + +/*---------------------------------------- + * BIOS header files + *----------------------------------------*/ + +#include /* mandatory - if you call APIs like BIOS_start() */ + +/* Portable data types */ +#include +#include + +#include "../../../common/components/fil.h" +#include "../../../common/components/sys.h" + +/* Global System Configuration Structure */ +sysConfig_t sysConfig = { + SYS_MICS_MAX, /* #microphones */ + SYS_VMICS_MAX, /* #virtual microphones */ + FALSE, /* Do not use file I/O to load files (must use GEL to load into memory) */ + TRUE /* Use default angles for microphone configurations */ +}; + +/* Global FILE I/O Configuration Structure (must be configured even when file I/O not used */ +filConfig_t filConfig = { + FIL_LENGTH_MAX, /* number of samples to load from a file */ + SYS_MICS_MAX, /* number of files to use */ + TRUE, /* big endian */ + FALSE, /* do not wrap around */ + 40*SYS_FS_HZ /* Process 40s of the signal (current mic input file length */ +}; + +/* Acoustic environment */ +/* Room Size (X,Y,Z) in meters */ +/* 5.2000 4.3000 2.7000 */ + +/* Table size (X,Y,Z) in meters */ +/* 3.0000 2.4000 0.7600 */ + +/* "Echo" generating speaker position (X,Y,Z) in meters */ +/* 0 2.1500 1.2172 180 -90 VM-9 */ + +/* People positions (X,Y,Z) in meters and angles relative to the table and array */ +/* 1.8200 0.6452 1.2172 position#1 (person#1) -123.6056 -146.3944 VM-7 + 2.8200 0.6452 1.2172 -not used- -90.0000 180.0000 VM-6 + 3.8200 0.6452 1.2172 (person#2) -56.3944 146.3944 VM-5 + 1.8200 3.6548 1.2172 (person#3) 123.6056 -33.6056 VM-11 + 2.8200 3.6548 1.2172 -not used- 90.0000 0.0000 VM-0 + 3.8200 3.6548 1.2172 position#6 (person#4) 56.3944 33.6056 VM-1 +*/ + +/* Microphone array mic positions (X,Y,Z) in meters */ +/* 2.7922 2.1500 0.7600 mic#1 ("left" most) 180 + 2.8004 2.1304 0.7600 -135 + 2.8200 2.1222 0.7600 ("lower" most) -90 + 2.8396 2.1304 0.7600 -45 + 2.8478 2.1500 0.7600 ("right" most) 0 + 2.8396 2.1696 0.7600 45 + 2.8200 2.1778 0.7600 ("upper" most) 90 + 2.8004 2.1696 0.7600 mic#8 135 +*/ +/* Array Center = (2.82, 2.15, 0.76) (same as table center) */ + +/* Noise source position (X,Y,Z) in meters */ +/* 2.6000 2.1500 2.3000 */ + +/* Initialize FILE I/O, system context */ +static void system_init(void) +{ + int err; + + err = sysCreate(&sysConfig); /* Create system context */ + SYS_CHECK_ERROR(err); + + err = sysPrintConfig(SYSM_SCOPE_STATIC|SYSM_SCOPE_DYNAMIC); + SYS_CHECK_ERROR(err); + +} /* system_init */ + +/* ADC default configuration parameters */ +Audk2gAdcConfig adcCfg = +{ + 80, /* ADC gain */ + AUDK2G_ADC_INL_SE_VINL1, /* Left input mux for ADC1L */ + AUDK2G_ADC_INL_SE_VINL2, /* Left input mux for ADC2L */ + AUDK2G_ADC_INR_SE_VINR1, /* Right input mux for ADC1R */ + AUDK2G_ADC_INR_SE_VINR2, /* Right input mux for ADC2R */ + AUDK2G_ADC_RX_WLEN_24BIT, /* ADC word length */ + AUDK2G_ADC_DATA_FORMAT_I2S, /* ADC data format */ + 0 +}; + +/* DAC default configuration parameters */ +Audk2gDacConfig dacCfg = +{ + AUDK2G_DAC_AMUTE_CTRL_SCKI_LOST, /* Amute event */ + 0, /* Amute control */ + AUDK2G_DAC_SAMPLING_MODE_AUTO, /* Sampling mode */ + AUDK2G_DAC_DATA_FORMAT_I2S, /* Data format */ + 0, /* Soft mute control */ + AUDK2G_DAC_ATTENUATION_WIDE_RANGE, /* Attenuation mode */ + AUDK2G_DAC_DEEMP_44KHZ, /* De-emph control */ + 80 /* Volume */ +}; + +typedef enum { + PADCONFIG_MUX_MODE_PRIMARY = 0, /**< Primary pin mux mode */ + PADCONFIG_MUX_MODE_SECONDARY, /**< Secondary pin mux mode */ + PADCONFIG_MUX_MODE_TERTIARY, /**< Tertiary pin mux mode */ + PADCONFIG_MUX_MODE_QUATERNARY, /**< Quaternary pin mux mode */ + PADCONFIG_MUX_MODE_QUINARY, /**< Quinary pin mux mode */ + PADCONFIG_MUX_MODE_SENARY /**< Senary pin mux mode */ + +} PadCfgMuxMode; + +/* + * Function to enable the pinmux for the mcasp and i2c devices in the soc. + * + */ +void pinMuxSetMode_local(uint32_t padCfgId, PadCfgMuxMode muxMode) +{ + volatile uint32_t *padCfgBase; + + padCfgBase = &hBootCfg->PADCONFIG0; + CSL_FINS(*(padCfgBase + padCfgId), BOOTCFG_PADCONFIG0_MUXMODE, muxMode); +} + +char write_buffer[MAX_WRITE_LEN]; +void audk2g_write(const char *fmt, ... ) +{ + va_list arg_ptr; + uint32_t length; + + /* Initial platform_write to temporary buffer.. at least try some sort of sanity check so we don't write all over + * memory if the print is too large. + */ + if (strlen(fmt) > MAX_WRITE_LEN) {return;} + + va_start( arg_ptr, fmt ); + length = vsprintf( (char *)write_buffer, fmt, arg_ptr ); + va_end( arg_ptr ); + + printf( "%s", write_buffer ); + //fflush(stdout); + + return; +} + +void McaspDevice_init(void); + +/** + * \brief Initializes platform specific modules + * + * This function initializes the modules like PLL, DDR, I2C etc + * which are required for audio processing. Need to call this function + * before doing any HW related operations. + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS initPlatform(void) +{ + Board_STATUS status = BOARD_SOK; + Board_initCfg arg = BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_MODULE_CLOCK; + status = Board_init(arg); + +#if 1 + /* Configure McASP AUXCLK source as AUDIO_OSCCLK */ + hBootCfg->SERIALPORT_CLKCTL = 0; + /* Enable audio oscillator */ + hBootCfg->OSC_CTL = 0x200; //SW2:SW1 = 01 (15 - 30 MHz) + + { + int padCfg; + for (padCfg = 139; padCfg <= 191; padCfg++) + { + pinMuxSetMode_local(padCfg, PADCONFIG_MUX_MODE_QUINARY); + } + } +#endif + + // I2C init + /* Initialize all the I2C ports - Needed for different I2C devices on the board */ + evmI2CInit(I2C_PORT_0); + evmI2CInit(I2C_PORT_1); + evmI2CInit(I2C_PORT_2); + + ///pinMuxSetMode(125, PADCONFIG_MUX_MODE_QUATERNARY); + ///gpioSetDirection(GPIO_PORT_1, 54, GPIO_OUT); + ///gpioSetOutput(GPIO_PORT_1, 54); + + /* Configure platform log messages to standard printf */ + ///Audk2g_write_configure(Audk2g_WRITE_UART); + + /* Initialize UART */ + ///Audk2g_uart_init(); + ///Audk2g_uart_set_baudrate(115200); + + return(status); +} + +/** + * \brief Audio analog test main function + * + * \return none + */ +void main (void) +{ + Audk2g_STATUS status; + + status = initPlatform(); + if(status != Audk2g_EOK) + { + audk2g_write("Platform Init Failed!\n"); + testRet(1); + } + + audk2g_delay(10000); + + + system_init(); /* initialize system context, etc. */ + + sysBfCreate(); /* Create beamformers */ + sysAsnrCreate(); /* Create ASNR's */ + sysMssCreate(); /* Create MSS */ + ///sysVauCreate(); /* Create VAU */ + + + audk2g_write("\n******************************************\n"); + audk2g_write( " CMB Analog Loopback Test \n"); + audk2g_write( "******************************************\n"); + + audk2g_write("\nTest Verifies ADC and DAC Channels\n"); + audk2g_write("Test Runs in Audio Loopback Mode\n"); + audk2g_write("Confirm that CMB Mic 1 and Mic 8 Input are Played at On-Board Line-Out Left and Right Channels\n"); + + /* Initialize McASP HW details */ + McaspDevice_init(); + + /* Configure eDMA module */ + status = eDmaConfig(); + if(status != Audk2g_EOK) + { + audk2g_write("eDMA Configuration Failed!\n"); + testRet(1); + } + + /* Initialize common audio configurations */ + status = (Audk2g_STATUS)audk2g_AudioInit(); + if(status != Audk2g_EOK) + { + audk2g_write("Audio Init Failed!\n"); + testRet(1); + } + + /* Initialize Audio ADC module */ + status = audioAdcConfig(AUDK2G_ADC_DEVICE_0, &adcCfg); + if(status != Audk2g_EOK) + { + audk2g_write("Audio ADC0 Configuration Failed!\n"); + testRet(1); + } + + status = audioAdcConfig(AUDK2G_ADC_DEVICE_1, &adcCfg); + if(status != Audk2g_EOK) + { + audk2g_write("Audio ADC1 Configuration Failed!\n"); + testRet(1); + } + + /* Initialize McASP module */ + status = mcaspAudioConfig(); + if(status != Audk2g_EOK) + { + audk2g_write("McASP Configuration Failed!\n"); + testRet(1); + } + + /* Start BIOS execution */ + BIOS_start(); +} + +/** + * \brief Configures audio DAC module + * + * \return none + */ +#if AUDK2G_AUDIO_DAC +void configAudioDAC(void) +{ + Audk2g_STATUS status; + + /* Initialize Audio DAC0 module */ + status = audioDacConfig(AUDK2G_DAC_DEVICE_0, &dacCfg); + if(status != Audk2g_EOK) + { + audk2g_write("Audio DAC0 Configuration Failed!\n"); + testRet(1); + } +} +#endif + +/* Nothing past this point */ diff --git a/realtime_demo_bios/k2g/src/makefile.libs b/realtime_demo_bios/k2g/src/makefile.libs new file mode 100644 index 0000000..db1526e --- /dev/null +++ b/realtime_demo_bios/k2g/src/makefile.libs @@ -0,0 +1,62 @@ +# +# This file was generated based on the configuration script: +# C:\ti\processor_sdk_rtos_k2g_3_02_00_05\demos\audio-preprocessing\realtime_demo_bios\k2g\audioAnalogLoopbackTest.cfg +# +# This makefile may be included in other makefiles that need to build +# the libraries containing the compiled source files generated as +# part of the configuration step. + +# +# ======== GEN_SRC_DIR ========= +# The path to the sources generated during configuration +# +# This path must be either absolute or relative to the build directory. +# +# The absolute path to the generated source directory (at the time the +# sources were generated) is: +# C:\ti\processor_sdk_rtos_k2g_3_02_00_05\demos\audio-preprocessing\realtime_demo_bios\k2g\src +# +GEN_SRC_DIR ?= ../src + +ifeq (,$(wildcard $(GEN_SRC_DIR))) +$(error "ERROR: GEN_SRC_DIR must be set to the directory containing the generated sources") +endif + +# +# ======== .force ======== +# The .force goal is used to force the build of any goal that names it as +# a prerequisite +# +.PHONY: .force + +# +# ======== library macros ======== +# +sysbios_SRC = $(GEN_SRC_DIR)/sysbios +sysbios_LIB = $(GEN_SRC_DIR)/sysbios/sysbios.ae66 + +# +# ======== dependencies ======== +# +all: $(sysbios_LIB) +clean: .sysbios_clean + + +# ======== convenient build goals ======== +.PHONY: sysbios +sysbios: $(GEN_SRC_DIR)/sysbios/sysbios.ae66 + +# CDT managed make executables depend on $(OBJS) +OBJS += $(sysbios_LIB) + +# +# ======== rules ======== +# +$(sysbios_LIB): .force + @echo making $@ ... + @$(MAKE) -C $(sysbios_SRC) + +.sysbios_clean: + @echo cleaning $(sysbios_SRC) ... + -@$(MAKE) --no-print-directory -C $(sysbios_SRC) clean + diff --git a/realtime_demo_bios/k2g/src/mcasp_cfg.c b/realtime_demo_bios/k2g/src/mcasp_cfg.c new file mode 100644 index 0000000..0fb790c --- /dev/null +++ b/realtime_demo_bios/k2g/src/mcasp_cfg.c @@ -0,0 +1,869 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file mcasp_config.c + * + * \brief Configures McASP module + * + */ + +#include "mcasp_cfg.h" +#include "../include/audk2g.h" + + +/* The infamous xdc/std.h must come before any header file which uses XDC symbols */ +#include /* mandatory - have to include first, for BIOS types */ +#include +#include +#include "../../../common/components/mss/mss.h" /* local version used */ +#include + +/*---------------------------------------- + * BIOS header files + *----------------------------------------*/ +#include /* mandatory - if you call APIs like BIOS_start() */ +#include /* header file for statically defined objects/handles */ +#include /* for System_printf, and similar */ +#include /* for benchmarking/profiling */ + +#include /* for tracing */ +#include +#include /* and more tracing */ + +#include /* this looks obvious */ + +#include "fil.h" /* FILE I/O implementation */ +#include "sys.h" /* System API and structures */ +#include "sysbfflt.h" /* System support for BF filters */ + +#define Timestamp_get Timestamp_get32 /* use 32-bit time stamps */ + +#define MIN(a,b) (((a)>(b))?(b):(a)) /* Min/Max macros */ +#define MAX(a,b) (((a)<(b))?(b):(a)) +#define loop while(1) /* endless loop for the task */ + + +/* Frame index for Rx and Tx buffers */ +uint8_t rxFrameIndex = 1; +uint8_t txFrameIndex = 1; +uint32_t gtxFrameIndexCount = 0; +uint32_t grxFrameIndexCount = 0; + +/* Flags for counting Rx and Tx interrupts */ +volatile uint32_t rxFlag = 0; +volatile uint32_t txFlag = 0; + +/* Semaphore handle for Tx and Rx */ +Semaphore_Handle semR; +Semaphore_Handle semT; +Semaphore_Params params; + +/* McASP device handles */ +Ptr hMcaspDevTx; +Ptr hMcaspDevRx; + +/* McASP channel handles */ +Ptr hMcaspTxChan; +Ptr hMcaspRxChan; + +/* McASP channel parameters */ +Mcasp_Params mcaspTxParams; +Mcasp_Params mcaspRxParams; + +/* McASP Callback function argument */ +uint32_t txChanMode; +uint32_t rxChanMode; +uint32_t mcaspRxChanArg = 1; +uint32_t mcaspTxChanArg = 2; + +/* McASP Tx and Rx frame buffers */ +MCASP_Packet rxFrame[NUM_BUFS]; +MCASP_Packet txFrame[NUM_BUFS]; + +/* McASP Tx and Rx frame buffer pointers */ +Ptr txBuf[NUM_BUFS]; +Ptr rxBuf[NUM_BUFS]; +Ptr wkBuf[NUM_BUFS]; +Ptr outBuf[NUM_BUFS]; + +int chanToMicMapping[8] = {0, 1, 4, 5, 2, 3, 6, 7}; + +/* Error flag */ +uint32_t gblErrFlag = 0; +Error_Block eb; + +/* External function declarations */ +void GblErr(int arg); +signed char* getGlobalAddr(signed char* addr); + +/* McASP HW setup for receive */ +Mcasp_HwSetupData mcaspRcvSetup = { + /* .rmask = */ 0xFFFFFFFF, /* 16 bits are to be used */ + /* .rfmt = */ 0x000180F0, /* + * 1 bit delay from framesync + * MSB first + * No extra bit padding + * Padding bit (ignore) + * slot Size is 32 + * Reads from DMA port + * NO rotation + */ + /* .afsrctl = */ 0X00000111, /* I2S mode - 2 slot TDM + * Frame sync is one word + * Externally generated frame sync + * Falling edge is start of frame + */ + /* .rtdm = */ 0x00000003, /* slot 1 and 2 are active (I2S) */ + /* .rintctl = */ 0x00000000, /* sync error and overrun error */ + /* .rstat = */ 0x000001FF, /* reset any existing status bits */ + /* .revtctl = */ 0x00000000, /* DMA request is enabled */ + { + /* .aclkrctl = */ 0x00000080, /* Bit CLK Pol: falling edge, ACLKR is external */ + /* .ahclkrctl = */ 0x00000000, /* AHCLKR is external */ + /* .rclkchk = */ 0x00000000 + } +}; + +/* McASP HW setup for transmit */ +#if (AUDK2G_AUDIO_DAC) +Mcasp_HwSetupData mcaspXmtSetup = { + /* .xmask = */ 0xFFFFFFFF, /* 16 bits are to be used */ + /* .xfmt = */ 0x000180F0, /* + * 1 bit delay from framesync + * MSB first + * No extra bit padding + * Padding bit (ignore) + * slot Size is 32 + * Reads from DMA port + * NO rotation + */ + /* .afsxctl = */ 0x00000113, /* I2S mode - 2 slot TDM + * Frame sync is one word + * Falling edge is start of frame + * Externally generated frame sync + */ + /* .xtdm = */ 0x00000003, /* slot 1 and 2 are active (I2S) */ + /* .xintctl = */ 0x00000000, /* sync error,overrun error,clK error */ + /* .xstat = */ 0x000001FF, /* reset any existing status bits */ + /* .xevtctl = */ 0x00000000, /* DMA request is enabled or disabled */ + { + /* .aclkxctl = */ 0X000000E7, /* Bit CLK Pol: falling edge, ASYNC is 1, ACLKX is internal, HF CLK to BCLK divider is 8 */ + /* .ahclkxctl = */ 0x00000000, /* AHCLKX is external */ + /* .xclkchk = */ 0x00000000 + }, + +}; +#endif + +/* McAsp channel parameters for receive */ +Mcasp_ChanParams mcaspRxChanParam = +{ + 0x0004, /* number of serializers */ + {Mcasp_SerializerNum_0, + Mcasp_SerializerNum_1, + Mcasp_SerializerNum_2, + Mcasp_SerializerNum_3 }, /* serializer index */ + &mcaspRcvSetup, + TRUE, + Mcasp_OpMode_TDM, /* Mode (TDM/DIT) */ + Mcasp_WordLength_32, + NULL, + 0, + NULL, + GblErr, + 2, /* number of TDM channels */ + ///Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLEAVED_1, + Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLEAVED_2, + TRUE, + TRUE +}; + +#if (AUDK2G_AUDIO_DAC) +/* McAsp channel parameters for transmit */ +Mcasp_ChanParams mcaspTxChanParam = +{ + 0x0001, /* number of serializers */ + {Mcasp_SerializerNum_2,}, /* serializer index for DAC0 */ + &mcaspXmtSetup, + TRUE, + Mcasp_OpMode_TDM, + Mcasp_WordLength_32, /* word width */ + NULL, + 0, + NULL, + GblErr, + 2, /* number of TDM channels */ + Mcasp_BufferFormat_1SER_MULTISLOT_INTERLEAVED, + ///Mcasp_BufferFormat_1SER_MULTISLOT_NON_INTERLEAVED, + TRUE, + TRUE +}; +#endif + +typedef struct txBfDebug_stc { + tulong frmcnt; /* normal frames */ + tulong silcnt; /* silence frames */ + tuint invsrc; /* no mic active, invalid output */ + tuint invopt; /* >1 mic active, invalid output */ +} txBfDebug_t; + +typedef struct txTaskDebug_stc { + tuint overrun; /* counts how many times we ran out of MIPS */ + txBfDebug_t bf[SYS_VMICS_MAX]; /* beamformer statistics */ +} txTaskDebug_t; + +txTaskDebug_t txTaskDebug; /* Tx task debug stats */ + +/* Profiling/benchmarking information for the Tx task */ +typedef struct txTaskProfileData_stc { + tulong min; /* Minimum number of cycles */ + tulong max; /* Maximum number of cycles */ + tulong n; /* Number of measurements */ + float total; /* Total number of cycles */ +} txTaskProfileData_t; + +typedef struct txTaskProfile_stc { + txTaskProfileData_t bf; /* Beamformer profile */ + txTaskProfileData_t asnr; /* ASNR profile */ + txTaskProfileData_t mss; /* MSS profile */ + txTaskProfileData_t vau; /* VAU profile */ +} txTaskProfile_t; +volatile txTaskProfile_t txTaskProfile = { + {~(0uL), 0, 0, 0.0f}, + {~(0uL), 0, 0, 0.0f}, + {~(0uL), 0, 0, 0.0f}, + {~(0uL), 0, 0, 0.0f} +}; + +/* To be used for debug trace */ +mssSrc_t mssDbgCurSrc = { + -1, -1 /* Current source group/index */ +}; +mssSrc_t mssDbgNewSrc = { + -1, -1 /* New source group/index */ +}; + +/* Handle to eDMA */ +extern EDMA3_DRV_Handle hEdma1; + +/** + * \brief Function called by McASP driver in case of error + * + * \return None + */ +void GblErr(int arg) +{ + gblErrFlag = 1; +} + +/** + * \brief McASP callback function called up on the data transfer completion + * + * \param arg [IN] - Application specific callback argument + * \param ioBuf [IN] - McASP IO buffer + * + * \return None + */ +void mcaspAppCallback(void *arg, MCASP_Packet *ioBuf) +{ + /* Callback is triggered by Rx completion */ + if(ioBuf->cmd == MCASP_READ) + { + rxFlag++; + + if(rxFrameIndex == 0) + { + rxFrameIndex = 1; + } + else + { + rxFrameIndex = 0; + } + + /* Post semaphore */ + Semaphore_post(semR); + } + + /* Callback is triggered by Tx completion */ + if(ioBuf->cmd == MCASP_WRITE) + { + if(txFrameIndex == 0) + { + txFrameIndex = 1; + } + else + { + txFrameIndex = 0; + } + + txFlag++; + + /* Post semaphore */ + Semaphore_post(semT); + } +} + +/** + * \brief Initializes McASP data buffers and submits to McASP driver + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS initBuffers(void) +{ + Error_Block eb; + uint32_t count = 0; + IHeap_Handle iheap; + Int status; + + iheap = HeapMem_Handle_to_xdc_runtime_IHeap(heapHandle); + Error_init(&eb); + + /* Allocate buffers for the McASP data exchanges */ + for(count = 0; count < NUM_BUFS; count++) + { + rxBuf[count] = Memory_calloc(iheap, (BUFSIZE * RX_NUM_SERIALIZER), + BUFALIGN, &eb); + if(NULL == rxBuf[count]) + { + IFPRINT(audk2g_write("\r\nMEM_calloc failed for Rx\n")); + } + } + + /* Allocate work buffers for signal processing */ + for(count = 0; count < NUM_BUFS; count++) + { + wkBuf[count] = Memory_calloc(iheap, (BUFSIZE * RX_NUM_SERIALIZER/(SYS_FS_RATIO*2)), + BUFALIGN, &eb); + if(NULL == wkBuf[count]) + { + IFPRINT(audk2g_write("\r\nMEM_calloc failed for Wk\n")); + } + } + +#if (AUDK2G_AUDIO_DAC) + /* Allocate buffers for the McASP data exchanges */ + for(count = 0; count < NUM_BUFS; count++) + { + txBuf[count] = Memory_calloc(iheap, (BUFSIZE * TX_NUM_SERIALIZER), + BUFALIGN, &eb); + if(NULL == txBuf[count]) + { + IFPRINT(audk2g_write("\r\nMEM_calloc failed for Tx\n")); + } + } + + /* Allocate output buffers for the MSS */ + for(count = 0; count < NUM_BUFS; count++) + { + outBuf[count] = Memory_calloc(iheap, (BUFSIZE * TX_NUM_SERIALIZER/(SYS_FS_RATIO*2*2)), + BUFALIGN, &eb); + if(NULL == outBuf[count]) + { + IFPRINT(audk2g_write("\r\nMEM_calloc failed for Out\n")); + } + } +#endif + for(count = 0; count < NUM_BUFS; count++) + { + /* Issue the first & second empty buffers to the input stream */ + memset((uint8_t *)rxBuf[count], 0xAA, (BUFSIZE * RX_NUM_SERIALIZER)); + memset((uint8_t *)wkBuf[count], 0xBB, (BUFSIZE * RX_NUM_SERIALIZER/(SYS_FS_RATIO*2))); + + /* RX frame processing */ + rxFrame[count].cmd = MCASP_READ; + rxFrame[count].addr = (void*)(getGlobalAddr(rxBuf[count])); + rxFrame[count].size = BUFSIZE * RX_NUM_SERIALIZER; + rxFrame[count].arg = (uint32_t) mcaspRxChanArg; + rxFrame[count].status = 0; + rxFrame[count].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + /* Submit McASP packet for Rx */ + status = mcaspSubmitChan(hMcaspRxChan, &rxFrame[count]); + if((status != MCASP_COMPLETED) && (status != MCASP_PENDING)) + { + IFPRINT(audk2g_write("mcaspSubmitChan for Rx Failed\n")); + return (Audk2g_EFAIL); + } + } + +#if (AUDK2G_AUDIO_DAC) + for(count = 0; count < NUM_BUFS; count++) + { + memset((uint8_t *)txBuf[count], 0xCC, (BUFSIZE * TX_NUM_SERIALIZER)); + memset((uint8_t *)outBuf[count], 0xDD, (BUFSIZE * TX_NUM_SERIALIZER/(3*2*2))); + + /* TX frame processing */ + txFrame[count].cmd = MCASP_WRITE; + txFrame[count].addr = (void*)(getGlobalAddr(txBuf[count])); + txFrame[count].size = BUFSIZE * TX_NUM_SERIALIZER; + txFrame[count].arg = (uint32_t) mcaspTxChanArg; + txFrame[count].status = 0; + txFrame[count].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + /* Submit McASP packet for Tx */ + status = mcaspSubmitChan(hMcaspTxChan, &txFrame[count]); + if((status != MCASP_COMPLETED) && (status != MCASP_PENDING)) + { + IFPRINT(audk2g_write("mcaspSubmitChan for Tx Failed\n")); + return (Audk2g_EFAIL); + } + } +#endif + return (Audk2g_EOK); +} + +/** + * \brief Configures McASP module and creates the channel + * for audio Tx and Rx + * + * \return Audk2g_EOK on Success or error code + */ +Audk2g_STATUS mcaspAudioConfig(void) +{ + Int status; + +#if (AUDK2G_AUDIO_DAC) + hMcaspDevTx = NULL; + hMcaspTxChan = NULL; +#endif + hMcaspDevRx = NULL; + hMcaspRxChan = NULL; + + /* Initialize McASP Tx and Rx parameters */ +#if (AUDK2G_AUDIO_DAC) + mcaspTxParams = Mcasp_PARAMS; +#endif + mcaspRxParams = Mcasp_PARAMS; + +#if (AUDK2G_AUDIO_DAC) + mcaspTxParams.mcaspHwSetup.tx.clk.clkSetupClk = 0x63; + mcaspTxParams.mcaspHwSetup.rx.clk.clkSetupClk = 0x23; +#endif + mcaspRxParams.mcaspHwSetup.rx.clk.clkSetupClk = 0x23; + mcaspRxParams.mcaspHwSetup.tx.clk.clkSetupClk = 0x63; + +#if (AUDK2G_AUDIO_DAC) + mcaspTxParams.mcaspHwSetup.glb.pdir |= 0x2000000; //Set Amute pin as output for Tx channel +#endif + + /* Set the HW interrupt number */ +#if (AUDK2G_AUDIO_DAC) + mcaspTxParams.hwiNumber = 8; +#endif + mcaspRxParams.hwiNumber = 8; + + /* Initialize eDMA handle */ + mcaspRxChanParam.edmaHandle = hEdma1; +#if (AUDK2G_AUDIO_DAC) + mcaspTxChanParam.edmaHandle = hEdma1; + + /* Bind McASP2 for Tx */ + status = mcaspBindDev(&hMcaspDevTx, CSL_MCASP_2, &mcaspTxParams); + if((status != MCASP_COMPLETED) || (hMcaspDevTx == NULL)) + { + IFPRINT(audk2g_write("mcaspBindDev for Tx Failed\n")); + return (Audk2g_EFAIL); + } +#endif + /* Bind McASP1 for Rx */ + status = mcaspBindDev(&hMcaspDevRx, CSL_MCASP_1, &mcaspRxParams); + if((status != MCASP_COMPLETED) || (hMcaspDevRx == NULL)) + { + IFPRINT(audk2g_write("mcaspBindDev for Rx Failed\n")); + return (Audk2g_EFAIL); + } + +#if (AUDK2G_AUDIO_DAC) + /* Create McASP channel for Tx */ + status = mcaspCreateChan(&hMcaspTxChan, hMcaspDevTx, + MCASP_OUTPUT, + &mcaspTxChanParam, + mcaspAppCallback, &txChanMode); + if((status != MCASP_COMPLETED) || (hMcaspTxChan == NULL)) + { + IFPRINT(audk2g_write("mcaspCreateChan for Tx Failed\n")); + return (Audk2g_EFAIL); + } + + configAudioDAC(); +#endif + + /* Create McASP channel for Rx */ + status = mcaspCreateChan(&hMcaspRxChan, hMcaspDevRx, + MCASP_INPUT, + &mcaspRxChanParam, + mcaspAppCallback, &rxChanMode); + if((status != MCASP_COMPLETED) || (hMcaspRxChan == NULL)) + { + IFPRINT(audk2g_write("mcaspCreateChan for Rx Failed\n")); + return (Audk2g_EFAIL); + } + + /* Initialize the buffers and submit for McASP Tx/Rx */ + if(initBuffers() != Audk2g_EOK) + { + IFPRINT(audk2g_write("McASP Buffer Initialization Failed\n")); + return (Audk2g_EFAIL); + } + + return (Audk2g_EOK); +} + +/** + * \brief Function to exit the test + * + * \return None + */ +void testRet(uint32_t status) +{ + audk2g_write("\n\nAudio DC Analog Interface Test Completed!\n"); + + testExit(status); +} + +/** + * \brief Task to echo the input data to output + * + * Waits for the McASP data transfer completion and copies the + * Rx data to Tx buffers + * + * \return Audk2g_EOK on Success or error code + */ +#define DUMP_SEC 5 +#define FRAME_PER_SEC 100 +int gAudDumpBufIdx = 0; +unsigned char gAudDumpBuf[(BUFSIZE*RX_NUM_SERIALIZER)*FRAME_PER_SEC*DUMP_SEC]; +unsigned char gAudOutDumpBuf[(BUFSIZE*TX_NUM_SERIALIZER)*FRAME_PER_SEC*DUMP_SEC]; +Void Audio_echo_Task(void) +{ + int32_t i, j, k; + unsigned char *tempTxPtr, *tempRxPtr, *tempWkPtr; + unsigned char *tempOutPtr, *tempMicPtr; + tint nmics, nvmics, err, angle; + volatile tulong t1, t2; /* for profiling */ + tulong delta; + + void *inst_p; + linSample *in_r; /* pointer to current microphone input buffer */ + linSample *frame_p; /* pointer to signal frame */ + linSample *mics_in[SYS_MICS_MAX+1]; /* pointers to microphone inputs */ + + mssDebugStat_t mssDbg; + + Semaphore_Params_init(¶ms); + + /* Create semaphores to wait for buffer reclaiming */ + semR = Semaphore_create(0, ¶ms, &eb); + semT = Semaphore_create(0, ¶ms, &eb); + + /* Forever loop to continuously receive and transmit audio data */ + while (1) + { + if(gblErrFlag) + { + break; + } + + /* Reclaim full buffer from the input stream */ + Semaphore_pend(semR, BIOS_WAIT_FOREVER); +#if (AUDK2G_AUDIO_DAC) + Semaphore_pend(semT, BIOS_WAIT_FOREVER); +#endif + /* Reclaim full buffer from the input stream */ +#if (AUDK2G_AUDIO_DAC) + gtxFrameIndexCount = txFrameIndex; +#endif + grxFrameIndexCount = rxFrameIndex; + +#if (AUDK2G_AUDIO_DAC) + +#if 0 // Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLEAVED_1 + // copy RX mic 1 to TX left channel and RX mic 5 to right channel + // set the RX pointer to mic 1 + tempRxPtr = (uint32_t *)rxBuf[grxFrameIndexCount]; + // set the TX pointer to left cahhnel + tempTxPtr = (uint32_t *)txBuf[gtxFrameIndexCount]; + // copy RX mic 1 to TX left channel + for (i=0; i +#include +#include +#include +extern Mcasp_Module_State Mcasp_module; +#ifdef _TMS320C6X +#include +#include +#include +#else +#include +#endif + +#include +#include + +#include +#include +#include +#include + + +void * osal_Queue_handle(void *structPtr) +{ + return(Queue_handle(structPtr)); +} + +void osal_Queue_construct(void * ptr, int32_t arg) +{ + Queue_construct((Queue_Struct*)ptr, NULL); +} + +void osal_Task_sleep(int32_t msec) +{ + int i,j; + //Task_sleep(msec); + for (i=0; i < msec; i++) { + for (j=0; j < 1000; j++) { +#ifdef _TMS320C6X + asm("* Comment to maintain loops through compiler optimization"); +#endif + } + } +} +int32_t osal_getThreadType() +{ + return BIOS_getThreadType() == BIOS_ThreadType_Task; + +} +#ifdef _TMS320C6X +int hostintArr[6]={33,34,35,36,37,38}; +int eventIdArr[6]={0x33,0x34,0x35,0x36,0x37,0x38}; +void osal_EventCombiner_disableEvent(int32_t cpuEventNum) +{ + + EventCombiner_disableEvent(eventIdArr[cpuEventNum- CSL_CIC_McASP_0_XINT]); + + +} +void osal_EventCombiner_enableEvent(int32_t cpuEventNum) +{ + + EventCombiner_enableEvent(eventIdArr[cpuEventNum- CSL_CIC_McASP_0_XINT]); + +} + +void osal_EventCombiner_dispatchPlug(uint32_t evt, void * intIsr, void *arg, int32_t flag ) +{ + int hostint,eventId; + CpIntc_dispatchPlug(evt, (CpIntc_FuncPtr)intIsr, 0, TRUE); + hostint=hostintArr[evt- CSL_CIC_McASP_0_XINT]; + /* The configuration is for CPINTC0. We map system interrupt 0x88 to Host Interrupt 32. */ + CpIntc_mapSysIntToHostInt(0, evt, hostint); + + /* Enable the Host Interrupt. */ + CpIntc_enableHostInt(0, hostint); + + /* Enable the System Interrupt */ + CpIntc_enableSysInt(0, evt); + + /* Get the event id associated with the host interrupt. */ + eventId = eventIdArr[evt- CSL_CIC_McASP_0_XINT]; + /* enable the 'global' switch */ + + /* Enable the Xfer Completion Event Interrupt */ + EventCombiner_dispatchPlug(eventId, + (EventCombiner_FuncPtr)(&CpIntc_dispatch), + hostint, 1); + + + //EventCombiner_dispatchPlug(evt, (EventCombiner_FuncPtr)intIsr, arg, flag); +} +#endif + + +#if 0 +int gDebug=0; + +void assert(int in) +{ +if(in <=0) + gDebug++; +} +#endif + +void osal_Swi_post(void * obj) +{ + Swi_post((Swi_Handle)obj); + +} +int32_t osal_Queue_empty(void * handle) +{ +return Queue_empty(Queue_handle(handle)); +// return ((Mcasp_QueueElem*)handle->next == &((Mcasp_QueueElem*)handle)); + +} + +MCASP_Packet * osal_Queue_get(void * handle) +{ +return Queue_get(Queue_handle(handle)); +} + +void osal_Queue_put(void * handle,Ptr ptr) + { + Queue_put(Queue_handle(handle),(Ptr)ptr); + } + + +McaspOsal_IntrHandle McaspOsal_registerIntr( + uint32_t intNum, + McaspOsal_IntrFuncPtr fxn, + const void *arg0) +{ + Hwi_Params hwiParams = {0}; + + Hwi_Params_init(&hwiParams); + hwiParams.arg = (uint32_t) arg0; + return (McaspOsal_IntrHandle) Hwi_create( + (int32_t) intNum, + (Hwi_FuncPtr) fxn, + &hwiParams, + 0U); +} +void McaspOsal_unRegisterIntr(McaspOsal_IntrHandle handle) +{ + Hwi_delete(handle); +} + +/* OSAL functions for Platform Library */ +uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment) +{ + return malloc(num_bytes); +} + +void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes) +{ + /* Free up the memory */ + if (dataPtr) + { + free(dataPtr); + } +} + +void Osal_platformSpiCsEnter(void) +{ + /* Get the hardware semaphore. + * + * Acquire Multi core CPPI synchronization lock + */ + //while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0); + + return; +} + +void Osal_platformSpiCsExit (void) +{ + /* Release the hardware semaphore + * + * Release multi-core lock. + */ + //CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM); + + return; +} diff --git a/realtime_demo_bios/k2g/src/sample_cs.c b/realtime_demo_bios/k2g/src/sample_cs.c new file mode 100644 index 0000000..2e2475c --- /dev/null +++ b/realtime_demo_bios/k2g/src/sample_cs.c @@ -0,0 +1,421 @@ +/* + * sample_cs.c + * + * Sample functions showing the implementation of critical section entry/exit + * routines and various semaphore related routines (all BIOS6 depenedent). + * These implementations MUST be provided by the user / application, using the + * EDMA3 driver, for its correct functioning. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include +#include + +#include +#include + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; + +/** + * Shadow Region on which the executable is running. Its value is + * populated with the DSP Instance Number here in this case. + */ +extern unsigned int region_id; + +/** + * \brief EDMA3 OS Protect Entry + * + * This function saves the current state of protection in 'intState' + * variable passed by caller, if the protection level is + * EDMA3_OS_PROTECT_INTERRUPT. It then applies the requested level of + * protection. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is disabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, '*intState' specifies the + * Transfer Controller number whose interrupt needs to be disabled. + * + * \param level is numeric identifier of the desired degree of protection. + * \param intState is memory location where current state of protection is + * saved for future use while restoring it via edma3OsProtectExit() (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectEntry (unsigned int edma3InstanceId, + int level, unsigned int *intState) + { + if (((level == EDMA3_OS_PROTECT_INTERRUPT) + || (level == EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR)) + && (intState == NULL)) + { + return; + } + else + { + switch (level) + { + /* Disable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + *intState = Hwi_disable(); + break; + + /* Disable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_disable(); + break; + + /* Disable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_disableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Disable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_disableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Disable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (*intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Disable the corresponding interrupt */ + EventCombiner_disableEvent(tcErrorInt[edma3InstanceId][*intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + } + + +/** + * \brief EDMA3 OS Protect Exit + * + * This function undoes the protection enforced to original state + * as is specified by the variable 'intState' passed, if the protection + * level is EDMA3_OS_PROTECT_INTERRUPT. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is enabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, 'intState' specifies the + * Transfer Controller number whose interrupt needs to be enabled. + * \param level is numeric identifier of the desired degree of protection. + * \param intState is original state of protection at time when the + * corresponding edma3OsProtectEntry() was called (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectExit (unsigned int edma3InstanceId, + int level, unsigned int intState) + { + switch (level) + { + /* Enable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + Hwi_restore(intState); + break; + + /* Enable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_enable(); + break; + + /* Enable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_enableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Enable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_enableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Enable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Enable the corresponding interrupt */ + EventCombiner_enableEvent(tcErrorInt[edma3InstanceId][intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes) + { + EDMA3_DRV_Result cacheInvResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1u)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheInvResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_inv((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, TRUE); + } + + return cacheInvResult; +} + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes) + { + EDMA3_DRV_Result cacheFlushResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1u)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheFlushResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_wb((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, TRUE); + } + + return cacheFlushResult; +} + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to recieve the handle to just created + * semaphore + * \return EDMA3_DRV_SOK if succesful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem) + { + EDMA3_DRV_Result semCreateResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semCreateResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + *hSem = (EDMA3_OS_Sem_Handle)Semaphore_create(initVal, semParams, NULL); + if ( (*hSem) == NULL ) + { + semCreateResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semCreateResult; + } + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if succesful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semDeleteResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semDeleteResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_delete((Semaphore_Handle *)&hSem); + } + + return semDeleteResult; + } + + +/** + * \brief EDMA3 OS Semaphore Take + * + * This function takes a semaphore token if available. + * If a semaphore is unavailable, it blocks currently + * running thread in wait (for specified duration) for + * a free semaphore. + * \param hSem [IN] is the handle of the specified semaphore + * \param mSecTimeout [IN] is wait time in milliseconds + * \return EDMA3_DRV_Result if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemTake(EDMA3_OS_Sem_Handle hSem, int mSecTimeout) + { + EDMA3_DRV_Result semTakeResult = EDMA3_DRV_SOK; + unsigned short semPendResult; + + if(NULL == hSem) + { + semTakeResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + semPendResult = Semaphore_pend(hSem, mSecTimeout); + if (semPendResult == FALSE) + { + semTakeResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semTakeResult; + } + + +/** + * \brief EDMA3 OS Semaphore Give + * + * This function gives or relinquishes an already + * acquired semaphore token + * \param hSem [IN] is the handle of the specified semaphore + * \return EDMA3_DRV_Result if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemGive(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semGiveResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semGiveResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_post(hSem); + } + + return semGiveResult; + } + +/* End of File */ + diff --git a/realtime_demo_bios/k2g/src/sample_k2g_cfg.c b/realtime_demo_bios/k2g/src/sample_k2g_cfg.c new file mode 100644 index 0000000..05677d9 --- /dev/null +++ b/realtime_demo_bios/k2g/src/sample_k2g_cfg.c @@ -0,0 +1,1218 @@ +/* + * sample_tci616_cfg.c + * + * Platform specific EDMA3 hardware related information like number of transfer + * controllers, various interrupt ids etc. It is used while interrupts + * enabling / disabling. It needs to be ported for different SoCs. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include + +/* Number of EDMA3 controllers present in the system */ +#define NUM_EDMA3_INSTANCES 2u +const unsigned int numEdma3Instances = NUM_EDMA3_INSTANCES; + +/* Number of DSPs present in the system */ +#define NUM_DSPS 1u +//const unsigned int numDsps = NUM_DSPS; + +#define CGEM_REG_START (0x01800000) + + +extern cregister volatile unsigned int DNUM; + +#define MAP_LOCAL_TO_GLOBAL_ADDR(addr) ((1<<28)|(DNUM<<24)|(((unsigned int)addr)&0x00ffffff)) + + +/* Determine the processor id by reading DNUM register. */ +unsigned short determineProcId() + { + volatile unsigned int *addr; + unsigned int core_no; + + /* Identify the core number */ + addr = (unsigned int *)(CGEM_REG_START+0x40000); + core_no = ((*addr) & 0x000F0000)>>16; + + return core_no; + } + +signed char* getGlobalAddr(signed char* addr) +{ + if (((unsigned int)addr & (unsigned int)0xFF000000) != 0) + { + return (addr); /* The address is already a global address */ + } + + return((signed char*)(MAP_LOCAL_TO_GLOBAL_ADDR(addr))); +} +/** Whether global configuration required for EDMA3 or not. + * This configuration should be done only once for the EDMA3 hardware by + * any one of the masters (i.e. DSPs). + * It can be changed depending on the use-case. + */ +unsigned int gblCfgReqdArray [NUM_DSPS] = { + 0, /* DSP#0 is Master, will do the global init */ + + }; + +unsigned short isGblConfigRequired(unsigned int dspNum) + { + return gblCfgReqdArray[dspNum]; + } + +/* Semaphore handles */ +EDMA3_OS_Sem_Handle semHandle[NUM_EDMA3_INSTANCES] = {NULL,NULL}; + + +/* Variable which will be used internally for referring number of Event Queues. */ +unsigned int numEdma3EvtQue[NUM_EDMA3_INSTANCES] = {2u, 2u}; + +/* Variable which will be used internally for referring number of TCs. */ +unsigned int numEdma3Tc[NUM_EDMA3_INSTANCES] = {2u, 2u}; + +/** + * Variable which will be used internally for referring transfer completion + * interrupt. Completion interrupts for all the shadow regions and all the + * EDMA3 controllers are captured since it is a multi-DSP platform. + */ +unsigned int ccXferCompInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = { + { + 0x88, 0x89, 0x8a, 0x8b, + 0x8c, 0x8d, 0x8e, 0x8f, + }, + { + 0x90, 0x91, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, + }, + }; + +/** + * Variable which will be used internally for referring channel controller's + * error interrupt. + */ +unsigned int ccErrorInt[NUM_EDMA3_INSTANCES] = {0x99, 0x9c}; + +/** + * Variable which will be used internally for referring transfer controllers' + * error interrupts. + */ +unsigned int tcErrorInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_TC] = { + { + 0xA0,0xA1, 0u, 0u, + 0u, 0u, 0u, 0u, + }, + { + 0xA4, 0xA5, 0u, 0u, + 0u, 0u, 0u, 0u, + }, + }; + +/* Driver Object Initialization Configuration */ +EDMA3_RM_GblConfigParams sampleEdma3GblCfgParams[NUM_EDMA3_INSTANCES] = + { + { + /* EDMA3 INSTANCE# 0 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 64u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 64u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 512u, + /** Total number of Event Queues in the EDMA3 Controller */ + 2u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 2u, + /** Number of Regions on this EDMA3 controller */ + 8u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 1u, + + /** Existence of memory protection feature */ + 1u, + + /** Global Register Region of CC Registers */ + (void *)0x02700000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x02760000u, + (void *)0x02768000u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + 0x88, + /** Interrupt no. for CC Error */ + 0x99, + /** Interrupt no. for TCs Error */ + { + 0xA0, + 0xA1, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 128u, + 128u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, 46u, 47u, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + 0x03003333u, + 0x0000000Fu + } + }, + + { + /* EDMA3 INSTANCE# 1 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 64u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 64u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 512u, + /** Total number of Event Queues in the EDMA3 Controller */ + 2u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 2u, + /** Number of Regions on this EDMA3 controller */ + 8u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 1u, + + /** Existence of memory protection feature */ + 1u, + + /** Global Register Region of CC Registers */ + (void *)0x02728000U, + /** Transfer Controller (TC) Registers */ + { + (void *)0x027b0000U, + (void *)0x027b8000U, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + 0x90, + /** Interrupt no. for CC Error */ + 0x9C, + /** Interrupt no. for TCs Error */ + { + 0xA4, + 0xA5, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 2u, + 3u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 16u, + 16u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 64u, + 64u, + 64u, + 64u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, 46u, 47u, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + 0x3FFF3FFFu, + 0x3FFF3FFFu + } + }, + + }; + +EDMA3_RM_InstanceInitConfig sampleInstInitConfig[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = + { + /* EDMA3 INSTANCE# 0 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFF000Fu, 0x00000FFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x0f00000Fu, 0x0000000Fu}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000003u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x0f00000Fu, 0x0000000Fu}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 */ + {0x00000000u, 0xFFF00000u}, + }, + + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x000000F0u, 0xFFFFF000u, 0x000000FFu, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x000000F0u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x0000000Cu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x000000F0u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000030u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000030u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000030u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000F00u, 0x00000000u, 0xFFFFFF00u, 0x0000000Fu, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000F00u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000030u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000F00u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000300u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000300u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000300u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0xFFFFFFF0u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x0000F000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000C0u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x0000F000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00003000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00003000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00003000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + + /* EDMA3 INSTANCE# 1 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000FFFFu, 0x000F0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0xFFFFFFFFu, 0x0000FFFFu, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x0000FFFFu, 0x000F0000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000003u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x0000FFFFu, 0x000F0000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00003FFFu, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00003FFFu, 0x00000000u}, + }, + + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFF0000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0xFFFF0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 287 256 319 288 351 320 383 352 */ + 0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFF0000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x0000000Cu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0xFFFF0000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x3FFF0000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x3FFF0000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x3FFF0000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x0000FFFFu, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 415 384 447 416 479 448 511 480 */ + 0x0000FFFFu, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x0000FFFFu}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000030u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x0000FFFFu}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00003FFFu, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00003FFFu}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00003FFFu}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0xFFFF0000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0xFFFF0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0xFFFF0000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000C0u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0xFFFF0000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x3FFF0000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x3FFF0000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x3FFF0000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + + }; + +/* End of File */ diff --git a/realtime_demo_bios/k2g/src/sample_k2g_int_reg.c b/realtime_demo_bios/k2g/src/sample_k2g_int_reg.c new file mode 100644 index 0000000..fb891ab --- /dev/null +++ b/realtime_demo_bios/k2g/src/sample_k2g_int_reg.c @@ -0,0 +1,255 @@ +/* + * sample_tci6616_int_reg.c + * + * Platform specific interrupt registration and un-registration routines. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include + +#include + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; +extern unsigned int numEdma3Tc[]; + +void (*ptrEdma3TcIsrHandler[EDMA3_MAX_TC])(unsigned int arg) = + { + &lisrEdma3TC0ErrHandler0, + &lisrEdma3TC1ErrHandler0, + &lisrEdma3TC2ErrHandler0, + &lisrEdma3TC3ErrHandler0, + &lisrEdma3TC4ErrHandler0, + &lisrEdma3TC5ErrHandler0, + &lisrEdma3TC6ErrHandler0, + &lisrEdma3TC7ErrHandler0, + }; +#if 0 +unsigned int hwiInterrupt = 8; + +/* Host interrupts for transfer completion */ +//unsigned int ccXferHostInt[NUM_EDMA3_INSTANCES][NUM_DSPS] = { +unsigned int ccXferHostInt[3][4] = { + {32, 24u, 40u, 56u}, + {9u, 25u, 41u, 57u}, + {10u, 26u, 42u, 58u}, + }; +unsigned int edma3ErrHostInt[3][4] = { + {33, 27u, 43u, 59u}, + {12u, 28u, 44u, 60u}, + {13u, 29u, 45u, 61u}, + }; + + +extern unsigned int dsp_num; + +/** To Register the ISRs with the underlying OS, if required */ +void registerEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Transfer completion ISR */ +#if 1 + CpIntc_dispatchPlug(ccXferCompInt[edma3Id][dsp_num], + lisrEdma3ComplHandler0, + edma3Id, + TRUE); + CpIntc_mapSysIntToHostInt(0, ccXferCompInt[edma3Id][dsp_num], + ccXferHostInt[edma3Id][dsp_num]); + CpIntc_enableHostInt(0, ccXferHostInt[edma3Id][dsp_num]); +#else + // Map system interrupt 15 to host interrupt 8 + CpIntc_mapSysIntToHostInt(0, 136, 6); + + // Plug the function for event #15 + CpIntc_dispatchPlug(136, lisrEdma3ComplHandler0,edma3Id,TRUE); + + // Enable host interrupt #8 + CpIntc_enableHostInt(0,6); // enable host interrupt 8 +#endif + eventId = CpIntc_getEventId(ccXferHostInt[edma3Id][dsp_num]); + eventId = 0x30; + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + ccXferHostInt[edma3Id][dsp_num], TRUE); + EventCombiner_enableEvent(eventId); + + /* CC Error ISR */ + CpIntc_dispatchPlug(ccErrorInt[edma3Id], lisrEdma3CCErrHandler0, + edma3Id, TRUE); + CpIntc_mapSysIntToHostInt(0, ccErrorInt[edma3Id], + edma3ErrHostInt[edma3Id][dsp_num]); + /* TC Error ISR */ + while (numTc < numEdma3Tc[edma3Id]) + { + CpIntc_dispatchPlug(tcErrorInt[edma3Id][numTc], + (CpIntc_FuncPtr )(ptrEdma3TcIsrHandler[numTc]), + edma3Id, TRUE); + CpIntc_mapSysIntToHostInt(0, tcErrorInt[edma3Id][numTc], + edma3ErrHostInt[edma3Id][dsp_num]); + numTc++; + } + /* Enable the host interrupt which is common for both CC and TC error */ + CpIntc_enableHostInt(0, edma3ErrHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(edma3ErrHostInt[edma3Id][dsp_num]); + eventId = 0x31; + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + edma3ErrHostInt[edma3Id][dsp_num], TRUE); + EventCombiner_enableEvent(eventId); + + Hwi_enableInterrupt(hwiInterrupt); + + /* enable the 'global' switch */ + CpIntc_enableAllHostInts(0); + { + Hwi_Params params; + CpIntc_mapSysIntToHostInt(0, 0x88, 32); // I picked host int 32 for CPINTC #0. CPINTC #1 is for cores 4-7 + CpIntc_dispatchPlug(0x88, lisrEdma3ComplHandler0, 0, TRUE); // the 'arg' parameter could be anything, doesn't have to be 149 + CpIntc_enableHostInt(0, 32); // CPINT #0 is for cores 0-3, CPINTC #1 is for cores 4-7 + eventId = CpIntc_getEventId(32); // this should return the GEM event 21 (This was a bug fixed in 6.32.04) + eventId = 0x30; + Hwi_Params_init(¶ms); + params.arg = 32; // required to be the host interrupt # + params.eventId = eventId; + params.enableInt = TRUE; + Hwi_create(6, &CpIntc_dispatch, ¶ms, NULL); // create ISR to handle this event in Hwi vector 4 + + } + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +void unregisterEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Transfer completion ISR */ + CpIntc_disableHostInt(0, ccXferHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(ccXferHostInt[edma3Id][dsp_num]); + EventCombiner_disableEvent(eventId); + + /* CC/TC Error ISR */ + CpIntc_disableHostInt(0, edma3ErrHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(edma3ErrHostInt[edma3Id][dsp_num]); + EventCombiner_disableEvent(eventId); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +#else +/** To Register the ISRs with the underlying OS, if required. */ +void registerEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + //unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + if(edma3Id == 0) + { + /* Enable the Xfer Completion Event Interrupt */ + EventCombiner_dispatchPlug(6, + (EventCombiner_FuncPtr)(&lisrEdma3ComplHandler0), + edma3Id, 1); + EventCombiner_enableEvent(6); + } + else if(edma3Id == 1) + { + /* Enable the Xfer Completion Event Interrupt */ + EventCombiner_dispatchPlug(7, + (EventCombiner_FuncPtr)(&lisrEdma3ComplHandler0), + edma3Id, 1); + EventCombiner_enableEvent(7); + } + + + /** + * Enabling the HWI_ID. + * EDMA3 interrupts (transfer completion, CC error etc.) + * correspond to different ECM events (SoC specific). These ECM events come + * under ECM block XXX (handling those specific ECM events). Normally, block + * 0 handles events 4-31 (events 0-3 are reserved), block 1 handles events + * 32-63 and so on. This ECM block XXX (or interrupt selection number XXX) + * is mapped to a specific HWI_INT YYY in the tcf file. So to enable this + * mapped HWI_INT YYY, one should use the corresponding bitmask in the + * API C64_enableIER(), in which the YYY bit is SET. + */ + Hwi_enableInterrupt(7); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +void unregisterEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Disable the Xfer Completion Event Interrupt */ + EventCombiner_disableEvent(ccXferCompInt[edma3Id][0]); + + /* Disable the CC Error Event Interrupt */ + EventCombiner_disableEvent(ccErrorInt[edma3Id]); + + /* Enable the TC Error Event Interrupt, according to the number of TCs. */ + while (numTc < numEdma3Tc[edma3Id]) + { + EventCombiner_disableEvent(tcErrorInt[edma3Id][numTc]); + numTc++; + } + + /* Restore interrupts */ + Hwi_restore(cookie); + } +#endif diff --git a/realtime_demo_bios/k2g/src/sine.c b/realtime_demo_bios/k2g/src/sine.c new file mode 100644 index 0000000..9325813 --- /dev/null +++ b/realtime_demo_bios/k2g/src/sine.c @@ -0,0 +1,8201 @@ + +#include "analog_test.h" + +uint32_t sineData[] = {0x00808060, +0x0000039A, +0x000005AD, +0x00001647, +0x00808B95, +0x00FFFED8, +0x00FFF914, +0x00000B5B, +0x00808ACA, +0x00FFFF98, +0x00FFFE4A, +0x00000F6F, +0x008088EC, +0x00000195, +0x00FFFDBB, +0x00000D88, +0x008088EB, +0x00000091, +0x00FFFE1D, +0x00000FC4, +0x008098C1, +0x00000391, +0x000003DF, +0x00000E72, +0x00809777, +0x000004E0, +0x0000037E, +0x00001023, +0x00809176, +0x00000207, +0x00FFFAB6, +0x00000AC1, +0x00809175, +0x00000431, +0x00FFFD88, +0x00000E1F, +0x0080A85D, +0x00FFFCED, +0x00FFF80A, +0x0000059B, +0x0080A64F, +0x00FFFD34, +0x00FFF8EC, +0x00000961, +0x008099FF, +0x00FFFDE3, +0x00FFF861, +0x00001308, +0x008099FF, +0x00FFFDCF, +0x00FFFAFE, +0x00001151, +0x0080BBF5, +0x00000328, +0x00FFFA1B, +0x0000182B, +0x0080B8A5, +0x000003AB, +0x00FFFDB8, +0x000019BA, +0x0080A288, +0x00FFFFB9, +0x000000A7, +0x000011D7, +0x0080A287, +0x00FFFC85, +0x0000009D, +0x00001150, +0x0080D6F8, +0x00000488, +0x00FFFF16, +0x00000CE8, +0x0080D12E, +0x00000361, +0x00FFFC03, +0x00000D2F, +0x0080AB0F, +0x000001A3, +0x00FFF759, +0x0000086E, +0x0080AB0F, +0x000002F1, +0x00FFF6A0, +0x0000093E, +0x0080F8DD, +0x00FFFEFD, +0x00FFFC25, +0x00000BD4, +0x0080EA93, +0x00000063, +0x00FFFB6F, +0x00000E8B, +0x00811AB5, +0x00000234, +0x00FFF4B7, +0x000008D0, +0x008148A3, +0x000002F5, +0x00FFFB90, +0x00000BC2, +0x00990235, +0x000007B8, +0x00FFFB9B, +0x00000B8F, +0x0099B63A, +0x0000076E, +0x00FFFB83, +0x00000D69, +0x00BEBDFB, +0x00001113, +0x00000011, +0x000005C9, +0x00BF60D5, +0x00000EED, +0x00FFFD82, +0x00000643, +0x00E2E382, +0x0000030D, +0x00000075, +0x00000BBB, +0x00E3A319, +0x00000034, +0x0000011C, +0x00000DBA, +0x00080CD0, +0x000000F6, +0x00FFFD33, +0x00000AE3, +0x000893A9, +0x00000005, +0x00FFFE0E, +0x00000F29, +0x002CE202, +0x00000587, +0x00FFF9BD, +0x000008AF, +0x002D8CC4, +0x00000A14, +0x00FFFA41, +0x00000DA3, +0x0051923A, +0x000001EA, +0x00FFF9DD, +0x00000DFF, +0x00521F3C, +0x000007B6, +0x00FFFBD8, +0x00000F72, +0x00758615, +0x000003B5, +0x00FFFA2A, +0x00000BB4, +0x0075F3CC, +0x000006B2, +0x00FFFC9F, +0x00000EC1, +0x007FFFFE, +0x00FFFA28, +0x00FFFB30, +0x000008BA, +0x007FFFFE, +0x00FFFC3E, +0x00FFFBE6, +0x00000799, +0x007F6E29, +0x00FFFE54, +0x00FFFB7B, +0x0000057C, +0x007F744F, +0x00FFFDF2, +0x00FFFE46, +0x000005EA, +0x007FF76F, +0x00FFF99F, +0x00FFF31C, +0x0000056D, +0x007FF76F, +0x00FFFF1A, +0x00FFF82A, +0x0000087A, +0x007FB362, +0x00FFFEBA, +0x00FFF71F, +0x00FFFF27, +0x007FB690, +0x00FFFF8A, +0x00FFFB18, +0x00000107, +0x007FEEDE, +0x000001DD, +0x00FFF996, +0x000000DE, +0x007FEEDE, +0x0000019C, +0x00FFFA49, +0x00000469, +0x007FC5AC, +0x00000D44, +0x00FFFE32, +0x0000029B, +0x007FC795, +0x00000E1B, +0x00FFFFB5, +0x00000270, +0x007FE64D, +0x0000072C, +0x0000029C, +0x00000924, +0x007FE64C, +0x000007FA, +0x000003A3, +0x000008F0, +0x007FCB2A, +0x00FFFD6E, +0x00FFFCB4, +0x0000043A, +0x007FCC57, +0x0000014C, +0x00FFFEA5, +0x000007A8, +0x007FDDBB, +0x00000BA7, +0x00FFF31C, +0x00FFFF44, +0x007FDDBB, +0x00000D39, +0x00FFF6BB, +0x000002FE, +0x007FCB33, +0x00000AA7, +0x00FFF234, +0x00FFFF61, +0x007FCBE8, +0x00000B02, +0x00FFF64B, +0x000004EC, +0x007FD52A, +0x000007F3, +0x00FFFB6A, +0x00000C9C, +0x007FD52A, +0x000005DF, +0x00FFFDE4, +0x00000BFC, +0x007FC833, +0x00000418, +0x00FFF5BA, +0x00000D9F, +0x007FC89C, +0x0000020D, +0x00FFF5FC, +0x00000ED4, +0x007FCC9A, +0x00000181, +0x00FFFC4B, +0x000005A8, +0x007FCC99, +0x00000348, +0x00FFFE8B, +0x00000658, +0x007FC37D, +0x00FFFD63, +0x00FFF7D4, +0x00000DE6, +0x007FC3BC, +0x0000000C, +0x00FFFAF9, +0x0000103F, +0x007FC409, +0x00000AFC, +0x00FFF651, +0x00000A01, +0x007FC409, +0x00000D88, +0x00FFFA28, +0x00000E21, +0x007FBFC1, +0x00FFFEDC, +0x000002C2, +0x00FFFF3A, +0x007FBFC1, +0x000000C4, +0x0000055B, +0x000004AD, +0x007FBB7A, +0x00000545, +0x00FFFE70, +0x00000570, +0x007FBB79, +0x000002ED, +0x00FFFBC8, +0x0000073D, +0x007FB732, +0x00FFFE3A, +0x00FFFE86, +0x00000A64, +0x007FB731, +0x00FFFB25, +0x000000DD, +0x000008A8, +0x007FB2EA, +0x00FFFAB9, +0x00FFF958, +0x0000082C, +0x007FB2EA, +0x00FFFBEC, +0x00FFFB05, +0x00000775, +0x007FAEA3, +0x0000003C, +0x00FFF2C1, +0x00000807, +0x007FAEA2, +0x00FFFFAF, +0x00FFF690, +0x00000888, +0x007FAA5C, +0x00FFF9A6, +0x00FFF897, +0x00000439, +0x007FAA5B, +0x00FFFC60, +0x00FFFB60, +0x00000801, +0x007FA614, +0x00FFF9CD, +0x00FFF98D, +0x00000B3C, +0x007FA614, +0x00FFF953, +0x00FFF80E, +0x00000EC4, +0x007FA1CD, +0x00000289, +0x00FFF597, +0x000007ED, +0x007FA1CD, +0x0000015F, +0x00FFF58A, +0x000009F8, +0x007F9D87, +0x00000160, +0x00FFF1FD, +0x00000275, +0x007F9D86, +0x0000011B, +0x00FFF33E, +0x000004BD, +0x007F9940, +0x00FFF683, +0x00FFF39C, +0x00000391, +0x007F993F, +0x00FFF5C7, +0x00FFF7C9, +0x000006D9, +0x007F94F9, +0x00FFF79F, +0x00FFF277, +0x0000029B, +0x007F94F9, +0x00FFF7F2, +0x00FFF87F, +0x000007BF, +0x007F90B3, +0x00FFF460, +0x00FFF79E, +0x00000ADA, +0x007F90B2, +0x00FFF554, +0x00FFFA44, +0x00000893, +0x007F8BE6, +0x00FFFE5C, +0x00FFFF78, +0x00000689, +0x007F8BBB, +0x00FFFDDE, +0x00FFFE5D, +0x000004DB, +0x007F8827, +0x0000082D, +0x00FFFC37, +0x00000599, +0x007F8826, +0x000008F3, +0x00FFF876, +0x00000612, +0x007F7CB2, +0x00000282, +0x00FFFD47, +0x00000081, +0x007F7C5A, +0x000001E9, +0x00FFFFE5, +0x00FFFFAD, +0x007F7F9B, +0x00000115, +0x00FFF74C, +0x0000039F, +0x007F7F9B, +0x0000023A, +0x00FFFA5C, +0x000005C9, +0x007F6EA7, +0x00FFFBA2, +0x00FFF9C1, +0x00000665, +0x007F6E15, +0x00FFFE14, +0x00FFFCBF, +0x000007C0, +0x007F7710, +0x0000030A, +0x00FFFF20, +0x0000067F, +0x007F7710, +0x0000007E, +0x00FFFEAE, +0x000009D7, +0x007F5DCF, +0x00FFFFE0, +0x00FFFED8, +0x00000263, +0x007F5CF7, +0x00FFFF2F, +0x00FFFCF7, +0x000003D0, +0x007F6E86, +0x000001B6, +0x00FFFC5D, +0x00000678, +0x007F6E86, +0x000003C8, +0x00FFFE0E, +0x000008CE, +0x007F4883, +0x000002CB, +0x00FFF7D5, +0x0000073D, +0x007F473E, +0x00000504, +0x00FFFD0B, +0x00000915, +0x007F65FD, +0x00FFF9E4, +0x00FFFCCC, +0x00000A30, +0x007F65FD, +0x00FFFCAC, +0x00FFFFF7, +0x00000BF6, +0x007F2B7C, +0x00FFFEE5, +0x00FFF2F6, +0x00000593, +0x007F2978, +0x00FFFE8E, +0x00FFF6E6, +0x000009BC, +0x007F5D75, +0x00FFFD8B, +0x00FFFA1D, +0x00000892, +0x007F5D75, +0x00FFFD10, +0x00FFFC96, +0x000007FF, +0x007EFD86, +0x00FFFED3, +0x00FFFAB7, +0x0000042F, +0x007EF9A8, +0x00FFFB4C, +0x00FFFC30, +0x00000812, +0x007F54F0, +0x00000010, +0x00FFF7FC, +0x00000699, +0x007F54EF, +0x00FFFBFF, +0x00FFFB89, +0x0000081F, +0x007E9640, +0x00000458, +0x00FFF002, +0x00FFFD34, +0x007E8941, +0x0000027D, +0x00FFF616, +0x0000006F, +0x007F4C6D, +0x0000039F, +0x00FFF59B, +0x00FFFD8D, +0x007F4C6E, +0x0000041C, +0x00FFF8D3, +0x00FFFEC2, +0x006DC3CB, +0x00000042, +0x00FFF870, +0x0000024D, +0x006EFD89, +0x00000000, +0x00FFF93B, +0x00000141, +0x0048488E, +0x00000245, +0x00FFFB74, +0x000003DE, +0x0049663A, +0x00FFFFD8, +0x00FFF7AF, +0x000005A1, +0x002526B6, +0x00FFFA9B, +0x00FFF811, +0x000005D5, +0x002654A9, +0x00FFFBE2, +0x00FFFA48, +0x00000873, +0x0000FB10, +0x00FFF2B4, +0x00FFF6D9, +0x00000047, +0x00020D3C, +0x00FFF2D8, +0x00FFF7D4, +0x00000440, +0x00DC9B52, +0x00FFF7F2, +0x00FFEF5E, +0x00000477, +0x00DDD9ED, +0x00FFF647, +0x00FFF3FD, +0x000008C7, +0x00B991D4, +0x00FFF905, +0x00FFF2CA, +0x00000039, +0x00BAAEBA, +0x00FFF79C, +0x00FFF2B0, +0x00000290, +0x00945635, +0x000003C4, +0x00FFFAE1, +0x0000083F, +0x0095A915, +0x0000018A, +0x00FFF9DF, +0x000008B7, +0x00800001, +0x000003F7, +0x00FFF946, +0x000009AE, +0x00800001, +0x00000072, +0x00FFF792, +0x00000AC7, +0x0080AC99, +0x00FFFA97, +0x00FFF8A0, +0x00000563, +0x00809A1A, +0x00FFFBF3, +0x00FFF9E1, +0x00000414, +0x0080088E, +0x00FFF439, +0x00FFF18B, +0x0000013C, +0x0080088E, +0x00FFF5AC, +0x00FFF159, +0x000005B6, +0x008062C3, +0x00000673, +0x00FFF93F, +0x000004E6, +0x00805C46, +0x000008FE, +0x00FFFECA, +0x00000517, +0x0080111E, +0x000003EC, +0x00FFFB3C, +0x0000006B, +0x0080111F, +0x0000049F, +0x00FFFDCA, +0x00FFFEDD, +0x00804893, +0x00000178, +0x00FFFE47, +0x0000082D, +0x00804500, +0x00FFFCB5, +0x00FFFB4E, +0x0000063B, +0x008019AF, +0x00FFFC5B, +0x00FFF56E, +0x000009E4, +0x008019B0, +0x00FFF82E, +0x00FFF601, +0x00000DA7, +0x00803DCE, +0x00FFF544, +0x00FFF3F3, +0x00000278, +0x00803B93, +0x00FFF398, +0x00FFF776, +0x000001BF, +0x00802240, +0x00FFF6FF, +0x00FFF72F, +0x00000795, +0x00802241, +0x00FFF692, +0x00FFFA25, +0x00000688, +0x00803A45, +0x00FFF86C, +0x00FFFAF8, +0x0000083F, +0x008038D4, +0x00FFF93D, +0x00FFFC6B, +0x0000095A, +0x00802AD1, +0x00FFF8A8, +0x00FFFBA3, +0x0000046A, +0x00802AD2, +0x00FFF731, +0x00FFFB97, +0x000007F8, +0x00803AF7, +0x00FFF961, +0x00FFFC7B, +0x00FFFE6D, +0x00803A0C, +0x00FFF6E7, +0x00FFFE78, +0x00FFFDC6, +0x00803362, +0x00000233, +0x00FFFA2B, +0x000004E2, +0x00803363, +0x00000014, +0x00FFFBC0, +0x0000053D, +0x00803E5F, +0x00FFFB46, +0x00FFF8BB, +0x000007EA, +0x00803DD5, +0x0000004F, +0x00FFFC3D, +0x000009DA, +0x00803BF2, +0x00FFFE39, +0x00FFFE37, +0x000005F8, +0x00803BF3, +0x00FFFFC0, +0x00000451, +0x000004AB, +0x00804088, +0x00FFFE00, +0x00000093, +0x00000162, +0x00804043, +0x00FFFCCD, +0x00000041, +0x000004CC, +0x00804482, +0x000006C6, +0x00000445, +0x00000471, +0x00804483, +0x000002E3, +0x0000030E, +0x00000218, +0x008048C9, +0x00000627, +0x00FFFDED, +0x00FFFC92, +0x008048CB, +0x00000449, +0x000000BF, +0x00FFFC0C, +0x00804D11, +0x00FFFEC1, +0x00FFFD53, +0x000004EB, +0x00804D12, +0x00FFFE25, +0x00FFFFE0, +0x000006A5, +0x00805158, +0x00000299, +0x00FFFEAA, +0x0000028B, +0x0080515A, +0x000004CC, +0x00000364, +0x0000060B, +0x008055A0, +0x000006EE, +0x0000012A, +0x000003BB, +0x008055A1, +0x00000606, +0x00000099, +0x00000321, +0x008059E7, +0x000006AA, +0x000003A7, +0x00000F77, +0x008059E8, +0x000001E0, +0x000002EE, +0x00000EB4, +0x00805E2E, +0x000008F9, +0x0000018A, +0x00000F2F, +0x00805E2F, +0x000004F6, +0x0000005F, +0x00000ADA, +0x00806275, +0x0000049C, +0x00FFFD93, +0x00000E3E, +0x00806276, +0x00000448, +0x000000BC, +0x00000E53, +0x008066BB, +0x0000098C, +0x0000068B, +0x00000A44, +0x008066BC, +0x00000AB8, +0x00000868, +0x00000CD0, +0x00806B02, +0x00000455, +0x000005F6, +0x00000B5E, +0x00806B03, +0x00000573, +0x000009CD, +0x00000E68, +0x00806F48, +0x00000880, +0x00000828, +0x000008E5, +0x00806F49, +0x00000587, +0x000007E3, +0x00000A85, +0x008074E6, +0x00000671, +0x0000052C, +0x00000438, +0x008074B5, +0x000001E7, +0x00000489, +0x000006CB, +0x008077D5, +0x00000C32, +0x00000C03, +0x00000271, +0x008077D6, +0x0000080C, +0x0000093D, +0x000000D9, +0x008084C0, +0x00FFFBEC, +0x00000821, +0x000003CC, +0x00808452, +0x00FFF976, +0x0000091F, +0x00000555, +0x00808060, +0x00000049, +0x000003A3, +0x00FFFFD1, +0x00808061, +0x00FFFDF5, +0x00000823, +0x0000059F, +0x008093BA, +0x00000416, +0x0000060A, +0x000005DD, +0x008092F8, +0x000004DE, +0x0000088E, +0x000008A3, +0x008088EB, +0x00000811, +0x0000074D, +0x00000554, +0x008088EC, +0x00000497, +0x000009CE, +0x0000048E, +0x0080A631, +0x000003C4, +0x00000BF5, +0x000006CB, +0x0080A4EF, +0x00FFFEC5, +0x00000B56, +0x000005E8, +0x00809175, +0x0000015C, +0x000008C0, +0x00FFFEA4, +0x00809176, +0x00FFFF2A, +0x00000BFD, +0x000004C0, +0x0080BE08, +0x0000084D, +0x00000941, +0x00000803, +0x0080BC01, +0x00000868, +0x00000B70, +0x00000CCC, +0x008099FE, +0x000009E0, +0x00000435, +0x00000226, +0x008099FF, +0x000006C1, +0x0000068F, +0x000003BF, +0x0080DF40, +0x00000917, +0x00000DA2, +0x00000277, +0x0080DBF7, +0x000006EA, +0x00000E8F, +0x00000373, +0x0080A285, +0x00000B3E, +0x00000B75, +0x0000046B, +0x0080A286, +0x0000070E, +0x00000AFD, +0x00000623, +0x00811564, +0x000009EB, +0x00000D40, +0x000008E4, +0x00810FA9, +0x00000AE1, +0x00000B56, +0x0000095A, +0x0080AB0A, +0x0000033C, +0x000004D0, +0x00FFFD96, +0x0080AB0C, +0x000005FF, +0x00000634, +0x00000311, +0x008198C4, +0x00FFFC78, +0x000005D3, +0x00FFF870, +0x00818AB9, +0x00FFFF0C, +0x000005A0, +0x00FFFA91, +0x0080B38B, +0x00FFFF30, +0x00000D25, +0x00FFFE0C, +0x0080B38D, +0x000000A8, +0x00000D3D, +0x000000C1, +0x008FF53A, +0x000003C2, +0x000008EE, +0x00FFFDB1, +0x0090BEA8, +0x000004D8, +0x000007D9, +0x00FFFE91, +0x00B6500A, +0x000003F4, +0x00000D0C, +0x00000118, +0x00B6F0C6, +0x00000188, +0x00000AB2, +0x000000E4, +0x00DA49CD, +0x00000258, +0x00000C22, +0x00FFFB00, +0x00DADF07, +0x00FFFE6F, +0x00000D71, +0x00FFFB05, +0x00FF91C8, +0x00FFFEC8, +0x000003E6, +0x00000021, +0x00000D35, +0x00FFFD23, +0x0000062F, +0x00000570, +0x00249AE5, +0x00000170, +0x0000083F, +0x00000672, +0x0025346D, +0x00FFFF63, +0x00000909, +0x00000A52, +0x00489A24, +0x00FFFCCD, +0x00000708, +0x00FFFF18, +0x00493D01, +0x00FFFCB2, +0x0000039B, +0x000001B4, +0x006F3402, +0x00FFFB44, +0x000009F6, +0x000000F3, +0x006F98E9, +0x00FFF9D0, +0x00000706, +0x0000057D, +0x007FFFFE, +0x000003AF, +0x00000520, +0x00FFFF2D, +0x007FFFFE, +0x00000163, +0x00000791, +0x00000061, +0x007F0B6E, +0x00000A56, +0x00FFFE91, +0x00FFFC29, +0x007F13C3, +0x00000904, +0x000001D2, +0x000001CD, +0x007FF773, +0x00FFFE37, +0x000002B9, +0x00000198, +0x007FF772, +0x00FFFDF6, +0x00000546, +0x000003FF, +0x007F818E, +0x000003D7, +0x000002E2, +0x00000195, +0x007F85EA, +0x000002B2, +0x000003C6, +0x00000498, +0x007FEEE3, +0x00000421, +0x00000709, +0x00FFF9E2, +0x007FEEE3, +0x000005C9, +0x000006DF, +0x00FFFBE5, +0x007FA7DC, +0x00000038, +0x00000C6F, +0x00FFFF48, +0x007FAA7E, +0x00FFFE39, +0x00000D1F, +0x00FFFE48, +0x007FE653, +0x000002F5, +0x00FFFE98, +0x000001F8, +0x007FE652, +0x000003AC, +0x000002CE, +0x000004A2, +0x007FB89A, +0x00FFFE23, +0x0000006C, +0x00000240, +0x007FBA3F, +0x00FFFD89, +0x000003AF, +0x00000481, +0x007FDDC2, +0x000006B3, +0x000003A4, +0x00FFFEF7, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF +}; + + +uint32_t sineData_4ch[] = +{ +0x008040B8, +0x00000213, +0x008040F2, +0x008040DE, +0x00804480, +0x00804481, +0x00804480, +0x00804480, +0x00804481, +0x00FFFFA2, +0x00804480, +0x00804480, +0x008048C8, +0x008048C9, +0x008048C7, +0x008048C7, +0x008048C9, +0x00FFFB14, +0x008048C7, +0x008048C8, +0x00804D0F, +0x00804D11, +0x00804D0F, +0x00804D0F, +0x00804D10, +0x00FFF57E, +0x00804D0F, +0x00804D0F, +0x00805157, +0x00805158, +0x00805156, +0x00805156, +0x00805158, +0x00FFFB83, +0x00805156, +0x00805157, +0x0080559E, +0x0080559F, +0x0080559E, +0x0080559E, +0x0080559F, +0x00FFE3FC, +0x0080559E, +0x0080559E, +0x008059E5, +0x008059E6, +0x008059E5, +0x008059E5, +0x008059E6, +0x00FFF1BE, +0x008059E5, +0x008059E5, +0x00805E2C, +0x00805E2D, +0x00805E2C, +0x00805E2C, +0x00805E2D, +0x00FFF5C2, +0x00805E2C, +0x00805E2C, +0x00806273, +0x00806274, +0x00806273, +0x00806273, +0x00806274, +0x00FFFB64, +0x00806273, +0x00806273, +0x008066BA, +0x008066BB, +0x008066B9, +0x008066B9, +0x008066BA, +0x000005AA, +0x008066B9, +0x008066BA, +0x00806B00, +0x00806B01, +0x00806B00, +0x00806B00, +0x00806B01, +0x00FFF9E6, +0x00806B00, +0x00806B00, +0x00806F47, +0x00806F48, +0x00806F46, +0x00806F46, +0x00806F47, +0x00000E25, +0x00806F46, +0x00806F46, +0x0080738D, +0x0080745F, +0x0080739D, +0x0080738C, +0x0080738E, +0x00000E56, +0x0080738D, +0x008073A6, +0x008077D3, +0x008077D4, +0x008077D3, +0x008077D3, +0x008077D4, +0x000015C3, +0x008077D3, +0x008077D3, +0x0080816E, +0x008083C2, +0x00808260, +0x008081F9, +0x008080E6, +0x00000051, +0x008081E2, +0x00808279, +0x0080805F, +0x00808060, +0x0080805E, +0x0080805E, +0x0080805F, +0x00000C55, +0x0080805E, +0x0080805E, +0x00808E18, +0x00809208, +0x00808FC5, +0x00808F21, +0x00808D2F, +0x00000CC2, +0x00808EF8, +0x00808FF1, +0x008088EA, +0x008088EB, +0x008088E9, +0x008088E9, +0x008088EA, +0x00000992, +0x008088E9, +0x008088E9, +0x00809D09, +0x0080A360, +0x00809FCC, +0x00809EBB, +0x00809B8B, +0x00000D25, +0x00809E83, +0x0080A006, +0x00809174, +0x00809175, +0x00809173, +0x00809173, +0x00809175, +0x000012EF, +0x00809173, +0x00809173, +0x0080AF6D, +0x0080B976, +0x0080B3DE, +0x0080B224, +0x0080AD06, +0x00000E6B, +0x0080B1D6, +0x0080B42E, +0x008099FD, +0x008099FD, +0x008099FC, +0x008099FC, +0x008099FE, +0x0000099C, +0x008099FC, +0x008099FD, +0x0080C78F, +0x0080D7D0, +0x0080CEC9, +0x0080CBF8, +0x0080C3A7, +0x00FFFD7C, +0x0080CB7B, +0x0080CF44, +0x0080A285, +0x0080A285, +0x0080A284, +0x0080A284, +0x0080A286, +0x00FFFB08, +0x0080A285, +0x0080A284, +0x0080EB41, +0x00810865, +0x0080F80C, +0x0080F318, +0x0080E449, +0x000005AE, +0x0080F202, +0x0080F903, +0x0080AB0C, +0x0080AB0B, +0x0080AB0A, +0x0080AB0B, +0x0080AB0D, +0x00FFFFB4, +0x0080AB0B, +0x0080AB0B, +0x00812A5C, +0x008178E2, +0x00814B72, +0x00813F4B, +0x00811810, +0x0000145E, +0x00813A70, +0x00814F41, +0x0080B390, +0x0080B38C, +0x0080B38E, +0x0080B38E, +0x0080B664, +0x00FFF809, +0x0080B38F, +0x0080B38E, +0x00960FF1, +0x009183AA, +0x00942078, +0x00947E5E, +0x00972D34, +0x00000047, +0x00952D32, +0x0093BAD0, +0x00BB8962, +0x00B77984, +0x00B97345, +0x00B98068, +0x00BC7D2E, +0x00FFFE84, +0x00BA26C4, +0x00B8F8B2, +0x00DF2388, +0x00DAFC28, +0x00DCCE99, +0x00DCB6E5, +0x00E01954, +0x00FFF159, +0x00DD6545, +0x00DC3C88, +0x0003E62E, +0x00FFF299, +0x000127BE, +0x0000CE7E, +0x0004C770, +0x00FFFE9E, +0x00018FC9, +0x00008D33, +0x00287B73, +0x0024AC3E, +0x0025AA3A, +0x0024F9D5, +0x0029533B, +0x00FFFC51, +0x0025C4BE, +0x0024D87A, +0x004BE8E8, +0x00482159, +0x0048C1C2, +0x0047DCCA, +0x004CD734, +0x00FFF959, +0x00489EC3, +0x0047E00C, +0x00716065, +0x006E57D0, +0x006E8977, +0x006D4C5C, +0x00720B1E, +0x00FFF929, +0x006E1BD7, +0x006D8CEC, +0x007FFFFE, +0x007FFFFE, +0x007FFFFE, +0x007FFFFE, +0x007FFFFE, +0x000001FB, +0x007FFFFE, +0x007FFFFE, +0x007F3594, +0x007F2988, +0x007F2BC5, +0x007F3EB9, +0x007F3F69, +0x00FFFA53, +0x007F33E3, +0x007F3A44, +0x007FF771, +0x007FF772, +0x007FF772, +0x007FF771, +0x007FF771, +0x00FFF464, +0x007FF771, +0x007FF771, +0x007F9787, +0x007F8ECD, +0x007F902E, +0x007F9711, +0x007F9C75, +0x00FFF77E, +0x007F9346, +0x007F9552, +0x007FEEE1, +0x007FEEE2, +0x007FEEE2, +0x007FEEE1, +0x007FEEE1, +0x00FFED98, +0x007FEEE1, +0x007FEEE1, +0x007FB512, +0x007FAF96, +0x007FB061, +0x007FB42F, +0x007FB802, +0x00FFFC23, +0x007FB21A, +0x007FB338, +0x007FE650, +0x007FE651, +0x007FE651, +0x007FE650, +0x007FE650, +0x00FFF6DA, +0x007FE650, +0x007FE650, +0x007FC0C1, +0x007FBD65, +0x007FBDCD, +0x007FC020, +0x007FC294, +0x00FFF76F, +0x007FBED7, +0x007FBF90, +0x007FDDBF, +0x007FDDC0, +0x007FDDC0, +0x007FDDBF, +0x007FDDBE, +0x00FFEAD2, +0x007FDDBF, +0x007FDDBF, +0x007FC4AD, +0x007FC2B2, +0x007FC2DD, +0x007FC451, +0x007FC5CC, +0x00FFFEEE, +0x007FC37F, +0x007FC3FE, +0x007FD52E, +0x007FD52F, +0x007FD52F, +0x007FD52E, +0x007FD52E, +0x00FFDF57, +0x007FD52F, +0x007FD52E, +0x007FC43A, +0x007FC321, +0x007FC32C, +0x007FC411, +0x007FC4E5, +0x00000753, +0x007FC38C, +0x007FC3E2, +0x007FCC9E, +0x007FCC9F, +0x007FCC9F, +0x007FCC9D, +0x007FCC9D, +0x00FFE8C6, +0x007FCC9E, +0x007FCC9E, +0x007FC122, +0x007FC074, +0x007FC081, +0x007FC10C, +0x007FC189, +0x00000617, +0x007FC0C0, +0x007FC0EF, +0x007FC40E, +0x007FC40F, +0x007FC40E, +0x007FC40D, +0x007FC40D, +0x00FFE4CA, +0x007FC40E, +0x007FC40E, +0x007FBF3E, +0x007FBECC, +0x007FBEDD, +0x007FBF26, +0x007FBF7D, +0x00FFED2F, +0x007FBF02, +0x007FBF15, +0x007FBB7E, +0x007FBB7F, +0x007FBB7F, +0x007FBB7D, +0x007FBB7D, +0x00FFEA04, +0x007FBB7E, +0x007FBB7E, +0x007FB736, +0x007FB737, +0x007FB737, +0x007FB736, +0x007FB735, +0x00FFFC71, +0x007FB736, +0x007FB736, +0x007FB2EE, +0x007FB2F0, +0x007FB2EF, +0x007FB2EE, +0x007FB2EE, +0x00FFEE54, +0x007FB2EF, +0x007FB2EF, +0x007FAEA7, +0x007FAEA8, +0x007FAEA8, +0x007FAEA7, +0x007FAEA6, +0x00FFEB0F, +0x007FAEA7, +0x007FAEA7, +0x007FAA60, +0x007FAA61, +0x007FAA61, +0x007FAA60, +0x007FAA5F, +0x00FFEBED, +0x007FAA60, +0x007FAA60, +0x007FA619, +0x007FA61A, +0x007FA61A, +0x007FA618, +0x007FA618, +0x00FFFDA7, +0x007FA619, +0x007FA619, +0x007FA1D2, +0x007FA1D3, +0x007FA1D3, +0x007FA1D1, +0x007FA1D1, +0x00FFF8D2, +0x007FA1D2, +0x007FA1D2, +0x007F9D8B, +0x007F9D8C, +0x007F9D8C, +0x007F9D8B, +0x007F9D8A, +0x00FFFCDD, +0x007F9D8B, +0x007F9D8B, +0x007F9944, +0x007F9945, +0x007F9945, +0x007F9944, +0x007F9943, +0x00FFFC71, +0x007F9945, +0x007F9944, +0x007F94FE, +0x007F94FF, +0x007F94FE, +0x007F94FD, +0x007F94FD, +0x000005CF, +0x007F94FE, +0x007F94FE, +0x007F90B7, +0x007F90B8, +0x007F90B8, +0x007F90B7, +0x007F90B6, +0x00000E44, +0x007F90B8, +0x007F90B7, +0x007F8BAC, +0x007F8C72, +0x007F8C72, +0x007F8C71, +0x007F8BCF, +0x00000280, +0x007F8C71, +0x007F8C71, +0x007F882B, +0x007F882C, +0x007F882C, +0x007F882B, +0x007F882A, +0x00000323, +0x007F882B, +0x007F882B, +0x007F7C23, +0x007F7DC7, +0x007F7DB9, +0x007F7E76, +0x007F7C59, +0x0000130C, +0x007F7E39, +0x007F7E25, +0x007F7F9F, +0x007F7FA0, +0x007F7FA0, +0x007F7F9F, +0x007F7F9E, +0x0000056B, +0x007F7FA0, +0x007F7F9F, +0x007F6DA5, +0x007F706C, +0x007F7045, +0x007F717C, +0x007F6DFC, +0x00FFFF5D, +0x007F7118, +0x007F70FE, +0x007F7714, +0x007F7715, +0x007F7715, +0x007F7714, +0x007F7714, +0x000013BD, +0x007F7715, +0x007F7714, +0x007F5C73, +0x007F60A8, +0x007F6082, +0x007F6279, +0x007F5D09, +0x00001460, +0x007F61E1, +0x007F61AC, +0x007F6E8A, +0x007F6E8B, +0x007F6E8B, +0x007F6E8A, +0x007F6E8A, +0x00000056, +0x007F6E8B, +0x007F6E8A, +0x007F46AA, +0x007F4D05, +0x007F4CEA, +0x007F5008, +0x007F47A1, +0x00000497, +0x007F4F25, +0x007F4EC2, +0x007F6602, +0x007F6602, +0x007F6602, +0x007F6601, +0x007F6601, +0x00FFEA1F, +0x007F6601, +0x007F6601, +0x007F28B3, +0x007F32C1, +0x007F32BA, +0x007F37C9, +0x007F2A45, +0x00FFF450, +0x007F365D, +0x007F35B4, +0x007F5D7A, +0x007F5D7A, +0x007F5D7A, +0x007F5D78, +0x007F5D79, +0x00FFEF5A, +0x007F5D79, +0x007F5D79, +0x007EF7DA, +0x007F0A59, +0x007F0A4E, +0x007F1369, +0x007EFA77, +0x00FFF6F3, +0x007F10B4, +0x007F0F9B, +0x007F54F4, +0x007F54F4, +0x007F54F4, +0x007F54F2, +0x007F54F3, +0x00FFF549, +0x007F54F3, +0x007F54F2, +0x007E7F28, +0x007EB6C1, +0x007EB599, +0x007ECE1B, +0x007E83CE, +0x00FFEC55, +0x007EC550, +0x007EC391, +0x007F4C73, +0x007F4C71, +0x007F4C70, +0x007F4C6E, +0x007F4C72, +0x00FFDB8A, +0x007F4C6F, +0x007F4C6F, +0x007068D0, +0x006C72D9, +0x006CA9BE, +0x006B6D81, +0x00711F84, +0x00FFEB24, +0x006C1A57, +0x006BF327, +0x004B47EB, +0x0047CF5E, +0x004839B6, +0x00476626, +0x004C426C, +0x000003BA, +0x00481202, +0x00479C0D, +0x0028CBC0, +0x0024DC57, +0x0025A661, +0x0024F1FF, +0x0029B5FC, +0x00FFE875, +0x0025AFDA, +0x00252932, +0x0004D1E4, +0x0001117E, +0x000231E2, +0x0001ABF9, +0x0005D1EF, +0x0000134D, +0x00026A92, +0x0001A8DB, +0x00E161A4, +0x00DD1488, +0x00DEC553, +0x00DE92D1, +0x00E25EF5, +0x00FFF123, +0x00DF3B50, +0x00DE62E4, +0x00BE3B21, +0x00BA50E0, +0x00BC11E0, +0x00BC05EF, +0x00BF3D1A, +0x0000276A, +0x00BCB265, +0x00BBC8B0, +0x009A3293, +0x009578E7, +0x0097F6E7, +0x00984E33, +0x009B4FC2, +0x00FFFB93, +0x0098F51D, +0x0097B8E4, +0x00800001, +0x00800001, +0x00800001, +0x00800001, +0x00801B99, +0x000006FC, +0x00800001, +0x00800001, +0x00800001, +0x008098F6, +0x00805CFB, +0x00803034, +0x00800001, +0x00000A62, +0x00800001, +0x00805E9A, +0x00800001, +0x0080088E, +0x00800001, +0x00800001, +0x00800001, +0x00FFFD2B, +0x00800001, +0x00800001, +0x00803839, +0x00805B19, +0x008042CE, +0x00803E29, +0x0080318D, +0x00FFFB5F, +0x00803A77, +0x0080419A, +0x00800892, +0x0080111F, +0x00800891, +0x00800891, +0x00800892, +0x00000A27, +0x00800892, +0x00800891, +0x00802D4C, +0x00804446, +0x00803315, +0x0080306E, +0x0080299F, +0x00000F00, +0x00802E66, +0x0080324D, +0x00801124, +0x008019B0, +0x00801123, +0x00801124, +0x00801124, +0x0000056E, +0x00801124, +0x00801123, +0x008029A1, +0x00803B35, +0x00802D4D, +0x00802BB1, +0x0080275F, +0x00FFFE1B, +0x00802A6C, +0x00802CD3, +0x008019B6, +0x00802241, +0x008019B5, +0x008019B5, +0x008019B6, +0x00FFF1D8, +0x008019B6, +0x008019B5, +0x00802A46, +0x008038B1, +0x00802CB7, +0x00802BBC, +0x008028DA, +0x00FFF8E2, +0x00802AEB, +0x00802C72, +0x00802248, +0x00802AD2, +0x00802247, +0x00802247, +0x00802248, +0x00FFF61B, +0x00802247, +0x00802247, +0x00802DB2, +0x00803A09, +0x00802F50, +0x00802EBC, +0x00802CD0, +0x00FFFBAF, +0x00802E34, +0x00802F2B, +0x00802AD9, +0x00803363, +0x00802AD8, +0x00802AD8, +0x00802AD9, +0x00FFF6B7, +0x00802AD9, +0x00802AD8, +0x008032FF, +0x00803DCE, +0x008033EE, +0x00803392, +0x00803279, +0x00FFF774, +0x00803343, +0x008033D9, +0x0080336A, +0x00803BF3, +0x00803369, +0x00803369, +0x0080336A, +0x00FFE73D, +0x0080336A, +0x00803369, +0x008037B2, +0x0080403C, +0x008037B1, +0x008037B2, +0x008037B3, +0x000000D5, +0x008037B2, +0x008037B1, +0x00803BFA, +0x00804483, +0x00803BF9, +0x00803BFA, +0x00803BFB, +0x00FFEFC2, +0x00803BFA, +0x00803BF9, +0x00804042, +0x008048CB, +0x00804041, +0x00804042, +0x00804043, +0x00001311, +0x00804042, +0x00804041, +0x0080448A, +0x00804D12, +0x00804489, +0x0080448A, +0x0080448B, +0x00FFECA8, +0x0080448A, +0x00804489, +0x008048D2, +0x0080515A, +0x008048D1, +0x008048D1, +0x008048D2, +0x00000727, +0x008048D2, +0x008048D1, +0x00804D19, +0x008055A1, +0x00804D18, +0x00804D19, +0x00804D1A, +0x00FFDD29, +0x00804D19, +0x00804D19, +0x00805161, +0x008059E8, +0x00805160, +0x00805160, +0x00805161, +0x00001049, +0x00805160, +0x00805160, +0x008055A8, +0x00805E2F, +0x008055A7, +0x008055A7, +0x008055A8, +0x000016C3, +0x008055A8, +0x008055A7, +0x008059EF, +0x00806276, +0x008059EE, +0x008059EF, +0x008059F0, +0x000000DA, +0x008059EF, +0x008059EE, +0x00805E36, +0x008066BD, +0x00805E35, +0x00805E36, +0x00805E37, +0x00000D8E, +0x00805E36, +0x00805E35, +0x0080627D, +0x00806B03, +0x0080627C, +0x0080627C, +0x0080627D, +0x00FFF877, +0x0080627D, +0x0080627C, +0x008066C4, +0x00806F4A, +0x008066C3, +0x008066C3, +0x008066C4, +0x0000013C, +0x008066C3, +0x008066C3, +0x00806BAE, +0x00807390, +0x00806B16, +0x00806B34, +0x00806BF0, +0x00000B4D, +0x00806B51, +0x00806B09, +0x00806F51, +0x008077D6, +0x00806F50, +0x00806F50, +0x00806F51, +0x00FFEEFE, +0x00806F50, +0x00806F50, +0x00807B22, +0x008081A9, +0x00807A26, +0x00807A62, +0x00807B91, +0x00FFFDBB, +0x00807A8C, +0x00807A0F, +0x008077DD, +0x00808062, +0x008077DC, +0x008077DC, +0x008077DD, +0x00FFEDCF, +0x008077DD, +0x008077DC, +0x0080896E, +0x00808EA4, +0x008087D1, +0x00808844, +0x00808A2B, +0x00FFE773, +0x0080887C, +0x008087B1, +0x00808068, +0x008088EC, +0x00808067, +0x00808068, +0x00808069, +0x00FFEFA3, +0x00808068, +0x00808067, +0x00809A91, +0x00809D9E, +0x008097CF, +0x00809883, +0x00809BD0, +0x00FFE855, +0x008098DB, +0x00809793, +0x008088F3, +0x00809177, +0x008088F2, +0x008088F2, +0x008088F3, +0x00FFEBE7, +0x008088F3, +0x008088F2, +0x0080B052, +0x0080B011, +0x0080ABC9, +0x0080ACDB, +0x0080B258, +0x00FFECB6, +0x0080AD65, +0x0080AB5F, +0x0080917C, +0x00809A00, +0x0080917C, +0x0080917C, +0x0080917C, +0x00FFFC15, +0x0080917C, +0x0080917C, +0x0080CE3A, +0x0080C8B5, +0x0080C6E0, +0x0080C87F, +0x0080D17E, +0x00FFF1A3, +0x0080C963, +0x0080C62A, +0x00809A04, +0x0080A288, +0x00809A04, +0x00809A04, +0x00809A05, +0x00001073, +0x00809A04, +0x00809A04, +0x0080FEAB, +0x0080EFA2, +0x0080F263, +0x0080F4FF, +0x0081041D, +0x00FFFC15, +0x0080F6A2, +0x0080F126, +0x0080A28B, +0x0080AB0E, +0x0080A28B, +0x0080A28B, +0x0080A28B, +0x00000831, +0x0080A28B, +0x0080A28B, +0x00817510, +0x00814E15, +0x00815D36, +0x00816239, +0x00817FCC, +0x00FFFCB9, +0x00816652, +0x00815AA2, +0x0080AB0D, +0x0080B392, +0x0080AB0E, +0x0080AB0E, +0x0080AB0C, +0x0000014A, +0x0080AB0E, +0x0080AB0E, +0x008E1CFB, +0x008ABDEE, +0x008CA8B5, +0x008CF15F, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF, +0xFFFFFFFF +}; diff --git a/realtime_demo_bios/k2g/src/test_exit.c b/realtime_demo_bios/k2g/src/test_exit.c new file mode 100644 index 0000000..f24c3f6 --- /dev/null +++ b/realtime_demo_bios/k2g/src/test_exit.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2015, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** +* +* \file test_exit.c +* +* \brief This file implements the routines used to exit the diagnostic tests +* which are loaded dynamically from SD card +* +******************************************************************************/ + +/** + * \brief Below are the shared memory locations used by diagnostic test + * framework standalone test modules + */ +/** Memory location to store test exit address */ +#define DIAG_TEST_EXIT_ADDR (0x0c0e0100) +/** Memory location to store test pass count */ +#define DIAG_TEST_PASS_PTR (0x0c0e0104) +/** Memory location to store test fail count */ +#define DIAG_TEST_FAIL_PTR (0x0c0e0108) + +/**< Function pointer for test exit */ +void (*pFnTestExit)(void); + +/** + * \brief Function to exit the test + * + * This function should be called by standalone diagnostic + * tests at the end of the test to return to diagnostic test framework + * + * \param result [IN] Test result + * 0 - Test Pass + * 1 - Test Fail + * + */ +void testExit(int result) +{ + unsigned int exitPoint = *(unsigned int *)DIAG_TEST_EXIT_ADDR; + unsigned int *pTestPass = (unsigned int *)(*(unsigned int *)DIAG_TEST_PASS_PTR); + unsigned int *pTestFail = (unsigned int *)(*(unsigned int *)DIAG_TEST_FAIL_PTR);; + + if(result) + { + (*pTestFail)++; + } + else + { + (*pTestPass)++; + } + + /* Jump to test exit function in diagnostic test framework */ + pFnTestExit = (void (*)(void))exitPoint; + pFnTestExit(); +} + +/* Nothing past this point */ diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/Platform.xdc b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/Platform.xdc new file mode 100644 index 0000000..c802ece --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/Platform.xdc @@ -0,0 +1,58 @@ +/*! + * File generated by platform wizard. DO NOT MODIFY + * + */ + +metaonly module Platform inherits xdc.platform.IPlatform { + + config ti.platforms.generic.Platform.Instance CPU = + ti.platforms.generic.Platform.create("CPU", { + clockRate: 600, + catalogName: "ti.catalog.c6000", + deviceName: "TCI66AK2G02", + customMemoryMap: + [ + ["MSMCSRAM", + { + name: "MSMCSRAM", + base: 0x0c000000, + len: 0x00100000, + space: "code/data", + access: "RWX", + } + ], + ["L2SRAM", + { + name: "L2SRAM", + base: 0x00800000, + len: 0x00100000, + space: "code/data", + access: "RWX", + } + ], + ["EXT_RAM", + { + name: "EXT_RAM", + base: 0x80000000, + len: 0x20000000, + space: "code/data", + access: "RWX", + } + ], + ], + l2Mode: "0k", + l1PMode: "32k", + l1DMode: "32k", + + }); + +instance : + + override config string codeMemory = "L2SRAM"; + override config string dataMemory = "L2SRAM"; + override config string stackMemory = "L2SRAM"; + + config String l2Mode = "0k"; + config String l1PMode = "32k"; + config String l1DMode = "32k"; +} diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/Platform.xs b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/Platform.xs new file mode 100644 index 0000000..154b58c --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/Platform.xs @@ -0,0 +1,33 @@ +/*! + * File generated by platform wizard. DO NOT MODIFY. + * + */ + +function getCpuDataSheet(cpuId) +{ + return this.$module.CPU.getCpuDataSheet(cpuId); +} + +function getCreateArgs() +{ + return this.$module.CPU; +} + +function getExeContext(prog) +{ + return this.$module.CPU.getExeContext(prog); +} + + +function getExecCmd(prog) +{ + return this.$module.CPU.getExecCmd(prog); +} + + +function getLinkTemplate(prog) +{ + return this.$module.CPU.getLinkTemplate(prog); +} + + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/config.bld b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/config.bld new file mode 100644 index 0000000..8e7032b --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/config.bld @@ -0,0 +1,6 @@ +/*! + * File generated by platform wizard. DO NOT MODIFY + * + */ + +Build.useTargets = null; diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom.zip b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom.zip new file mode 100644 index 0000000..6240cf0 Binary files /dev/null and b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom.zip differ diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.bld b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.bld new file mode 100644 index 0000000..2b778b0 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.bld @@ -0,0 +1,9 @@ +/*! + * File generated by platform wizard. DO NOT MODIFY. + * + */ + +Pkg.attrs.archiver = "zip"; +Pkg.attrs.exportAll = true; + + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.mak b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.mak new file mode 100644 index 0000000..a3f95bd --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.mak @@ -0,0 +1,161 @@ +# +# Do not edit this file. This file is generated from +# package.bld. Any modifications to this file will be +# overwritten whenever makefiles are re-generated. +# + +unexport MAKEFILE_LIST +MK_NOGENDEPS := $(filter clean,$(MAKECMDGOALS)) +override PKGDIR = evmTCI66AK2G02Custom +XDCINCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\$(space),$(XPKGPATH)))) +XDCCFGDIR = package/cfg/ + +# +# The following dependencies ensure package.mak is rebuilt +# in the event that some included BOM script changes. +# +ifneq (clean,$(MAKECMDGOALS)) +C:/ti/xdctools_3_32_00_06_core/packages/xdc/utils.js: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/utils.js +C:/ti/xdctools_3_32_00_06_core/packages/xdc/xdc.tci: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/xdc.tci +C:/ti/xdctools_3_32_00_06_core/packages/xdc/template.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/template.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/om2.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/om2.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/xmlgen.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/xmlgen.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/xmlgen2.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/xmlgen2.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/Warnings.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/Warnings.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/IPackage.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/IPackage.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/package.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/package.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/global/Clock.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/global/Clock.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/global/Trace.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/global/Trace.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/bld.js: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/bld.js +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/BuildEnvironment.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/BuildEnvironment.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/PackageContents.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/PackageContents.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/_gen.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/_gen.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Library.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Library.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Executable.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Executable.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Repository.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Repository.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Configuration.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Configuration.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Script.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Script.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Manifest.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Manifest.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Utils.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/Utils.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITarget.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITarget.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITarget2.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITarget2.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITarget3.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITarget3.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITargetFilter.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/ITargetFilter.xs +C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/package.xs: +package.mak: C:/ti/xdctools_3_32_00_06_core/packages/xdc/bld/package.xs +package.mak: config.bld +package.mak: package.bld +endif + + +all: .executables +.executables: .libraries .dlls +.libraries: .interfaces + +PKGCFGS := $(wildcard package.xs) package/build.cfg +.interfaces: package/package.xdc.inc package/package.defs.h package.xdc $(PKGCFGS) + +-include package/package.xdc.dep +package/%.xdc.inc package/%_evmTCI66AK2G02Custom.c package/%.defs.h: %.xdc $(PKGCFGS) + @$(MSG) generating interfaces for package evmTCI66AK2G02Custom" (because $@ is older than $(firstword $?))" ... + $(XSRUN) -f xdc/services/intern/cmd/build.xs $(MK_IDLOPTS) -m package/package.xdc.dep -i package/package.xdc.inc package.xdc + +ifeq (,$(MK_NOGENDEPS)) +-include package/package.cfg.dep +endif + +package/package.cfg.xdc.inc: .interfaces $(XDCROOT)/packages/xdc/cfg/cfginc.js package.xdc + @$(MSG) generating schema include file list ... + $(CONFIG) -f $(XDCROOT)/packages/xdc/cfg/cfginc.js evmTCI66AK2G02Custom $@ + +test:; +%,copy: + @$(if $<,,$(MSG) don\'t know how to build $*; exit 1) + @$(MSG) cp $< $@ + $(RM) $@ + $(CP) $< $@ + +$(XDCCFGDIR)%.c $(XDCCFGDIR)%.h $(XDCCFGDIR)%.xdl: $(XDCCFGDIR)%.cfg $(XDCROOT)/packages/xdc/cfg/Main.xs | .interfaces + @$(MSG) "configuring $(_PROG_NAME) from $< ..." + $(CONFIG) $(_PROG_XSOPTS) xdc.cfg $(_PROG_NAME) $(XDCCFGDIR)$*.cfg $(XDCCFGDIR)$* + +.PHONY: release,evmTCI66AK2G02Custom +ifeq (,$(MK_NOGENDEPS)) +-include package/rel/evmTCI66AK2G02Custom.zip.dep +endif +package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml: package/package.bld.xml +package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml: package/build.cfg +package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml: package/package.xdc.inc +package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml: package/package.cfg.xdc.inc +package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml: .force + @$(MSG) generating external release references $@ ... + $(XS) $(JSENV) -f $(XDCROOT)/packages/xdc/bld/rel.js $(MK_RELOPTS) . $@ + +evmTCI66AK2G02Custom.zip: package/rel/evmTCI66AK2G02Custom.xdc.inc package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml + @$(MSG) making release file $@ "(because of $(firstword $?))" ... + -$(RM) $@ + $(call MKRELZIP,package/rel/evmTCI66AK2G02Custom.xdc.inc,package/rel/evmTCI66AK2G02Custom.zip.dep) + + +release release,evmTCI66AK2G02Custom: all evmTCI66AK2G02Custom.zip +clean:: .clean + -$(RM) evmTCI66AK2G02Custom.zip + -$(RM) package/rel/evmTCI66AK2G02Custom.xdc.inc + -$(RM) package/rel/evmTCI66AK2G02Custom.zip.dep + +clean:: .clean + -$(RM) .libraries $(wildcard .libraries,*) +clean:: + -$(RM) .dlls $(wildcard .dlls,*) +# +# The following clean rule removes user specified +# generated files or directories. +# + +ifneq (clean,$(MAKECMDGOALS)) +ifeq (,$(wildcard package)) + $(shell $(MKDIR) package) +endif +ifeq (,$(wildcard package/cfg)) + $(shell $(MKDIR) package/cfg) +endif +ifeq (,$(wildcard package/lib)) + $(shell $(MKDIR) package/lib) +endif +ifeq (,$(wildcard package/rel)) + $(shell $(MKDIR) package/rel) +endif +ifeq (,$(wildcard package/internal)) + $(shell $(MKDIR) package/internal) +endif +endif +clean:: + -$(RMDIR) package + + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.xdc b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.xdc new file mode 100644 index 0000000..c1c1d35 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package.xdc @@ -0,0 +1,9 @@ +/*! + * File generated by platform wizard. DO NOT MODIFY. + * + */ + +package evmTCI66AK2G02Custom { + module Platform; +} + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.vers_b160 b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.vers_b160 new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.vers_g180 b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.vers_g180 new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.vers_r170 b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.vers_r170 new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.xdc-B06 b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/.xdc-B06 new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/build.cfg b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/build.cfg new file mode 100644 index 0000000..5ec1eb1 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/build.cfg @@ -0,0 +1,9 @@ +if (pkg.$vers.length >= 3) { + pkg.$vers.push(Packages.xdc.services.global.Vers.getDate(xdc.csd() + '/..')); +} + +pkg.build.libraries = [ +]; + +pkg.build.libDesc = [ +]; diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.ccs b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.ccs new file mode 100644 index 0000000..1e56d34 Binary files /dev/null and b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.ccs differ diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.class b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.class new file mode 100644 index 0000000..b8c2fd1 Binary files /dev/null and b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.class differ diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.java b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.java new file mode 100644 index 0000000..cfe6351 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.java @@ -0,0 +1,365 @@ +/* + * Do not modify this file; it is automatically + * generated and any modifications will be overwritten. + * + * @(#) xdc-B06 + */ +import java.util.*; +import org.mozilla.javascript.*; +import xdc.services.intern.xsr.*; +import xdc.services.spec.Session; + +public class evmTCI66AK2G02Custom +{ + static final String VERS = "@(#) xdc-B06\n"; + + static final Proto.Elm $$T_Bool = Proto.Elm.newBool(); + static final Proto.Elm $$T_Num = Proto.Elm.newNum(); + static final Proto.Elm $$T_Str = Proto.Elm.newStr(); + static final Proto.Elm $$T_Obj = Proto.Elm.newObj(); + + static final Proto.Fxn $$T_Met = new Proto.Fxn(null, null, 0, -1, false); + static final Proto.Map $$T_Map = new Proto.Map($$T_Obj); + static final Proto.Arr $$T_Vec = new Proto.Arr($$T_Obj); + + static final XScriptO $$DEFAULT = Value.DEFAULT; + static final Object $$UNDEF = Undefined.instance; + + static final Proto.Obj $$Package = (Proto.Obj)Global.get("$$Package"); + static final Proto.Obj $$Module = (Proto.Obj)Global.get("$$Module"); + static final Proto.Obj $$Instance = (Proto.Obj)Global.get("$$Instance"); + static final Proto.Obj $$Params = (Proto.Obj)Global.get("$$Params"); + + static final Object $$objFldGet = Global.get("$$objFldGet"); + static final Object $$objFldSet = Global.get("$$objFldSet"); + static final Object $$proxyGet = Global.get("$$proxyGet"); + static final Object $$proxySet = Global.get("$$proxySet"); + static final Object $$delegGet = Global.get("$$delegGet"); + static final Object $$delegSet = Global.get("$$delegSet"); + + Scriptable xdcO; + Session ses; + Value.Obj om; + + boolean isROV; + boolean isCFG; + + Proto.Obj pkgP; + Value.Obj pkgV; + + ArrayList imports = new ArrayList(); + ArrayList loggables = new ArrayList(); + ArrayList mcfgs = new ArrayList(); + ArrayList icfgs = new ArrayList(); + ArrayList inherits = new ArrayList(); + ArrayList proxies = new ArrayList(); + ArrayList sizes = new ArrayList(); + ArrayList tdefs = new ArrayList(); + + void $$IMPORTS() + { + Global.callFxn("loadPackage", xdcO, "xdc"); + Global.callFxn("loadPackage", xdcO, "xdc.corevers"); + Global.callFxn("loadPackage", xdcO, "xdc.platform"); + Global.callFxn("loadPackage", xdcO, "ti.platforms.generic"); + } + + void $$OBJECTS() + { + pkgP = (Proto.Obj)om.bind("evmTCI66AK2G02Custom.Package", new Proto.Obj()); + pkgV = (Value.Obj)om.bind("evmTCI66AK2G02Custom", new Value.Obj("evmTCI66AK2G02Custom", pkgP)); + } + + void Platform$$OBJECTS() + { + Proto.Obj po, spo; + Value.Obj vo; + + po = (Proto.Obj)om.bind("evmTCI66AK2G02Custom.Platform.Module", new Proto.Obj()); + vo = (Value.Obj)om.bind("evmTCI66AK2G02Custom.Platform", new Value.Obj("evmTCI66AK2G02Custom.Platform", po)); + pkgV.bind("Platform", vo); + // decls + om.bind("evmTCI66AK2G02Custom.Platform.Board", om.findStrict("xdc.platform.IPlatform.Board", "evmTCI66AK2G02Custom")); + om.bind("evmTCI66AK2G02Custom.Platform.Memory", om.findStrict("xdc.platform.IPlatform.Memory", "evmTCI66AK2G02Custom")); + // insts + Object insP = om.bind("evmTCI66AK2G02Custom.Platform.Instance", new Proto.Obj()); + po = (Proto.Obj)om.bind("evmTCI66AK2G02Custom.Platform$$Object", new Proto.Obj()); + om.bind("evmTCI66AK2G02Custom.Platform.Object", new Proto.Str(po, true)); + po = (Proto.Obj)om.bind("evmTCI66AK2G02Custom.Platform$$Params", new Proto.Obj()); + om.bind("evmTCI66AK2G02Custom.Platform.Params", new Proto.Str(po, true)); + } + + void Platform$$CONSTS() + { + // module Platform + } + + void Platform$$CREATES() + { + Proto.Fxn fxn; + StringBuilder sb; + + fxn = (Proto.Fxn)om.bind("evmTCI66AK2G02Custom.Platform$$create", new Proto.Fxn(om.findStrict("evmTCI66AK2G02Custom.Platform.Module", "evmTCI66AK2G02Custom"), om.findStrict("evmTCI66AK2G02Custom.Platform.Instance", "evmTCI66AK2G02Custom"), 2, 1, false)); + fxn.addArg(0, "name", $$T_Str, $$UNDEF); + fxn.addArg(1, "__params", (Proto)om.findStrict("evmTCI66AK2G02Custom.Platform.Params", "evmTCI66AK2G02Custom"), Global.newObject()); + sb = new StringBuilder(); + sb.append("evmTCI66AK2G02Custom$Platform$$create = function( name, __params ) {\n"); + sb.append("var __mod = xdc.om['evmTCI66AK2G02Custom.Platform'];\n"); + sb.append("var __inst = xdc.om['evmTCI66AK2G02Custom.Platform.Instance'].$$make();\n"); + sb.append("__inst.$$bind('$package', xdc.om['evmTCI66AK2G02Custom']);\n"); + sb.append("__inst.$$bind('$index', __mod.$instances.length);\n"); + sb.append("__inst.$$bind('$category', 'Instance');\n"); + sb.append("__inst.$$bind('$args', {name:name});\n"); + sb.append("__inst.$$bind('$module', __mod);\n"); + sb.append("__mod.$instances.$add(__inst);\n"); + sb.append("__inst.externalMemoryMap = __mod.PARAMS.externalMemoryMap;\n"); + sb.append("__inst.customMemoryMap = __mod.PARAMS.customMemoryMap;\n"); + sb.append("__inst.renameMap = __mod.PARAMS.renameMap;\n"); + sb.append("__inst.dataMemory = __mod.PARAMS.dataMemory;\n"); + sb.append("__inst.codeMemory = __mod.PARAMS.codeMemory;\n"); + sb.append("__inst.stackMemory = __mod.PARAMS.stackMemory;\n"); + sb.append("__inst.sectMap = __mod.PARAMS.sectMap;\n"); + sb.append("__inst.peripherals = __mod.PARAMS.peripherals;\n"); + sb.append("for (var __p in __params) __inst[__p] = __params[__p];\n"); + sb.append("var save = xdc.om.$curpkg;\n"); + sb.append("xdc.om.$$bind('$curpkg', __mod.$package.$name);\n"); + sb.append("__mod.instance$meta$init.$fxn.apply(__inst, [name]);\n"); + sb.append("xdc.om.$$bind('$curpkg', save);\n"); + sb.append("__inst.$$bless();\n"); + sb.append("return __inst;\n"); + sb.append("}\n"); + Global.eval(sb.toString()); + fxn = (Proto.Fxn)om.bind("evmTCI66AK2G02Custom.Platform$$construct", new Proto.Fxn(om.findStrict("evmTCI66AK2G02Custom.Platform.Module", "evmTCI66AK2G02Custom"), null, 3, 1, false)); + fxn.addArg(0, "__obj", (Proto)om.findStrict("evmTCI66AK2G02Custom.Platform$$Object", "evmTCI66AK2G02Custom"), null); + fxn.addArg(1, "name", $$T_Str, $$UNDEF); + fxn.addArg(2, "__params", (Proto)om.findStrict("evmTCI66AK2G02Custom.Platform.Params", "evmTCI66AK2G02Custom"), Global.newObject()); + sb = new StringBuilder(); + sb.append("evmTCI66AK2G02Custom$Platform$$construct = function( __obj, name, __params ) {\n"); + sb.append("var __mod = xdc.om['evmTCI66AK2G02Custom.Platform'];\n"); + sb.append("var __inst = __obj;\n"); + sb.append("__inst.$$bind('$args', {name:name});\n"); + sb.append("__inst.$$bind('$module', __mod);\n"); + sb.append("__mod.$objects.$add(__inst);\n"); + sb.append("__inst.externalMemoryMap = __mod.PARAMS.externalMemoryMap;\n"); + sb.append("__inst.customMemoryMap = __mod.PARAMS.customMemoryMap;\n"); + sb.append("__inst.renameMap = __mod.PARAMS.renameMap;\n"); + sb.append("__inst.dataMemory = __mod.PARAMS.dataMemory;\n"); + sb.append("__inst.codeMemory = __mod.PARAMS.codeMemory;\n"); + sb.append("__inst.stackMemory = __mod.PARAMS.stackMemory;\n"); + sb.append("__inst.sectMap = __mod.PARAMS.sectMap;\n"); + sb.append("__inst.peripherals = __mod.PARAMS.peripherals;\n"); + sb.append("for (var __p in __params) __inst[__p] = __params[__p];\n"); + sb.append("__inst.$$bless();\n"); + sb.append("return null;\n"); + sb.append("}\n"); + Global.eval(sb.toString()); + } + + void Platform$$FUNCTIONS() + { + Proto.Fxn fxn; + + } + + void Platform$$SIZES() + { + } + + void Platform$$TYPES() + { + Scriptable cap; + Proto.Obj po; + Proto.Str ps; + Proto.Typedef pt; + Object fxn; + + cap = (Scriptable)Global.callFxn("loadCapsule", xdcO, "evmTCI66AK2G02Custom/Platform.xs"); + om.bind("evmTCI66AK2G02Custom.Platform$$capsule", cap); + po = (Proto.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform.Module", "evmTCI66AK2G02Custom"); + po.init("evmTCI66AK2G02Custom.Platform.Module", om.findStrict("xdc.platform.IPlatform.Module", "evmTCI66AK2G02Custom")); + po.addFld("$hostonly", $$T_Num, 1, "r"); + po.addFld("CPU", (Proto)om.findStrict("ti.platforms.generic.Platform.Instance", "evmTCI66AK2G02Custom"), $$UNDEF, "wh"); + po.addFxn("create", (Proto.Fxn)om.findStrict("evmTCI66AK2G02Custom.Platform$$create", "evmTCI66AK2G02Custom"), Global.get("evmTCI66AK2G02Custom$Platform$$create")); + po.addFxn("construct", (Proto.Fxn)om.findStrict("evmTCI66AK2G02Custom.Platform$$construct", "evmTCI66AK2G02Custom"), Global.get("evmTCI66AK2G02Custom$Platform$$construct")); + fxn = Global.get(cap, "module$use"); + if (fxn != null) om.bind("evmTCI66AK2G02Custom.Platform$$module$use", true); + if (fxn != null) po.addFxn("module$use", $$T_Met, fxn); + fxn = Global.get(cap, "module$meta$init"); + if (fxn != null) om.bind("evmTCI66AK2G02Custom.Platform$$module$meta$init", true); + if (fxn != null) po.addFxn("module$meta$init", $$T_Met, fxn); + fxn = Global.get(cap, "instance$meta$init"); + if (fxn != null) om.bind("evmTCI66AK2G02Custom.Platform$$instance$meta$init", true); + if (fxn != null) po.addFxn("instance$meta$init", $$T_Met, fxn); + fxn = Global.get(cap, "module$validate"); + if (fxn != null) om.bind("evmTCI66AK2G02Custom.Platform$$module$validate", true); + if (fxn != null) po.addFxn("module$validate", $$T_Met, fxn); + po = (Proto.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform.Instance", "evmTCI66AK2G02Custom"); + po.init("evmTCI66AK2G02Custom.Platform.Instance", om.findStrict("xdc.platform.IPlatform.Instance", "evmTCI66AK2G02Custom")); + po.addFld("$hostonly", $$T_Num, 1, "r"); + po.addFld("codeMemory", $$T_Str, "L2SRAM", "wh"); + po.addFld("dataMemory", $$T_Str, "L2SRAM", "wh"); + po.addFld("stackMemory", $$T_Str, "L2SRAM", "wh"); + po.addFld("l2Mode", $$T_Str, "0k", "wh"); + po.addFld("l1PMode", $$T_Str, "32k", "wh"); + po.addFld("l1DMode", $$T_Str, "32k", "wh"); + fxn = Global.get(cap, "getCpuDataSheet"); + if (fxn != null) po.addFxn("getCpuDataSheet", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getCpuDataSheet", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getCreateArgs"); + if (fxn != null) po.addFxn("getCreateArgs", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getCreateArgs", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getExeContext"); + if (fxn != null) po.addFxn("getExeContext", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getExeContext", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getExecCmd"); + if (fxn != null) po.addFxn("getExecCmd", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getExecCmd", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getLinkTemplate"); + if (fxn != null) po.addFxn("getLinkTemplate", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getLinkTemplate", "evmTCI66AK2G02Custom"), fxn); + po = (Proto.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform$$Params", "evmTCI66AK2G02Custom"); + po.init("evmTCI66AK2G02Custom.Platform.Params", om.findStrict("xdc.platform.IPlatform$$Params", "evmTCI66AK2G02Custom")); + po.addFld("$hostonly", $$T_Num, 1, "r"); + po.addFld("codeMemory", $$T_Str, "L2SRAM", "wh"); + po.addFld("dataMemory", $$T_Str, "L2SRAM", "wh"); + po.addFld("stackMemory", $$T_Str, "L2SRAM", "wh"); + po.addFld("l2Mode", $$T_Str, "0k", "wh"); + po.addFld("l1PMode", $$T_Str, "32k", "wh"); + po.addFld("l1DMode", $$T_Str, "32k", "wh"); + po = (Proto.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform$$Object", "evmTCI66AK2G02Custom"); + po.init("evmTCI66AK2G02Custom.Platform.Object", om.findStrict("evmTCI66AK2G02Custom.Platform.Instance", "evmTCI66AK2G02Custom")); + fxn = Global.get(cap, "getCpuDataSheet"); + if (fxn != null) po.addFxn("getCpuDataSheet", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getCpuDataSheet", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getCreateArgs"); + if (fxn != null) po.addFxn("getCreateArgs", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getCreateArgs", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getExeContext"); + if (fxn != null) po.addFxn("getExeContext", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getExeContext", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getExecCmd"); + if (fxn != null) po.addFxn("getExecCmd", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getExecCmd", "evmTCI66AK2G02Custom"), fxn); + fxn = Global.get(cap, "getLinkTemplate"); + if (fxn != null) po.addFxn("getLinkTemplate", (Proto.Fxn)om.findStrict("xdc.platform.IPlatform$$getLinkTemplate", "evmTCI66AK2G02Custom"), fxn); + } + + void Platform$$ROV() + { + } + + void $$SINGLETONS() + { + pkgP.init("evmTCI66AK2G02Custom.Package", (Proto.Obj)om.findStrict("xdc.IPackage.Module", "evmTCI66AK2G02Custom")); + pkgP.bind("$capsule", $$UNDEF); + pkgV.init2(pkgP, "evmTCI66AK2G02Custom", Value.DEFAULT, false); + pkgV.bind("$name", "evmTCI66AK2G02Custom"); + pkgV.bind("$category", "Package"); + pkgV.bind("$$qn", "evmTCI66AK2G02Custom."); + pkgV.bind("$vers", Global.newArray()); + Value.Map atmap = (Value.Map)pkgV.getv("$attr"); + atmap.seal("length"); + imports.clear(); + pkgV.bind("$imports", imports); + StringBuilder sb = new StringBuilder(); + sb.append("var pkg = xdc.om['evmTCI66AK2G02Custom'];\n"); + sb.append("if (pkg.$vers.length >= 3) {\n"); + sb.append("pkg.$vers.push(Packages.xdc.services.global.Vers.getDate(xdc.csd() + '/..'));\n"); + sb.append("}\n"); + sb.append("if ('evmTCI66AK2G02Custom$$stat$base' in xdc.om) {\n"); + sb.append("pkg.packageBase = xdc.om['evmTCI66AK2G02Custom$$stat$base'];\n"); + sb.append("pkg.packageRepository = xdc.om['evmTCI66AK2G02Custom$$stat$root'];\n"); + sb.append("}\n"); + sb.append("pkg.build.libraries = [\n"); + sb.append("];\n"); + sb.append("pkg.build.libDesc = [\n"); + sb.append("];\n"); + Global.eval(sb.toString()); + } + + void Platform$$SINGLETONS() + { + Proto.Obj po; + Value.Obj vo; + + vo = (Value.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform", "evmTCI66AK2G02Custom"); + po = (Proto.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform.Module", "evmTCI66AK2G02Custom"); + vo.init2(po, "evmTCI66AK2G02Custom.Platform", $$DEFAULT, false); + vo.bind("Module", po); + vo.bind("$category", "Module"); + vo.bind("$capsule", om.findStrict("evmTCI66AK2G02Custom.Platform$$capsule", "evmTCI66AK2G02Custom")); + vo.bind("Instance", om.findStrict("evmTCI66AK2G02Custom.Platform.Instance", "evmTCI66AK2G02Custom")); + vo.bind("Params", om.findStrict("evmTCI66AK2G02Custom.Platform.Params", "evmTCI66AK2G02Custom")); + vo.bind("PARAMS", ((Proto.Str)om.findStrict("evmTCI66AK2G02Custom.Platform.Params", "evmTCI66AK2G02Custom")).newInstance()); + vo.bind("$package", om.findStrict("evmTCI66AK2G02Custom", "evmTCI66AK2G02Custom")); + tdefs.clear(); + proxies.clear(); + mcfgs.clear(); + icfgs.clear(); + inherits.clear(); + vo.bind("Board", om.findStrict("xdc.platform.IPlatform.Board", "evmTCI66AK2G02Custom")); + tdefs.add(om.findStrict("xdc.platform.IPlatform.Board", "evmTCI66AK2G02Custom")); + vo.bind("Memory", om.findStrict("xdc.platform.IPlatform.Memory", "evmTCI66AK2G02Custom")); + tdefs.add(om.findStrict("xdc.platform.IPlatform.Memory", "evmTCI66AK2G02Custom")); + vo.bind("MemoryMap", om.findStrict("xdc.platform.IPlatform.MemoryMap", "evmTCI66AK2G02Custom")); + vo.bind("$$tdefs", Global.newArray(tdefs.toArray())); + vo.bind("$$proxies", Global.newArray(proxies.toArray())); + vo.bind("$$mcfgs", Global.newArray(mcfgs.toArray())); + vo.bind("$$icfgs", Global.newArray(icfgs.toArray())); + inherits.add("xdc.platform"); + vo.bind("$$inherits", Global.newArray(inherits.toArray())); + ((Value.Arr)pkgV.getv("$modules")).add(vo); + ((Value.Arr)om.findStrict("$modules", "evmTCI66AK2G02Custom")).add(vo); + vo.bind("$$instflag", 1); + vo.bind("$$iobjflag", 1); + vo.bind("$$sizeflag", 1); + vo.bind("$$dlgflag", 0); + vo.bind("$$iflag", 1); + vo.bind("$$romcfgs", "|"); + vo.bind("$$nortsflag", 0); + Proto.Str ps = (Proto.Str)vo.find("Module_State"); + if (ps != null) vo.bind("$object", ps.newInstance()); + vo.bind("$$meta_iobj", om.has("evmTCI66AK2G02Custom.Platform$$instance$static$init", null) ? 1 : 0); + vo.bind("$$fxntab", Global.newArray()); + vo.bind("$$logEvtCfgs", Global.newArray()); + vo.bind("$$errorDescCfgs", Global.newArray()); + vo.bind("$$assertDescCfgs", Global.newArray()); + Value.Map atmap = (Value.Map)vo.getv("$attr"); + atmap.seal("length"); + vo.bind("Object", om.findStrict("evmTCI66AK2G02Custom.Platform.Object", "evmTCI66AK2G02Custom")); + pkgV.bind("Platform", vo); + ((Value.Arr)pkgV.getv("$unitNames")).add("Platform"); + } + + void $$INITIALIZATION() + { + Value.Obj vo; + + if (isCFG) { + }//isCFG + Global.callFxn("module$meta$init", (Scriptable)om.findStrict("evmTCI66AK2G02Custom.Platform", "evmTCI66AK2G02Custom")); + vo = (Value.Obj)om.findStrict("evmTCI66AK2G02Custom.Platform", "evmTCI66AK2G02Custom"); + Global.put(vo, "CPU", Global.callFxn("create", (Scriptable)om.find("ti.platforms.generic.Platform"), "CPU", Global.newObject("clockRate", 600L, "catalogName", "ti.catalog.c6000", "deviceName", "TCI66AK2G02", "customMemoryMap", Global.newArray(new Object[]{Global.newArray(new Object[]{"MSMCSRAM", Global.newObject("name", "MSMCSRAM", "base", 0x0c000000L, "len", 0x00100000L, "space", "code/data", "access", "RWX")}), Global.newArray(new Object[]{"L2SRAM", Global.newObject("name", "L2SRAM", "base", 0x00800000L, "len", 0x00100000L, "space", "code/data", "access", "RWX")}), Global.newArray(new Object[]{"EXT_RAM", Global.newObject("name", "EXT_RAM", "base", 0x80000000L, "len", 0x20000000L, "space", "code/data", "access", "RWX")})}), "l2Mode", "0k", "l1PMode", "32k", "l1DMode", "32k"))); + Global.callFxn("init", pkgV); + ((Value.Obj)om.getv("evmTCI66AK2G02Custom.Platform")).bless(); + ((Value.Arr)om.findStrict("$packages", "evmTCI66AK2G02Custom")).add(pkgV); + } + + public void exec( Scriptable xdcO, Session ses ) + { + this.xdcO = xdcO; + this.ses = ses; + om = (Value.Obj)xdcO.get("om", null); + + Object o = om.geto("$name"); + String s = o instanceof String ? (String)o : null; + isCFG = s != null && s.equals("cfg"); + isROV = s != null && s.equals("rov"); + + $$IMPORTS(); + $$OBJECTS(); + Platform$$OBJECTS(); + Platform$$CONSTS(); + Platform$$CREATES(); + Platform$$FUNCTIONS(); + Platform$$SIZES(); + Platform$$TYPES(); + if (isROV) { + Platform$$ROV(); + }//isROV + $$SINGLETONS(); + Platform$$SINGLETONS(); + $$INITIALIZATION(); + } +} diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.sch b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.sch new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.bld.xml b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.bld.xml new file mode 100644 index 0000000..a2de5a2 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.bld.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.cfg.dep b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.cfg.dep new file mode 100644 index 0000000..b324ee9 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.cfg.dep @@ -0,0 +1,61 @@ +# +# The following is generated by utils.genDep for package/package.cfg +# +package/package.cfg.c package/package.cfg.h package/package.cfg.xdl:Platform.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/Arctic.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/DRA7XX.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IAntara.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IDaVinci.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IHimalaya.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IOMAP2x3x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IOMAP3xxx.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITI811X.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITI8148.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITI8168.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C642x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_128K.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_1M.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_256K.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_512K.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C6655.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C6x0x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C6x1x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDM6467.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDRA44x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDRA45x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDRx40x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI6484.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI6486.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI648x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI6497.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320DA8xx.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320TCI6608.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320TCI6616.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320TCI663x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/Kepler.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/OMAP4430.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/OMAP5430.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TCI66AK2G02.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TDA3XX.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6421.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6428.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6452.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6454.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6654.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C66AK2E02.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C66AK2E05.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CDM6431.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CDM647.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CDM648.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CF761990.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CTNETV2685.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320TCI6630K2L.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TNETV107X.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/Vayu.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/c6x.xs C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/package.xs C:/ti/bios_6_45_01_29/packages/ti/platforms/generic/Platform.xs C:/ti/bios_6_45_01_29/packages/ti/platforms/generic/package.xs + +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/Arctic.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/DRA7XX.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IAntara.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IDaVinci.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IHimalaya.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IOMAP2x3x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/IOMAP3xxx.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITI811X.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITI8148.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITI8168.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C642x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_128K.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_1M.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_256K.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C64_512K.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C6655.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C6x0x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320C6x1x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDM6467.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDRA44x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDRA45x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CDRx40x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI6484.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI6486.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI648x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320CTCI6497.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320DA8xx.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320TCI6608.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320TCI6616.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/ITMS320TCI663x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/Kepler.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/OMAP4430.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/OMAP5430.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TCI66AK2G02.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TDA3XX.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6421.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6428.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6452.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6454.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C6654.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C66AK2E02.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320C66AK2E05.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CDM6431.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CDM647.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CDM648.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CF761990.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320CTNETV2685.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TMS320TCI6630K2L.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/TNETV107X.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/Vayu.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/c6x.xs: +C:/ti/bios_6_45_01_29/packages/ti/catalog/c6000/package.xs: +C:/ti/bios_6_45_01_29/packages/ti/platforms/generic/Platform.xs: +C:/ti/bios_6_45_01_29/packages/ti/platforms/generic/package.xs: + + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.cfg.xdc.inc b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.cfg.xdc.inc new file mode 100644 index 0000000..096a295 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.cfg.xdc.inc @@ -0,0 +1 @@ +Platform.xs diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.defs.h b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.defs.h new file mode 100644 index 0000000..0d90c7e --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.defs.h @@ -0,0 +1,13 @@ +/* + * Do not modify this file; it is automatically + * generated and any modifications will be overwritten. + * + * @(#) xdc-B06 + */ + +#ifndef evmTCI66AK2G02Custom__ +#define evmTCI66AK2G02Custom__ + + + +#endif /* evmTCI66AK2G02Custom__ */ diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.xdc.dep b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.xdc.dep new file mode 100644 index 0000000..5d66675 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.xdc.dep @@ -0,0 +1,69 @@ +clean:: + $(RM) package/evmTCI66AK2G02Custom.sch + $(RM) package/.vers_g180 + $(RM) package/.vers_r170 + $(RM) package/.vers_b160 + $(RM) package/.xdc-B06 + $(RM) package/evmTCI66AK2G02Custom.java + $(RM) package/evmTCI66AK2G02Custom.class + $(RM) package/package_evmTCI66AK2G02Custom.c + $(RM) package/package.defs.h + $(RM) package/evmTCI66AK2G02Custom.ccs + +.interfaces: package/evmTCI66AK2G02Custom.sch package/.vers_g180 package/.vers_r170 package/.vers_b160 package/.xdc-B06 package/evmTCI66AK2G02Custom.java package/package_evmTCI66AK2G02Custom.c package/package.defs.h package/evmTCI66AK2G02Custom.ccs +package/package.xdc.inc: package/.vers_g180 +package/.vers_g180: +package/package.xdc.inc: package/.vers_r170 +package/.vers_r170: +package/package.xdc.inc: package/.vers_b160 +package/.vers_b160: + +.interfaces: Platform.xdc + +# schema include file dependencies +Platform.xs: +package/package.xdc.inc: Platform.xs + +# schema update dependencies +package/package.xdc.inc: Platform.xdc +package/package.xdc.inc: xdc/IPackage.xdc +xdc/IPackage.xdc: +vpath xdc/IPackage.xdc $(XPKGVPATH) +package/package.xdc.inc: xdc/platform/IPlatform.xdc +xdc/platform/IPlatform.xdc: +vpath xdc/platform/IPlatform.xdc $(XPKGVPATH) +package/package.xdc.inc: xdc/platform/IPeripheral.xdc +xdc/platform/IPeripheral.xdc: +vpath xdc/platform/IPeripheral.xdc $(XPKGVPATH) +package/package.xdc.inc: xdc/platform/ICpuDataSheet.xdc +xdc/platform/ICpuDataSheet.xdc: +vpath xdc/platform/ICpuDataSheet.xdc $(XPKGVPATH) +package/package.xdc.inc: ti/platforms/generic/Platform.xdc +ti/platforms/generic/Platform.xdc: +vpath ti/platforms/generic/Platform.xdc $(XPKGVPATH) +package/package.xdc.inc: xdc/platform/IExeContext.xdc +xdc/platform/IExeContext.xdc: +vpath xdc/platform/IExeContext.xdc $(XPKGVPATH) + +ifneq (clean,$(MAKECMDGOALS)) +C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/ecj.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/ecj.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/intern/gen/java/package.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/intern/gen/java/package.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/intern/cmd/java/package.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/intern/cmd/java/package.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/js.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/js.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/global/java/package.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/global/java/package.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/antlr.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/antlr.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/intern/xsr/java/package.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/intern/xsr/java/package.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/tar.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/shelf/java/tar.jar +C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/spec/java/package.jar: +package/package.xdc.inc: C:/ti/xdctools_3_32_00_06_core/packages/xdc/services/spec/java/package.jar +endif +# goals for files generated during schema generation but unspecified by schema's pattern rule + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.xdc.inc b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.xdc.inc new file mode 100644 index 0000000..4108d59 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package.xdc.inc @@ -0,0 +1,13 @@ +package.xdc +Platform.xdc +Platform.xs +package/evmTCI66AK2G02Custom.sch +package/.vers_g180 +package/.vers_r170 +package/.vers_b160 +package/.xdc-B06 +package/evmTCI66AK2G02Custom.java +package/evmTCI66AK2G02Custom.class +package/package_evmTCI66AK2G02Custom.c +package/package.defs.h +package/evmTCI66AK2G02Custom.ccs diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package_evmTCI66AK2G02Custom.c b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package_evmTCI66AK2G02Custom.c new file mode 100644 index 0000000..b22258f --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/package_evmTCI66AK2G02Custom.c @@ -0,0 +1,21 @@ +/* + * Do not modify this file; it is automatically + * generated and any modifications will be overwritten. + * + * @(#) xdc-B06 + */ + +#include + +__FAR__ char evmTCI66AK2G02Custom__dummy__; + +#define __xdc_PKGVERS null +#define __xdc_PKGNAME evmTCI66AK2G02Custom +#define __xdc_PKGPREFIX evmTCI66AK2G02Custom_ + +#ifdef __xdc_bld_pkg_c__ +#define __stringify(a) #a +#define __local_include(a) __stringify(a) +#include __local_include(__xdc_bld_pkg_c__) +#endif + diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.inc b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.inc new file mode 100644 index 0000000..75dd2b8 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.inc @@ -0,0 +1,9 @@ +config.bld +package.bld +package.xdc +Platform.xdc +Platform.xs +package/package.bld.xml +package/build.cfg +package/package.xdc.inc +package/package.cfg.xdc.inc diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.inc.manifest b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.inc.manifest new file mode 100644 index 0000000..dca4564 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.inc.manifest @@ -0,0 +1,17 @@ +evmTCI66AK2G02Custom/Platform.xdc +evmTCI66AK2G02Custom/Platform.xs +evmTCI66AK2G02Custom/config.bld +evmTCI66AK2G02Custom/package/.vers_b160 +evmTCI66AK2G02Custom/package/.vers_g180 +evmTCI66AK2G02Custom/package/.vers_r170 +evmTCI66AK2G02Custom/package/.xdc-B06 +evmTCI66AK2G02Custom/package/build.cfg +evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.ccs +evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.class +evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.java +evmTCI66AK2G02Custom/package/evmTCI66AK2G02Custom.sch +evmTCI66AK2G02Custom/package/package.bld.xml +evmTCI66AK2G02Custom/package/package.defs.h +evmTCI66AK2G02Custom/package/package_evmTCI66AK2G02Custom.c +evmTCI66AK2G02Custom/package.bld +evmTCI66AK2G02Custom/package.xdc diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.ninc b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.xdc.ninc new file mode 100644 index 0000000..e69de29 diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.zip.dep b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.zip.dep new file mode 100644 index 0000000..974c29b --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom.zip.dep @@ -0,0 +1,34 @@ +evmTCI66AK2G02Custom.zip: Platform.xdc +Platform.xdc: +evmTCI66AK2G02Custom.zip: Platform.xs +Platform.xs: +evmTCI66AK2G02Custom.zip: config.bld +config.bld: +evmTCI66AK2G02Custom.zip: package/.vers_b160 +package/.vers_b160: +evmTCI66AK2G02Custom.zip: package/.vers_g180 +package/.vers_g180: +evmTCI66AK2G02Custom.zip: package/.vers_r170 +package/.vers_r170: +evmTCI66AK2G02Custom.zip: package/.xdc-B06 +package/.xdc-B06: +evmTCI66AK2G02Custom.zip: package/build.cfg +package/build.cfg: +evmTCI66AK2G02Custom.zip: package/evmTCI66AK2G02Custom.ccs +package/evmTCI66AK2G02Custom.ccs: +evmTCI66AK2G02Custom.zip: package/evmTCI66AK2G02Custom.class +package/evmTCI66AK2G02Custom.class: +evmTCI66AK2G02Custom.zip: package/evmTCI66AK2G02Custom.java +package/evmTCI66AK2G02Custom.java: +evmTCI66AK2G02Custom.zip: package/evmTCI66AK2G02Custom.sch +package/evmTCI66AK2G02Custom.sch: +evmTCI66AK2G02Custom.zip: package/package.bld.xml +package/package.bld.xml: +evmTCI66AK2G02Custom.zip: package/package.defs.h +package/package.defs.h: +evmTCI66AK2G02Custom.zip: package/package_evmTCI66AK2G02Custom.c +package/package_evmTCI66AK2G02Custom.c: +evmTCI66AK2G02Custom.zip: package.bld +package.bld: +evmTCI66AK2G02Custom.zip: package.xdc +package.xdc: diff --git a/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml new file mode 100644 index 0000000..64b5565 --- /dev/null +++ b/realtime_demo_bios/platforms/packages/evmTCI66AK2G02Custom/package/rel/evmTCI66AK2G02Custom/evmTCI66AK2G02Custom/package/package.rel.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +