¶Ô±ÈÐÂÎļþ |
| | |
| | | PROJ_NAME = uwb_simple_example |
| | | # Build folder |
| | | ODIR = ./objects |
| | | |
| | | # Detect Unix-style shell |
| | | ifeq ($(findstring /,$(PWD)),/) |
| | | RM = rm -f |
| | | FixPath = $1 |
| | | MKDIR = mkdir -p |
| | | MV = mv -f |
| | | $(info Unix-Style) |
| | | else |
| | | SHELL := cmd.exe |
| | | RM = del /Q |
| | | FixPath = $(subst /,\,$1) |
| | | MKDIR = mkdir |
| | | MV = copy |
| | | $(info Windows) |
| | | endif |
| | | |
| | | |
| | | # Configure tool names |
| | | CC = arm-none-eabi-gcc |
| | | CXX = arm-none-eabi-g++ |
| | | AS = arm-none-eabi-as |
| | | OBJCOPY = arm-none-eabi-objcopy -O binary -S |
| | | SIZE = arm-none-eabi-size |
| | | |
| | | |
| | | # Define CPU target |
| | | # - Use Cortex-M1 if tools do not provide named support for Cortex-M0 |
| | | # - Compiling for Cortex-M1 will produce code compatible with Cortex-M0 |
| | | CPUTARGET = -mcpu=Cortex-M0 -mthumb -mthumb-interwork |
| | | |
| | | # |
| | | # CM0MCU compiler options |
| | | # |
| | | CCFLAGS = $(CPUTARGET) -std=c99 -O2 -g -DUWB_EN |
| | | CCFLAGS += -ffunction-sections -fdata-sections |
| | | |
| | | LDFLAGS = $(CPUTARGET) -T ../../../../../devices/MK800X/Source/GCC/gcc_arm.ld |
| | | # Use newlib-nano |
| | | LDFLAGS += --specs=nano.specs |
| | | LDFLAGS += --specs=nosys.specs |
| | | # print float |
| | | #LDFLAGS += -u_printf_float |
| | | # Link for code size |
| | | LDFLAGS += -Wl,--gc-sections |
| | | # Create map file |
| | | LDFLAGS += -Wl,-Map=$(PROJ_NAME).map |
| | | |
| | | ASFLAGS = $(CPUTARGET) --keep |
| | | |
| | | |
| | | # Source code |
| | | SRC = ../../../board.c \ |
| | | ../pin_config.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/main.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/simple_rx/simple_rx.c \ |
| | | ../../../../src/uwb_examples/uwb_simple_example/simple_tx/simple_tx.c \ |
| | | ../../../../../components/algo/src/steering_vector/cmp_svec.c \ |
| | | ../../../../../components/crc/crc.c \ |
| | | ../../../../../components/libc/libc.c \ |
| | | ../../../../../components/wsf/sources/platform/pal_flash.c \ |
| | | ../../../../../components/wsf/sources/platform/pal_sys.c \ |
| | | ../../../../../components/wsf/sources/platform/pal_uart.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_assert.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_buf.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_bufio.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_heap.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_msg.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_nvm.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_os.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_queue.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_timer.c \ |
| | | ../../../../../components/wsf/sources/port/baremetal/wsf_trace.c \ |
| | | ../../../../../devices/MK800X/Source/startup_MK800X.c \ |
| | | ../../../../../devices/MK800X/Source/system_MK800X.c \ |
| | | ../../../../../drivers/mk_adc.c \ |
| | | ../../../../../drivers/mk_aes.c \ |
| | | ../../../../../drivers/mk_calib.c \ |
| | | ../../../../../drivers/mk_clock.c \ |
| | | ../../../../../drivers/mk_dma.c \ |
| | | ../../../../../drivers/mk_dual_timer.c \ |
| | | ../../../../../drivers/mk_flash.c \ |
| | | ../../../../../drivers/mk_gpio.c \ |
| | | ../../../../../drivers/mk_io.c \ |
| | | ../../../../../drivers/mk_misc.c \ |
| | | ../../../../../drivers/mk_power.c \ |
| | | ../../../../../drivers/mk_reset.c \ |
| | | ../../../../../drivers/mk_rtc.c \ |
| | | ../../../../../drivers/mk_sleep_timer.c \ |
| | | ../../../../../drivers/mk_trace.c \ |
| | | ../../../../../drivers/mk_uart.c \ |
| | | ../../../../../drivers/mk_uwb.c \ |
| | | ../../../../../drivers/mk_wdt.c \ |
| | | |
| | | |
| | | # Include path |
| | | INC = -I../../../../../CMSIS/Include \ |
| | | -I../../.. \ |
| | | -I.. \ |
| | | -I../../../../../components/algo/inc \ |
| | | -I../../../../../components/crc \ |
| | | -I../../../../../components/libc \ |
| | | -I../../../../../components/wsf/include \ |
| | | -I../../../../../components/wsf/include/platform \ |
| | | -I../../../../../devices/MK800X/Include \ |
| | | -I../../../../../drivers \ |
| | | |
| | | |
| | | # Include library |
| | | LIB = ../../../../../components/algo/lib/lib_aoa.a \ |
| | | ../../../../../components/algo/lib/lib_ranging.a \ |
| | | ../../../../../drivers/lib/lib_lsp.a \ |
| | | ../../../../../drivers/lib/lib_mac_phy.a \ |
| | | -lm \ |
| | | |
| | | ODIR_ = $(call FixPath, $(ODIR)) |
| | | OBJS = $(patsubst %.c, $(ODIR)/%.o, $(notdir $(SRC))) |
| | | OBJS_ = $(call FixPath, $(OBJS)) |
| | | |
| | | ifneq ($(ODIR), $(wildcard $(ODIR))) |
| | | $(shell $(MKDIR) $(ODIR_)) |
| | | endif |
| | | |
| | | $(info $(ODIR)) |
| | | $(info $(OBJS)) |
| | | |
| | | SOURSE_DIR = $(dir $(SRC)) |
| | | |
| | | vpath %.c $(SOURSE_DIR) |
| | | |
| | | .PHONY: all clean |
| | | |
| | | ################################################################################ |
| | | # |
| | | # Rule deck |
| | | # |
| | | |
| | | all: $(PROJ_NAME).bin $(PROJ_NAME).elf $(OBJS) |
| | | |
| | | $(ODIR)/%.o: %.c |
| | | $(info $< $@) |
| | | $(CC) -c $(CCFLAGS) $(INC) $< -o $@ |
| | | |
| | | %.elf: $(OBJS) |
| | | $(CC) $(LDFLAGS) $^ -Xlinker "-(" $(LIB) -Xlinker "-)" -o $(PROJ_NAME).elf |
| | | $(SIZE) $@ |
| | | |
| | | %.bin: %.elf |
| | | $(OBJCOPY) $(PROJ_NAME).elf $(PROJ_NAME).bin |
| | | |
| | | |
| | | ################################################################################ |
| | | # |
| | | # Clean - remove all .bin, .elf, .map |
| | | # |
| | | |
| | | clean: |
| | | $(RM) $(OBJS_) *.bin *.elf *.map |
| | | |
| | | download: |
| | | -./pyjlink -f $(PROJ_NAME).bin |
| | | # EOF |
¶Ô±ÈÐÂÎļþ |
| | |
| | | [FLASH]
|
| | | Override = 1
|
| | | Device="Cortex-M0" |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project> |
| | | <fileVersion>3</fileVersion> |
| | | <configuration> |
| | | <name>MK8000 Release</name> |
| | | <toolchain> |
| | | <name>ARM</name> |
| | | </toolchain> |
| | | <debug>1</debug> |
| | | <settings> |
| | | <name>C-SPY</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>32</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>CInput</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CEndian</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CProcessor</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCVariant</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>MacOverride</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>MacFile</name> |
| | | <state>$TOOLKIT_DIR$\config\flashloader\MKSEMI\FlashMK8000.mac</state> |
| | | </option> |
| | | <option> |
| | | <name>MemOverride</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>MemFile</name> |
| | | <state>$TOOLKIT_DIR$\CONFIG\debugger\MKSEMI\mk8000.ddf</state> |
| | | </option> |
| | | <option> |
| | | <name>RunToEnable</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RunToName</name> |
| | | <state>main</state> |
| | | </option> |
| | | <option> |
| | | <name>CExtraOptionsCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CExtraOptions</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CFpuProcessor</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDDFArgumentProducer</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCDownloadSuppressDownload</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDownloadVerifyAll</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCProductVersion</name> |
| | | <state>9.10.2.39304</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDynDriverList</name> |
| | | <state>JLINK_ID</state> |
| | | </option> |
| | | <option> |
| | | <name>OCLastSavedByProductVersion</name> |
| | | <state>9.10.2.39304</state> |
| | | </option> |
| | | <option> |
| | | <name>UseFlashLoader</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CLowLevel</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCBE8Slave</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>MacFile2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CDevice</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>FlashLoadersV3</name> |
| | | <state>$TOOLKIT_DIR$\config\flashloader\MKSEMI\FlashMK8000.board</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesSuppressCheck1</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesPath1</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesSuppressCheck2</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesPath2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesSuppressCheck3</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesPath3</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OverrideDefFlashBoard</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesOffset1</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesOffset2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesOffset3</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesUse1</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesUse2</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCImagesUse3</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDeviceConfigMacroFile</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDebuggerExtraOption</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCAllMTBOptions</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreNrOfCores</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreWorkspace</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreSlaveProject</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreSlaveConfiguration</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCDownloadExtraImage</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCAttachSlave</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>MassEraseBeforeFlashing</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreNrOfCoresSlave</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreAMPConfigType</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCMulticoreSessionFile</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCTpiuBaseOption</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>ARMSIM_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>1</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCSimDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCSimEnablePSP</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCSimPspOverrideConfig</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCSimPspConfigFile</name> |
| | | <state></state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>CADI_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>0</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>CCadiMemory</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>Fast Model</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCADILogFileCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCADILogFileEditB</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>CMSISDAP_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>4</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCIarProbeScriptFile</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPResetList</name> |
| | | <version>1</version> |
| | | <state>10</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPHWResetDuration</name> |
| | | <state>300</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPHWResetDelay</name> |
| | | <state>200</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPDoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPLogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPInterfaceRadio</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPInterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPMultiTargetEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPMultiTarget</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPJtagSpeedList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPBreakpointRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPRestoreBreakpointsCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPUpdateBreakpointsEdit</name> |
| | | <state>_call_main</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchReset</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchUndef</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchSWI</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchData</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchPrefetch</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchIRQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchFIQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchCORERESET</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchMMERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchNOCPERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchCHKERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchSTATERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchBUSERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchINTERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchSFERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchHARDERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchDummy</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPMultiCPUEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPMultiCPUNumber</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCProbeCfgOverride</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCProbeConfig</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPProbeConfigRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CMSISDAPSelectedCPUBehaviour</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>ICpuName</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCJetEmuParams</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCMSISDAPUsbSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCCMSISDAPUsbSerialNoSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>GDBSERVER_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>0</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>TCPIP</name> |
| | | <state>aaa.bbb.ccc.ddd</state> |
| | | </option> |
| | | <option> |
| | | <name>DoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>LogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJTagBreakpointRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJTagDoUpdateBreakpoints</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJTagUpdateBreakpoints</name> |
| | | <state>_call_main</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>IJET_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>9</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OCIarProbeScriptFile</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetResetList</name> |
| | | <version>1</version> |
| | | <state>10</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetHWResetDuration</name> |
| | | <state>300</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetHWResetDelay</name> |
| | | <state>200</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetPowerFromProbe</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetPowerRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetDoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetLogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetInterfaceRadio</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetInterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetMultiTargetEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetMultiTarget</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetScanChainNonARMDevices</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetIRLength</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetJtagSpeedList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetProtocolRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetSwoPin</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetCpuClockEdit</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IjetSwoPrescalerList</name> |
| | | <version>1</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetBreakpointRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetRestoreBreakpointsCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetUpdateBreakpointsEdit</name> |
| | | <state>_call_main</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchReset</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchUndef</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchSWI</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchData</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchPrefetch</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchIRQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RDICatchFIQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchCORERESET</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchMMERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchNOCPERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchCHKERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchSTATERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchBUSERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchINTERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchSFERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchHARDERR</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchDummy</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCProbeCfgOverride</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCProbeConfig</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IjetProbeConfigRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetMultiCPUEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetMultiCPUNumber</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetSelectedCPUBehaviour</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>ICpuName</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>OCJetEmuParams</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetPreferETB</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetTraceSettingsList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IjetTraceSizeList</name> |
| | | <version>0</version> |
| | | <state>4</state> |
| | | </option> |
| | | <option> |
| | | <name>FlashBoardPathSlave</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCIjetUsbSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCIjetUsbSerialNoSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8ARReset</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREREL1NS</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREREL1S</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREREL2NS</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREREL3S</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREEL1NS</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8ARREL1NS</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREEL1S</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8ARREL1S</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREEL2NS</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8ARREL2NS</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8AREEL3S</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CatchV8ARREL3S</name> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>JLINK_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>16</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>JLinkSpeed</name> |
| | | <state>1000</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkDoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkLogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkHWResetDelay</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>JLinkInitialSpeed</name> |
| | | <state>1000</state> |
| | | </option> |
| | | <option> |
| | | <name>CCDoJlinkMultiTarget</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCScanChainNonARMDevices</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkMultiTarget</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkIRLength</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkCommRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkTCPIP</name> |
| | | <state>aaa.bbb.ccc.ddd</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkSpeedRadioV2</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCUSBDevice</name> |
| | | <version>1</version> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchReset</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchUndef</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchSWI</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchData</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchPrefetch</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchIRQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRDICatchFIQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkBreakpointRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkDoUpdateBreakpoints</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkUpdateBreakpoints</name> |
| | | <state>_call_main</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkInterfaceRadio</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkResetList</name> |
| | | <version>6</version> |
| | | <state>7</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkInterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchCORERESET</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchMMERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchNOCPERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchCHRERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchSTATERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchBUSERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchINTERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchSFERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchHARDERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCatchDummy</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCJLinkScriptFile</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkUsbSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCTcpIpAlt</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJLinkTcpIpSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCCpuClockEdit</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCSwoClockAuto</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSwoClockEdit</name> |
| | | <state>2000</state> |
| | | </option> |
| | | <option> |
| | | <name>OCJLinkTraceSource</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCJLinkTraceSourceDummy</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OCJLinkDeviceName</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>LMIFTDI_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>3</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>LmiftdiSpeed</name> |
| | | <state>500</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiftdiDoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiftdiLogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiFtdiInterfaceRadio</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiFtdiInterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiftdiUsbSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiftdiUsbSerialNoSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLmiftdiResetList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>NULINK_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>0</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>DoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>LogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>PEMICRO_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>3</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCJPEMicroShowSettings</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>DoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>LogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>STLINK_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>7</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkInterfaceRadio</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkInterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkResetList</name> |
| | | <version>3</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCpuClockEdit</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCSwoClockAuto</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSwoClockEdit</name> |
| | | <state>2000</state> |
| | | </option> |
| | | <option> |
| | | <name>DoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>LogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkDoUpdateBreakpoints</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkUpdateBreakpoints</name> |
| | | <state>_call_main</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchCORERESET</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchMMERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchNOCPERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchCHRERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchSTATERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchBUSERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchINTERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchSFERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchHARDERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkCatchDummy</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkUsbSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkUsbSerialNoSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkJtagSpeedList</name> |
| | | <version>2</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkDAPNumber</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkDebugAccessPortRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkUseServerSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSTLinkProbeList</name> |
| | | <version>1</version> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>THIRDPARTY_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>0</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>CThirdPartyDriverDll</name> |
| | | <state>###Uninitialized###</state> |
| | | </option> |
| | | <option> |
| | | <name>CThirdPartyLogFileCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CThirdPartyLogFileEditB</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>TIFET_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>1</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetResetList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetInterfaceRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetInterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetTargetVccTypeDefault</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetTargetVoltage</name> |
| | | <state>###Uninitialized###</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetVCCDefault</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetTargetSettlingtime</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetRadioJtagSpeedType</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetConnection</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetUsbComPort</name> |
| | | <state>Automatic</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetAllowAccessToBSL</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetDoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetLogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CCMSPFetRadioEraseFlash</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>XDS100_ID</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>8</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OCDriverInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>TIPackageOverride</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>TIPackage</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>BoardFile</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>DoLogfile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>LogFile</name> |
| | | <state>$PROJ_DIR$\cspycomm.log</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100BreakpointRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100DoUpdateBreakpoints</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100UpdateBreakpoints</name> |
| | | <state>_call_main</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchReset</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchUndef</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchSWI</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchData</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchPrefetch</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchIRQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchFIQ</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchCORERESET</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchMMERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchNOCPERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchCHRERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchSTATERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchBUSERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchINTERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchSFERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchHARDERR</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CatchDummy</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100CpuClockEdit</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100SwoClockAuto</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100SwoClockEdit</name> |
| | | <state>1000</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100HWResetDelay</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100ResetList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100UsbSerialNo</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100UsbSerialNoSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100JtagSpeedList</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100InterfaceRadio</name> |
| | | <state>2</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100InterfaceCmdLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100ProbeList</name> |
| | | <version>0</version> |
| | | <state>3</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100SWOPortRadio</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXds100SWOPort</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXDSTargetVccEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCXDSTargetVoltage</name> |
| | | <state>###Uninitialized###</state> |
| | | </option> |
| | | <option> |
| | | <name>OCXDSDigitalStatesConfigFile</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <debuggerPlugins> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | <plugin> |
| | | <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file> |
| | | <loadFlag>0</loadFlag> |
| | | </plugin> |
| | | </debuggerPlugins> |
| | | </configuration> |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project> |
| | | <fileVersion>3</fileVersion> |
| | | <configuration> |
| | | <name>MK8000 Release</name> |
| | | <toolchain> |
| | | <name>ARM</name> |
| | | </toolchain> |
| | | <debug>1</debug> |
| | | <settings> |
| | | <name>General</name> |
| | | <archiveVersion>3</archiveVersion> |
| | | <data> |
| | | <version>33</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>BrowseInfoPath</name> |
| | | <state>MK8000 Release\BrowseInfo</state> |
| | | </option> |
| | | <option> |
| | | <name>ExePath</name> |
| | | <state>MK8000 Release\Exe</state> |
| | | </option> |
| | | <option> |
| | | <name>ObjPath</name> |
| | | <state>MK8000 Release\Obj</state> |
| | | </option> |
| | | <option> |
| | | <name>ListPath</name> |
| | | <state>MK8000 Release\List</state> |
| | | </option> |
| | | <option> |
| | | <name>GEndianMode</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>Input description</name> |
| | | <state>No specifier n, no float nor long long, no scan set, no assignment suppressing, without multibyte support.</state> |
| | | </option> |
| | | <option> |
| | | <name>Output description</name> |
| | | <state>Automatic choice of formatter, without multibyte support.</state> |
| | | </option> |
| | | <option> |
| | | <name>GOutputBinary</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGCoreOrChip</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>GRuntimeLibSelect</name> |
| | | <version>0</version> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>GRuntimeLibSelectSlave</name> |
| | | <version>0</version> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>RTDescription</name> |
| | | <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state> |
| | | </option> |
| | | <option> |
| | | <name>OGProductVersion</name> |
| | | <state>7.60.1.11206</state> |
| | | </option> |
| | | <option> |
| | | <name>OGLastSavedByProductVersion</name> |
| | | <state>9.10.2.39304</state> |
| | | </option> |
| | | <option> |
| | | <name>OGChipSelectEditMenu</name> |
| | | <state>MK8000 MKSEMI MK8000</state> |
| | | </option> |
| | | <option> |
| | | <name>GenLowLevelInterface</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>GEndianModeBE</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OGBufferedTerminalOutput</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>GenStdoutInterface</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>RTConfigPath2</name> |
| | | <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state> |
| | | </option> |
| | | <option> |
| | | <name>GBECoreSlave</name> |
| | | <version>30</version> |
| | | <state>34</state> |
| | | </option> |
| | | <option> |
| | | <name>OGUseCmsis</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGUseCmsisDspLib</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>GRuntimeLibThreads</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CoreVariant</name> |
| | | <version>30</version> |
| | | <state>34</state> |
| | | </option> |
| | | <option> |
| | | <name>GFPUDeviceSlave</name> |
| | | <state>MK8000 MKSEMI MK8000</state> |
| | | </option> |
| | | <option> |
| | | <name>FPU2</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>NrRegs</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>NEON</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>GFPUCoreSlave2</name> |
| | | <version>30</version> |
| | | <state>34</state> |
| | | </option> |
| | | <option> |
| | | <name>OGCMSISPackSelectDevice</name> |
| | | </option> |
| | | <option> |
| | | <name>OgLibHeap</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGLibAdditionalLocale</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGPrintfVariant</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGPrintfMultibyteSupport</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGScanfVariant</name> |
| | | <version>0</version> |
| | | <state>3</state> |
| | | </option> |
| | | <option> |
| | | <name>OGScanfMultibyteSupport</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>GenLocaleTags</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>GenLocaleDisplayOnly</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>DSPExtension</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>TrustZone</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>TrustZoneModes</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OGAarch64Abi</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OG_32_64Device</name> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>ICCARM</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>37</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>CCDefines</name> |
| | | <state>UWB_EN</state> |
| | | </option> |
| | | <option> |
| | | <name>CCPreprocFile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCPreprocComments</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCPreprocLine</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCListCFile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCListCMnemonics</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCListCMessages</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCListAssFile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCListAssSource</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCEnableRemarks</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCDiagSuppress</name> |
| | | <state>Pa082, Pe188</state> |
| | | </option> |
| | | <option> |
| | | <name>CCDiagRemark</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCDiagWarning</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCDiagError</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCObjPrefix</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCAllowList</name> |
| | | <version>1</version> |
| | | <state>00000000</state> |
| | | </option> |
| | | <option> |
| | | <name>CCDebugInfo</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IEndianMode</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IProcessor</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IExtraOptionsCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IExtraOptions</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCLangConformance</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCSignedPlainChar</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCRequirePrototypes</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCDiagWarnAreErr</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCompilerRuntimeInfo</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IFpuProcessor</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OutputFile</name> |
| | | <state>$FILE_BNAME$.o</state> |
| | | </option> |
| | | <option> |
| | | <name>CCLibConfigHeader</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>PreInclude</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CCIncludePath2</name> |
| | | <state>$PROJ_DIR$/..</state> |
| | | <state>$PROJ_DIR$/../../..</state> |
| | | <state>$PROJ_DIR$/../../../../../CMSIS/Include</state> |
| | | <state>$PROJ_DIR$/../../../../../components/algo/inc</state> |
| | | <state>$PROJ_DIR$/../../../../../components/crc</state> |
| | | <state>$PROJ_DIR$/../../../../../components/libc</state> |
| | | <state>$PROJ_DIR$/../../../../../components/wsf/include</state> |
| | | <state>$PROJ_DIR$/../../../../../components/wsf/include/platform</state> |
| | | <state>$PROJ_DIR$/../../../../../devices/MK800X/Include</state> |
| | | <state>$PROJ_DIR$/../../../../../drivers</state> |
| | | </option> |
| | | <option> |
| | | <name>CCStdIncCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCCodeSection</name> |
| | | <state>.text</state> |
| | | </option> |
| | | <option> |
| | | <name>IProcessorMode2</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCOptLevel</name> |
| | | <state>2</state> |
| | | </option> |
| | | <option> |
| | | <name>CCOptStrategy</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCOptLevelSlave</name> |
| | | <state>2</state> |
| | | </option> |
| | | <option> |
| | | <name>CCPosIndRopi</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCPosIndRwpi</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCPosIndNoDynInit</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IccLang</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IccCDialect</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IccAllowVLA</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IccStaticDestr</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IccCppInlineSemantics</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IccCmsis</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IccFloatSemantics</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCOptimizationNoSizeConstraints</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCNoLiteralPool</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCOptStrategySlave</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCGuardCalls</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCEncSource</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCEncOutput</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CCEncOutputBom</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCEncInput</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IccExceptions2</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IccRTTI2</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OICompilerExtraOption</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CCStackProtection</name> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>AARM</name> |
| | | <archiveVersion>2</archiveVersion> |
| | | <data> |
| | | <version>11</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>AObjPrefix</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>AEndian</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>ACaseSensitivity</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>MacroChars</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AWarnEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AWarnWhat</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AWarnOne</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>AWarnRange1</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>AWarnRange2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>ADebug</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>AltRegisterNames</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>ADefines</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>AList</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AListHeader</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>AListing</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>Includes</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>MacDefs</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>MacExps</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>MacExec</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OnlyAssed</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>MultiLine</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>PageLengthCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>PageLength</name> |
| | | <state>80</state> |
| | | </option> |
| | | <option> |
| | | <name>TabSpacing</name> |
| | | <state>8</state> |
| | | </option> |
| | | <option> |
| | | <name>AXRef</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AXRefDefines</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AXRefInternal</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AXRefDual</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AProcessor</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>AFpuProcessor</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>AOutputFile</name> |
| | | <state>$FILE_BNAME$.o</state> |
| | | </option> |
| | | <option> |
| | | <name>ALimitErrorsCheck</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>ALimitErrorsEdit</name> |
| | | <state>100</state> |
| | | </option> |
| | | <option> |
| | | <name>AIgnoreStdInclude</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AUserIncludes</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>AExtraOptionsCheckV2</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>AExtraOptionsV2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>AsmNoLiteralPool</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>PreInclude</name> |
| | | <state></state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>OBJCOPY</name> |
| | | <archiveVersion>0</archiveVersion> |
| | | <data> |
| | | <version>1</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>OOCOutputFormat</name> |
| | | <version>3</version> |
| | | <state>3</state> |
| | | </option> |
| | | <option> |
| | | <name>OCOutputOverride</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>OOCOutputFile</name> |
| | | <state>uwb_simple_example.bin</state> |
| | | </option> |
| | | <option> |
| | | <name>OOCCommandLineProducer</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>OOCObjCopyEnable</name> |
| | | <state>1</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>CUSTOM</name> |
| | | <archiveVersion>3</archiveVersion> |
| | | <data> |
| | | <extensions></extensions> |
| | | <cmdline></cmdline> |
| | | <hasPrio>80</hasPrio> |
| | | <buildSequence>inputOutputBased</buildSequence> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>BUILDACTION</name> |
| | | <archiveVersion>1</archiveVersion> |
| | | <data> |
| | | <prebuild></prebuild> |
| | | <postbuild></postbuild> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>ILINK</name> |
| | | <archiveVersion>0</archiveVersion> |
| | | <data> |
| | | <version>25</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>IlinkLibIOConfig</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkInputFileSlave</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOutputFile</name> |
| | | <state>uwb_simple_example.out</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkDebugInfoEnable</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkKeepSymbols</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinaryFile</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinarySymbol</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinarySegment</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinaryAlign</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkDefines</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkConfigDefines</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkMapFile</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogFile</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogInitialization</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogModule</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogSection</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogVeneer</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkIcfOverride</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkIcfFile</name> |
| | | <state>$PROJ_DIR$/../../../../../devices/MK800X/Source/IAR/MK800X.icf</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkIcfFileSlave</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkEnableRemarks</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkSuppressDiags</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkTreatAsRem</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkTreatAsWarn</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkTreatAsErr</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkWarningsAreErrors</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkUseExtraOptions</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkExtraOptions</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLowLevelInterfaceSlave</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkAutoLibEnable</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkAdditionalLibs</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOverrideProgramEntryLabel</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkProgramEntryLabelSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkProgramEntryLabel</name> |
| | | <state>__iar_program_start</state> |
| | | </option> |
| | | <option> |
| | | <name>DoFill</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>FillerByte</name> |
| | | <state>0xFF</state> |
| | | </option> |
| | | <option> |
| | | <name>FillerStart</name> |
| | | <state>0x0</state> |
| | | </option> |
| | | <option> |
| | | <name>FillerEnd</name> |
| | | <state>0x0</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcSize</name> |
| | | <version>0</version> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcAlign</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcPoly</name> |
| | | <state>0x11021</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcCompl</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcBitOrder</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcInitialValue</name> |
| | | <state>0x0</state> |
| | | </option> |
| | | <option> |
| | | <name>DoCrc</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkBE8Slave</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkBufferedTerminalOutput</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkStdoutInterfaceSlave</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcFullSize</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkIElfToolPostProcess</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogAutoLibSelect</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogRedirSymbols</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogUnusedFragments</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkCrcReverseByteOrder</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkCrcUseAsInput</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOptInline</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOptExceptionsAllow</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOptExceptionsForce</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkCmsis</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOptMergeDuplSections</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOptUseVfe</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkOptForceVfe</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkStackAnalysisEnable</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkStackControlFile</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkStackCallGraphFile</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>CrcAlgorithm</name> |
| | | <version>1</version> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>CrcUnitSize</name> |
| | | <version>0</version> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkThreadsSlave</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogCallGraph</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkIcfFile_AltDefault</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkEncInput</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkEncOutput</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkEncOutputBom</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkHeapSelect</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLocaleSelect</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkTrustzoneImportLibraryOut</name> |
| | | <state>uwb_simple_example_import_lib.o</state> |
| | | </option> |
| | | <option> |
| | | <name>OILinkExtraOption</name> |
| | | <state>1</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinaryFile2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinarySymbol2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinarySegment2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkRawBinaryAlign2</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogCrtRoutineSelection</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogFragmentInfo</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogInlining</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkLogMerging</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IlinkDemangle</name> |
| | | <state>0</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | <settings> |
| | | <name>IARCHIVE</name> |
| | | <archiveVersion>0</archiveVersion> |
| | | <data> |
| | | <version>0</version> |
| | | <wantNonLocal>1</wantNonLocal> |
| | | <debug>1</debug> |
| | | <option> |
| | | <name>IarchiveInputs</name> |
| | | <state></state> |
| | | </option> |
| | | <option> |
| | | <name>IarchiveOverride</name> |
| | | <state>0</state> |
| | | </option> |
| | | <option> |
| | | <name>IarchiveOutput</name> |
| | | <state>###Unitialized###</state> |
| | | </option> |
| | | </data> |
| | | </settings> |
| | | </configuration> |
| | | <group> |
| | | <name>Algo</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\algo\src\steering_vector\cmp_svec.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\algo\lib\lib_aoa_iar.a</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\algo\lib\lib_ranging_iar.a</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>Device</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\devices\MK800X\Source\startup_MK800X.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\devices\MK800X\Source\system_MK800X.c</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>Driver</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\lib\lib_lsp_iar.a</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\lib\lib_mac_phy_iar.a</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_adc.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_aes.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_calib.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_clock.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_dma.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_dual_timer.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_flash.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_gpio.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_io.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_misc.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_power.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_reset.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_rtc.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_sleep_timer.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_trace.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_uart.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_uwb.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_wdt.c</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>Main</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\board.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\main.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\pin_config.c</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>OS</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_assert.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_buf.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_bufio.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_heap.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_msg.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_nvm.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_os.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_queue.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_timer.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_trace.c</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>Platform</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\platform\pal_flash.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\platform\pal_sys.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\platform\pal_uart.c</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>Simple</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init\simple_ds_twr_init.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init_sts\simple_ds_twr_init_sts.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp\simple_ds_twr_resp.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp_sts\simple_ds_twr_resp_sts.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_rx\simple_rx.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_tx\simple_tx.c</name> |
| | | </file> |
| | | </group> |
| | | <group> |
| | | <name>Utility</name> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\crc\crc.c</name> |
| | | </file> |
| | | <file> |
| | | <name>$PROJ_DIR$\..\..\..\..\..\components\libc\libc.c</name> |
| | | </file> |
| | | </group> |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <workspace> |
| | | <project> |
| | | <path>$WS_DIR$\uwb_simple_example.ewp</path> |
| | | </project> |
| | | <batchBuild></batchBuild> |
| | | </workspace> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | |
| | | <component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd"> |
| | | |
| | | <component name="EventRecorderStub" version="1.0.0"/> <!--name and version of the component--> |
| | | <events> |
| | | </events> |
| | | |
| | | </component_viewer> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | [BREAKPOINTS] |
| | | ForceImpTypeAny = 0 |
| | | ShowInfoWin = 1 |
| | | EnableFlashBP = 2 |
| | | BPDuringExecution = 0 |
| | | [CFI] |
| | | CFISize = 0x00 |
| | | CFIAddr = 0x00 |
| | | [CPU] |
| | | MonModeVTableAddr = 0xFFFFFFFF |
| | | MonModeDebug = 0 |
| | | MaxNumAPs = 0 |
| | | LowPowerHandlingMode = 0 |
| | | OverrideMemMap = 0 |
| | | AllowSimulation = 1 |
| | | ScriptFile="" |
| | | [FLASH] |
| | | CacheExcludeSize = 0x00 |
| | | CacheExcludeAddr = 0x00 |
| | | MinNumBytesFlashDL = 0 |
| | | SkipProgOnCRCMatch = 1 |
| | | VerifyDownload = 1 |
| | | AllowCaching = 1 |
| | | EnableFlashDL = 2 |
| | | Override = 0 |
| | | Device="MK8000" |
| | | [GENERAL] |
| | | WorkRAMSize = 0x00 |
| | | WorkRAMAddr = 0x00 |
| | | RAMUsageLimit = 0x00 |
| | | [SWO] |
| | | SWOLogFile="" |
| | | [MEM] |
| | | RdOverrideOrMask = 0x00 |
| | | RdOverrideAndMask = 0xFFFFFFFF |
| | | RdOverrideAddr = 0xFFFFFFFF |
| | | WrOverrideOrMask = 0x00 |
| | | WrOverrideAndMask = 0xFFFFFFFF |
| | | WrOverrideAddr = 0xFFFFFFFF |
¶Ô±ÈÐÂÎļþ |
| | |
| | | [EXTDLL] |
| | | Count=0 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/board.o: include\board\board.c include\board\board.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h \ |
| | | include\drivers\mk_power.h include\drivers\mk_clock.h \ |
| | | include\drivers\mk_calib.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/cmp_svec.o: \ |
| | | include\components\algo\src\steering_vector\cmp_svec.c \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | include\components\algo\inc\lib_aoa.h include\drivers\mk_uwb.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_mac.h include\drivers\mk_phy.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/crc.o: include\components\crc\crc.c \ |
| | | include\components\crc\crc.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/dw_app.o: dw_app.c dw_app.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/dw_app_anchor.o: dw_app_anchor.c dw_app_anchor.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/global_param.o: include\drivers\global_param.c \ |
| | | include\drivers\global_param.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | include\drivers\mk_flash.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dma.h include\drivers\mk_misc.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/libc.o: include\components\libc\libc.c \ |
| | | include\components\libc\libc_rom.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\math.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/main.o: include\main\main.c include\drivers\mk_trace.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_wdt.h include\drivers\mk_calib.h \ |
| | | include\drivers\mk_misc.h include\drivers\mk_flash.h \ |
| | | include\drivers\mk_misc.h include\components\libc\libc_rom.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\math.h \ |
| | | include\drivers\serial_at_cmd_app.h include\drivers\global_param.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h \ |
| | | include\components\wsf\include\wsf_nvm.h \ |
| | | include\components\wsf\include\wsf_types.h include\drivers\mk_power.h \ |
| | | include\drivers\Usart.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_adc.o: include\drivers\mk_adc.c include\drivers\mk_adc.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dma.h include\drivers\mk_clock.h \ |
| | | include\drivers\mk_reset.h include\drivers\mk_trace.h \ |
| | | include\drivers\mk_uart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_misc.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_aes.o: include\drivers\mk_aes.c include\drivers\mk_aes.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dma.h include\drivers\mk_clock.h \ |
| | | include\drivers\mk_reset.h include\drivers\mk_trace.h \ |
| | | include\drivers\mk_uart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_calib.o: include\drivers\mk_calib.c \ |
| | | include\drivers\mk_calib.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_misc.h include\drivers\mk_rtc.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_clock.o: include\drivers\mk_clock.c \ |
| | | include\drivers\mk_clock.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_dma.o: include\drivers\mk_dma.c include\drivers\mk_dma.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_dual_timer.o: include\drivers\mk_dual_timer.c \ |
| | | include\drivers\mk_dual_timer.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_flash.o: include\drivers\mk_flash.c \ |
| | | include\drivers\mk_flash.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dma.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_gpio.o: include\drivers\mk_gpio.c include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_io.h include\drivers\mk_clock.h \ |
| | | include\drivers\mk_reset.h include\drivers\mk_trace.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_io.o: include\drivers\mk_io.c include\drivers\mk_io.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_misc.o: include\drivers\mk_misc.c include\drivers\mk_misc.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dual_timer.h include\drivers\mk_clock.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_sleep_timer.h include\drivers\mk_reset.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_power.o: include\drivers\mk_power.c \ |
| | | include\drivers\mk_power.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_io.h \ |
| | | include\drivers\mk_flash.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_sleep_timer.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_reset.o: include\drivers\mk_reset.c \ |
| | | include\drivers\mk_reset.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_rtc.o: include\drivers\mk_rtc.c include\drivers\mk_rtc.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_sleep_timer.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_sleep_timer.o: include\drivers\mk_sleep_timer.c \ |
| | | include\drivers\mk_sleep_timer.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_power.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_trace.o: include\drivers\mk_trace.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_reset.h include\drivers\mk_io.h \ |
| | | include\drivers\mk_misc.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_uart.o: include\drivers\mk_uart.c include\drivers\mk_uart.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dma.h include\drivers\mk_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_misc.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_uwb.o: include\drivers\mk_uwb.c include\drivers\mk_uwb.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_mac.h include\drivers\mk_phy.h \ |
| | | include\drivers\mk_reset.h include\drivers\mk_clock.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_misc.h include\drivers\mk_aes.h \ |
| | | include\drivers\mk_lsp.h include\drivers\mk_power.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/mk_wdt.o: include\drivers\mk_wdt.c include\drivers\mk_wdt.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_clock.h include\drivers\mk_reset.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/pal_flash.o: \ |
| | | include\components\wsf\sources\platform\pal_flash.c \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\platform\pal_flash.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_flash.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_dma.h include\drivers\mk_misc.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/pal_sys.o: include\components\wsf\sources\platform\pal_sys.c \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\wsf\include\platform\pal_uart.h \ |
| | | include\drivers\mk_misc.h include\drivers\mk_common.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/pal_uart.o: include\components\wsf\sources\platform\pal_uart.c \ |
| | | include\components\wsf\include\platform\pal_uart.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/pin_config.o: ..\pin_config.c include\drivers\mk_io.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_uart.h \ |
| | | include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/serial_at_cmd_app.o: include\drivers\serial_at_cmd_app.c \ |
| | | include\drivers\serial_at_cmd_app.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | include\drivers\global_param.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h include\drivers\Usart.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_ds_twr_init.o: \ |
| | | ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init\simple_ds_twr_init.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \ |
| | | include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\board\board.h \ |
| | | include\drivers\mk_common.h include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_ds_twr_init_sts.o: \ |
| | | ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init_sts\simple_ds_twr_init_sts.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \ |
| | | include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\components\algo\inc\lib_aoa.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_ds_twr_resp.o: \ |
| | | ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp\simple_ds_twr_resp.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \ |
| | | include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\board\board.h \ |
| | | include\drivers\mk_common.h include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_ds_twr_resp_sts.o: \ |
| | | ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp_sts\simple_ds_twr_resp_sts.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \ |
| | | include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\components\algo\inc\lib_aoa.h \ |
| | | include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_rx.o: \ |
| | | ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_rx\simple_rx.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_power.h include\board\board.h \ |
| | | include\drivers\mk_common.h include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_ss_twr_dw_init.o: simple_ss_twr_dw_init.c \ |
| | | ..\..\..\..\..\drivers\mk_trace.h ..\..\..\..\..\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | ..\..\..\..\..\devices\MK800X\Include\MK800X.h \ |
| | | ..\..\..\..\..\CMSIS\Include\core_cm0.h \ |
| | | ..\..\..\..\..\CMSIS\Include\cmsis_version.h \ |
| | | ..\..\..\..\..\CMSIS\Include\cmsis_compiler.h \ |
| | | ..\..\..\..\..\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | ..\..\..\..\..\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | ..\..\..\..\..\drivers\mk_uart.h ..\..\..\..\..\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | ..\..\..\..\..\drivers\mk_uwb.h ..\..\..\..\..\drivers\mk_mac.h \ |
| | | ..\..\..\..\..\drivers\mk_phy.h ..\..\..\..\..\drivers\mk_phy.h \ |
| | | ..\..\..\..\..\drivers\mk_misc.h ..\..\..\..\..\drivers\mk_power.h \ |
| | | ..\..\..\..\..\drivers\mk_sleep_timer.h \ |
| | | ..\..\..\..\..\components\algo\inc\lib_ranging.h \ |
| | | ..\..\..\..\..\drivers\mk_common.h ..\..\..\..\..\drivers\mk_mac.h \ |
| | | dw_app_anchor.h ..\..\..\board.h ..\..\..\..\..\drivers\mk_gpio.h \ |
| | | ..\..\..\..\..\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_ss_twr_dw_resp.o: simple_ss_twr_dw_resp.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_phy.h \ |
| | | include\drivers\mk_misc.h include\drivers\mk_power.h \ |
| | | include\drivers\mk_sleep_timer.h \ |
| | | include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \ |
| | | dw_app_anchor.h include\board\board.h include\drivers\mk_common.h \ |
| | | include\drivers\mk_gpio.h include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/simple_tx.o: \ |
| | | ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_tx\simple_tx.c \ |
| | | include\drivers\mk_trace.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_dma.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\drivers\mk_uwb.h include\drivers\mk_mac.h \ |
| | | include\drivers\mk_phy.h include\drivers\mk_misc.h \ |
| | | include\drivers\mk_power.h include\board\board.h \ |
| | | include\drivers\mk_common.h include\drivers\mk_gpio.h \ |
| | | include\drivers\mk_io.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/startup_mk800x.o: \ |
| | | include\devices\MK800X\Source\startup_MK800X.c \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/system_mk800x.o: include\devices\MK800X\Source\system_MK800X.c \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/usart.o: include\drivers\Usart.c include\drivers\Usart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \ |
| | | include\drivers\mk_uart.h include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_dma.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/usart1.o: include\drivers\Usart1.c include\drivers\Usart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | include\drivers\Usart1.h include\drivers\mk_dma.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\drivers\mk_uart.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <html> |
| | | <body> |
| | | <pre> |
| | | <h1>礦ision Build Log</h1> |
| | | <h2>Tool Versions:</h2> |
| | | IDE-Version: μVision V5.30.0.0 |
| | | Copyright (C) 2020 ARM Ltd and ARM Germany GmbH. All rights reserved. |
| | | License Information: qweq xookko@outlook.com, qweqeq, LIC=47GU5-GD9Z0-FWK2N-Y9XQ0-MH3EA-KZ8D2 |
| | | |
| | | Tool Versions: |
| | | Toolchain: MDK-ARM Plus Version: 5.30.0.0 |
| | | Toolchain Path: d:\Keil_v5\ARM\ARMCLANG\Bin |
| | | C Compiler: ArmClang.exe V6.14 |
| | | Assembler: Armasm.exe V6.14 |
| | | Linker/Locator: ArmLink.exe V6.14 |
| | | Library Manager: ArmAr.exe V6.14 |
| | | Hex Converter: FromElf.exe V6.14 |
| | | CPU DLL: SARMCM3.DLL V5.30.0.0 |
| | | Dialog DLL: DARMCM1.DLL V1.19.3.0 |
| | | Target DLL: Segger\JL2CM3.dll V2.99.38.0 |
| | | Dialog DLL: TARMCM1.DLL V1.14.2.0 |
| | | |
| | | <h2>Project:</h2> |
| | | D:\project chen\uwb_simple_example_ss_twr_anchor\keil\uwb_simple_example.uvprojx |
| | | Project File Date: 07/29/2024 |
| | | |
| | | <h2>Output:</h2> |
| | | *** Using Compiler 'V6.14', folder: 'd:\Keil_v5\ARM\ARMCLANG\Bin' |
| | | Build target 'MK8000 Release' |
| | | linking... |
| | | .\include\devices\MK800X\Source\ARM\MK800X_ac6.sct(25): warning: L6314W: No section matches pattern *(.RAMCODE). |
| | | Program Size: Code=44740 RO-data=7276 RW-data=1264 ZI-data=23916 |
| | | Finished: 0 information, 1 warning and 0 error messages. |
| | | FromELF: creating hex file... |
| | | After Build - User command #1: fromelf.exe --bincombined -o "Output\uwb_simple_example.bin" "D:\project chen\uwb_simple_example_ss_twr_anchor\keil\Objects\uwb_simple_example.axf" |
| | | ".\Objects\uwb_simple_example.axf" - 0 Error(s), 1 Warning(s). |
| | | |
| | | <h2>Software Packages used:</h2> |
| | | |
| | | Package Vendor: MKSEMI |
| | | http://www.mk-semi.com/MKSEMI.MK800X_DFP.1.0.3.pack |
| | | MKSEMI.MK800X_DFP.1.0.3 |
| | | Device Family Pack for MK800X |
| | | |
| | | <h2>Collection of Component include folders:</h2> |
| | | .\RTE\_MK8000_Release |
| | | d:\Users\xookk\AppData\Local\Arm\Packs\MKSEMI\MK800X_DFP\1.0.3\Device\Include |
| | | |
| | | <h2>Collection of Component Files used:</h2> |
| | | Build Time Elapsed: 00:00:01 |
| | | </pre> |
| | | </body> |
| | | </html> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> |
| | | <html><head> |
| | | <title>Static Call Graph - [.\Objects\uwb_simple_example.axf]</title></head> |
| | | <body><HR> |
| | | <H1>Static Call Graph for image .\Objects\uwb_simple_example.axf</H1><HR> |
| | | <BR><P>#<CALLGRAPH># ARM Linker, 6140002: Last Updated: Mon Jul 29 17:39:11 2024 |
| | | <BR><P> |
| | | <H3>Maximum Stack Usage = 1572 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3> |
| | | Call chain for Maximum Stack Depth:</H3> |
| | | rx_int_callback ⇒ ranging_rx_time ⇒ sts_first_path_detect ⇒ MK8000_sts_first_patch_detect ⇒ MK8000_sts_FAP_detect ⇒ MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | <P> |
| | | <H3> |
| | | Mutually Recursive functions |
| | | </H3> <LI><a href="#[e6]">trace_output</a> ⇒ <a href="#[49]">trace_printf</a><BR> |
| | | <LI><a href="#[7]">ACMP0_IRQHandler</a> ⇒ <a href="#[7]">ACMP0_IRQHandler</a><BR> |
| | | </UL> |
| | | <P> |
| | | <H3> |
| | | Function Pointers |
| | | </H3><UL> |
| | | <LI><a href="#[7]">ACMP0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[8]">ACMP1_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[f]">ADC_IRQHandler</a> from mk_adc.o(.text.ADC_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[e]">AES_IRQHandler</a> from mk_aes.o(.text.AES_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[6]">BOD_IRQHandler</a> from mk_misc.o(.text.BOD_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[20]">CALIB_IRQHandler</a> from mk_calib.o(.text.CALIB_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[c]">DMA_IRQHandler</a> from mk_dma.o(.text.DMA_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[11]">FLASH_CTRL_IRQHandler</a> from mk_flash.o(.text.FLASH_CTRL_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[d]">GPIO_IRQHandler</a> from mk_gpio.o(.text.GPIO_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[2]">HardFault_Handler</a> from mk_trace.o(.text.HardFault_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1b]">I2C0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[12]">LSP_IRQHandler</a> from mk_lsp.o(.text.LSP_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[a]">MAC_IRQHandler</a> from mk_mac.o(.text.MAC_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1]">NMI_Handler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[b]">PHY_IRQHandler</a> from mk_phy.o(.text.PHY_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[23]">PHY_TIMER_IRQHandler</a> from mk_phy.o(.text.PHY_TIMER_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[16]">PWM_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[4]">PendSV_Handler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[21]">RCO32K_CAL_IRQHandler</a> from mk_rtc.o(.text.RCO32K_CAL_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[14]">RTC_ALARM_IRQHandler</a> from mk_rtc.o(.text.RTC_ALARM_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[15]">RTC_TICK_IRQHandler</a> from mk_rtc.o(.text.RTC_TICK_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[0]">Reset_Handler</a> from startup_mk800x.o(.text.Reset_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[9]">SLEEP_TIMER_IRQHandler</a> from mk_sleep_timer.o(.text.SLEEP_TIMER_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1c]">SPI0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1d]">SPI1_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[3]">SVC_Handler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[5]">SysTick_Handler</a> from mk_misc.o(.text.SysTick_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[17]">TIMER0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[18]">TIMER1_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[19]">TIMER2_IRQHandler</a> from mk_dual_timer.o(.text.TIMER2_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1a]">TIMER3_IRQHandler</a> from mk_dual_timer.o(.text.TIMER3_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[10]">TRNG_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1e]">UART0_IRQHandler</a> from mk_uart.o(.text.UART0_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[1f]">UART1_IRQHandler</a> from mk_uart.o(.text.UART1_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[27]">UsartParseDataHandler</a> from serial_at_cmd_app.o(.text.UsartParseDataHandler) referenced from main.o(.text.main) |
| | | <LI><a href="#[22]">WAKEUP_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[13]">WDT_IRQHandler</a> from mk_wdt.o(.text.WDT_IRQHandler) referenced from startup_mk800x.o(RESET) |
| | | <LI><a href="#[2b]">__main</a> from entry.o(.ARM.Collect$$$$00000000) referenced from startup_mk800x.o(.text.start_main_asm) |
| | | <LI><a href="#[25]">flash_dma_callback</a> from mk_flash.o(.text.flash_dma_callback) referenced from mk_flash.o(.text.flash_dma_callback) |
| | | <LI><a href="#[25]">flash_dma_callback</a> from mk_flash.o(.text.flash_dma_callback) referenced from mk_flash.o(.text.flash_read) |
| | | <LI><a href="#[26]">flash_dma_write_nbytes_callback</a> from mk_flash.o(.text.flash_dma_write_nbytes_callback) referenced from mk_flash.o(.text.flash_dma_write_nbytes_callback) |
| | | <LI><a href="#[26]">flash_dma_write_nbytes_callback</a> from mk_flash.o(.text.flash_dma_write_nbytes_callback) referenced from mk_flash.o(.text.flash_write_nbytes) |
| | | <LI><a href="#[24]">main</a> from main.o(.text.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) |
| | | <LI><a href="#[2a]">rx_int_callback</a> from simple_ss_twr_dw_resp.o(.text.rx_int_callback) referenced from simple_ss_twr_dw_resp.o(.text.simple_main) |
| | | <LI><a href="#[2c]">trace_sending_continue</a> from mk_trace.o(.text.trace_sending_continue) referenced from mk_trace.o(.text.trace_output) |
| | | <LI><a href="#[2c]">trace_sending_continue</a> from mk_trace.o(.text.trace_sending_continue) referenced from mk_trace.o(.text.trace_sending_continue) |
| | | <LI><a href="#[29]">tx_int_callback</a> from simple_ss_twr_dw_resp.o(.text.tx_int_callback) referenced from simple_ss_twr_dw_resp.o(.text.simple_main) |
| | | <LI><a href="#[2d]">uart_dma_callback</a> from mk_uart.o(.text.uart_dma_callback) referenced from mk_uart.o(.text.uart_send) |
| | | <LI><a href="#[28]">uart_receive_callback</a> from main.o(.text.uart_receive_callback) referenced from main.o(.text.main) |
| | | </UL> |
| | | <P> |
| | | <H3> |
| | | Global Symbols |
| | | </H3> |
| | | <P><STRONG><a name="[2b]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(.text.start_main_asm) |
| | | </UL> |
| | | <P><STRONG><a name="[f3]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry4.o(.ARM.Collect$$$$00000003)) |
| | | |
| | | <P><STRONG><a name="[2e]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[2f]">>></a> __scatterload |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[47]"></a>__main_after_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[2f]">>></a> __scatterload |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[f4]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) |
| | | |
| | | <P><STRONG><a name="[f5]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) |
| | | |
| | | <P><STRONG><a name="[f6]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) |
| | | |
| | | <P><STRONG><a name="[f7]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) |
| | | |
| | | <P><STRONG><a name="[f8]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) |
| | | |
| | | <P><STRONG><a name="[59]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[8c]">>></a> _PrintUnsigned |
| | | <LI><a href="#[8b]">>></a> _PrintInt |
| | | <LI><a href="#[21]">>></a> RCO32K_CAL_IRQHandler |
| | | <LI><a href="#[7d]">>></a> rtc_second_to_time |
| | | <LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[74]">>></a> flash_sector_erase |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[a9]">>></a> flash_erase |
| | | <LI><a href="#[a5]">>></a> flash_block_erase |
| | | <LI><a href="#[aa]">>></a> flash_write_quad_mode |
| | | <LI><a href="#[dd]">>></a> uwb_rx |
| | | <LI><a href="#[24]">>></a> main |
| | | <LI><a href="#[bc]">>></a> mac_tx_desc_construct |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[31]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[7d]">>></a> rtc_second_to_time |
| | | <LI><a href="#[a9]">>></a> flash_erase |
| | | <LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | <LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | <LI><a href="#[30]">>></a> __aeabi_idivmod |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[7a]"></a>__aeabi_idiv</STRONG> (Thumb, 0 bytes, Stack size 16 bytes, idiv.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_idiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[21]">>></a> RCO32K_CAL_IRQHandler |
| | | <LI><a href="#[7d]">>></a> rtc_second_to_time |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[30]"></a>__aeabi_idivmod</STRONG> (Thumb, 40 bytes, Stack size 16 bytes, idiv.o(.text), UNUSED) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[31]">>></a> __aeabi_uidivmod |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[84]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[8d]">>></a> aes_open |
| | | <LI><a href="#[e6]">>></a> trace_output |
| | | <LI><a href="#[27]">>></a> UsartParseDataHandler |
| | | <LI><a href="#[cc]">>></a> phy_params_generate |
| | | <LI><a href="#[c6]">>></a> simple_main |
| | | <LI><a href="#[2a]">>></a> rx_int_callback |
| | | <LI><a href="#[bc]">>></a> mac_tx_desc_construct |
| | | <LI><a href="#[c9]">>></a> pdoa_ant_delays_set |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[cd]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[f9]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[33]"></a>__aeabi_memset</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[77]">>></a> PalFlashRead |
| | | <LI><a href="#[34]">>></a> _memset$wrapper |
| | | <LI><a href="#[32]">>></a> __aeabi_memclr |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d0]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[fa]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[32]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text)) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[33]">>></a> __aeabi_memset |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e7]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b5]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[b4]">>></a> mac_init |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[34]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[33]">>></a> __aeabi_memset |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[35]"></a>__aeabi_fadd</STRONG> (Thumb, 162 bytes, Stack size 24 bytes, fadd.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[37]">>></a> _float_round |
| | | <LI><a href="#[36]">>></a> _float_epilogue |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6f]">>></a> MK8000_read_rssi |
| | | <LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[39]">>></a> __aeabi_frsub |
| | | <LI><a href="#[5b]">>></a> derive_scaled_thres |
| | | <LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[38]">>></a> __aeabi_fsub |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[38]"></a>__aeabi_fsub</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[35]">>></a> __aeabi_fadd |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6f]">>></a> MK8000_read_rssi |
| | | <LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[39]"></a>__aeabi_frsub</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text), UNUSED) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[35]">>></a> __aeabi_fadd |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6a]"></a>__aeabi_fmul</STRONG> (Thumb, 122 bytes, Stack size 16 bytes, fmul.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_fmul |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[d6]">>></a> ranging_rx_time |
| | | <LI><a href="#[6f]">>></a> MK8000_read_rssi |
| | | <LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[5b]">>></a> derive_scaled_thres |
| | | <LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[71]">>></a> MK8000_sts_first_patch_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[3a]"></a>__aeabi_fdiv</STRONG> (Thumb, 124 bytes, Stack size 16 bytes, fdiv.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_fdiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[37]">>></a> _float_round |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[5f]">>></a> MK8000_blender_packet |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[3b]"></a>__aeabi_dmul</STRONG> (Thumb, 202 bytes, Stack size 72 bytes, dmul.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3c]">>></a> _double_epilogue |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[3d]"></a>__aeabi_ddiv</STRONG> (Thumb, 234 bytes, Stack size 40 bytes, ddiv.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = __aeabi_ddiv ⇒ _double_round |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3e]">>></a> _double_round |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[5a]"></a>__aeabi_fcmple</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmple.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[5d]"></a>__aeabi_fcmplt</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmplt.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[62]"></a>__aeabi_fcmpge</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmpge.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[5b]">>></a> derive_scaled_thres |
| | | <LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[5f]">>></a> MK8000_blender_packet |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[61]"></a>__aeabi_fcmpgt</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmpgt.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[5f]">>></a> MK8000_blender_packet |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[68]"></a>__aeabi_fcmpeq</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmpeq.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[3f]"></a>__aeabi_i2f</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, fflti.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = __aeabi_i2f ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[36]">>></a> _float_epilogue |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6f]">>></a> MK8000_read_rssi |
| | | <LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[40]"></a>__aeabi_ui2f</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, ffltui.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = __aeabi_ui2f ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[36]">>></a> _float_epilogue |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[5b]">>></a> derive_scaled_thres |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[41]"></a>__aeabi_ui2d</STRONG> (Thumb, 24 bytes, Stack size 16 bytes, dfltui.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ __aeabi_llsr |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3c]">>></a> _double_epilogue |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[5e]"></a>__aeabi_f2iz</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, ffixi.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[d6]">>></a> ranging_rx_time |
| | | <LI><a href="#[57]">>></a> ranging_rssi_get |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | <LI><a href="#[71]">>></a> MK8000_sts_first_patch_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6e]"></a>__aeabi_f2uiz</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, ffixui.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[42]"></a>__aeabi_d2iz</STRONG> (Thumb, 62 bytes, Stack size 16 bytes, dfixi.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __aeabi_d2iz ⇒ __aeabi_llsr |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[43]">>></a> __aeabi_llsr |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ce]"></a>__aeabi_f2d</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, f2d.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[44]"></a>__aeabi_d2f</STRONG> (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_d2f |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[37]">>></a> _float_round |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[46]"></a>__aeabi_llsl</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_llsl |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[3c]">>></a> _double_epilogue |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[fb]"></a>_ll_shift_l</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, llshl.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[43]"></a>__aeabi_llsr</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_llsr |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[42]">>></a> __aeabi_d2iz |
| | | <LI><a href="#[3c]">>></a> _double_epilogue |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[fc]"></a>_ll_ushift_r</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, llushr.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[fd]"></a>__I$use$fp</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[37]"></a>_float_round</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, fepilogue.o(.text)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[3a]">>></a> __aeabi_fdiv |
| | | <LI><a href="#[44]">>></a> __aeabi_d2f |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[36]"></a>_float_epilogue</STRONG> (Thumb, 114 bytes, Stack size 12 bytes, fepilogue.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = _float_epilogue |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[3f]">>></a> __aeabi_i2f |
| | | <LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[40]">>></a> __aeabi_ui2f |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[3e]"></a>_double_round</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, depilogue.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = _double_round |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[3c]">>></a> _double_epilogue |
| | | <LI><a href="#[3d]">>></a> __aeabi_ddiv |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[3c]"></a>_double_epilogue</STRONG> (Thumb, 164 bytes, Stack size 48 bytes, depilogue.o(.text)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = _double_epilogue ⇒ __aeabi_llsr |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[45]">>></a> __ARM_clz |
| | | <LI><a href="#[43]">>></a> __aeabi_llsr |
| | | <LI><a href="#[46]">>></a> __aeabi_llsl |
| | | <LI><a href="#[3e]">>></a> _double_round |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[3b]">>></a> __aeabi_dmul |
| | | <LI><a href="#[41]">>></a> __aeabi_ui2d |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[2f]"></a>__scatterload</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[47]">>></a> __main_after_scatterload |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[2e]">>></a> _main_scatterload |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[fe]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[ff]"></a>__decompress</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[100]"></a>__decompress0</STRONG> (Thumb, 58 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED) |
| | | |
| | | <P><STRONG><a name="[f]"></a>ADC_IRQHandler</STRONG> (Thumb, 228 bytes, Stack size 8 bytes, mk_adc.o(.text.ADC_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = ADC_IRQHandler ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[e]"></a>AES_IRQHandler</STRONG> (Thumb, 360 bytes, Stack size 24 bytes, mk_aes.o(.text.AES_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = AES_IRQHandler ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[4a]"></a>Anchor_RecNearPoll</STRONG> (Thumb, 320 bytes, Stack size 24 bytes, simple_ss_twr_dw_resp.o(.text.Anchor_RecNearPoll)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = Anchor_RecNearPoll ⇒ uwb_tx ⇒ mac_tx ⇒ mac_tx_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[50]">>></a> mac_is_busy |
| | | <LI><a href="#[4f]">>></a> uwb_tx |
| | | <LI><a href="#[4b]">>></a> phy_timer_count_get |
| | | <LI><a href="#[4d]">>></a> ranging_tx_time |
| | | <LI><a href="#[4c]">>></a> phy_shr_duration |
| | | <LI><a href="#[4e]">>></a> ranging_ant_delays_get |
| | | <LI><a href="#[31]">>></a> __aeabi_uidivmod |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6]"></a>BOD_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_misc.o(.text.BOD_IRQHandler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[20]"></a>CALIB_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_calib.o(.text.CALIB_IRQHandler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[c]"></a>DMA_IRQHandler</STRONG> (Thumb, 112 bytes, Stack size 24 bytes, mk_dma.o(.text.DMA_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = DMA_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[7]"></a>ACMP0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[7]">>></a> ACMP0_IRQHandler |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[7]">>></a> ACMP0_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[8]"></a>ACMP1_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[101]"></a>Default_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler), UNUSED) |
| | | |
| | | <P><STRONG><a name="[1b]"></a>I2C0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[1]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[16]"></a>PWM_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[4]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[1c]"></a>SPI0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[1d]"></a>SPI1_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[3]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[17]"></a>TIMER0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[18]"></a>TIMER1_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[10]"></a>TRNG_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[22]"></a>WAKEUP_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[11]"></a>FLASH_CTRL_IRQHandler</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, mk_flash.o(.text.FLASH_CTRL_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = FLASH_CTRL_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[d]"></a>GPIO_IRQHandler</STRONG> (Thumb, 60 bytes, Stack size 24 bytes, mk_gpio.o(.text.GPIO_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = GPIO_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 124 bytes, Stack size 0 bytes, mk_trace.o(.text.HardFault_Handler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 276<LI>Call Chain = HardFault_Handler ⇒ trace_exception_handler ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[51]">>></a> trace_exception_handler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[12]"></a>LSP_IRQHandler</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, mk_lsp.o(.text.LSP_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = LSP_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[a]"></a>MAC_IRQHandler</STRONG> (Thumb, 1260 bytes, Stack size 120 bytes, mk_mac.o(.text.MAC_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 860<LI>Call Chain = MAC_IRQHandler ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[55]">>></a> mac_timer_stop |
| | | <LI><a href="#[54]">>></a> exit_debug_mode |
| | | <LI><a href="#[53]">>></a> phy_dump_mode |
| | | <LI><a href="#[52]">>></a> fira_vendor_oui_process |
| | | <LI><a href="#[57]">>></a> ranging_rssi_get |
| | | <LI><a href="#[31]">>></a> __aeabi_uidivmod |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[58]"></a>MK8000_all_antenna_FAP</STRONG> (Thumb, 496 bytes, Stack size 168 bytes, mk8000_all_antenna_fap.o(.text.MK8000_all_antenna_FAP)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 276<LI>Call Chain = MK8000_all_antenna_FAP ⇒ enhanced_sts_fap_detect ⇒ __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3a]">>></a> __aeabi_fdiv |
| | | <LI><a href="#[5e]">>></a> __aeabi_f2iz |
| | | <LI><a href="#[5d]">>></a> __aeabi_fcmplt |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | <LI><a href="#[5b]">>></a> derive_scaled_thres |
| | | <LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[5a]">>></a> __aeabi_fcmple |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[72]">>></a> MK8000_update_fap_fom |
| | | <LI><a href="#[71]">>></a> MK8000_sts_first_patch_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[5f]"></a>MK8000_blender_packet</STRONG> (Thumb, 548 bytes, Stack size 64 bytes, mk8000_blender_top.o(.text.MK8000_blender_packet)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 460<LI>Call Chain = MK8000_blender_packet ⇒ lsp_cmplx_inner_product_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[62]">>></a> __aeabi_fcmpge |
| | | <LI><a href="#[3a]">>></a> __aeabi_fdiv |
| | | <LI><a href="#[60]">>></a> lsp_cmplx_inner_product_f32 |
| | | <LI><a href="#[61]">>></a> __aeabi_fcmpgt |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[72]">>></a> MK8000_update_fap_fom |
| | | <LI><a href="#[71]">>></a> MK8000_sts_first_patch_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[63]"></a>MK8000_fap_adjust</STRONG> (Thumb, 192 bytes, Stack size 48 bytes, mk8000_fap_adjust.o(.text.MK8000_fap_adjust)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = MK8000_fap_adjust ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3f]">>></a> __aeabi_i2f |
| | | <LI><a href="#[40]">>></a> __aeabi_ui2f |
| | | <LI><a href="#[5d]">>></a> __aeabi_fcmplt |
| | | <LI><a href="#[65]">>></a> lsp_scale_f32 |
| | | <LI><a href="#[66]">>></a> lsp_inner_product_f32 |
| | | <LI><a href="#[64]">>></a> lsp_vinverse_f32 |
| | | <LI><a href="#[61]">>></a> __aeabi_fcmpgt |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[67]"></a>MK8000_fap_adjust_FLT</STRONG> (Thumb, 196 bytes, Stack size 48 bytes, mk8000_fap_adjust.o(.text.MK8000_fap_adjust_FLT)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[5d]">>></a> __aeabi_fcmplt |
| | | <LI><a href="#[65]">>></a> lsp_scale_f32 |
| | | <LI><a href="#[66]">>></a> lsp_inner_product_f32 |
| | | <LI><a href="#[64]">>></a> lsp_vinverse_f32 |
| | | <LI><a href="#[68]">>></a> __aeabi_fcmpeq |
| | | <LI><a href="#[61]">>></a> __aeabi_fcmpgt |
| | | <LI><a href="#[38]">>></a> __aeabi_fsub |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[69]"></a>MK8000_fap_adjust_simple</STRONG> (Thumb, 232 bytes, Stack size 48 bytes, mk8000_fap_adjust.o(.text.MK8000_fap_adjust_simple)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = MK8000_fap_adjust_simple ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[40]">>></a> __aeabi_ui2f |
| | | <LI><a href="#[5d]">>></a> __aeabi_fcmplt |
| | | <LI><a href="#[65]">>></a> lsp_scale_f32 |
| | | <LI><a href="#[66]">>></a> lsp_inner_product_f32 |
| | | <LI><a href="#[64]">>></a> lsp_vinverse_f32 |
| | | <LI><a href="#[61]">>></a> __aeabi_fcmpgt |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6b]"></a>MK8000_preamble_FAP_LSP</STRONG> (Thumb, 1400 bytes, Stack size 136 bytes, mk8000_preamble_fap_lsp.o(.text.MK8000_preamble_FAP_LSP)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 588<LI>Call Chain = MK8000_preamble_FAP_LSP ⇒ MK8000_fap_adjust_simple ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3f]">>></a> __aeabi_i2f |
| | | <LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[40]">>></a> __aeabi_ui2f |
| | | <LI><a href="#[6e]">>></a> __aeabi_f2uiz |
| | | <LI><a href="#[6c]">>></a> lsp_cmplx_mult_cmplx_int8 |
| | | <LI><a href="#[6d]">>></a> lsp_inner_product_int16 |
| | | <LI><a href="#[64]">>></a> lsp_vinverse_f32 |
| | | <LI><a href="#[61]">>></a> __aeabi_fcmpgt |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[38]">>></a> __aeabi_fsub |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d6]">>></a> ranging_rx_time |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6f]"></a>MK8000_read_rssi</STRONG> (Thumb, 1176 bytes, Stack size 80 bytes, mk8000_read_rssi.o(.text.MK8000_read_rssi)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 116<LI>Call Chain = MK8000_read_rssi ⇒ __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3f]">>></a> __aeabi_i2f |
| | | <LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[38]">>></a> __aeabi_fsub |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[57]">>></a> ranging_rssi_get |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[70]"></a>MK8000_sts_FAP_detect</STRONG> (Thumb, 1834 bytes, Stack size 960 bytes, mk8000_sts_fap_detect.o(.text.MK8000_sts_FAP_detect)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1412<LI>Call Chain = MK8000_sts_FAP_detect ⇒ MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[3f]">>></a> __aeabi_i2f |
| | | <LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[40]">>></a> __aeabi_ui2f |
| | | <LI><a href="#[3a]">>></a> __aeabi_fdiv |
| | | <LI><a href="#[5e]">>></a> __aeabi_f2iz |
| | | <LI><a href="#[5d]">>></a> __aeabi_fcmplt |
| | | <LI><a href="#[60]">>></a> lsp_cmplx_inner_product_f32 |
| | | <LI><a href="#[65]">>></a> lsp_scale_f32 |
| | | <LI><a href="#[66]">>></a> lsp_inner_product_f32 |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | <LI><a href="#[5c]">>></a> enhanced_sts_fap_detect |
| | | <LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[5a]">>></a> __aeabi_fcmple |
| | | <LI><a href="#[38]">>></a> __aeabi_fsub |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[71]">>></a> MK8000_sts_first_patch_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[71]"></a>MK8000_sts_first_patch_detect</STRONG> (Thumb, 160 bytes, Stack size 64 bytes, mk8000_spotter_top.o(.text.MK8000_sts_first_patch_detect)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1476<LI>Call Chain = MK8000_sts_first_patch_detect ⇒ MK8000_sts_FAP_detect ⇒ MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[5e]">>></a> __aeabi_f2iz |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[5f]">>></a> MK8000_blender_packet |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d7]">>></a> sts_first_path_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[72]"></a>MK8000_update_fap_fom</STRONG> (Thumb, 108 bytes, Stack size 56 bytes, mk8000_spotter_top.o(.text.MK8000_update_fap_fom)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 516<LI>Call Chain = MK8000_update_fap_fom ⇒ MK8000_blender_packet ⇒ lsp_cmplx_inner_product_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[5f]">>></a> MK8000_blender_packet |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d6]">>></a> ranging_rx_time |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b]"></a>PHY_IRQHandler</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, mk_phy.o(.text.PHY_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = PHY_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[23]"></a>PHY_TIMER_IRQHandler</STRONG> (Thumb, 56 bytes, Stack size 8 bytes, mk_phy.o(.text.PHY_TIMER_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = PHY_TIMER_IRQHandler ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[73]"></a>PalFlashEraseSector</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, pal_flash.o(.text.PalFlashEraseSector)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 356<LI>Call Chain = PalFlashEraseSector ⇒ flash_sector_erase ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[74]">>></a> flash_sector_erase |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[87]">>></a> WsfNvmInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[75]"></a>PalFlashInit</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, pal_flash.o(.text.PalFlashInit)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 772<LI>Call Chain = PalFlashInit ⇒ flash_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[76]">>></a> flash_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[87]">>></a> WsfNvmInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[77]"></a>PalFlashRead</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, pal_flash.o(.text.PalFlashRead)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 436<LI>Call Chain = PalFlashRead ⇒ flash_read ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[33]">>></a> __aeabi_memset |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[87]">>></a> WsfNvmInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[89]"></a>PalNvmGetSectorSize</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, pal_flash.o(.text.PalNvmGetSectorSize)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[87]">>></a> WsfNvmInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[88]"></a>PalNvmGetTotalSize</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, pal_flash.o(.text.PalNvmGetTotalSize)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[87]">>></a> WsfNvmInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[21]"></a>RCO32K_CAL_IRQHandler</STRONG> (Thumb, 228 bytes, Stack size 32 bytes, mk_rtc.o(.text.RCO32K_CAL_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 772<LI>Call Chain = RCO32K_CAL_IRQHandler ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[7c]">>></a> clock_disable |
| | | <LI><a href="#[79]">>></a> clock_get_frequency |
| | | <LI><a href="#[7b]">>></a> sleep_timer_ppm_set |
| | | <LI><a href="#[7a]">>></a> __aeabi_idiv |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[14]"></a>RTC_ALARM_IRQHandler</STRONG> (Thumb, 44 bytes, Stack size 24 bytes, mk_rtc.o(.text.RTC_ALARM_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = RTC_ALARM_IRQHandler ⇒ rtc_second_to_time ⇒ __aeabi_idiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[7d]">>></a> rtc_second_to_time |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[15]"></a>RTC_TICK_IRQHandler</STRONG> (Thumb, 52 bytes, Stack size 24 bytes, mk_rtc.o(.text.RTC_TICK_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = RTC_TICK_IRQHandler ⇒ rtc_second_to_time ⇒ __aeabi_idiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[7d]">>></a> rtc_second_to_time |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Reset_Handler)) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[7e]">>></a> update_libc_rom_table |
| | | <LI><a href="#[80]">>></a> start_main_asm |
| | | <LI><a href="#[7f]">>></a> SystemInit |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[9]"></a>SLEEP_TIMER_IRQHandler</STRONG> (Thumb, 164 bytes, Stack size 8 bytes, mk_sleep_timer.o(.text.SLEEP_TIMER_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = SLEEP_TIMER_IRQHandler ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[5]"></a>SysTick_Handler</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, mk_misc.o(.text.SysTick_Handler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SysTick_Handler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[7f]"></a>SystemInit</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, system_mk800x.o(.text.SystemInit)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[0]">>></a> Reset_Handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[19]"></a>TIMER2_IRQHandler</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, mk_dual_timer.o(.text.TIMER2_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIMER2_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[1a]"></a>TIMER3_IRQHandler</STRONG> (Thumb, 36 bytes, Stack size 16 bytes, mk_dual_timer.o(.text.TIMER3_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIMER3_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[1e]"></a>UART0_IRQHandler</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, mk_uart.o(.text.UART0_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = UART0_IRQHandler ⇒ uart_irq_handler ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[81]">>></a> uart_irq_handler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[1f]"></a>UART1_IRQHandler</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, mk_uart.o(.text.UART1_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = UART1_IRQHandler ⇒ uart_irq_handler ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[81]">>></a> uart_irq_handler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[82]"></a>UART_CheckReceive</STRONG> (Thumb, 140 bytes, Stack size 24 bytes, usart.o(.text.UART_CheckReceive)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = UART_CheckReceive |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[83]">>></a> get_uart1_dma_cndtr |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[27]"></a>UsartParseDataHandler</STRONG> (Thumb, 444 bytes, Stack size 24 bytes, serial_at_cmd_app.o(.text.UsartParseDataHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 812<LI>Call Chain = UsartParseDataHandler ⇒ save_com_map_to_flash ⇒ flash_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[85]">>></a> save_com_map_to_flash |
| | | <LI><a href="#[86]">>></a> uart_send |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> main.o(.text.main) |
| | | </UL> |
| | | <P><STRONG><a name="[13]"></a>WDT_IRQHandler</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, mk_wdt.o(.text.WDT_IRQHandler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = WDT_IRQHandler |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET) |
| | | </UL> |
| | | <P><STRONG><a name="[87]"></a>WsfNvmInit</STRONG> (Thumb, 196 bytes, Stack size 32 bytes, wsf_nvm.o(.text.WsfNvmInit)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 804<LI>Call Chain = WsfNvmInit ⇒ PalFlashInit ⇒ flash_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8a]">>></a> crc16 |
| | | <LI><a href="#[88]">>></a> PalNvmGetTotalSize |
| | | <LI><a href="#[89]">>></a> PalNvmGetSectorSize |
| | | <LI><a href="#[77]">>></a> PalFlashRead |
| | | <LI><a href="#[75]">>></a> PalFlashInit |
| | | <LI><a href="#[73]">>></a> PalFlashEraseSector |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[8d]"></a>aes_open</STRONG> (Thumb, 152 bytes, Stack size 16 bytes, mk_aes.o(.text.aes_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = aes_open |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d8]">>></a> uwb_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[cb]"></a>aoa_param_dynamic_port_sel</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, lib_aoa.o(.text.aoa_param_dynamic_port_sel)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[ca]">>></a> phy_adv_params_configure |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c0]"></a>board_calibration_params_default</STRONG> (Thumb, 48 bytes, Stack size 0 bytes, board.o(.text.board_calibration_params_default)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c1]"></a>board_calibration_params_load</STRONG> (Thumb, 52 bytes, Stack size 0 bytes, board.o(.text.board_calibration_params_load)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[90]"></a>board_clock_run</STRONG> (Thumb, 100 bytes, Stack size 16 bytes, board.o(.text.board_clock_run)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 380<LI>Call Chain = board_clock_run ⇒ sys_timer_open ⇒ dual_timer_open ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[97]">>></a> clock_set_divider |
| | | <LI><a href="#[91]">>></a> clock_attach |
| | | <LI><a href="#[94]">>></a> calib_start |
| | | <LI><a href="#[93]">>></a> calib_open |
| | | <LI><a href="#[96]">>></a> calib_close |
| | | <LI><a href="#[95]">>></a> calib_check |
| | | <LI><a href="#[99]">>></a> sys_timer_open |
| | | <LI><a href="#[98]">>></a> sys_tick_start |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[9a]"></a>board_debug_console_open</STRONG> (Thumb, 96 bytes, Stack size 8 bytes, board.o(.text.board_debug_console_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 748<LI>Call Chain = board_debug_console_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[9b]">>></a> trace_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[9c]"></a>board_led_init</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, board.o(.text.board_led_init)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = board_led_init |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[9d]">>></a> gpio_pin_set_dir |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[9e]"></a>board_pins_config</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, pin_config.o(.text.board_pins_config)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = board_pins_config |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[9f]">>></a> io_pin_mux_set |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[95]"></a>calib_check</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_calib.o(.text.calib_check)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a0]"></a>calib_chip</STRONG> (Thumb, 428 bytes, Stack size 16 bytes, mk_calib.o(.text.calib_chip)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 756<LI>Call Chain = calib_chip ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | <LI><a href="#[a1]">>></a> mk_chip_id |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[96]"></a>calib_close</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, mk_calib.o(.text.calib_close)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = calib_close |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[7c]">>></a> clock_disable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[93]"></a>calib_open</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, mk_calib.o(.text.calib_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = calib_open |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[94]"></a>calib_start</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_calib.o(.text.calib_start)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[91]"></a>clock_attach</STRONG> (Thumb, 236 bytes, Stack size 8 bytes, mk_clock.o(.text.clock_attach)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = clock_attach |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[7c]"></a>clock_disable</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_disable)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[96]">>></a> calib_close |
| | | <LI><a href="#[21]">>></a> RCO32K_CAL_IRQHandler |
| | | <LI><a href="#[a8]">>></a> flash_close |
| | | <LI><a href="#[c2]">>></a> wdt_close |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[8e]"></a>clock_enable</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_enable)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[a2]">>></a> dma_open |
| | | <LI><a href="#[a4]">>></a> dual_timer_open |
| | | <LI><a href="#[93]">>></a> calib_open |
| | | <LI><a href="#[a0]">>></a> calib_chip |
| | | <LI><a href="#[8d]">>></a> aes_open |
| | | <LI><a href="#[ac]">>></a> gpio_open |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[b4]">>></a> mac_init |
| | | <LI><a href="#[b1]">>></a> lsp_open |
| | | <LI><a href="#[c3]">>></a> uart_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[79]"></a>clock_get_frequency</STRONG> (Thumb, 232 bytes, Stack size 8 bytes, mk_clock.o(.text.clock_get_frequency)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = clock_get_frequency |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[21]">>></a> RCO32K_CAL_IRQHandler |
| | | <LI><a href="#[99]">>></a> sys_timer_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[97]"></a>clock_set_divider</STRONG> (Thumb, 100 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_set_divider)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[90]">>></a> board_clock_run |
| | | <LI><a href="#[c3]">>></a> uart_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[8a]"></a>crc16</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, crc.o(.text.crc16)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = crc16 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[87]">>></a> WsfNvmInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[92]"></a>delay_us</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_misc.o(.text.delay_us)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[74]">>></a> flash_sector_erase |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[a8]">>></a> flash_close |
| | | <LI><a href="#[a5]">>></a> flash_block_erase |
| | | <LI><a href="#[aa]">>></a> flash_write_quad_mode |
| | | <LI><a href="#[26]">>></a> flash_dma_write_nbytes_callback |
| | | <LI><a href="#[90]">>></a> board_clock_run |
| | | <LI><a href="#[da]">>></a> uwb_configure |
| | | <LI><a href="#[c3]">>></a> uart_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[5b]"></a>derive_scaled_thres</STRONG> (Thumb, 196 bytes, Stack size 32 bytes, mk8000_all_antenna_fap.o(.text.derive_scaled_thres)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = derive_scaled_thres ⇒ __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[62]">>></a> __aeabi_fcmpge |
| | | <LI><a href="#[40]">>></a> __aeabi_ui2f |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a2]"></a>dma_open</STRONG> (Thumb, 224 bytes, Stack size 24 bytes, mk_dma.o(.text.dma_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = dma_open |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[c5]">>></a> uart_receive |
| | | <LI><a href="#[86]">>></a> uart_send |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a3]"></a>dma_transfer</STRONG> (Thumb, 168 bytes, Stack size 24 bytes, mk_dma.o(.text.dma_transfer)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[26]">>></a> flash_dma_write_nbytes_callback |
| | | <LI><a href="#[25]">>></a> flash_dma_callback |
| | | <LI><a href="#[c5]">>></a> uart_receive |
| | | <LI><a href="#[86]">>></a> uart_send |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[de]"></a>dual_timer_get</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_get)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[56]">>></a> sys_timer_get |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a4]"></a>dual_timer_open</STRONG> (Thumb, 308 bytes, Stack size 24 bytes, mk_dual_timer.o(.text.dual_timer_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = dual_timer_open ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[99]">>></a> sys_timer_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[df]"></a>dual_timer_start</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_start)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[99]">>></a> sys_timer_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ba]"></a>dual_timer_stop</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_stop)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[55]">>></a> mac_timer_stop |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[5c]"></a>enhanced_sts_fap_detect</STRONG> (Thumb, 434 bytes, Stack size 72 bytes, mk8000_sts_fap_detect.o(.text.enhanced_sts_fap_detect)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = enhanced_sts_fap_detect ⇒ __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[35]">>></a> __aeabi_fadd |
| | | <LI><a href="#[62]">>></a> __aeabi_fcmpge |
| | | <LI><a href="#[5d]">>></a> __aeabi_fcmplt |
| | | <LI><a href="#[5a]">>></a> __aeabi_fcmple |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[58]">>></a> MK8000_all_antenna_FAP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[54]"></a>exit_debug_mode</STRONG> (Thumb, 44 bytes, Stack size 0 bytes, mk_phy.o(.text.exit_debug_mode)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[52]"></a>fira_vendor_oui_process</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, mk_mac.o(.text.fira_vendor_oui_process)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a5]"></a>flash_block_erase</STRONG> (Thumb, 468 bytes, Stack size 40 bytes, mk_flash.o(.text.flash_block_erase)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = flash_block_erase ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a9]">>></a> flash_erase |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a7]"></a>flash_check_busy</STRONG> (Thumb, 224 bytes, Stack size 32 bytes, mk_flash.o(.text.flash_check_busy)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = flash_check_busy ⇒ flash_write_cmd ⇒ sys_timer_get |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a9]">>></a> flash_erase |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a8]"></a>flash_close</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, mk_flash.o(.text.flash_close)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = flash_close ⇒ flash_write_cmd ⇒ sys_timer_get |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[7c]">>></a> clock_disable |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[a9]"></a>flash_erase</STRONG> (Thumb, 328 bytes, Stack size 48 bytes, mk_flash.o(.text.flash_erase)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 388<LI>Call Chain = flash_erase ⇒ flash_sector_erase ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[74]">>></a> flash_sector_erase |
| | | <LI><a href="#[a7]">>></a> flash_check_busy |
| | | <LI><a href="#[a5]">>></a> flash_block_erase |
| | | <LI><a href="#[31]">>></a> __aeabi_uidivmod |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c4]">>></a> parameter_init_anchor |
| | | <LI><a href="#[85]">>></a> save_com_map_to_flash |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[76]"></a>flash_open</STRONG> (Thumb, 540 bytes, Stack size 24 bytes, mk_flash.o(.text.flash_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = flash_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | <LI><a href="#[97]">>></a> clock_set_divider |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[aa]">>></a> flash_write_quad_mode |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c4]">>></a> parameter_init_anchor |
| | | <LI><a href="#[85]">>></a> save_com_map_to_flash |
| | | <LI><a href="#[75]">>></a> PalFlashInit |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[78]"></a>flash_read</STRONG> (Thumb, 688 bytes, Stack size 96 bytes, mk_flash.o(.text.flash_read)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 420<LI>Call Chain = flash_read ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[a2]">>></a> dma_open |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c4]">>></a> parameter_init_anchor |
| | | <LI><a href="#[77]">>></a> PalFlashRead |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[74]"></a>flash_sector_erase</STRONG> (Thumb, 472 bytes, Stack size 40 bytes, mk_flash.o(.text.flash_sector_erase)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = flash_sector_erase ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a9]">>></a> flash_erase |
| | | <LI><a href="#[73]">>></a> PalFlashEraseSector |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ab]"></a>flash_write_nbytes</STRONG> (Thumb, 2448 bytes, Stack size 128 bytes, mk_flash.o(.text.flash_write_nbytes)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = flash_write_nbytes ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[a2]">>></a> dma_open |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c4]">>></a> parameter_init_anchor |
| | | <LI><a href="#[85]">>></a> save_com_map_to_flash |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[83]"></a>get_uart1_dma_cndtr</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_dma.o(.text.get_uart1_dma_cndtr)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[82]">>></a> UART_CheckReceive |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ac]"></a>gpio_open</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, mk_gpio.o(.text.gpio_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = gpio_open |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[9d]"></a>gpio_pin_set_dir</STRONG> (Thumb, 76 bytes, Stack size 0 bytes, mk_gpio.o(.text.gpio_pin_set_dir)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[9c]">>></a> board_led_init |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[9f]"></a>io_pin_mux_set</STRONG> (Thumb, 80 bytes, Stack size 0 bytes, mk_io.o(.text.io_pin_mux_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[9e]">>></a> board_pins_config |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[60]"></a>lsp_cmplx_inner_product_f32</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_cmplx_inner_product_f32)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = lsp_cmplx_inner_product_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ad]">>></a> lsp_g_op_f32 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | <LI><a href="#[5f]">>></a> MK8000_blender_packet |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6c]"></a>lsp_cmplx_mult_cmplx_int8</STRONG> (Thumb, 32 bytes, Stack size 32 bytes, mk_lsp.o(.text.lsp_cmplx_mult_cmplx_int8)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 412<LI>Call Chain = lsp_cmplx_mult_cmplx_int8 ⇒ lsp_g_op_int8 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ae]">>></a> lsp_g_op_int8 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[66]"></a>lsp_inner_product_f32</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_inner_product_f32)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = lsp_inner_product_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ad]">>></a> lsp_g_op_f32 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[6d]"></a>lsp_inner_product_int16</STRONG> (Thumb, 30 bytes, Stack size 24 bytes, mk_lsp.o(.text.lsp_inner_product_int16)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 412<LI>Call Chain = lsp_inner_product_int16 ⇒ lsp_g_op_int16 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[b0]">>></a> lsp_g_op_int16 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b1]"></a>lsp_open</STRONG> (Thumb, 68 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = lsp_open |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d8]">>></a> uwb_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[65]"></a>lsp_scale_f32</STRONG> (Thumb, 80 bytes, Stack size 24 bytes, mk_lsp.o(.text.lsp_scale_f32)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 404<LI>Call Chain = lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[ad]">>></a> lsp_g_op_f32 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | <LI><a href="#[70]">>></a> MK8000_sts_FAP_detect |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[64]"></a>lsp_vinverse_f32</STRONG> (Thumb, 26 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_vinverse_f32)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = lsp_vinverse_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ad]">>></a> lsp_g_op_f32 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | <LI><a href="#[67]">>></a> MK8000_fap_adjust_FLT |
| | | <LI><a href="#[69]">>></a> MK8000_fap_adjust_simple |
| | | <LI><a href="#[63]">>></a> MK8000_fap_adjust |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ee]"></a>mac_crc_mode_configure</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_crc_mode_configure)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[da]">>></a> uwb_configure |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b2]"></a>mac_cs_construct</STRONG> (Thumb, 192 bytes, Stack size 32 bytes, mk_mac.o(.text.mac_cs_construct)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 332<LI>Call Chain = mac_cs_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[4b]">>></a> phy_timer_count_get |
| | | <LI><a href="#[b3]">>></a> phy_crypto_sts_index_get |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[bb]">>></a> mac_tx |
| | | <LI><a href="#[b9]">>></a> mac_rx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b4]"></a>mac_init</STRONG> (Thumb, 148 bytes, Stack size 24 bytes, mk_mac.o(.text.mac_init)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = mac_init ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | <LI><a href="#[b6]">>></a> mac_regs_init |
| | | <LI><a href="#[b5]">>></a> __aeabi_memclr8 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d8]">>></a> uwb_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[50]"></a>mac_is_busy</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_is_busy)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | <LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b7]"></a>mac_link_desc_construct</STRONG> (Thumb, 176 bytes, Stack size 32 bytes, mk_mac.o(.text.mac_link_desc_construct)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 332<LI>Call Chain = mac_link_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[bb]">>></a> mac_tx |
| | | <LI><a href="#[b9]">>></a> mac_rx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[dc]"></a>mac_register_process_handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_register_process_handler)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b6]"></a>mac_regs_init</STRONG> (Thumb, 276 bytes, Stack size 24 bytes, mk_mac.o(.text.mac_regs_init)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = mac_regs_init |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[b8]">>></a> phy_cca_config |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[b4]">>></a> mac_init |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ef]"></a>mac_rssi_calculation_en</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_rssi_calculation_en)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d8]">>></a> uwb_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b9]"></a>mac_rx</STRONG> (Thumb, 384 bytes, Stack size 64 bytes, mk_mac.o(.text.mac_rx)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = mac_rx ⇒ mac_link_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[b7]">>></a> mac_link_desc_construct |
| | | <LI><a href="#[b2]">>></a> mac_cs_construct |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[dd]">>></a> uwb_rx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[f2]"></a>mac_start</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_start)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[4f]">>></a> uwb_tx |
| | | <LI><a href="#[dd]">>></a> uwb_rx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[55]"></a>mac_timer_stop</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, mk_misc.o(.text.mac_timer_stop)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = mac_timer_stop |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ba]">>></a> dual_timer_stop |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[bb]"></a>mac_tx</STRONG> (Thumb, 332 bytes, Stack size 48 bytes, mk_mac.o(.text.mac_tx)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 404<LI>Call Chain = mac_tx ⇒ mac_tx_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[b7]">>></a> mac_link_desc_construct |
| | | <LI><a href="#[b2]">>></a> mac_cs_construct |
| | | <LI><a href="#[bc]">>></a> mac_tx_desc_construct |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[4f]">>></a> uwb_tx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[bc]"></a>mac_tx_desc_construct</STRONG> (Thumb, 328 bytes, Stack size 56 bytes, mk_mac.o(.text.mac_tx_desc_construct)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 356<LI>Call Chain = mac_tx_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[bd]">>></a> phy_en_conv_encode |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[bb]">>></a> mac_tx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[24]"></a>main</STRONG> (Thumb, 256 bytes, Stack size 32 bytes, main.o(.text.main)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1044<LI>Call Chain = main ⇒ simple_main ⇒ uwb_configure ⇒ phy_params_generate ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[a0]">>></a> calib_chip |
| | | <LI><a href="#[be]">>></a> reset_cause_get |
| | | <LI><a href="#[bf]">>></a> reset_cause_clear |
| | | <LI><a href="#[ac]">>></a> gpio_open |
| | | <LI><a href="#[a8]">>></a> flash_close |
| | | <LI><a href="#[9e]">>></a> board_pins_config |
| | | <LI><a href="#[9c]">>></a> board_led_init |
| | | <LI><a href="#[9a]">>></a> board_debug_console_open |
| | | <LI><a href="#[90]">>></a> board_clock_run |
| | | <LI><a href="#[c1]">>></a> board_calibration_params_load |
| | | <LI><a href="#[c0]">>></a> board_calibration_params_default |
| | | <LI><a href="#[82]">>></a> UART_CheckReceive |
| | | <LI><a href="#[c4]">>></a> parameter_init_anchor |
| | | <LI><a href="#[c2]">>></a> wdt_close |
| | | <LI><a href="#[c5]">>></a> uart_receive |
| | | <LI><a href="#[c3]">>></a> uart_open |
| | | <LI><a href="#[c6]">>></a> simple_main |
| | | <LI><a href="#[87]">>></a> WsfNvmInit |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B) |
| | | </UL> |
| | | <P><STRONG><a name="[a1]"></a>mk_chip_id</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_misc.o(.text.mk_chip_id)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[a0]">>></a> calib_chip |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c7]"></a>mk_snprintf</STRONG> (Thumb, 26 bytes, Stack size 16 bytes, mk_trace.o(.text.mk_snprintf)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 188<LI>Call Chain = mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[51]">>></a> trace_exception_handler |
| | | <LI><a href="#[e3]">>></a> trace_print_backtrace |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c4]"></a>parameter_init_anchor</STRONG> (Thumb, 180 bytes, Stack size 24 bytes, global_param.o(.text.parameter_init_anchor)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 788<LI>Call Chain = parameter_init_anchor ⇒ flash_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[a9]">>></a> flash_erase |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[eb]"></a>pdoa_angle_offset_set</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, mk_uwb.o(.text.pdoa_angle_offset_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c9]"></a>pdoa_ant_delays_set</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, mk8000_get_loc_params.o(.text.pdoa_ant_delays_set)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = pdoa_ant_delays_set |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ea]"></a>pdoa_ant_space_set</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk8000_get_loc_params.o(.text.pdoa_ant_space_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e9]"></a>pdoa_gain_set</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, mk_uwb.o(.text.pdoa_gain_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ca]"></a>phy_adv_params_configure</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, mk_phy.o(.text.phy_adv_params_configure)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = phy_adv_params_configure |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[cb]">>></a> aoa_param_dynamic_port_sel |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b8]"></a>phy_cca_config</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_cca_config)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[b6]">>></a> mac_regs_init |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b3]"></a>phy_crypto_sts_index_get</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_crypto_sts_index_get)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[b2]">>></a> mac_cs_construct |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[53]"></a>phy_dump_mode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_dump_mode)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[bd]"></a>phy_en_conv_encode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_en_conv_encode)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[bc]">>></a> mac_tx_desc_construct |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[f0]"></a>phy_init</STRONG> (Thumb, 44 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_init)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d8]">>></a> uwb_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[cc]"></a>phy_params_generate</STRONG> (Thumb, 2288 bytes, Stack size 184 bytes, mk_phy.o(.text.phy_params_generate)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 924<LI>Call Chain = phy_params_generate ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[ce]">>></a> __aeabi_f2d |
| | | <LI><a href="#[3b]">>></a> __aeabi_dmul |
| | | <LI><a href="#[42]">>></a> __aeabi_d2iz |
| | | <LI><a href="#[cf]">>></a> phy_sts_related_params_update |
| | | <LI><a href="#[41]">>></a> __aeabi_ui2d |
| | | <LI><a href="#[32]">>></a> __aeabi_memclr |
| | | <LI><a href="#[d0]">>></a> __aeabi_memset4 |
| | | <LI><a href="#[cd]">>></a> __aeabi_memcpy4 |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | <LI><a href="#[3d]">>></a> __aeabi_ddiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[da]">>></a> uwb_configure |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ec]"></a>phy_params_sets_enable</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_params_sets_enable)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[da]">>></a> uwb_configure |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ed]"></a>phy_rx_regs_config</STRONG> (Thumb, 1456 bytes, Stack size 44 bytes, mk_phy.o(.text.phy_rx_regs_config)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = phy_rx_regs_config |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[da]">>></a> uwb_configure |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[4c]"></a>phy_shr_duration</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_shr_duration)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | <LI><a href="#[2a]">>></a> rx_int_callback |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[4b]"></a>phy_timer_count_get</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_timer_count_get)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | <LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | <LI><a href="#[29]">>></a> tx_int_callback |
| | | <LI><a href="#[2a]">>></a> rx_int_callback |
| | | <LI><a href="#[b2]">>></a> mac_cs_construct |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[f1]"></a>phy_timer_open</STRONG> (Thumb, 68 bytes, Stack size 8 bytes, mk_phy.o(.text.phy_timer_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = phy_timer_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d8]">>></a> uwb_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d1]"></a>phy_tx_regs_config</STRONG> (Thumb, 780 bytes, Stack size 88 bytes, mk_phy.o(.text.phy_tx_regs_config)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 828<LI>Call Chain = phy_tx_regs_config ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[da]">>></a> uwb_configure |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d4]"></a>power_fem_rx_ctrl</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_power.o(.text.power_fem_rx_ctrl)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d5]">>></a> power_on_radio |
| | | <LI><a href="#[d2]">>></a> power_off_radio |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d3]"></a>power_fem_tx_ctrl</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_power.o(.text.power_fem_tx_ctrl)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d5]">>></a> power_on_radio |
| | | <LI><a href="#[d2]">>></a> power_off_radio |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d2]"></a>power_off_radio</STRONG> (Thumb, 92 bytes, Stack size 16 bytes, mk_power.o(.text.power_off_radio)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = power_off_radio |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[d3]">>></a> power_fem_tx_ctrl |
| | | <LI><a href="#[d4]">>></a> power_fem_rx_ctrl |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[29]">>></a> tx_int_callback |
| | | <LI><a href="#[2a]">>></a> rx_int_callback |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d5]"></a>power_on_radio</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, mk_power.o(.text.power_on_radio)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = power_on_radio |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[d3]">>></a> power_fem_tx_ctrl |
| | | <LI><a href="#[d4]">>></a> power_fem_rx_ctrl |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[4f]">>></a> uwb_tx |
| | | <LI><a href="#[dd]">>></a> uwb_rx |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[4e]"></a>ranging_ant_delays_get</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_ant_delays_get)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | <LI><a href="#[2a]">>></a> rx_int_callback |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e8]"></a>ranging_ant_delays_set</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_ant_delays_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[db]"></a>ranging_frame_type_set</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_frame_type_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[57]"></a>ranging_rssi_get</STRONG> (Thumb, 88 bytes, Stack size 56 bytes, lib_ranging.o(.text.ranging_rssi_get)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 172<LI>Call Chain = ranging_rssi_get ⇒ MK8000_read_rssi ⇒ __aeabi_fadd ⇒ _float_epilogue |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[5e]">>></a> __aeabi_f2iz |
| | | <LI><a href="#[6f]">>></a> MK8000_read_rssi |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d6]"></a>ranging_rx_time</STRONG> (Thumb, 532 bytes, Stack size 64 bytes, lib_ranging.o(.text.ranging_rx_time)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1556<LI>Call Chain = ranging_rx_time ⇒ sts_first_path_detect ⇒ MK8000_sts_first_patch_detect ⇒ MK8000_sts_FAP_detect ⇒ MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[5e]">>></a> __aeabi_f2iz |
| | | <LI><a href="#[72]">>></a> MK8000_update_fap_fom |
| | | <LI><a href="#[d7]">>></a> sts_first_path_detect |
| | | <LI><a href="#[6b]">>></a> MK8000_preamble_FAP_LSP |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[2a]">>></a> rx_int_callback |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[4d]"></a>ranging_tx_time</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_tx_time)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[bf]"></a>reset_cause_clear</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_reset.o(.text.reset_cause_clear)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[be]"></a>reset_cause_get</STRONG> (Thumb, 256 bytes, Stack size 8 bytes, mk_reset.o(.text.reset_cause_get)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 748<LI>Call Chain = reset_cause_get ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[8f]"></a>reset_module</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_reset.o(.text.reset_module)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[a2]">>></a> dma_open |
| | | <LI><a href="#[93]">>></a> calib_open |
| | | <LI><a href="#[8d]">>></a> aes_open |
| | | <LI><a href="#[e4]">>></a> trace_end |
| | | <LI><a href="#[ac]">>></a> gpio_open |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[d8]">>></a> uwb_open |
| | | <LI><a href="#[b4]">>></a> mac_init |
| | | <LI><a href="#[b1]">>></a> lsp_open |
| | | <LI><a href="#[c3]">>></a> uart_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[85]"></a>save_com_map_to_flash</STRONG> (Thumb, 88 bytes, Stack size 24 bytes, global_param.o(.text.save_com_map_to_flash)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 788<LI>Call Chain = save_com_map_to_flash ⇒ flash_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[a9]">>></a> flash_erase |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[27]">>></a> UsartParseDataHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c6]"></a>simple_main</STRONG> (Thumb, 424 bytes, Stack size 40 bytes, simple_ss_twr_dw_resp.o(.text.simple_main)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1012<LI>Call Chain = simple_main ⇒ uwb_configure ⇒ phy_params_generate ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[50]">>></a> mac_is_busy |
| | | <LI><a href="#[dd]">>></a> uwb_rx |
| | | <LI><a href="#[d8]">>></a> uwb_open |
| | | <LI><a href="#[da]">>></a> uwb_configure |
| | | <LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | <LI><a href="#[4b]">>></a> phy_timer_count_get |
| | | <LI><a href="#[db]">>></a> ranging_frame_type_set |
| | | <LI><a href="#[ca]">>></a> phy_adv_params_configure |
| | | <LI><a href="#[dc]">>></a> mac_register_process_handler |
| | | <LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[7b]"></a>sleep_timer_ppm_set</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_sleep_timer.o(.text.sleep_timer_ppm_set)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[21]">>></a> RCO32K_CAL_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[80]"></a>start_main_asm</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, startup_mk800x.o(.text.start_main_asm)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[0]">>></a> Reset_Handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e1]"></a>strlen</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, libc.o(.text.strlen)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = strlen |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d7]"></a>sts_first_path_detect</STRONG> (Thumb, 24 bytes, Stack size 16 bytes, lib_aoa.o(.text.sts_first_path_detect)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1492<LI>Call Chain = sts_first_path_detect ⇒ MK8000_sts_first_patch_detect ⇒ MK8000_sts_FAP_detect ⇒ MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[71]">>></a> MK8000_sts_first_patch_detect |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[d6]">>></a> ranging_rx_time |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[98]"></a>sys_tick_start</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, mk_misc.o(.text.sys_tick_start)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = sys_tick_start ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e2]"></a>sys_tick_us</STRONG> (Thumb, 88 bytes, Stack size 16 bytes, mk_misc.o(.text.sys_tick_us)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = sys_tick_us |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[51]">>></a> trace_exception_handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[56]"></a>sys_timer_get</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, mk_misc.o(.text.sys_timer_get)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = sys_timer_get |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[de]">>></a> dual_timer_get |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[74]">>></a> flash_sector_erase |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[a7]">>></a> flash_check_busy |
| | | <LI><a href="#[a5]">>></a> flash_block_erase |
| | | <LI><a href="#[aa]">>></a> flash_write_quad_mode |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | <LI><a href="#[26]">>></a> flash_dma_write_nbytes_callback |
| | | <LI><a href="#[25]">>></a> flash_dma_callback |
| | | <LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[99]"></a>sys_timer_open</STRONG> (Thumb, 80 bytes, Stack size 40 bytes, mk_misc.o(.text.sys_timer_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 364<LI>Call Chain = sys_timer_open ⇒ dual_timer_open ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[df]">>></a> dual_timer_start |
| | | <LI><a href="#[a4]">>></a> dual_timer_open |
| | | <LI><a href="#[79]">>></a> clock_get_frequency |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[90]">>></a> board_clock_run |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[48]"></a>trace_assert_dump</STRONG> (Thumb, 1008 bytes, Stack size 64 bytes, mk_trace.o(.text.trace_assert_dump)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 300<LI>Call Chain = trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[e0]">>></a> trace_flush |
| | | <LI><a href="#[e4]">>></a> trace_end |
| | | <LI><a href="#[e1]">>></a> strlen |
| | | <LI><a href="#[c7]">>></a> mk_snprintf |
| | | <LI><a href="#[e3]">>></a> trace_print_backtrace |
| | | <LI><a href="#[e2]">>></a> sys_tick_us |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[f]">>></a> ADC_IRQHandler |
| | | <LI><a href="#[a4]">>></a> dual_timer_open |
| | | <LI><a href="#[e]">>></a> AES_IRQHandler |
| | | <LI><a href="#[e6]">>></a> trace_output |
| | | <LI><a href="#[9]">>></a> SLEEP_TIMER_IRQHandler |
| | | <LI><a href="#[74]">>></a> flash_sector_erase |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[a5]">>></a> flash_block_erase |
| | | <LI><a href="#[26]">>></a> flash_dma_write_nbytes_callback |
| | | <LI><a href="#[25]">>></a> flash_dma_callback |
| | | <LI><a href="#[98]">>></a> sys_tick_start |
| | | <LI><a href="#[bb]">>></a> mac_tx |
| | | <LI><a href="#[b9]">>></a> mac_rx |
| | | <LI><a href="#[b4]">>></a> mac_init |
| | | <LI><a href="#[81]">>></a> uart_irq_handler |
| | | <LI><a href="#[2d]">>></a> uart_dma_callback |
| | | <LI><a href="#[c3]">>></a> uart_open |
| | | <LI><a href="#[b7]">>></a> mac_link_desc_construct |
| | | <LI><a href="#[b2]">>></a> mac_cs_construct |
| | | <LI><a href="#[bc]">>></a> mac_tx_desc_construct |
| | | <LI><a href="#[65]">>></a> lsp_scale_f32 |
| | | <LI><a href="#[ae]">>></a> lsp_g_op_int8 |
| | | <LI><a href="#[b0]">>></a> lsp_g_op_int16 |
| | | <LI><a href="#[af]">>></a> lsp_engine_run |
| | | <LI><a href="#[ad]">>></a> lsp_g_op_f32 |
| | | <LI><a href="#[23]">>></a> PHY_TIMER_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e4]"></a>trace_end</STRONG> (Thumb, 64 bytes, Stack size 0 bytes, mk_trace.o(.text.trace_end)) |
| | | <BR><BR>[Calls]<UL><LI><a href="#[8f]">>></a> reset_module |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[51]">>></a> trace_exception_handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[51]"></a>trace_exception_handler</STRONG> (Thumb, 1144 bytes, Stack size 40 bytes, mk_trace.o(.text.trace_exception_handler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 276<LI>Call Chain = trace_exception_handler ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[e0]">>></a> trace_flush |
| | | <LI><a href="#[e4]">>></a> trace_end |
| | | <LI><a href="#[c7]">>></a> mk_snprintf |
| | | <LI><a href="#[e3]">>></a> trace_print_backtrace |
| | | <LI><a href="#[e2]">>></a> sys_tick_us |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[2]">>></a> HardFault_Handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e0]"></a>trace_flush</STRONG> (Thumb, 204 bytes, Stack size 24 bytes, mk_trace.o(.text.trace_flush)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = trace_flush |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[e5]">>></a> uart_tx_in_progress |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[51]">>></a> trace_exception_handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c8]"></a>trace_format</STRONG> (Thumb, 944 bytes, Stack size 72 bytes, mk_trace.o(.text.trace_format)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 172<LI>Call Chain = trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[6a]">>></a> __aeabi_fmul |
| | | <LI><a href="#[62]">>></a> __aeabi_fcmpge |
| | | <LI><a href="#[8c]">>></a> _PrintUnsigned |
| | | <LI><a href="#[8b]">>></a> _PrintInt |
| | | <LI><a href="#[5e]">>></a> __aeabi_f2iz |
| | | <LI><a href="#[44]">>></a> __aeabi_d2f |
| | | <LI><a href="#[31]">>></a> __aeabi_uidivmod |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[c7]">>></a> mk_snprintf |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[9b]"></a>trace_open</STRONG> (Thumb, 92 bytes, Stack size 48 bytes, mk_trace.o(.text.trace_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 388<LI>Call Chain = trace_open ⇒ uart_open ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[c3]">>></a> uart_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[9a]">>></a> board_debug_console_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e6]"></a>trace_output</STRONG> (Thumb, 500 bytes, Stack size 32 bytes, mk_trace.o(.text.trace_output)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 444 + In Cycle |
| | | <LI>Call Chain = trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[86]">>></a> uart_send |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[49]"></a>trace_printf</STRONG> (Thumb, 300 bytes, Stack size 296 bytes, mk_trace.o(.text.trace_printf)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 740<LI>Call Chain = trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[e6]">>></a> trace_output |
| | | <LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[e1]">>></a> strlen |
| | | <LI><a href="#[c7]">>></a> mk_snprintf |
| | | <LI><a href="#[e2]">>></a> sys_tick_us |
| | | <LI><a href="#[e7]">>></a> __aeabi_memclr4 |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[a0]">>></a> calib_chip |
| | | <LI><a href="#[e]">>></a> AES_IRQHandler |
| | | <LI><a href="#[e6]">>></a> trace_output |
| | | <LI><a href="#[2c]">>></a> trace_sending_continue |
| | | <LI><a href="#[21]">>></a> RCO32K_CAL_IRQHandler |
| | | <LI><a href="#[be]">>></a> reset_cause_get |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[9a]">>></a> board_debug_console_open |
| | | <LI><a href="#[c2]">>></a> wdt_close |
| | | <LI><a href="#[d8]">>></a> uwb_open |
| | | <LI><a href="#[da]">>></a> uwb_configure |
| | | <LI><a href="#[d9]">>></a> uwb_calibration_params_set |
| | | <LI><a href="#[d1]">>></a> phy_tx_regs_config |
| | | <LI><a href="#[cc]">>></a> phy_params_generate |
| | | <LI><a href="#[24]">>></a> main |
| | | <LI><a href="#[a]">>></a> MAC_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[81]"></a>uart_irq_handler</STRONG> (Thumb, 576 bytes, Stack size 40 bytes, mk_uart.o(.text.uart_irq_handler)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = uart_irq_handler ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[1f]">>></a> UART1_IRQHandler |
| | | <LI><a href="#[1e]">>></a> UART0_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c3]"></a>uart_open</STRONG> (Thumb, 424 bytes, Stack size 40 bytes, mk_uart.o(.text.uart_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = uart_open ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[8e]">>></a> clock_enable |
| | | <LI><a href="#[97]">>></a> clock_set_divider |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[9b]">>></a> trace_open |
| | | <LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c5]"></a>uart_receive</STRONG> (Thumb, 520 bytes, Stack size 80 bytes, mk_uart.o(.text.uart_receive)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 404<LI>Call Chain = uart_receive ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[a2]">>></a> dma_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[86]"></a>uart_send</STRONG> (Thumb, 688 bytes, Stack size 88 bytes, mk_uart.o(.text.uart_send)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 412<LI>Call Chain = uart_send ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[a2]">>></a> dma_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[e6]">>></a> trace_output |
| | | <LI><a href="#[2c]">>></a> trace_sending_continue |
| | | <LI><a href="#[27]">>></a> UsartParseDataHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e5]"></a>uart_tx_in_progress</STRONG> (Thumb, 32 bytes, Stack size 0 bytes, mk_uart.o(.text.uart_tx_in_progress)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[e0]">>></a> trace_flush |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[7e]"></a>update_libc_rom_table</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, libc.o(.text.update_libc_rom_table)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[0]">>></a> Reset_Handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d9]"></a>uwb_calibration_params_set</STRONG> (Thumb, 392 bytes, Stack size 48 bytes, mk_uwb.o(.text.uwb_calibration_params_set)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 788<LI>Call Chain = uwb_calibration_params_set ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[e9]">>></a> pdoa_gain_set |
| | | <LI><a href="#[eb]">>></a> pdoa_angle_offset_set |
| | | <LI><a href="#[e8]">>></a> ranging_ant_delays_set |
| | | <LI><a href="#[ea]">>></a> pdoa_ant_space_set |
| | | <LI><a href="#[c9]">>></a> pdoa_ant_delays_set |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[da]"></a>uwb_configure</STRONG> (Thumb, 624 bytes, Stack size 48 bytes, mk_uwb.o(.text.uwb_configure)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 972<LI>Call Chain = uwb_configure ⇒ phy_params_generate ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[d1]">>></a> phy_tx_regs_config |
| | | <LI><a href="#[ed]">>></a> phy_rx_regs_config |
| | | <LI><a href="#[ec]">>></a> phy_params_sets_enable |
| | | <LI><a href="#[cc]">>></a> phy_params_generate |
| | | <LI><a href="#[ee]">>></a> mac_crc_mode_configure |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[d8]"></a>uwb_open</STRONG> (Thumb, 100 bytes, Stack size 24 bytes, mk_uwb.o(.text.uwb_open)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = uwb_open ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[8f]">>></a> reset_module |
| | | <LI><a href="#[8d]">>></a> aes_open |
| | | <LI><a href="#[f1]">>></a> phy_timer_open |
| | | <LI><a href="#[f0]">>></a> phy_init |
| | | <LI><a href="#[ef]">>></a> mac_rssi_calculation_en |
| | | <LI><a href="#[b4]">>></a> mac_init |
| | | <LI><a href="#[b1]">>></a> lsp_open |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[dd]"></a>uwb_rx</STRONG> (Thumb, 84 bytes, Stack size 24 bytes, mk_uwb.o(.text.uwb_rx)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 420<LI>Call Chain = uwb_rx ⇒ mac_rx ⇒ mac_link_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[d5]">>></a> power_on_radio |
| | | <LI><a href="#[f2]">>></a> mac_start |
| | | <LI><a href="#[b9]">>></a> mac_rx |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c6]">>></a> simple_main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[4f]"></a>uwb_tx</STRONG> (Thumb, 100 bytes, Stack size 24 bytes, mk_uwb.o(.text.uwb_tx)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 428<LI>Call Chain = uwb_tx ⇒ mac_tx ⇒ mac_tx_desc_construct ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[d5]">>></a> power_on_radio |
| | | <LI><a href="#[bb]">>></a> mac_tx |
| | | <LI><a href="#[f2]">>></a> mac_start |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[4a]">>></a> Anchor_RecNearPoll |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[c2]"></a>wdt_close</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, mk_wdt.o(.text.wdt_close)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 756<LI>Call Chain = wdt_close ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[7c]">>></a> clock_disable |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[24]">>></a> main |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[45]"></a>__ARM_clz</STRONG> (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz)) |
| | | <BR><BR>[Called By]<UL><LI><a href="#[3c]">>></a> _double_epilogue |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[102]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) |
| | | |
| | | <P><STRONG><a name="[103]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) |
| | | |
| | | <P><STRONG><a name="[104]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) |
| | | <P> |
| | | <H3> |
| | | Local Symbols |
| | | </H3> |
| | | <P><STRONG><a name="[25]"></a>flash_dma_callback</STRONG> (Thumb, 332 bytes, Stack size 24 bytes, mk_flash.o(.text.flash_dma_callback)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = flash_dma_callback ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | </UL> |
| | | <BR>[Address Reference Count : 2]<UL><LI> mk_flash.o(.text.flash_dma_callback) |
| | | <LI> mk_flash.o(.text.flash_read) |
| | | </UL> |
| | | <P><STRONG><a name="[26]"></a>flash_dma_write_nbytes_callback</STRONG> (Thumb, 508 bytes, Stack size 24 bytes, mk_flash.o(.text.flash_dma_write_nbytes_callback)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = flash_dma_write_nbytes_callback ⇒ dma_transfer ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[a3]">>></a> dma_transfer |
| | | <LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | </UL> |
| | | <BR>[Address Reference Count : 2]<UL><LI> mk_flash.o(.text.flash_write_nbytes) |
| | | <LI> mk_flash.o(.text.flash_dma_write_nbytes_callback) |
| | | </UL> |
| | | <P><STRONG><a name="[a6]"></a>flash_write_cmd</STRONG> (Thumb, 256 bytes, Stack size 40 bytes, mk_flash.o(.text.flash_write_cmd)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = flash_write_cmd ⇒ sys_timer_get |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[56]">>></a> sys_timer_get |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[ab]">>></a> flash_write_nbytes |
| | | <LI><a href="#[74]">>></a> flash_sector_erase |
| | | <LI><a href="#[78]">>></a> flash_read |
| | | <LI><a href="#[76]">>></a> flash_open |
| | | <LI><a href="#[a8]">>></a> flash_close |
| | | <LI><a href="#[a7]">>></a> flash_check_busy |
| | | <LI><a href="#[a5]">>></a> flash_block_erase |
| | | <LI><a href="#[aa]">>></a> flash_write_quad_mode |
| | | <LI><a href="#[26]">>></a> flash_dma_write_nbytes_callback |
| | | <LI><a href="#[25]">>></a> flash_dma_callback |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[aa]"></a>flash_write_quad_mode</STRONG> (Thumb, 192 bytes, Stack size 32 bytes, mk_flash.o(.text.flash_write_quad_mode)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = flash_write_quad_mode ⇒ flash_write_cmd ⇒ sys_timer_get |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[92]">>></a> delay_us |
| | | <LI><a href="#[56]">>></a> sys_timer_get |
| | | <LI><a href="#[a6]">>></a> flash_write_cmd |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[76]">>></a> flash_open |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[7d]"></a>rtc_second_to_time</STRONG> (Thumb, 436 bytes, Stack size 40 bytes, mk_rtc.o(.text.rtc_second_to_time)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = rtc_second_to_time ⇒ __aeabi_idiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[7a]">>></a> __aeabi_idiv |
| | | <LI><a href="#[31]">>></a> __aeabi_uidivmod |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[15]">>></a> RTC_TICK_IRQHandler |
| | | <LI><a href="#[14]">>></a> RTC_ALARM_IRQHandler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[8b]"></a>_PrintInt</STRONG> (Thumb, 302 bytes, Stack size 40 bytes, mk_trace.o(.text._PrintInt)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 100<LI>Call Chain = _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[8c]">>></a> _PrintUnsigned |
| | | <LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[8c]"></a>_PrintUnsigned</STRONG> (Thumb, 320 bytes, Stack size 48 bytes, mk_trace.o(.text._PrintUnsigned)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[59]">>></a> __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[c8]">>></a> trace_format |
| | | <LI><a href="#[8b]">>></a> _PrintInt |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[e3]"></a>trace_print_backtrace</STRONG> (Thumb, 236 bytes, Stack size 48 bytes, mk_trace.o(.text.trace_print_backtrace)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 236<LI>Call Chain = trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[c7]">>></a> mk_snprintf |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[51]">>></a> trace_exception_handler |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[2c]"></a>trace_sending_continue</STRONG> (Thumb, 228 bytes, Stack size 24 bytes, mk_trace.o(.text.trace_sending_continue)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = trace_sending_continue ⇒ trace_printf ⇒ trace_output ⇒ trace_printf (Cycle) |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[49]">>></a> trace_printf |
| | | <LI><a href="#[86]">>></a> uart_send |
| | | </UL> |
| | | <BR>[Address Reference Count : 2]<UL><LI> mk_trace.o(.text.trace_output) |
| | | <LI> mk_trace.o(.text.trace_sending_continue) |
| | | </UL> |
| | | <P><STRONG><a name="[2d]"></a>uart_dma_callback</STRONG> (Thumb, 356 bytes, Stack size 40 bytes, mk_uart.o(.text.uart_dma_callback)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = uart_dma_callback ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> mk_uart.o(.text.uart_send) |
| | | </UL> |
| | | <P><STRONG><a name="[28]"></a>uart_receive_callback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, main.o(.text.uart_receive_callback)) |
| | | <BR>[Address Reference Count : 1]<UL><LI> main.o(.text.main) |
| | | </UL> |
| | | <P><STRONG><a name="[2a]"></a>rx_int_callback</STRONG> (Thumb, 160 bytes, Stack size 16 bytes, simple_ss_twr_dw_resp.o(.text.rx_int_callback)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 1572<LI>Call Chain = rx_int_callback ⇒ ranging_rx_time ⇒ sts_first_path_detect ⇒ MK8000_sts_first_patch_detect ⇒ MK8000_sts_FAP_detect ⇒ MK8000_fap_adjust_FLT ⇒ lsp_scale_f32 ⇒ lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[d2]">>></a> power_off_radio |
| | | <LI><a href="#[4b]">>></a> phy_timer_count_get |
| | | <LI><a href="#[d6]">>></a> ranging_rx_time |
| | | <LI><a href="#[4c]">>></a> phy_shr_duration |
| | | <LI><a href="#[4e]">>></a> ranging_ant_delays_get |
| | | <LI><a href="#[84]">>></a> __aeabi_memcpy |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> simple_ss_twr_dw_resp.o(.text.simple_main) |
| | | </UL> |
| | | <P><STRONG><a name="[29]"></a>tx_int_callback</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, simple_ss_twr_dw_resp.o(.text.tx_int_callback)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = tx_int_callback ⇒ power_off_radio |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[d2]">>></a> power_off_radio |
| | | <LI><a href="#[4b]">>></a> phy_timer_count_get |
| | | </UL> |
| | | <BR>[Address Reference Count : 1]<UL><LI> simple_ss_twr_dw_resp.o(.text.simple_main) |
| | | </UL> |
| | | <P><STRONG><a name="[ad]"></a>lsp_g_op_f32</STRONG> (Thumb, 192 bytes, Stack size 64 bytes, mk_lsp.o(.text.lsp_g_op_f32)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 380<LI>Call Chain = lsp_g_op_f32 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[af]">>></a> lsp_engine_run |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[60]">>></a> lsp_cmplx_inner_product_f32 |
| | | <LI><a href="#[65]">>></a> lsp_scale_f32 |
| | | <LI><a href="#[66]">>></a> lsp_inner_product_f32 |
| | | <LI><a href="#[64]">>></a> lsp_vinverse_f32 |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[af]"></a>lsp_engine_run</STRONG> (Thumb, 204 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_engine_run)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 316<LI>Call Chain = lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[ae]">>></a> lsp_g_op_int8 |
| | | <LI><a href="#[b0]">>></a> lsp_g_op_int16 |
| | | <LI><a href="#[ad]">>></a> lsp_g_op_f32 |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[b0]"></a>lsp_g_op_int16</STRONG> (Thumb, 212 bytes, Stack size 72 bytes, mk_lsp.o(.text.lsp_g_op_int16)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 388<LI>Call Chain = lsp_g_op_int16 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[af]">>></a> lsp_engine_run |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6d]">>></a> lsp_inner_product_int16 |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[ae]"></a>lsp_g_op_int8</STRONG> (Thumb, 208 bytes, Stack size 64 bytes, mk_lsp.o(.text.lsp_g_op_int8)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 380<LI>Call Chain = lsp_g_op_int8 ⇒ lsp_engine_run ⇒ trace_assert_dump ⇒ trace_print_backtrace ⇒ mk_snprintf ⇒ trace_format ⇒ _PrintInt ⇒ _PrintUnsigned ⇒ __aeabi_uidiv |
| | | </UL> |
| | | <BR>[Calls]<UL><LI><a href="#[48]">>></a> trace_assert_dump |
| | | <LI><a href="#[af]">>></a> lsp_engine_run |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[6c]">>></a> lsp_cmplx_mult_cmplx_int8 |
| | | </UL> |
| | | |
| | | <P><STRONG><a name="[cf]"></a>phy_sts_related_params_update</STRONG> (Thumb, 176 bytes, Stack size 8 bytes, mk_phy.o(.text.phy_sts_related_params_update)) |
| | | <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = phy_sts_related_params_update |
| | | </UL> |
| | | <BR>[Called By]<UL><LI><a href="#[cc]">>></a> phy_params_generate |
| | | </UL> |
| | | <P> |
| | | <H3> |
| | | Undefined Global Symbols |
| | | </H3><HR></body></html> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | --cpu Cortex-M0 |
| | | ".\objects\cmp_svec.o" |
| | | ".\include\components\algo\lib\lib_aoa.lib" |
| | | ".\include\components\algo\lib\lib_ranging.lib" |
| | | ".\objects\startup_mk800x.o" |
| | | ".\objects\system_mk800x.o" |
| | | ".\include\drivers\lib\lib_lsp.lib" |
| | | ".\include\drivers\lib\lib_mac_phy.lib" |
| | | ".\objects\mk_adc.o" |
| | | ".\objects\mk_aes.o" |
| | | ".\objects\mk_calib.o" |
| | | ".\objects\mk_clock.o" |
| | | ".\objects\mk_dma.o" |
| | | ".\objects\mk_dual_timer.o" |
| | | ".\objects\mk_flash.o" |
| | | ".\objects\mk_gpio.o" |
| | | ".\objects\mk_io.o" |
| | | ".\objects\mk_misc.o" |
| | | ".\objects\mk_power.o" |
| | | ".\objects\mk_reset.o" |
| | | ".\objects\mk_rtc.o" |
| | | ".\objects\mk_sleep_timer.o" |
| | | ".\objects\mk_trace.o" |
| | | ".\objects\mk_uart.o" |
| | | ".\objects\mk_uwb.o" |
| | | ".\objects\mk_wdt.o" |
| | | ".\objects\serial_at_cmd_app.o" |
| | | ".\objects\global_param.o" |
| | | ".\objects\usart.o" |
| | | ".\objects\usart1.o" |
| | | ".\objects\dw_app_anchor.o" |
| | | ".\objects\board.o" |
| | | ".\objects\pin_config.o" |
| | | ".\objects\main.o" |
| | | ".\objects\wsf_assert.o" |
| | | ".\objects\wsf_buf.o" |
| | | ".\objects\wsf_bufio.o" |
| | | ".\objects\wsf_heap.o" |
| | | ".\objects\wsf_msg.o" |
| | | ".\objects\wsf_nvm.o" |
| | | ".\objects\wsf_os.o" |
| | | ".\objects\wsf_queue.o" |
| | | ".\objects\wsf_timer.o" |
| | | ".\objects\wsf_trace.o" |
| | | ".\objects\pal_flash.o" |
| | | ".\objects\pal_sys.o" |
| | | ".\objects\pal_uart.o" |
| | | ".\objects\simple_ss_twr_dw_resp.o" |
| | | ".\objects\simple_ds_twr_init.o" |
| | | ".\objects\simple_ds_twr_init_sts.o" |
| | | ".\objects\simple_ds_twr_resp.o" |
| | | ".\objects\simple_ds_twr_resp_sts.o" |
| | | ".\objects\simple_rx.o" |
| | | ".\objects\simple_tx.o" |
| | | ".\objects\crc.o" |
| | | ".\objects\libc.o" |
| | | --library_type=microlib --strict --scatter ".\include\devices\MK800X\Source\ARM\MK800X_ac6.sct" |
| | | --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols |
| | | --info sizes --info totals --info unused --info veneers |
| | | --list ".\Listings\uwb_simple_example.map" -o .\Objects\uwb_simple_example.axf |
¶Ô±ÈÐÂÎļþ |
| | |
| | | Dependencies for Project 'uwb_simple_example', Target 'MK8000 Release': (DO NOT MODIFY !)
|
| | | CompilerVersion: 6140000::V6.14::ARMCLANG
|
| | | F (.\include\components\algo\src\steering_vector\cmp_svec.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/algo/inc -I ./include/components/algo/lib -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/cmp_svec.o -MD)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (include\components\algo\inc\lib_aoa.h)(0x668D7167)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | F (.\include\components\algo\lib\lib_aoa.lib)(0x668D7167)()
|
| | | F (.\include\components\algo\lib\lib_ranging.lib)(0x668D7167)()
|
| | | F (.\include\devices\MK800X\Source\startup_MK800X.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/devices/MK800X/Source -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/startup_mk800x.o -MD)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | F (.\include\devices\MK800X\Source\system_MK800X.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/devices/MK800X/Source -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/system_mk800x.o -MD)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | F (.\include\drivers\lib\lib_lsp.lib)(0x668D7166)()
|
| | | F (.\include\drivers\lib\lib_mac_phy.lib)(0x668D7166)()
|
| | | F (.\include\drivers\mk_adc.c)(0x66A7306E)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_adc.o -MD)
|
| | | I (include\drivers\mk_adc.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_aes.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_aes.o -MD)
|
| | | I (include\drivers\mk_aes.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\mk_calib.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_calib.o -MD)
|
| | | I (include\drivers\mk_calib.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_rtc.h)(0x668D7165)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_clock.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_clock.o -MD)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\include\drivers\mk_dma.c)(0x66A1A4DA)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_dma.o -MD)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\mk_dual_timer.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_dual_timer.o -MD)
|
| | | I (include\drivers\mk_dual_timer.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\mk_flash.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_flash.o -MD)
|
| | | I (include\drivers\mk_flash.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\mk_gpio.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_gpio.o -MD)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\mk_io.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_io.o -MD)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\include\drivers\mk_misc.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_misc.o -MD)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dual_timer.h)(0x668D7165)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_power.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_power.o -MD)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\drivers\mk_flash.h)(0x668D7165)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_reset.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_reset.o -MD)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\mk_rtc.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_rtc.o -MD)
|
| | | I (include\drivers\mk_rtc.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_sleep_timer.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_sleep_timer.o -MD)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_trace.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_trace.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
|
| | | F (.\include\drivers\mk_uart.c)(0x66A1A482)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_uart.o -MD)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_uwb.c)(0x668D7166)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_uwb.o -MD)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_aes.h)(0x668D7165)
|
| | | I (include\drivers\mk_lsp.h)(0x668D7166)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\drivers\mk_wdt.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/mk_wdt.o -MD)
|
| | | I (include\drivers\mk_wdt.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_reset.h)(0x668D7165)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | F (.\include\drivers\serial_at_cmd_app.c)(0x669E10FE)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/serial_at_cmd_app.o -MD)
|
| | | I (include\drivers\serial_at_cmd_app.h)(0x66866AC7)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (include\drivers\global_param.h)(0x669E032E)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
|
| | | I (include\drivers\Usart.h)(0x669E0D33)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\drivers\global_param.c)(0x669E1627)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/global_param.o -MD)
|
| | | I (include\drivers\global_param.h)(0x669E032E)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_flash.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | F (.\include\drivers\Usart.c)(0x6690EF22)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/usart.o -MD)
|
| | | I (include\drivers\Usart.h)(0x669E0D33)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | F (.\include\drivers\Usart1.c)(0x6690F295)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/usart1.o -MD)
|
| | | I (include\drivers\Usart.h)(0x669E0D33)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (include\drivers\Usart1.h)(0x668661D7)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
|
| | | F (.\dw_app_anchor.c)(0x669E1D1B)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/dw_app_anchor.o -MD)
|
| | | I (dw_app_anchor.h)(0x669A1FB1)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | F (.\include\board\board.c)(0x66A1AE6B)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/board -I ./include/board -I ../keil -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/board.o -MD)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_clock.h)(0x668D7165)
|
| | | I (include\drivers\mk_calib.h)(0x668D7165)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | F (..\pin_config.c)(0x668F47D8)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/board -I ../keil -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/pin_config.o -MD)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | F (.\include\main\main.c)(0x66A1B522)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/board -I ../keil -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/main.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_wdt.h)(0x668D7165)
|
| | | I (include\drivers\mk_calib.h)(0x668D7165)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_flash.h)(0x668D7165)
|
| | | I (include\components\libc\libc_rom.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\math.h)(0x5DDFFD6C)
|
| | | I (include\drivers\serial_at_cmd_app.h)(0x66866AC7)
|
| | | I (include\drivers\global_param.h)(0x669E032E)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | I (include\components\wsf\include\wsf_nvm.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\Usart.h)(0x669E0D33)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_assert.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/wsf/include/platform -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_assert.o -MD)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_buf.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_buf.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\components\wsf\include\wsf_heap.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_math.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_os.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_bufio.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_bufio.o -MD)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_bufio.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_os.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_uart.h)(0x668D7167)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_heap.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_heap.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_math.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_os.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_heap.h)(0x668D7167)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_msg.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_msg.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_msg.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_os.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_nvm.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_nvm.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_nvm.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\platform\pal_flash.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\components\crc\crc.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_os.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_os.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_os.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_timer.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_msg.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_queue.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_queue.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_timer.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_timer.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_timer.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_os.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\include\components\wsf\sources\port\baremetal\wsf_trace.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/wsf_trace.o -MD)
|
| | | I (include\components\wsf\include\wsf_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\components\wsf\include\wsf_bufio.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
|
| | | I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
|
| | | F (.\include\components\wsf\sources\platform\pal_flash.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/wsf/sources/platform -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/pal_flash.o -MD)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\components\wsf\include\platform\pal_flash.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_flash.h)(0x668D7165)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | F (.\include\components\wsf\sources\platform\pal_sys.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/pal_sys.o -MD)
|
| | | I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\components\wsf\include\platform\pal_uart.h)(0x668D7167)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | F (.\include\components\wsf\sources\platform\pal_uart.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/pal_uart.o -MD)
|
| | | I (include\components\wsf\include\platform\pal_uart.h)(0x668D7167)
|
| | | I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | F (.\simple_ss_twr_dw_resp.c)(0x66A35035)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_ss_twr_dw_resp.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
|
| | | I (dw_app_anchor.h)(0x669A1FB1)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_init\simple_ds_twr_init.c)(0x66A377C7)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_ds_twr_init.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_init_sts\simple_ds_twr_init_sts.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_ds_twr_init_sts.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
|
| | | I (include\components\algo\inc\lib_aoa.h)(0x668D7167)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp\simple_ds_twr_resp.c)(0x66A1F453)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_ds_twr_resp.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp_sts\simple_ds_twr_resp_sts.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_ds_twr_resp_sts.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\drivers\mk_sleep_timer.h)(0x668D7165)
|
| | | I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
|
| | | I (include\components\algo\inc\lib_aoa.h)(0x668D7167)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\src\uwb_examples\uwb_simple_example\simple_rx\simple_rx.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_rx.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\src\uwb_examples\uwb_simple_example\simple_tx\simple_tx.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/simple_tx.o -MD)
|
| | | I (include\drivers\mk_trace.h)(0x668D7165)
|
| | | I (include\drivers\mk_common.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
|
| | | I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
|
| | | I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
|
| | | I (..\user_config.h)(0x66A6FFC4)
|
| | | I (include\drivers\mk_uart.h)(0x66A1A5A8)
|
| | | I (include\drivers\mk_dma.h)(0x66A1A50C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (include\drivers\mk_uwb.h)(0x66A1FA40)
|
| | | I (include\drivers\mk_mac.h)(0x668D7166)
|
| | | I (include\drivers\mk_phy.h)(0x668D7166)
|
| | | I (include\drivers\mk_misc.h)(0x668D7165)
|
| | | I (include\drivers\mk_power.h)(0x668D7165)
|
| | | I (include\board\board.h)(0x66A1AE96)
|
| | | I (include\drivers\mk_gpio.h)(0x668D7165)
|
| | | I (include\drivers\mk_io.h)(0x668D7165)
|
| | | F (.\include\components\crc\crc.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/crc -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/crc.o -MD)
|
| | | I (include\components\crc\crc.h)(0x668D7167)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
|
| | | F (.\include\components\libc\libc.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char
-D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/libc -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter
-I./RTE/_MK8000_Release
-Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include
-Id:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN
-o ./objects/libc.o -MD)
|
| | | I (include\components\libc\libc_rom.h)(0x668D7165)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
|
| | | I (d:\Keil_v5\ARM\ARMCLANG\include\math.h)(0x5DDFFD6C)
|
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_assert.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_assert.c \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_buf.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_buf.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_buf.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_cs.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | include\components\wsf\include\wsf_heap.h \ |
| | | include\components\wsf\include\wsf_math.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_queue.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_bufio.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_bufio.c \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | include\components\wsf\include\wsf_bufio.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_cs.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\platform\pal_uart.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_heap.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_heap.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_cs.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | include\components\wsf\include\wsf_buf.h \ |
| | | include\components\wsf\include\wsf_math.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_heap.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_msg.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_msg.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_msg.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | include\components\wsf\include\wsf_buf.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_os.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_nvm.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_nvm.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_nvm.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\platform\pal_flash.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\crc\crc.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_os.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_os.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | include\components\wsf\include\wsf_timer.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_buf.h \ |
| | | include\components\wsf\include\wsf_msg.h \ |
| | | include\components\wsf\include\wsf_cs.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_queue.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_queue.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_cs.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_timer.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_timer.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_timer.h \ |
| | | include\components\wsf\include\wsf_os.h \ |
| | | include\components\wsf\include\wsf_queue.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_cs.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\wsf\include\wsf_trace.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ./objects/wsf_trace.o: \ |
| | | include\components\wsf\sources\port\baremetal\wsf_trace.c \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \ |
| | | include\components\wsf\include\wsf_types.h \ |
| | | include\components\wsf\include\wsf_bufio.h \ |
| | | include\components\wsf\include\wsf_buf.h \ |
| | | include\components\wsf\include\platform\pal_sys.h \ |
| | | include\components\wsf\include\platform\pal_types.h \ |
| | | include\drivers\mk_common.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \ |
| | | include\devices\MK800X\Include\MK800X.h \ |
| | | include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \ |
| | | include\CMSIS\Include\cmsis_compiler.h \ |
| | | include\CMSIS\Include\cmsis_armclang.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \ |
| | | d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \ |
| | | include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \ |
| | | include\components\wsf\include\wsf_assert.h \ |
| | | include\components\wsf\include\wsf_trace.h \ |
| | | include\components\wsf\include\wsf_cs.h |
¶Ô±ÈÐÂÎļþ |
| | |
| | | #include "dw_app_anchor.h" |
| | | #include "stdint.h" |
| | | #include <string.h> |
| | | #if defined (MK_SS_TWR_DW_INIT) |
| | | static float clockOffsetRatio; |
| | | static double rtd_init, rtd_resp; |
| | | static double tof,distance; |
| | | #define SPEED_OF_LIGHT 299702547 |
| | | #define DWT_TIME_UNITS (1.0/499.2e6/128.0) //!< = 15.65e-12 s |
| | | static uint32_t anc_pollrx[MAX_NEARBASE_NUM],anc_resptx[MAX_NEARBASE_NUM],tag_resprx[MAX_NEARBASE_NUM],tag_polltx[MAX_NEARBASE_NUM]; |
| | | static int32_t anc_clockoffset[MAX_NEARBASE_NUM]; |
| | | static int16_t anc_distoffset[MAX_NEARBASE_NUM]; |
| | | extern uint8_t taglist_keeptime[MAX_TAG_LIST_NUM]; //æ¯ä¸ªæ ç¾åæ´»æ¶é´ |
| | | extern uint16_t taglist_id[MAX_TAG_LIST_NUM],taglist_dist[MAX_TAG_LIST_NUM]; //æ ç¾è·ç¦»åæ ç¾çID |
| | | extern uint16_t taglist_total_num,taglist_current_index; |
| | | |
| | | extern uint8_t exsistbase_list[MAX_NEARBASE_NUM]; |
| | | extern int32_t nearbase_distlist[MAX_NEARBASE_NUM]; |
| | | void SetANCTimestap(uint8_t i,uint8_t* pollrx,uint8_t* resptx,uint32_t resprx,uint8_t* distoffset,int32_t anc_clockoffset_from_MK) //åå
¥æ¶é´æ³ä¿¡æ¯ |
| | | { |
| | | memcpy(&anc_pollrx[i],pollrx,4); |
| | | memcpy(&anc_resptx[i],resptx,4); |
| | | memcpy(&tag_resprx[i],&resprx,4); |
| | | memcpy(&anc_distoffset[i],distoffset,2); |
| | | anc_clockoffset[i] = anc_clockoffset_from_MK;//MK8000ä¿®æ¹ |
| | | } |
| | | void CalculateDists(int64_t poll_tx_ts) |
| | | { |
| | | for(int i=0;i<MAX_NEARBASE_NUM;i++) |
| | | { |
| | | //rec_anc_signalpower[i] = exsistbase_list[i]; |
| | | if(exsistbase_list[i]==KEEP_TIMES) |
| | | { |
| | | // exsistbase_list[i]--; |
| | | #ifdef _UWB_4G |
| | | clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_2 / 1.0e6) ; |
| | | #else |
| | | clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_5 / 1.0e6) ;//MK8000ä¿®æ¹ |
| | | #endif |
| | | rtd_init = tag_resprx[i] - (uint32_t)poll_tx_ts; |
| | | rtd_resp = anc_resptx[i] - anc_pollrx[i]; |
| | | tof = ((rtd_init - rtd_resp * (1 - clockOffsetRatio)) / 2.0) * DWT_TIME_UNITS; |
| | | distance = tof * SPEED_OF_LIGHT; |
| | | if(distance>-10&&distance<1000) |
| | | { |
| | | nearbase_distlist[i] = distance*100+anc_distoffset[i]; |
| | | } |
| | | }else{ |
| | | // nearbase_distlist[i] = 0x1ffff; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | #endif |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | #ifndef __DW_APP_H__ |
| | | #define __DW_APP_H__ |
| | | #include "stdint.h" |
| | | void SetANCTimestap(uint8_t i,uint8_t* pollrx,uint8_t* resptx,uint32_t resprx,uint8_t* distoffset,int32_t anc_clockoffset); |
| | | void CalculateDists(int64_t poll_tx_ts); |
| | | #define MBX_RESPONSE 0x21 |
| | | #define MBX_POLL 0x20 |
| | | #define MBX_RESPONSE 0x21 |
| | | #define MBX_FINAL 0x22 |
| | | #define MBX_PRAAREPLY 0x23 |
| | | #define MBX_REG 0x24 |
| | | #define MESSAGE_TYPE_IDX 9 |
| | | #define TAG_ID_IDX 5 |
| | | #define GROUP_ID_IDX 0 |
| | | #define ANCHOR_ID_IDX 1 |
| | | #define MAX_NEARBASE_NUM 25 |
| | | #define TAG_KEEPTIMES 30 //æ ç¾åæ´»æ¶é´ |
| | | #define KEEP_TIMES 5 |
| | | #define TAG_NUM_IN_SYS 25 |
| | | #define FZ_NEARBASENUM_INDEX 10 |
| | | #define FZ_NEARBASEID_INDEX 11 |
| | | |
| | | #define DIST_IDX 10 |
| | | #define SEQUENCE_IDX 3 |
| | | #define BATTARY_IDX 4 |
| | | //NEAR POLL |
| | | #define RESP_MSG_POLL_RX_TS_IDX 26 |
| | | #define RESP_MSG_RESP_TX_TS_IDX 30 |
| | | #define RESP_MSG_ANC_DISTOFFSET 34 |
| | | |
| | | #define TAG_KEEPTIMES 30 //æ ç¾åæ´»æ¶é´ |
| | | #define MAX_TAG_LIST_NUM 200 //åæ¶é讯æ ç¾æå¤§æ°é |
| | | |
| | | #define FREQ_OFFSET_MULTIPLIER (998.4e6/2.0/1024.0/131072.0) |
| | | #define FREQ_OFFSET_MULTIPLIER_110KB (998.4e6/2.0/8192.0/131072.0) |
| | | |
| | | #define HERTZ_TO_PPM_MULTIPLIER_CHAN_1 (-1.0e6/3494.4e6) |
| | | #define HERTZ_TO_PPM_MULTIPLIER_CHAN_2 (-1.0e6/3993.6e6) |
| | | #define HERTZ_TO_PPM_MULTIPLIER_CHAN_3 (-1.0e6/4492.8e6) |
| | | #define HERTZ_TO_PPM_MULTIPLIER_CHAN_5 (-1.0e6/6489.6e6) |
| | | #endif |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_armcc.h |
| | | * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file |
| | | * @version V5.2.1 |
| | | * @date 26. March 2020 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2009-2020 Arm Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | #ifndef __CMSIS_ARMCC_H |
| | | #define __CMSIS_ARMCC_H |
| | | |
| | | |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) |
| | | #error "Please use Arm Compiler Toolchain V4.0.677 or later!" |
| | | #endif |
| | | |
| | | /* CMSIS compiler control architecture macros */ |
| | | #if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ |
| | | (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) |
| | | #define __ARM_ARCH_6M__ 1 |
| | | #endif |
| | | |
| | | #if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) |
| | | #define __ARM_ARCH_7M__ 1 |
| | | #endif |
| | | |
| | | #if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) |
| | | #define __ARM_ARCH_7EM__ 1 |
| | | #endif |
| | | |
| | | /* __ARM_ARCH_8M_BASE__ not applicable */ |
| | | /* __ARM_ARCH_8M_MAIN__ not applicable */ |
| | | /* __ARM_ARCH_8_1M_MAIN__ not applicable */ |
| | | |
| | | /* CMSIS compiler control DSP macros */ |
| | | #if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) |
| | | #define __ARM_FEATURE_DSP 1 |
| | | #endif |
| | | |
| | | /* CMSIS compiler specific defines */ |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE __inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static __inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE static __forceinline |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | #define __NO_RETURN __declspec(noreturn) |
| | | #endif |
| | | #ifndef __USED |
| | | #define __USED __attribute__((used)) |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __attribute__((weak)) |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED __attribute__((packed)) |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT __packed struct |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION __packed union |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #define __RESTRICT __restrict |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #define __COMPILER_BARRIER() __memory_changed() |
| | | #endif |
| | | |
| | | /* ######################### Startup and Lowlevel Init ######################## */ |
| | | |
| | | #ifndef __PROGRAM_START |
| | | #define __PROGRAM_START __main |
| | | #endif |
| | | |
| | | #ifndef __INITIAL_SP |
| | | #define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit |
| | | #endif |
| | | |
| | | #ifndef __STACK_LIMIT |
| | | #define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE |
| | | #define __VECTOR_TABLE __Vectors |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE_ATTRIBUTE |
| | | #define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) |
| | | #endif |
| | | |
| | | /* ########################### Core Function Access ########################### */ |
| | | /** \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Enable IRQ Interrupts |
| | | \details Enables IRQ interrupts by clearing the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | /* intrinsic void __enable_irq(); */ |
| | | |
| | | |
| | | /** |
| | | \brief Disable IRQ Interrupts |
| | | \details Disables IRQ interrupts by setting the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | /* intrinsic void __disable_irq(); */ |
| | | |
| | | /** |
| | | \brief Get Control Register |
| | | \details Returns the content of the Control Register. |
| | | \return Control Register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_CONTROL(void) |
| | | { |
| | | register uint32_t __regControl __ASM("control"); |
| | | return(__regControl); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Control Register |
| | | \details Writes the given value to the Control Register. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_INLINE void __set_CONTROL(uint32_t control) |
| | | { |
| | | register uint32_t __regControl __ASM("control"); |
| | | __regControl = control; |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get IPSR Register |
| | | \details Returns the content of the IPSR Register. |
| | | \return IPSR Register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_IPSR(void) |
| | | { |
| | | register uint32_t __regIPSR __ASM("ipsr"); |
| | | return(__regIPSR); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get APSR Register |
| | | \details Returns the content of the APSR Register. |
| | | \return APSR Register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_APSR(void) |
| | | { |
| | | register uint32_t __regAPSR __ASM("apsr"); |
| | | return(__regAPSR); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get xPSR Register |
| | | \details Returns the content of the xPSR Register. |
| | | \return xPSR Register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_xPSR(void) |
| | | { |
| | | register uint32_t __regXPSR __ASM("xpsr"); |
| | | return(__regXPSR); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer |
| | | \details Returns the current value of the Process Stack Pointer (PSP). |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_PSP(void) |
| | | { |
| | | register uint32_t __regProcessStackPointer __ASM("psp"); |
| | | return(__regProcessStackPointer); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer |
| | | \details Assigns the given value to the Process Stack Pointer (PSP). |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) |
| | | { |
| | | register uint32_t __regProcessStackPointer __ASM("psp"); |
| | | __regProcessStackPointer = topOfProcStack; |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer |
| | | \details Returns the current value of the Main Stack Pointer (MSP). |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_MSP(void) |
| | | { |
| | | register uint32_t __regMainStackPointer __ASM("msp"); |
| | | return(__regMainStackPointer); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer |
| | | \details Assigns the given value to the Main Stack Pointer (MSP). |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) |
| | | { |
| | | register uint32_t __regMainStackPointer __ASM("msp"); |
| | | __regMainStackPointer = topOfMainStack; |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Priority Mask |
| | | \details Returns the current state of the priority mask bit from the Priority Mask Register. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_PRIMASK(void) |
| | | { |
| | | register uint32_t __regPriMask __ASM("primask"); |
| | | return(__regPriMask); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Priority Mask |
| | | \details Assigns the given value to the Priority Mask Register. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_INLINE void __set_PRIMASK(uint32_t priMask) |
| | | { |
| | | register uint32_t __regPriMask __ASM("primask"); |
| | | __regPriMask = (priMask); |
| | | } |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Enable FIQ |
| | | \details Enables FIQ interrupts by clearing the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | #define __enable_fault_irq __enable_fiq |
| | | |
| | | |
| | | /** |
| | | \brief Disable FIQ |
| | | \details Disables FIQ interrupts by setting the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | #define __disable_fault_irq __disable_fiq |
| | | |
| | | |
| | | /** |
| | | \brief Get Base Priority |
| | | \details Returns the current value of the Base Priority register. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_BASEPRI(void) |
| | | { |
| | | register uint32_t __regBasePri __ASM("basepri"); |
| | | return(__regBasePri); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority |
| | | \details Assigns the given value to the Base Priority register. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_INLINE void __set_BASEPRI(uint32_t basePri) |
| | | { |
| | | register uint32_t __regBasePri __ASM("basepri"); |
| | | __regBasePri = (basePri & 0xFFU); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority with condition |
| | | \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, |
| | | or the new value increases the BASEPRI priority level. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) |
| | | { |
| | | register uint32_t __regBasePriMax __ASM("basepri_max"); |
| | | __regBasePriMax = (basePri & 0xFFU); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Fault Mask |
| | | \details Returns the current value of the Fault Mask register. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_FAULTMASK(void) |
| | | { |
| | | register uint32_t __regFaultMask __ASM("faultmask"); |
| | | return(__regFaultMask); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Fault Mask |
| | | \details Assigns the given value to the Fault Mask register. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) |
| | | { |
| | | register uint32_t __regFaultMask __ASM("faultmask"); |
| | | __regFaultMask = (faultMask & (uint32_t)1U); |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ |
| | | |
| | | |
| | | /** |
| | | \brief Get FPSCR |
| | | \details Returns the current value of the Floating Point Status/Control register. |
| | | \return Floating Point Status/Control register value |
| | | */ |
| | | __STATIC_INLINE uint32_t __get_FPSCR(void) |
| | | { |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | register uint32_t __regfpscr __ASM("fpscr"); |
| | | return(__regfpscr); |
| | | #else |
| | | return(0U); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set FPSCR |
| | | \details Assigns the given value to the Floating Point Status/Control register. |
| | | \param [in] fpscr Floating Point Status/Control value to set |
| | | */ |
| | | __STATIC_INLINE void __set_FPSCR(uint32_t fpscr) |
| | | { |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | register uint32_t __regfpscr __ASM("fpscr"); |
| | | __regfpscr = (fpscr); |
| | | #else |
| | | (void)fpscr; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | /*@} end of CMSIS_Core_RegAccFunctions */ |
| | | |
| | | |
| | | /* ########################## Core Instruction Access ######################### */ |
| | | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface |
| | | Access to dedicated instructions |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief No Operation |
| | | \details No Operation does nothing. This instruction can be used for code alignment purposes. |
| | | */ |
| | | #define __NOP __nop |
| | | |
| | | |
| | | /** |
| | | \brief Wait For Interrupt |
| | | \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. |
| | | */ |
| | | #define __WFI __wfi |
| | | |
| | | |
| | | /** |
| | | \brief Wait For Event |
| | | \details Wait For Event is a hint instruction that permits the processor to enter |
| | | a low-power state until one of a number of events occurs. |
| | | */ |
| | | #define __WFE __wfe |
| | | |
| | | |
| | | /** |
| | | \brief Send Event |
| | | \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. |
| | | */ |
| | | #define __SEV __sev |
| | | |
| | | |
| | | /** |
| | | \brief Instruction Synchronization Barrier |
| | | \details Instruction Synchronization Barrier flushes the pipeline in the processor, |
| | | so that all instructions following the ISB are fetched from cache or memory, |
| | | after the instruction has been completed. |
| | | */ |
| | | #define __ISB() __isb(0xF) |
| | | |
| | | /** |
| | | \brief Data Synchronization Barrier |
| | | \details Acts as a special kind of Data Memory Barrier. |
| | | It completes when all explicit memory accesses before this instruction complete. |
| | | */ |
| | | #define __DSB() __dsb(0xF) |
| | | |
| | | /** |
| | | \brief Data Memory Barrier |
| | | \details Ensures the apparent order of the explicit memory operations before |
| | | and after the instruction, without ensuring their completion. |
| | | */ |
| | | #define __DMB() __dmb(0xF) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (32 bit) |
| | | \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REV __rev |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #ifndef __NO_EMBEDDED_ASM |
| | | __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) |
| | | { |
| | | rev16 r0, r0 |
| | | bx lr |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #ifndef __NO_EMBEDDED_ASM |
| | | __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) |
| | | { |
| | | revsh r0, r0 |
| | | bx lr |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right in unsigned value (32 bit) |
| | | \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. |
| | | \param [in] op1 Value to rotate |
| | | \param [in] op2 Number of Bits to rotate |
| | | \return Rotated value |
| | | */ |
| | | #define __ROR __ror |
| | | |
| | | |
| | | /** |
| | | \brief Breakpoint |
| | | \details Causes the processor to enter Debug state. |
| | | Debug tools can use this to investigate system state when the instruction at a particular address is reached. |
| | | \param [in] value is ignored by the processor. |
| | | If required, a debugger can use it to store additional information about the breakpoint. |
| | | */ |
| | | #define __BKPT(value) __breakpoint(value) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse bit order of value |
| | | \details Reverses the bit order of the given value. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) |
| | | #define __RBIT __rbit |
| | | #else |
| | | __attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ |
| | | |
| | | result = value; /* r will be reversed bits of v; first get LSB of v */ |
| | | for (value >>= 1U; value != 0U; value >>= 1U) |
| | | { |
| | | result <<= 1U; |
| | | result |= value & 1U; |
| | | s--; |
| | | } |
| | | result <<= s; /* shift when v's highest bits are zero */ |
| | | return result; |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Count leading zeros |
| | | \details Counts the number of leading zeros of a data value. |
| | | \param [in] value Value to count the leading zeros |
| | | \return number of leading zeros in value |
| | | */ |
| | | #define __CLZ __clz |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) |
| | | |
| | | /** |
| | | \brief LDR Exclusive (8 bit) |
| | | \details Executes a exclusive LDR instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) |
| | | #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) |
| | | #else |
| | | #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (16 bit) |
| | | \details Executes a exclusive LDR instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) |
| | | #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) |
| | | #else |
| | | #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (32 bit) |
| | | \details Executes a exclusive LDR instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) |
| | | #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) |
| | | #else |
| | | #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (8 bit) |
| | | \details Executes a exclusive STR instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) |
| | | #define __STREXB(value, ptr) __strex(value, ptr) |
| | | #else |
| | | #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (16 bit) |
| | | \details Executes a exclusive STR instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) |
| | | #define __STREXH(value, ptr) __strex(value, ptr) |
| | | #else |
| | | #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (32 bit) |
| | | \details Executes a exclusive STR instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) |
| | | #define __STREXW(value, ptr) __strex(value, ptr) |
| | | #else |
| | | #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Remove the exclusive lock |
| | | \details Removes the exclusive lock which is created by LDREX. |
| | | */ |
| | | #define __CLREX __clrex |
| | | |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | #define __SSAT __ssat |
| | | |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | #define __USAT __usat |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right with Extend (32 bit) |
| | | \details Moves each bit of a bitstring right by one bit. |
| | | The carry input is shifted in at the left end of the bitstring. |
| | | \param [in] value Value to rotate |
| | | \return Rotated value |
| | | */ |
| | | #ifndef __NO_EMBEDDED_ASM |
| | | __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) |
| | | { |
| | | rrx r0, r0 |
| | | bx lr |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | #define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | #define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | #define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged STRT instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | #define __STRBT(value, ptr) __strt(value, ptr) |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged STRT instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | #define __STRHT(value, ptr) __strt(value, ptr) |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged STRT instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | #define __STRT(value, ptr) __strt(value, ptr) |
| | | |
| | | #else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | __attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) |
| | | { |
| | | if ((sat >= 1U) && (sat <= 32U)) |
| | | { |
| | | const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); |
| | | const int32_t min = -1 - max ; |
| | | if (val > max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < min) |
| | | { |
| | | return min; |
| | | } |
| | | } |
| | | return val; |
| | | } |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | __attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) |
| | | { |
| | | if (sat <= 31U) |
| | | { |
| | | const uint32_t max = ((1U << sat) - 1U); |
| | | if (val > (int32_t)max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < 0) |
| | | { |
| | | return 0U; |
| | | } |
| | | } |
| | | return (uint32_t)val; |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ |
| | | |
| | | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ |
| | | |
| | | |
| | | /* ################### Compiler specific Intrinsics ########################### */ |
| | | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics |
| | | Access to dedicated SIMD instructions |
| | | @{ |
| | | */ |
| | | |
| | | #if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) |
| | | |
| | | #define __SADD8 __sadd8 |
| | | #define __QADD8 __qadd8 |
| | | #define __SHADD8 __shadd8 |
| | | #define __UADD8 __uadd8 |
| | | #define __UQADD8 __uqadd8 |
| | | #define __UHADD8 __uhadd8 |
| | | #define __SSUB8 __ssub8 |
| | | #define __QSUB8 __qsub8 |
| | | #define __SHSUB8 __shsub8 |
| | | #define __USUB8 __usub8 |
| | | #define __UQSUB8 __uqsub8 |
| | | #define __UHSUB8 __uhsub8 |
| | | #define __SADD16 __sadd16 |
| | | #define __QADD16 __qadd16 |
| | | #define __SHADD16 __shadd16 |
| | | #define __UADD16 __uadd16 |
| | | #define __UQADD16 __uqadd16 |
| | | #define __UHADD16 __uhadd16 |
| | | #define __SSUB16 __ssub16 |
| | | #define __QSUB16 __qsub16 |
| | | #define __SHSUB16 __shsub16 |
| | | #define __USUB16 __usub16 |
| | | #define __UQSUB16 __uqsub16 |
| | | #define __UHSUB16 __uhsub16 |
| | | #define __SASX __sasx |
| | | #define __QASX __qasx |
| | | #define __SHASX __shasx |
| | | #define __UASX __uasx |
| | | #define __UQASX __uqasx |
| | | #define __UHASX __uhasx |
| | | #define __SSAX __ssax |
| | | #define __QSAX __qsax |
| | | #define __SHSAX __shsax |
| | | #define __USAX __usax |
| | | #define __UQSAX __uqsax |
| | | #define __UHSAX __uhsax |
| | | #define __USAD8 __usad8 |
| | | #define __USADA8 __usada8 |
| | | #define __SSAT16 __ssat16 |
| | | #define __USAT16 __usat16 |
| | | #define __UXTB16 __uxtb16 |
| | | #define __UXTAB16 __uxtab16 |
| | | #define __SXTB16 __sxtb16 |
| | | #define __SXTAB16 __sxtab16 |
| | | #define __SMUAD __smuad |
| | | #define __SMUADX __smuadx |
| | | #define __SMLAD __smlad |
| | | #define __SMLADX __smladx |
| | | #define __SMLALD __smlald |
| | | #define __SMLALDX __smlaldx |
| | | #define __SMUSD __smusd |
| | | #define __SMUSDX __smusdx |
| | | #define __SMLSD __smlsd |
| | | #define __SMLSDX __smlsdx |
| | | #define __SMLSLD __smlsld |
| | | #define __SMLSLDX __smlsldx |
| | | #define __SEL __sel |
| | | #define __QADD __qadd |
| | | #define __QSUB __qsub |
| | | |
| | | #define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ |
| | | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) |
| | | |
| | | #define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ |
| | | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) |
| | | |
| | | #define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ |
| | | ((int64_t)(ARG3) << 32U) ) >> 32U)) |
| | | |
| | | #define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ |
| | | /*@} end of group CMSIS_SIMD_intrinsics */ |
| | | |
| | | |
| | | #endif /* __CMSIS_ARMCC_H */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_armclang.h |
| | | * @brief CMSIS compiler armclang (Arm Compiler 6) header file |
| | | * @version V5.3.1 |
| | | * @date 26. March 2020 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2009-2020 Arm Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | /*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ |
| | | |
| | | #ifndef __CMSIS_ARMCLANG_H |
| | | #define __CMSIS_ARMCLANG_H |
| | | |
| | | #pragma clang system_header /* treat file as system include file */ |
| | | |
| | | #ifndef __ARM_COMPAT_H |
| | | #include <arm_compat.h> /* Compatibility header for Arm Compiler 5 intrinsics */ |
| | | #endif |
| | | |
| | | /* CMSIS compiler specific defines */ |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE __inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static __inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | #define __NO_RETURN __attribute__((__noreturn__)) |
| | | #endif |
| | | #ifndef __USED |
| | | #define __USED __attribute__((used)) |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __attribute__((weak)) |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION union __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ |
| | | struct __attribute__((packed)) T_UINT32 { uint32_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ |
| | | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ |
| | | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ |
| | | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ |
| | | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #define __RESTRICT __restrict |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #define __COMPILER_BARRIER() __ASM volatile("":::"memory") |
| | | #endif |
| | | |
| | | /* ######################### Startup and Lowlevel Init ######################## */ |
| | | |
| | | #ifndef __PROGRAM_START |
| | | #define __PROGRAM_START __main |
| | | #endif |
| | | |
| | | #ifndef __INITIAL_SP |
| | | #define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit |
| | | #endif |
| | | |
| | | #ifndef __STACK_LIMIT |
| | | #define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE |
| | | #define __VECTOR_TABLE __Vectors |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE_ATTRIBUTE |
| | | #define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) |
| | | #endif |
| | | |
| | | /* ########################### Core Function Access ########################### */ |
| | | /** \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Enable IRQ Interrupts |
| | | \details Enables IRQ interrupts by clearing the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | /* intrinsic void __enable_irq(); see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Disable IRQ Interrupts |
| | | \details Disables IRQ interrupts by setting the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | /* intrinsic void __disable_irq(); see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Get Control Register |
| | | \details Returns the content of the Control Register. |
| | | \return Control Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, control" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Control Register (non-secure) |
| | | \details Returns the content of the non-secure Control Register when in secure mode. |
| | | \return non-secure Control Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Control Register |
| | | \details Writes the given value to the Control Register. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) |
| | | { |
| | | __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Control Register (non-secure) |
| | | \details Writes the given value to the non-secure Control Register when in secure state. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) |
| | | { |
| | | __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get IPSR Register |
| | | \details Returns the content of the IPSR Register. |
| | | \return IPSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_IPSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get APSR Register |
| | | \details Returns the content of the APSR Register. |
| | | \return APSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_APSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, apsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get xPSR Register |
| | | \details Returns the content of the xPSR Register. |
| | | \return xPSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_xPSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer |
| | | \details Returns the current value of the Process Stack Pointer (PSP). |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PSP(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, psp" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Process Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer |
| | | \details Assigns the given value to the Process Stack Pointer (PSP). |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) |
| | | { |
| | | __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Process Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) |
| | | { |
| | | __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer |
| | | \details Returns the current value of the Main Stack Pointer (MSP). |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_MSP(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, msp" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Main Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer |
| | | \details Assigns the given value to the Main Stack Pointer (MSP). |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) |
| | | { |
| | | __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Main Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) |
| | | { |
| | | __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. |
| | | \return SP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. |
| | | \param [in] topOfStack Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) |
| | | { |
| | | __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Priority Mask |
| | | \details Returns the current state of the priority mask bit from the Priority Mask Register. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, primask" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Priority Mask (non-secure) |
| | | \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Priority Mask |
| | | \details Assigns the given value to the Priority Mask Register. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) |
| | | { |
| | | __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Priority Mask (non-secure) |
| | | \details Assigns the given value to the non-secure Priority Mask Register when in secure state. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) |
| | | { |
| | | __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) |
| | | /** |
| | | \brief Enable FIQ |
| | | \details Enables FIQ interrupts by clearing the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | #define __enable_fault_irq __enable_fiq /* see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Disable FIQ |
| | | \details Disables FIQ interrupts by setting the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | #define __disable_fault_irq __disable_fiq /* see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Get Base Priority |
| | | \details Returns the current value of the Base Priority register. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, basepri" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Base Priority (non-secure) |
| | | \details Returns the current value of the non-secure Base Priority register when in secure state. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority |
| | | \details Assigns the given value to the Base Priority register. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Base Priority (non-secure) |
| | | \details Assigns the given value to the non-secure Base Priority register when in secure state. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority with condition |
| | | \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, |
| | | or the new value increases the BASEPRI priority level. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Fault Mask |
| | | \details Returns the current value of the Fault Mask register. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Fault Mask (non-secure) |
| | | \details Returns the current value of the non-secure Fault Mask register when in secure state. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Fault Mask |
| | | \details Assigns the given value to the Fault Mask register. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) |
| | | { |
| | | __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Fault Mask (non-secure) |
| | | \details Assigns the given value to the non-secure Fault Mask register when in secure state. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) |
| | | { |
| | | __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always in non-secure |
| | | mode. |
| | | |
| | | \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). |
| | | \return PSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, psplim" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Process Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always in non-secure |
| | | mode. |
| | | |
| | | \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. |
| | | \return PSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored in non-secure |
| | | mode. |
| | | |
| | | \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). |
| | | \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)ProcStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Process Stack Pointer (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored in non-secure |
| | | mode. |
| | | |
| | | \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. |
| | | \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)ProcStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always. |
| | | |
| | | \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). |
| | | \return MSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, msplim" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Main Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always. |
| | | |
| | | \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. |
| | | \return MSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored. |
| | | |
| | | \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). |
| | | \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)MainStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Main Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored. |
| | | |
| | | \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. |
| | | \param [in] MainStackPtrLimit Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) |
| | | { |
| | | #if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)MainStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ |
| | | |
| | | /** |
| | | \brief Get FPSCR |
| | | \details Returns the current value of the Floating Point Status/Control register. |
| | | \return Floating Point Status/Control register value |
| | | */ |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr |
| | | #else |
| | | #define __get_FPSCR() ((uint32_t)0U) |
| | | #endif |
| | | |
| | | /** |
| | | \brief Set FPSCR |
| | | \details Assigns the given value to the Floating Point Status/Control register. |
| | | \param [in] fpscr Floating Point Status/Control value to set |
| | | */ |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #define __set_FPSCR __builtin_arm_set_fpscr |
| | | #else |
| | | #define __set_FPSCR(x) ((void)(x)) |
| | | #endif |
| | | |
| | | |
| | | /*@} end of CMSIS_Core_RegAccFunctions */ |
| | | |
| | | |
| | | /* ########################## Core Instruction Access ######################### */ |
| | | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface |
| | | Access to dedicated instructions |
| | | @{ |
| | | */ |
| | | |
| | | /* Define macros for porting to both thumb1 and thumb2. |
| | | * For thumb1, use low register (r0-r7), specified by constraint "l" |
| | | * Otherwise, use general registers, specified by constraint "r" */ |
| | | #if defined (__thumb__) && !defined (__thumb2__) |
| | | #define __CMSIS_GCC_OUT_REG(r) "=l" (r) |
| | | #define __CMSIS_GCC_RW_REG(r) "+l" (r) |
| | | #define __CMSIS_GCC_USE_REG(r) "l" (r) |
| | | #else |
| | | #define __CMSIS_GCC_OUT_REG(r) "=r" (r) |
| | | #define __CMSIS_GCC_RW_REG(r) "+r" (r) |
| | | #define __CMSIS_GCC_USE_REG(r) "r" (r) |
| | | #endif |
| | | |
| | | /** |
| | | \brief No Operation |
| | | \details No Operation does nothing. This instruction can be used for code alignment purposes. |
| | | */ |
| | | #define __NOP __builtin_arm_nop |
| | | |
| | | /** |
| | | \brief Wait For Interrupt |
| | | \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. |
| | | */ |
| | | #define __WFI __builtin_arm_wfi |
| | | |
| | | |
| | | /** |
| | | \brief Wait For Event |
| | | \details Wait For Event is a hint instruction that permits the processor to enter |
| | | a low-power state until one of a number of events occurs. |
| | | */ |
| | | #define __WFE __builtin_arm_wfe |
| | | |
| | | |
| | | /** |
| | | \brief Send Event |
| | | \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. |
| | | */ |
| | | #define __SEV __builtin_arm_sev |
| | | |
| | | |
| | | /** |
| | | \brief Instruction Synchronization Barrier |
| | | \details Instruction Synchronization Barrier flushes the pipeline in the processor, |
| | | so that all instructions following the ISB are fetched from cache or memory, |
| | | after the instruction has been completed. |
| | | */ |
| | | #define __ISB() __builtin_arm_isb(0xF) |
| | | |
| | | /** |
| | | \brief Data Synchronization Barrier |
| | | \details Acts as a special kind of Data Memory Barrier. |
| | | It completes when all explicit memory accesses before this instruction complete. |
| | | */ |
| | | #define __DSB() __builtin_arm_dsb(0xF) |
| | | |
| | | |
| | | /** |
| | | \brief Data Memory Barrier |
| | | \details Ensures the apparent order of the explicit memory operations before |
| | | and after the instruction, without ensuring their completion. |
| | | */ |
| | | #define __DMB() __builtin_arm_dmb(0xF) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (32 bit) |
| | | \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REV(value) __builtin_bswap32(value) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REV16(value) __ROR(__REV(value), 16) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REVSH(value) (int16_t)__builtin_bswap16(value) |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right in unsigned value (32 bit) |
| | | \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. |
| | | \param [in] op1 Value to rotate |
| | | \param [in] op2 Number of Bits to rotate |
| | | \return Rotated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) |
| | | { |
| | | op2 %= 32U; |
| | | if (op2 == 0U) |
| | | { |
| | | return op1; |
| | | } |
| | | return (op1 >> op2) | (op1 << (32U - op2)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Breakpoint |
| | | \details Causes the processor to enter Debug state. |
| | | Debug tools can use this to investigate system state when the instruction at a particular address is reached. |
| | | \param [in] value is ignored by the processor. |
| | | If required, a debugger can use it to store additional information about the breakpoint. |
| | | */ |
| | | #define __BKPT(value) __ASM volatile ("bkpt "#value) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse bit order of value |
| | | \details Reverses the bit order of the given value. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __RBIT __builtin_arm_rbit |
| | | |
| | | /** |
| | | \brief Count leading zeros |
| | | \details Counts the number of leading zeros of a data value. |
| | | \param [in] value Value to count the leading zeros |
| | | \return number of leading zeros in value |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) |
| | | { |
| | | /* Even though __builtin_clz produces a CLZ instruction on ARM, formally |
| | | __builtin_clz(0) is undefined behaviour, so handle this case specially. |
| | | This guarantees ARM-compatible results if happening to compile on a non-ARM |
| | | target, and ensures the compiler doesn't decide to activate any |
| | | optimisations using the logic "value was passed to __builtin_clz, so it |
| | | is non-zero". |
| | | ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a |
| | | single CLZ instruction. |
| | | */ |
| | | if (value == 0U) |
| | | { |
| | | return 32U; |
| | | } |
| | | return __builtin_clz(value); |
| | | } |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) |
| | | |
| | | /** |
| | | \brief LDR Exclusive (8 bit) |
| | | \details Executes a exclusive LDR instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | #define __LDREXB (uint8_t)__builtin_arm_ldrex |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (16 bit) |
| | | \details Executes a exclusive LDR instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | #define __LDREXH (uint16_t)__builtin_arm_ldrex |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (32 bit) |
| | | \details Executes a exclusive LDR instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | #define __LDREXW (uint32_t)__builtin_arm_ldrex |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (8 bit) |
| | | \details Executes a exclusive STR instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STREXB (uint32_t)__builtin_arm_strex |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (16 bit) |
| | | \details Executes a exclusive STR instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STREXH (uint32_t)__builtin_arm_strex |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (32 bit) |
| | | \details Executes a exclusive STR instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STREXW (uint32_t)__builtin_arm_strex |
| | | |
| | | |
| | | /** |
| | | \brief Remove the exclusive lock |
| | | \details Removes the exclusive lock which is created by LDREX. |
| | | */ |
| | | #define __CLREX __builtin_arm_clrex |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | #define __SSAT __builtin_arm_ssat |
| | | |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | #define __USAT __builtin_arm_usat |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right with Extend (32 bit) |
| | | \details Moves each bit of a bitstring right by one bit. |
| | | The carry input is shifted in at the left end of the bitstring. |
| | | \param [in] value Value to rotate |
| | | \return Rotated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return ((uint8_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return ((uint16_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged STRT instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged STRT instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged STRT instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); |
| | | } |
| | | |
| | | #else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) |
| | | { |
| | | if ((sat >= 1U) && (sat <= 32U)) |
| | | { |
| | | const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); |
| | | const int32_t min = -1 - max ; |
| | | if (val > max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < min) |
| | | { |
| | | return min; |
| | | } |
| | | } |
| | | return val; |
| | | } |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) |
| | | { |
| | | if (sat <= 31U) |
| | | { |
| | | const uint32_t max = ((1U << sat) - 1U); |
| | | if (val > (int32_t)max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < 0) |
| | | { |
| | | return 0U; |
| | | } |
| | | } |
| | | return (uint32_t)val; |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Load-Acquire (8 bit) |
| | | \details Executes a LDAB instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint8_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire (16 bit) |
| | | \details Executes a LDAH instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint16_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire (32 bit) |
| | | \details Executes a LDA instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (8 bit) |
| | | \details Executes a STLB instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (16 bit) |
| | | \details Executes a STLH instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (32 bit) |
| | | \details Executes a STL instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (8 bit) |
| | | \details Executes a LDAB exclusive instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | #define __LDAEXB (uint8_t)__builtin_arm_ldaex |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (16 bit) |
| | | \details Executes a LDAH exclusive instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | #define __LDAEXH (uint16_t)__builtin_arm_ldaex |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (32 bit) |
| | | \details Executes a LDA exclusive instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | #define __LDAEX (uint32_t)__builtin_arm_ldaex |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (8 bit) |
| | | \details Executes a STLB exclusive instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STLEXB (uint32_t)__builtin_arm_stlex |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (16 bit) |
| | | \details Executes a STLH exclusive instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STLEXH (uint32_t)__builtin_arm_stlex |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (32 bit) |
| | | \details Executes a STL exclusive instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STLEX (uint32_t)__builtin_arm_stlex |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ |
| | | |
| | | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ |
| | | |
| | | |
| | | /* ################### Compiler specific Intrinsics ########################### */ |
| | | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics |
| | | Access to dedicated SIMD instructions |
| | | @{ |
| | | */ |
| | | |
| | | #if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) |
| | | |
| | | #define __SADD8 __builtin_arm_sadd8 |
| | | #define __QADD8 __builtin_arm_qadd8 |
| | | #define __SHADD8 __builtin_arm_shadd8 |
| | | #define __UADD8 __builtin_arm_uadd8 |
| | | #define __UQADD8 __builtin_arm_uqadd8 |
| | | #define __UHADD8 __builtin_arm_uhadd8 |
| | | #define __SSUB8 __builtin_arm_ssub8 |
| | | #define __QSUB8 __builtin_arm_qsub8 |
| | | #define __SHSUB8 __builtin_arm_shsub8 |
| | | #define __USUB8 __builtin_arm_usub8 |
| | | #define __UQSUB8 __builtin_arm_uqsub8 |
| | | #define __UHSUB8 __builtin_arm_uhsub8 |
| | | #define __SADD16 __builtin_arm_sadd16 |
| | | #define __QADD16 __builtin_arm_qadd16 |
| | | #define __SHADD16 __builtin_arm_shadd16 |
| | | #define __UADD16 __builtin_arm_uadd16 |
| | | #define __UQADD16 __builtin_arm_uqadd16 |
| | | #define __UHADD16 __builtin_arm_uhadd16 |
| | | #define __SSUB16 __builtin_arm_ssub16 |
| | | #define __QSUB16 __builtin_arm_qsub16 |
| | | #define __SHSUB16 __builtin_arm_shsub16 |
| | | #define __USUB16 __builtin_arm_usub16 |
| | | #define __UQSUB16 __builtin_arm_uqsub16 |
| | | #define __UHSUB16 __builtin_arm_uhsub16 |
| | | #define __SASX __builtin_arm_sasx |
| | | #define __QASX __builtin_arm_qasx |
| | | #define __SHASX __builtin_arm_shasx |
| | | #define __UASX __builtin_arm_uasx |
| | | #define __UQASX __builtin_arm_uqasx |
| | | #define __UHASX __builtin_arm_uhasx |
| | | #define __SSAX __builtin_arm_ssax |
| | | #define __QSAX __builtin_arm_qsax |
| | | #define __SHSAX __builtin_arm_shsax |
| | | #define __USAX __builtin_arm_usax |
| | | #define __UQSAX __builtin_arm_uqsax |
| | | #define __UHSAX __builtin_arm_uhsax |
| | | #define __USAD8 __builtin_arm_usad8 |
| | | #define __USADA8 __builtin_arm_usada8 |
| | | #define __SSAT16 __builtin_arm_ssat16 |
| | | #define __USAT16 __builtin_arm_usat16 |
| | | #define __UXTB16 __builtin_arm_uxtb16 |
| | | #define __UXTAB16 __builtin_arm_uxtab16 |
| | | #define __SXTB16 __builtin_arm_sxtb16 |
| | | #define __SXTAB16 __builtin_arm_sxtab16 |
| | | #define __SMUAD __builtin_arm_smuad |
| | | #define __SMUADX __builtin_arm_smuadx |
| | | #define __SMLAD __builtin_arm_smlad |
| | | #define __SMLADX __builtin_arm_smladx |
| | | #define __SMLALD __builtin_arm_smlald |
| | | #define __SMLALDX __builtin_arm_smlaldx |
| | | #define __SMUSD __builtin_arm_smusd |
| | | #define __SMUSDX __builtin_arm_smusdx |
| | | #define __SMLSD __builtin_arm_smlsd |
| | | #define __SMLSDX __builtin_arm_smlsdx |
| | | #define __SMLSLD __builtin_arm_smlsld |
| | | #define __SMLSLDX __builtin_arm_smlsldx |
| | | #define __SEL __builtin_arm_sel |
| | | #define __QADD __builtin_arm_qadd |
| | | #define __QSUB __builtin_arm_qsub |
| | | |
| | | #define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ |
| | | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) |
| | | |
| | | #define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ |
| | | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) |
| | | |
| | | #define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) |
| | | |
| | | __STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | #endif /* (__ARM_FEATURE_DSP == 1) */ |
| | | /*@} end of group CMSIS_SIMD_intrinsics */ |
| | | |
| | | |
| | | #endif /* __CMSIS_ARMCLANG_H */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_armclang_ltm.h |
| | | * @brief CMSIS compiler armclang (Arm Compiler 6) header file |
| | | * @version V1.3.0 |
| | | * @date 26. March 2020 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2018-2020 Arm Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | /*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ |
| | | |
| | | #ifndef __CMSIS_ARMCLANG_H |
| | | #define __CMSIS_ARMCLANG_H |
| | | |
| | | #pragma clang system_header /* treat file as system include file */ |
| | | |
| | | #ifndef __ARM_COMPAT_H |
| | | #include <arm_compat.h> /* Compatibility header for Arm Compiler 5 intrinsics */ |
| | | #endif |
| | | |
| | | /* CMSIS compiler specific defines */ |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE __inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static __inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | #define __NO_RETURN __attribute__((__noreturn__)) |
| | | #endif |
| | | #ifndef __USED |
| | | #define __USED __attribute__((used)) |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __attribute__((weak)) |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION union __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ |
| | | struct __attribute__((packed)) T_UINT32 { uint32_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ |
| | | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ |
| | | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ |
| | | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | #pragma clang diagnostic push |
| | | #pragma clang diagnostic ignored "-Wpacked" |
| | | /*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ |
| | | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; |
| | | #pragma clang diagnostic pop |
| | | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #define __RESTRICT __restrict |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #define __COMPILER_BARRIER() __ASM volatile("":::"memory") |
| | | #endif |
| | | |
| | | /* ######################### Startup and Lowlevel Init ######################## */ |
| | | |
| | | #ifndef __PROGRAM_START |
| | | #define __PROGRAM_START __main |
| | | #endif |
| | | |
| | | #ifndef __INITIAL_SP |
| | | #define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit |
| | | #endif |
| | | |
| | | #ifndef __STACK_LIMIT |
| | | #define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE |
| | | #define __VECTOR_TABLE __Vectors |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE_ATTRIBUTE |
| | | #define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) |
| | | #endif |
| | | |
| | | |
| | | /* ########################### Core Function Access ########################### */ |
| | | /** \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Enable IRQ Interrupts |
| | | \details Enables IRQ interrupts by clearing the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | /* intrinsic void __enable_irq(); see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Disable IRQ Interrupts |
| | | \details Disables IRQ interrupts by setting the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | /* intrinsic void __disable_irq(); see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Get Control Register |
| | | \details Returns the content of the Control Register. |
| | | \return Control Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, control" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Control Register (non-secure) |
| | | \details Returns the content of the non-secure Control Register when in secure mode. |
| | | \return non-secure Control Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Control Register |
| | | \details Writes the given value to the Control Register. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) |
| | | { |
| | | __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Control Register (non-secure) |
| | | \details Writes the given value to the non-secure Control Register when in secure state. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) |
| | | { |
| | | __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get IPSR Register |
| | | \details Returns the content of the IPSR Register. |
| | | \return IPSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_IPSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get APSR Register |
| | | \details Returns the content of the APSR Register. |
| | | \return APSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_APSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, apsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get xPSR Register |
| | | \details Returns the content of the xPSR Register. |
| | | \return xPSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_xPSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer |
| | | \details Returns the current value of the Process Stack Pointer (PSP). |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PSP(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, psp" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Process Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer |
| | | \details Assigns the given value to the Process Stack Pointer (PSP). |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) |
| | | { |
| | | __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Process Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) |
| | | { |
| | | __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer |
| | | \details Returns the current value of the Main Stack Pointer (MSP). |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_MSP(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, msp" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Main Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer |
| | | \details Assigns the given value to the Main Stack Pointer (MSP). |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) |
| | | { |
| | | __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Main Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) |
| | | { |
| | | __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. |
| | | \return SP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. |
| | | \param [in] topOfStack Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) |
| | | { |
| | | __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Priority Mask |
| | | \details Returns the current state of the priority mask bit from the Priority Mask Register. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, primask" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Priority Mask (non-secure) |
| | | \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Priority Mask |
| | | \details Assigns the given value to the Priority Mask Register. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) |
| | | { |
| | | __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Priority Mask (non-secure) |
| | | \details Assigns the given value to the non-secure Priority Mask Register when in secure state. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) |
| | | { |
| | | __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) |
| | | /** |
| | | \brief Enable FIQ |
| | | \details Enables FIQ interrupts by clearing the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | #define __enable_fault_irq __enable_fiq /* see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Disable FIQ |
| | | \details Disables FIQ interrupts by setting the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | #define __disable_fault_irq __disable_fiq /* see arm_compat.h */ |
| | | |
| | | |
| | | /** |
| | | \brief Get Base Priority |
| | | \details Returns the current value of the Base Priority register. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, basepri" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Base Priority (non-secure) |
| | | \details Returns the current value of the non-secure Base Priority register when in secure state. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority |
| | | \details Assigns the given value to the Base Priority register. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Base Priority (non-secure) |
| | | \details Assigns the given value to the non-secure Base Priority register when in secure state. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority with condition |
| | | \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, |
| | | or the new value increases the BASEPRI priority level. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Fault Mask |
| | | \details Returns the current value of the Fault Mask register. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Fault Mask (non-secure) |
| | | \details Returns the current value of the non-secure Fault Mask register when in secure state. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Fault Mask |
| | | \details Assigns the given value to the Fault Mask register. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) |
| | | { |
| | | __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Fault Mask (non-secure) |
| | | \details Assigns the given value to the non-secure Fault Mask register when in secure state. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) |
| | | { |
| | | __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always in non-secure |
| | | mode. |
| | | |
| | | \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). |
| | | \return PSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, psplim" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Process Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always in non-secure |
| | | mode. |
| | | |
| | | \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. |
| | | \return PSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored in non-secure |
| | | mode. |
| | | |
| | | \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). |
| | | \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)ProcStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Process Stack Pointer (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored in non-secure |
| | | mode. |
| | | |
| | | \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. |
| | | \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)ProcStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always. |
| | | |
| | | \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). |
| | | \return MSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, msplim" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Main Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always. |
| | | |
| | | \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. |
| | | \return MSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored. |
| | | |
| | | \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). |
| | | \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)MainStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Main Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored. |
| | | |
| | | \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. |
| | | \param [in] MainStackPtrLimit Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)MainStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ |
| | | |
| | | /** |
| | | \brief Get FPSCR |
| | | \details Returns the current value of the Floating Point Status/Control register. |
| | | \return Floating Point Status/Control register value |
| | | */ |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr |
| | | #else |
| | | #define __get_FPSCR() ((uint32_t)0U) |
| | | #endif |
| | | |
| | | /** |
| | | \brief Set FPSCR |
| | | \details Assigns the given value to the Floating Point Status/Control register. |
| | | \param [in] fpscr Floating Point Status/Control value to set |
| | | */ |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #define __set_FPSCR __builtin_arm_set_fpscr |
| | | #else |
| | | #define __set_FPSCR(x) ((void)(x)) |
| | | #endif |
| | | |
| | | |
| | | /*@} end of CMSIS_Core_RegAccFunctions */ |
| | | |
| | | |
| | | /* ########################## Core Instruction Access ######################### */ |
| | | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface |
| | | Access to dedicated instructions |
| | | @{ |
| | | */ |
| | | |
| | | /* Define macros for porting to both thumb1 and thumb2. |
| | | * For thumb1, use low register (r0-r7), specified by constraint "l" |
| | | * Otherwise, use general registers, specified by constraint "r" */ |
| | | #if defined (__thumb__) && !defined (__thumb2__) |
| | | #define __CMSIS_GCC_OUT_REG(r) "=l" (r) |
| | | #define __CMSIS_GCC_USE_REG(r) "l" (r) |
| | | #else |
| | | #define __CMSIS_GCC_OUT_REG(r) "=r" (r) |
| | | #define __CMSIS_GCC_USE_REG(r) "r" (r) |
| | | #endif |
| | | |
| | | /** |
| | | \brief No Operation |
| | | \details No Operation does nothing. This instruction can be used for code alignment purposes. |
| | | */ |
| | | #define __NOP __builtin_arm_nop |
| | | |
| | | /** |
| | | \brief Wait For Interrupt |
| | | \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. |
| | | */ |
| | | #define __WFI __builtin_arm_wfi |
| | | |
| | | |
| | | /** |
| | | \brief Wait For Event |
| | | \details Wait For Event is a hint instruction that permits the processor to enter |
| | | a low-power state until one of a number of events occurs. |
| | | */ |
| | | #define __WFE __builtin_arm_wfe |
| | | |
| | | |
| | | /** |
| | | \brief Send Event |
| | | \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. |
| | | */ |
| | | #define __SEV __builtin_arm_sev |
| | | |
| | | |
| | | /** |
| | | \brief Instruction Synchronization Barrier |
| | | \details Instruction Synchronization Barrier flushes the pipeline in the processor, |
| | | so that all instructions following the ISB are fetched from cache or memory, |
| | | after the instruction has been completed. |
| | | */ |
| | | #define __ISB() __builtin_arm_isb(0xF) |
| | | |
| | | /** |
| | | \brief Data Synchronization Barrier |
| | | \details Acts as a special kind of Data Memory Barrier. |
| | | It completes when all explicit memory accesses before this instruction complete. |
| | | */ |
| | | #define __DSB() __builtin_arm_dsb(0xF) |
| | | |
| | | |
| | | /** |
| | | \brief Data Memory Barrier |
| | | \details Ensures the apparent order of the explicit memory operations before |
| | | and after the instruction, without ensuring their completion. |
| | | */ |
| | | #define __DMB() __builtin_arm_dmb(0xF) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (32 bit) |
| | | \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REV(value) __builtin_bswap32(value) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REV16(value) __ROR(__REV(value), 16) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __REVSH(value) (int16_t)__builtin_bswap16(value) |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right in unsigned value (32 bit) |
| | | \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. |
| | | \param [in] op1 Value to rotate |
| | | \param [in] op2 Number of Bits to rotate |
| | | \return Rotated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) |
| | | { |
| | | op2 %= 32U; |
| | | if (op2 == 0U) |
| | | { |
| | | return op1; |
| | | } |
| | | return (op1 >> op2) | (op1 << (32U - op2)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Breakpoint |
| | | \details Causes the processor to enter Debug state. |
| | | Debug tools can use this to investigate system state when the instruction at a particular address is reached. |
| | | \param [in] value is ignored by the processor. |
| | | If required, a debugger can use it to store additional information about the breakpoint. |
| | | */ |
| | | #define __BKPT(value) __ASM volatile ("bkpt "#value) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse bit order of value |
| | | \details Reverses the bit order of the given value. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | #define __RBIT __builtin_arm_rbit |
| | | |
| | | /** |
| | | \brief Count leading zeros |
| | | \details Counts the number of leading zeros of a data value. |
| | | \param [in] value Value to count the leading zeros |
| | | \return number of leading zeros in value |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) |
| | | { |
| | | /* Even though __builtin_clz produces a CLZ instruction on ARM, formally |
| | | __builtin_clz(0) is undefined behaviour, so handle this case specially. |
| | | This guarantees ARM-compatible results if happening to compile on a non-ARM |
| | | target, and ensures the compiler doesn't decide to activate any |
| | | optimisations using the logic "value was passed to __builtin_clz, so it |
| | | is non-zero". |
| | | ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a |
| | | single CLZ instruction. |
| | | */ |
| | | if (value == 0U) |
| | | { |
| | | return 32U; |
| | | } |
| | | return __builtin_clz(value); |
| | | } |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | /** |
| | | \brief LDR Exclusive (8 bit) |
| | | \details Executes a exclusive LDR instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | #define __LDREXB (uint8_t)__builtin_arm_ldrex |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (16 bit) |
| | | \details Executes a exclusive LDR instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | #define __LDREXH (uint16_t)__builtin_arm_ldrex |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (32 bit) |
| | | \details Executes a exclusive LDR instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | #define __LDREXW (uint32_t)__builtin_arm_ldrex |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (8 bit) |
| | | \details Executes a exclusive STR instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STREXB (uint32_t)__builtin_arm_strex |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (16 bit) |
| | | \details Executes a exclusive STR instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STREXH (uint32_t)__builtin_arm_strex |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (32 bit) |
| | | \details Executes a exclusive STR instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STREXW (uint32_t)__builtin_arm_strex |
| | | |
| | | |
| | | /** |
| | | \brief Remove the exclusive lock |
| | | \details Removes the exclusive lock which is created by LDREX. |
| | | */ |
| | | #define __CLREX __builtin_arm_clrex |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | #define __SSAT __builtin_arm_ssat |
| | | |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | #define __USAT __builtin_arm_usat |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right with Extend (32 bit) |
| | | \details Moves each bit of a bitstring right by one bit. |
| | | The carry input is shifted in at the left end of the bitstring. |
| | | \param [in] value Value to rotate |
| | | \return Rotated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return ((uint8_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return ((uint16_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged STRT instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged STRT instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged STRT instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); |
| | | } |
| | | |
| | | #else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) |
| | | { |
| | | if ((sat >= 1U) && (sat <= 32U)) |
| | | { |
| | | const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); |
| | | const int32_t min = -1 - max ; |
| | | if (val > max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < min) |
| | | { |
| | | return min; |
| | | } |
| | | } |
| | | return val; |
| | | } |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) |
| | | { |
| | | if (sat <= 31U) |
| | | { |
| | | const uint32_t max = ((1U << sat) - 1U); |
| | | if (val > (int32_t)max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < 0) |
| | | { |
| | | return 0U; |
| | | } |
| | | } |
| | | return (uint32_t)val; |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | /** |
| | | \brief Load-Acquire (8 bit) |
| | | \details Executes a LDAB instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint8_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire (16 bit) |
| | | \details Executes a LDAH instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint16_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire (32 bit) |
| | | \details Executes a LDA instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (8 bit) |
| | | \details Executes a STLB instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (16 bit) |
| | | \details Executes a STLH instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (32 bit) |
| | | \details Executes a STL instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (8 bit) |
| | | \details Executes a LDAB exclusive instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | #define __LDAEXB (uint8_t)__builtin_arm_ldaex |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (16 bit) |
| | | \details Executes a LDAH exclusive instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | #define __LDAEXH (uint16_t)__builtin_arm_ldaex |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (32 bit) |
| | | \details Executes a LDA exclusive instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | #define __LDAEX (uint32_t)__builtin_arm_ldaex |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (8 bit) |
| | | \details Executes a STLB exclusive instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STLEXB (uint32_t)__builtin_arm_stlex |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (16 bit) |
| | | \details Executes a STLH exclusive instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STLEXH (uint32_t)__builtin_arm_stlex |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (32 bit) |
| | | \details Executes a STL exclusive instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | #define __STLEX (uint32_t)__builtin_arm_stlex |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ |
| | | |
| | | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ |
| | | |
| | | |
| | | /* ################### Compiler specific Intrinsics ########################### */ |
| | | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics |
| | | Access to dedicated SIMD instructions |
| | | @{ |
| | | */ |
| | | |
| | | #if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | #define __SSAT16(ARG1,ARG2) \ |
| | | ({ \ |
| | | int32_t __RES, __ARG1 = (ARG1); \ |
| | | __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | #define __USAT16(ARG1,ARG2) \ |
| | | ({ \ |
| | | uint32_t __RES, __ARG1 = (ARG1); \ |
| | | __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | #define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ |
| | | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) |
| | | |
| | | #define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ |
| | | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) |
| | | |
| | | #define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) |
| | | |
| | | __STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | #endif /* (__ARM_FEATURE_DSP == 1) */ |
| | | /*@} end of group CMSIS_SIMD_intrinsics */ |
| | | |
| | | |
| | | #endif /* __CMSIS_ARMCLANG_H */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_compiler.h |
| | | * @brief CMSIS compiler generic header file |
| | | * @version V5.1.0 |
| | | * @date 09. October 2018 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2009-2018 Arm Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | #ifndef __CMSIS_COMPILER_H |
| | | #define __CMSIS_COMPILER_H |
| | | |
| | | #include <stdint.h> |
| | | |
| | | /* |
| | | * Arm Compiler 4/5 |
| | | */ |
| | | #if defined ( __CC_ARM ) |
| | | #include "cmsis_armcc.h" |
| | | |
| | | |
| | | /* |
| | | * Arm Compiler 6.6 LTM (armclang) |
| | | */ |
| | | #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) |
| | | #include "cmsis_armclang_ltm.h" |
| | | |
| | | /* |
| | | * Arm Compiler above 6.10.1 (armclang) |
| | | */ |
| | | #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) |
| | | #include "cmsis_armclang.h" |
| | | |
| | | |
| | | /* |
| | | * GNU Compiler |
| | | */ |
| | | #elif defined ( __GNUC__ ) |
| | | #include "cmsis_gcc.h" |
| | | |
| | | |
| | | /* |
| | | * IAR Compiler |
| | | */ |
| | | #elif defined ( __ICCARM__ ) |
| | | #include <cmsis_iccarm.h> |
| | | |
| | | |
| | | /* |
| | | * TI Arm Compiler |
| | | */ |
| | | #elif defined ( __TI_ARM__ ) |
| | | #include <cmsis_ccs.h> |
| | | |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __STATIC_INLINE |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | #define __NO_RETURN __attribute__((noreturn)) |
| | | #endif |
| | | #ifndef __USED |
| | | #define __USED __attribute__((used)) |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __attribute__((weak)) |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED __attribute__((packed)) |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT struct __attribute__((packed)) |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION union __attribute__((packed)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | struct __attribute__((packed)) T_UINT32 { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; |
| | | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #define __RESTRICT __restrict |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. |
| | | #define __COMPILER_BARRIER() (void)0 |
| | | #endif |
| | | |
| | | |
| | | /* |
| | | * TASKING Compiler |
| | | */ |
| | | #elif defined ( __TASKING__ ) |
| | | /* |
| | | * The CMSIS functions have been implemented as intrinsics in the compiler. |
| | | * Please use "carm -?i" to get an up to date list of all intrinsics, |
| | | * Including the CMSIS ones. |
| | | */ |
| | | |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __STATIC_INLINE |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | #define __NO_RETURN __attribute__((noreturn)) |
| | | #endif |
| | | #ifndef __USED |
| | | #define __USED __attribute__((used)) |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __attribute__((weak)) |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED __packed__ |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT struct __packed__ |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION union __packed__ |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | struct __packed__ T_UINT32 { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; |
| | | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #define __ALIGNED(x) __align(x) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. |
| | | #define __RESTRICT |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. |
| | | #define __COMPILER_BARRIER() (void)0 |
| | | #endif |
| | | |
| | | |
| | | /* |
| | | * COSMIC Compiler |
| | | */ |
| | | #elif defined ( __CSMC__ ) |
| | | #include <cmsis_csm.h> |
| | | |
| | | #ifndef __ASM |
| | | #define __ASM _asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __STATIC_INLINE |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | // NO RETURN is automatically detected hence no warning here |
| | | #define __NO_RETURN |
| | | #endif |
| | | #ifndef __USED |
| | | #warning No compiler specific solution for __USED. __USED is ignored. |
| | | #define __USED |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __weak |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED @packed |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT @packed struct |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION @packed union |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | @packed struct T_UINT32 { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; |
| | | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; |
| | | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. |
| | | #define __ALIGNED(x) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. |
| | | #define __RESTRICT |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. |
| | | #define __COMPILER_BARRIER() (void)0 |
| | | #endif |
| | | |
| | | |
| | | #else |
| | | #error Unknown compiler. |
| | | #endif |
| | | |
| | | |
| | | #endif /* __CMSIS_COMPILER_H */ |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_gcc.h |
| | | * @brief CMSIS compiler GCC header file |
| | | * @version V5.3.0 |
| | | * @date 26. March 2020 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2009-2020 Arm Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | #ifndef __CMSIS_GCC_H |
| | | #define __CMSIS_GCC_H |
| | | |
| | | /* ignore some GCC warnings */ |
| | | #pragma GCC diagnostic push |
| | | #pragma GCC diagnostic ignored "-Wsign-conversion" |
| | | #pragma GCC diagnostic ignored "-Wconversion" |
| | | #pragma GCC diagnostic ignored "-Wunused-parameter" |
| | | |
| | | /* Fallback for __has_builtin */ |
| | | #ifndef __has_builtin |
| | | #define __has_builtin(x) (0) |
| | | #endif |
| | | |
| | | /* CMSIS compiler specific defines */ |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | #ifndef __INLINE |
| | | #define __INLINE inline |
| | | #endif |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static inline |
| | | #endif |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline |
| | | #endif |
| | | #ifndef __NO_RETURN |
| | | #define __NO_RETURN __attribute__((__noreturn__)) |
| | | #endif |
| | | #ifndef __USED |
| | | #define __USED __attribute__((used)) |
| | | #endif |
| | | #ifndef __WEAK |
| | | #define __WEAK __attribute__((weak)) |
| | | #endif |
| | | #ifndef __PACKED |
| | | #define __PACKED __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __PACKED_STRUCT |
| | | #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __PACKED_UNION |
| | | #define __PACKED_UNION union __attribute__((packed, aligned(1))) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | #pragma GCC diagnostic push |
| | | #pragma GCC diagnostic ignored "-Wpacked" |
| | | #pragma GCC diagnostic ignored "-Wattributes" |
| | | struct __attribute__((packed)) T_UINT32 { uint32_t v; }; |
| | | #pragma GCC diagnostic pop |
| | | #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | #pragma GCC diagnostic push |
| | | #pragma GCC diagnostic ignored "-Wpacked" |
| | | #pragma GCC diagnostic ignored "-Wattributes" |
| | | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; |
| | | #pragma GCC diagnostic pop |
| | | #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | #pragma GCC diagnostic push |
| | | #pragma GCC diagnostic ignored "-Wpacked" |
| | | #pragma GCC diagnostic ignored "-Wattributes" |
| | | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; |
| | | #pragma GCC diagnostic pop |
| | | #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | #pragma GCC diagnostic push |
| | | #pragma GCC diagnostic ignored "-Wpacked" |
| | | #pragma GCC diagnostic ignored "-Wattributes" |
| | | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; |
| | | #pragma GCC diagnostic pop |
| | | #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) |
| | | #endif |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | #pragma GCC diagnostic push |
| | | #pragma GCC diagnostic ignored "-Wpacked" |
| | | #pragma GCC diagnostic ignored "-Wattributes" |
| | | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; |
| | | #pragma GCC diagnostic pop |
| | | #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) |
| | | #endif |
| | | #ifndef __ALIGNED |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #endif |
| | | #ifndef __RESTRICT |
| | | #define __RESTRICT __restrict |
| | | #endif |
| | | #ifndef __COMPILER_BARRIER |
| | | #define __COMPILER_BARRIER() __ASM volatile("":::"memory") |
| | | #endif |
| | | |
| | | /* ######################### Startup and Lowlevel Init ######################## */ |
| | | |
| | | #ifndef __PROGRAM_START |
| | | |
| | | /** |
| | | \brief Initializes data and bss sections |
| | | \details This default implementations initialized all data and additional bss |
| | | sections relying on .copy.table and .zero.table specified properly |
| | | in the used linker script. |
| | | |
| | | */ |
| | | __STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) |
| | | { |
| | | extern void _start(void) __NO_RETURN; |
| | | |
| | | typedef struct { |
| | | uint32_t const* src; |
| | | uint32_t* dest; |
| | | uint32_t wlen; |
| | | } __copy_table_t; |
| | | |
| | | typedef struct { |
| | | uint32_t* dest; |
| | | uint32_t wlen; |
| | | } __zero_table_t; |
| | | |
| | | extern const __copy_table_t __copy_table_start__; |
| | | extern const __copy_table_t __copy_table_end__; |
| | | extern const __zero_table_t __zero_table_start__; |
| | | extern const __zero_table_t __zero_table_end__; |
| | | |
| | | for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { |
| | | for(uint32_t i=0u; i*4<pTable->wlen; ++i) { |
| | | pTable->dest[i] = pTable->src[i]; |
| | | } |
| | | } |
| | | |
| | | for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { |
| | | for(uint32_t i=0u; i*4<pTable->wlen; ++i) { |
| | | pTable->dest[i] = 0u; |
| | | } |
| | | } |
| | | |
| | | _start(); |
| | | } |
| | | |
| | | #define __PROGRAM_START __cmsis_start |
| | | #endif |
| | | |
| | | #ifndef __INITIAL_SP |
| | | #define __INITIAL_SP __StackTop |
| | | #endif |
| | | |
| | | #ifndef __STACK_LIMIT |
| | | #define __STACK_LIMIT __StackLimit |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE |
| | | #define __VECTOR_TABLE __Vectors |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE_ATTRIBUTE |
| | | #define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors"))) |
| | | #endif |
| | | |
| | | /* ########################### Core Function Access ########################### */ |
| | | /** \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Enable IRQ Interrupts |
| | | \details Enables IRQ interrupts by clearing the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | __STATIC_FORCEINLINE void __enable_irq(void) |
| | | { |
| | | __ASM volatile ("cpsie i" : : : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Disable IRQ Interrupts |
| | | \details Disables IRQ interrupts by setting the I-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | __STATIC_FORCEINLINE void __disable_irq(void) |
| | | { |
| | | __ASM volatile ("cpsid i" : : : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Control Register |
| | | \details Returns the content of the Control Register. |
| | | \return Control Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, control" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Control Register (non-secure) |
| | | \details Returns the content of the non-secure Control Register when in secure mode. |
| | | \return non-secure Control Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Control Register |
| | | \details Writes the given value to the Control Register. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) |
| | | { |
| | | __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Control Register (non-secure) |
| | | \details Writes the given value to the non-secure Control Register when in secure state. |
| | | \param [in] control Control Register value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) |
| | | { |
| | | __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get IPSR Register |
| | | \details Returns the content of the IPSR Register. |
| | | \return IPSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_IPSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get APSR Register |
| | | \details Returns the content of the APSR Register. |
| | | \return APSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_APSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, apsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get xPSR Register |
| | | \details Returns the content of the xPSR Register. |
| | | \return xPSR Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_xPSR(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer |
| | | \details Returns the current value of the Process Stack Pointer (PSP). |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PSP(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, psp" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Process Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. |
| | | \return PSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer |
| | | \details Assigns the given value to the Process Stack Pointer (PSP). |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) |
| | | { |
| | | __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Process Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. |
| | | \param [in] topOfProcStack Process Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) |
| | | { |
| | | __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer |
| | | \details Returns the current value of the Main Stack Pointer (MSP). |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_MSP(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, msp" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Main Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. |
| | | \return MSP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer |
| | | \details Assigns the given value to the Main Stack Pointer (MSP). |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) |
| | | { |
| | | __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Main Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. |
| | | \param [in] topOfMainStack Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) |
| | | { |
| | | __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Stack Pointer (non-secure) |
| | | \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. |
| | | \return SP Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Stack Pointer (non-secure) |
| | | \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. |
| | | \param [in] topOfStack Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) |
| | | { |
| | | __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Priority Mask |
| | | \details Returns the current state of the priority mask bit from the Priority Mask Register. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, primask" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Priority Mask (non-secure) |
| | | \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. |
| | | \return Priority Mask value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Priority Mask |
| | | \details Assigns the given value to the Priority Mask Register. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) |
| | | { |
| | | __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Priority Mask (non-secure) |
| | | \details Assigns the given value to the non-secure Priority Mask Register when in secure state. |
| | | \param [in] priMask Priority Mask |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) |
| | | { |
| | | __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) |
| | | /** |
| | | \brief Enable FIQ |
| | | \details Enables FIQ interrupts by clearing the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | __STATIC_FORCEINLINE void __enable_fault_irq(void) |
| | | { |
| | | __ASM volatile ("cpsie f" : : : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Disable FIQ |
| | | \details Disables FIQ interrupts by setting the F-bit in the CPSR. |
| | | Can only be executed in Privileged modes. |
| | | */ |
| | | __STATIC_FORCEINLINE void __disable_fault_irq(void) |
| | | { |
| | | __ASM volatile ("cpsid f" : : : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Base Priority |
| | | \details Returns the current value of the Base Priority register. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, basepri" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Base Priority (non-secure) |
| | | \details Returns the current value of the non-secure Base Priority register when in secure state. |
| | | \return Base Priority register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority |
| | | \details Assigns the given value to the Base Priority register. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Base Priority (non-secure) |
| | | \details Assigns the given value to the non-secure Base Priority register when in secure state. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Base Priority with condition |
| | | \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, |
| | | or the new value increases the BASEPRI priority level. |
| | | \param [in] basePri Base Priority value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) |
| | | { |
| | | __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Fault Mask |
| | | \details Returns the current value of the Fault Mask register. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Fault Mask (non-secure) |
| | | \details Returns the current value of the non-secure Fault Mask register when in secure state. |
| | | \return Fault Mask register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); |
| | | return(result); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Fault Mask |
| | | \details Assigns the given value to the Fault Mask register. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) |
| | | { |
| | | __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Fault Mask (non-secure) |
| | | \details Assigns the given value to the non-secure Fault Mask register when in secure state. |
| | | \param [in] faultMask Fault Mask value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) |
| | | { |
| | | __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); |
| | | } |
| | | #endif |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | |
| | | /** |
| | | \brief Get Process Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always in non-secure |
| | | mode. |
| | | |
| | | \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). |
| | | \return PSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, psplim" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Process Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always. |
| | | |
| | | \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. |
| | | \return PSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Process Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored in non-secure |
| | | mode. |
| | | |
| | | \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). |
| | | \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)ProcStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Process Stack Pointer (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored. |
| | | |
| | | \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. |
| | | \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)ProcStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Get Main Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always in non-secure |
| | | mode. |
| | | |
| | | \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). |
| | | \return MSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, msplim" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Get Main Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence zero is returned always. |
| | | |
| | | \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. |
| | | \return MSPLIM Register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | return 0U; |
| | | #else |
| | | uint32_t result; |
| | | __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /** |
| | | \brief Set Main Stack Pointer Limit |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored in non-secure |
| | | mode. |
| | | |
| | | \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). |
| | | \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)MainStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) |
| | | /** |
| | | \brief Set Main Stack Pointer Limit (non-secure) |
| | | Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure |
| | | Stack Pointer Limit register hence the write is silently ignored. |
| | | |
| | | \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. |
| | | \param [in] MainStackPtrLimit Main Stack Pointer value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)MainStackPtrLimit; |
| | | #else |
| | | __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); |
| | | #endif |
| | | } |
| | | #endif |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ |
| | | |
| | | |
| | | /** |
| | | \brief Get FPSCR |
| | | \details Returns the current value of the Floating Point Status/Control register. |
| | | \return Floating Point Status/Control register value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) |
| | | { |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #if __has_builtin(__builtin_arm_get_fpscr) |
| | | // Re-enable using built-in when GCC has been fixed |
| | | // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) |
| | | /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ |
| | | return __builtin_arm_get_fpscr(); |
| | | #else |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); |
| | | return(result); |
| | | #endif |
| | | #else |
| | | return(0U); |
| | | #endif |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set FPSCR |
| | | \details Assigns the given value to the Floating Point Status/Control register. |
| | | \param [in] fpscr Floating Point Status/Control value to set |
| | | */ |
| | | __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) |
| | | { |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #if __has_builtin(__builtin_arm_set_fpscr) |
| | | // Re-enable using built-in when GCC has been fixed |
| | | // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) |
| | | /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ |
| | | __builtin_arm_set_fpscr(fpscr); |
| | | #else |
| | | __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); |
| | | #endif |
| | | #else |
| | | (void)fpscr; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | /*@} end of CMSIS_Core_RegAccFunctions */ |
| | | |
| | | |
| | | /* ########################## Core Instruction Access ######################### */ |
| | | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface |
| | | Access to dedicated instructions |
| | | @{ |
| | | */ |
| | | |
| | | /* Define macros for porting to both thumb1 and thumb2. |
| | | * For thumb1, use low register (r0-r7), specified by constraint "l" |
| | | * Otherwise, use general registers, specified by constraint "r" */ |
| | | #if defined (__thumb__) && !defined (__thumb2__) |
| | | #define __CMSIS_GCC_OUT_REG(r) "=l" (r) |
| | | #define __CMSIS_GCC_RW_REG(r) "+l" (r) |
| | | #define __CMSIS_GCC_USE_REG(r) "l" (r) |
| | | #else |
| | | #define __CMSIS_GCC_OUT_REG(r) "=r" (r) |
| | | #define __CMSIS_GCC_RW_REG(r) "+r" (r) |
| | | #define __CMSIS_GCC_USE_REG(r) "r" (r) |
| | | #endif |
| | | |
| | | /** |
| | | \brief No Operation |
| | | \details No Operation does nothing. This instruction can be used for code alignment purposes. |
| | | */ |
| | | #define __NOP() __ASM volatile ("nop") |
| | | |
| | | /** |
| | | \brief Wait For Interrupt |
| | | \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. |
| | | */ |
| | | #define __WFI() __ASM volatile ("wfi":::"memory") |
| | | |
| | | |
| | | /** |
| | | \brief Wait For Event |
| | | \details Wait For Event is a hint instruction that permits the processor to enter |
| | | a low-power state until one of a number of events occurs. |
| | | */ |
| | | #define __WFE() __ASM volatile ("wfe":::"memory") |
| | | |
| | | |
| | | /** |
| | | \brief Send Event |
| | | \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. |
| | | */ |
| | | #define __SEV() __ASM volatile ("sev") |
| | | |
| | | |
| | | /** |
| | | \brief Instruction Synchronization Barrier |
| | | \details Instruction Synchronization Barrier flushes the pipeline in the processor, |
| | | so that all instructions following the ISB are fetched from cache or memory, |
| | | after the instruction has been completed. |
| | | */ |
| | | __STATIC_FORCEINLINE void __ISB(void) |
| | | { |
| | | __ASM volatile ("isb 0xF":::"memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Data Synchronization Barrier |
| | | \details Acts as a special kind of Data Memory Barrier. |
| | | It completes when all explicit memory accesses before this instruction complete. |
| | | */ |
| | | __STATIC_FORCEINLINE void __DSB(void) |
| | | { |
| | | __ASM volatile ("dsb 0xF":::"memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Data Memory Barrier |
| | | \details Ensures the apparent order of the explicit memory operations before |
| | | and after the instruction, without ensuring their completion. |
| | | */ |
| | | __STATIC_FORCEINLINE void __DMB(void) |
| | | { |
| | | __ASM volatile ("dmb 0xF":::"memory"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (32 bit) |
| | | \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __REV(uint32_t value) |
| | | { |
| | | #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) |
| | | return __builtin_bswap32(value); |
| | | #else |
| | | uint32_t result; |
| | | |
| | | __ASM ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Reverse byte order (16 bit) |
| | | \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | __STATIC_FORCEINLINE int16_t __REVSH(int16_t value) |
| | | { |
| | | #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| | | return (int16_t)__builtin_bswap16(value); |
| | | #else |
| | | int16_t result; |
| | | |
| | | __ASM ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); |
| | | return result; |
| | | #endif |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right in unsigned value (32 bit) |
| | | \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. |
| | | \param [in] op1 Value to rotate |
| | | \param [in] op2 Number of Bits to rotate |
| | | \return Rotated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) |
| | | { |
| | | op2 %= 32U; |
| | | if (op2 == 0U) |
| | | { |
| | | return op1; |
| | | } |
| | | return (op1 >> op2) | (op1 << (32U - op2)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Breakpoint |
| | | \details Causes the processor to enter Debug state. |
| | | Debug tools can use this to investigate system state when the instruction at a particular address is reached. |
| | | \param [in] value is ignored by the processor. |
| | | If required, a debugger can use it to store additional information about the breakpoint. |
| | | */ |
| | | #define __BKPT(value) __ASM volatile ("bkpt "#value) |
| | | |
| | | |
| | | /** |
| | | \brief Reverse bit order of value |
| | | \details Reverses the bit order of the given value. |
| | | \param [in] value Value to reverse |
| | | \return Reversed value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) |
| | | __ASM ("rbit %0, %1" : "=r" (result) : "r" (value) ); |
| | | #else |
| | | uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ |
| | | |
| | | result = value; /* r will be reversed bits of v; first get LSB of v */ |
| | | for (value >>= 1U; value != 0U; value >>= 1U) |
| | | { |
| | | result <<= 1U; |
| | | result |= value & 1U; |
| | | s--; |
| | | } |
| | | result <<= s; /* shift when v's highest bits are zero */ |
| | | #endif |
| | | return result; |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Count leading zeros |
| | | \details Counts the number of leading zeros of a data value. |
| | | \param [in] value Value to count the leading zeros |
| | | \return number of leading zeros in value |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) |
| | | { |
| | | /* Even though __builtin_clz produces a CLZ instruction on ARM, formally |
| | | __builtin_clz(0) is undefined behaviour, so handle this case specially. |
| | | This guarantees ARM-compatible results if happening to compile on a non-ARM |
| | | target, and ensures the compiler doesn't decide to activate any |
| | | optimisations using the logic "value was passed to __builtin_clz, so it |
| | | is non-zero". |
| | | ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a |
| | | single CLZ instruction. |
| | | */ |
| | | if (value == 0U) |
| | | { |
| | | return 32U; |
| | | } |
| | | return __builtin_clz(value); |
| | | } |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | /** |
| | | \brief LDR Exclusive (8 bit) |
| | | \details Executes a exclusive LDR instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| | | __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); |
| | | #else |
| | | /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not |
| | | accepted by assembler. So has to use following less efficient pattern. |
| | | */ |
| | | __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); |
| | | #endif |
| | | return ((uint8_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (16 bit) |
| | | \details Executes a exclusive LDR instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| | | __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); |
| | | #else |
| | | /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not |
| | | accepted by assembler. So has to use following less efficient pattern. |
| | | */ |
| | | __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); |
| | | #endif |
| | | return ((uint16_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDR Exclusive (32 bit) |
| | | \details Executes a exclusive LDR instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (8 bit) |
| | | \details Executes a exclusive STR instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (16 bit) |
| | | \details Executes a exclusive STR instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STR Exclusive (32 bit) |
| | | \details Executes a exclusive STR instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Remove the exclusive lock |
| | | \details Removes the exclusive lock which is created by LDREX. |
| | | */ |
| | | __STATIC_FORCEINLINE void __CLREX(void) |
| | | { |
| | | __ASM volatile ("clrex" ::: "memory"); |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] ARG1 Value to be saturated |
| | | \param [in] ARG2 Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | #define __SSAT(ARG1, ARG2) \ |
| | | __extension__ \ |
| | | ({ \ |
| | | int32_t __RES, __ARG1 = (ARG1); \ |
| | | __ASM volatile ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] ARG1 Value to be saturated |
| | | \param [in] ARG2 Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | #define __USAT(ARG1, ARG2) \ |
| | | __extension__ \ |
| | | ({ \ |
| | | uint32_t __RES, __ARG1 = (ARG1); \ |
| | | __ASM volatile ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | |
| | | /** |
| | | \brief Rotate Right with Extend (32 bit) |
| | | \details Moves each bit of a bitstring right by one bit. |
| | | The carry input is shifted in at the left end of the bitstring. |
| | | \param [in] value Value to rotate |
| | | \return Rotated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| | | __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | #else |
| | | /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not |
| | | accepted by assembler. So has to use following less efficient pattern. |
| | | */ |
| | | __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); |
| | | #endif |
| | | return ((uint8_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| | | __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | #else |
| | | /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not |
| | | accepted by assembler. So has to use following less efficient pattern. |
| | | */ |
| | | __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); |
| | | #endif |
| | | return ((uint16_t) result); /* Add explicit type cast here */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief LDRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged LDRT instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (8 bit) |
| | | \details Executes a Unprivileged STRT instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (16 bit) |
| | | \details Executes a Unprivileged STRT instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief STRT Unprivileged (32 bit) |
| | | \details Executes a Unprivileged STRT instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); |
| | | } |
| | | |
| | | #else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ |
| | | |
| | | /** |
| | | \brief Signed Saturate |
| | | \details Saturates a signed value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (1..32) |
| | | \return Saturated value |
| | | */ |
| | | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) |
| | | { |
| | | if ((sat >= 1U) && (sat <= 32U)) |
| | | { |
| | | const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); |
| | | const int32_t min = -1 - max ; |
| | | if (val > max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < min) |
| | | { |
| | | return min; |
| | | } |
| | | } |
| | | return val; |
| | | } |
| | | |
| | | /** |
| | | \brief Unsigned Saturate |
| | | \details Saturates an unsigned value. |
| | | \param [in] value Value to be saturated |
| | | \param [in] sat Bit position to saturate to (0..31) |
| | | \return Saturated value |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) |
| | | { |
| | | if (sat <= 31U) |
| | | { |
| | | const uint32_t max = ((1U << sat) - 1U); |
| | | if (val > (int32_t)max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < 0) |
| | | { |
| | | return 0U; |
| | | } |
| | | } |
| | | return (uint32_t)val; |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ |
| | | (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ |
| | | |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | /** |
| | | \brief Load-Acquire (8 bit) |
| | | \details Executes a LDAB instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint8_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire (16 bit) |
| | | \details Executes a LDAH instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint16_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire (32 bit) |
| | | \details Executes a LDA instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (8 bit) |
| | | \details Executes a STLB instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (16 bit) |
| | | \details Executes a STLH instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release (32 bit) |
| | | \details Executes a STL instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | */ |
| | | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (8 bit) |
| | | \details Executes a LDAB exclusive instruction for 8 bit value. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint8_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint8_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (16 bit) |
| | | \details Executes a LDAH exclusive instruction for 16 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint16_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return ((uint16_t) result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Load-Acquire Exclusive (32 bit) |
| | | \details Executes a LDA exclusive instruction for 32 bit values. |
| | | \param [in] ptr Pointer to data |
| | | \return value of type uint32_t at (*ptr) |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (8 bit) |
| | | \details Executes a STLB exclusive instruction for 8 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (16 bit) |
| | | \details Executes a STLH exclusive instruction for 16 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Store-Release Exclusive (32 bit) |
| | | \details Executes a STL exclusive instruction for 32 bit values. |
| | | \param [in] value Value to store |
| | | \param [in] ptr Pointer to location |
| | | \return 0 Function succeeded |
| | | \return 1 Function failed |
| | | */ |
| | | __STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); |
| | | return(result); |
| | | } |
| | | |
| | | #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ |
| | | |
| | | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ |
| | | |
| | | |
| | | /* ################### Compiler specific Intrinsics ########################### */ |
| | | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics |
| | | Access to dedicated SIMD instructions |
| | | @{ |
| | | */ |
| | | |
| | | #if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | #define __SSAT16(ARG1, ARG2) \ |
| | | ({ \ |
| | | int32_t __RES, __ARG1 = (ARG1); \ |
| | | __ASM volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | #define __USAT16(ARG1, ARG2) \ |
| | | ({ \ |
| | | uint32_t __RES, __ARG1 = (ARG1); \ |
| | | __ASM volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SXTB16_RORn(uint32_t op1, uint32_t rotate) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("sxtb16 %0, %1, ROR %2" : "=r" (result) : "r" (op1), "i" (rotate) ); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) |
| | | { |
| | | union llreg_u{ |
| | | uint32_t w32[2]; |
| | | uint64_t w64; |
| | | } llr; |
| | | llr.w64 = acc; |
| | | |
| | | #ifndef __ARMEB__ /* Little endian */ |
| | | __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); |
| | | #else /* Big endian */ |
| | | __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); |
| | | #endif |
| | | |
| | | return(llr.w64); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) |
| | | { |
| | | uint32_t result; |
| | | |
| | | __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | __STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); |
| | | return(result); |
| | | } |
| | | |
| | | #if 0 |
| | | #define __PKHBT(ARG1,ARG2,ARG3) \ |
| | | ({ \ |
| | | uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ |
| | | __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ |
| | | __RES; \ |
| | | }) |
| | | |
| | | #define __PKHTB(ARG1,ARG2,ARG3) \ |
| | | ({ \ |
| | | uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ |
| | | if (ARG3 == 0) \ |
| | | __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ |
| | | else \ |
| | | __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ |
| | | __RES; \ |
| | | }) |
| | | #endif |
| | | |
| | | #define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ |
| | | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) |
| | | |
| | | #define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ |
| | | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) |
| | | |
| | | __STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) |
| | | { |
| | | int32_t result; |
| | | |
| | | __ASM ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); |
| | | return(result); |
| | | } |
| | | |
| | | #endif /* (__ARM_FEATURE_DSP == 1) */ |
| | | /*@} end of group CMSIS_SIMD_intrinsics */ |
| | | |
| | | |
| | | #pragma GCC diagnostic pop |
| | | |
| | | #endif /* __CMSIS_GCC_H */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_iccarm.h |
| | | * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file |
| | | * @version V5.2.0 |
| | | * @date 28. January 2020 |
| | | ******************************************************************************/ |
| | | |
| | | //------------------------------------------------------------------------------ |
| | | // |
| | | // Copyright (c) 2017-2019 IAR Systems |
| | | // Copyright (c) 2017-2019 Arm Limited. All rights reserved. |
| | | // |
| | | // SPDX-License-Identifier: Apache-2.0 |
| | | // |
| | | // Licensed under the Apache License, Version 2.0 (the "License") |
| | | // you may not use this file except in compliance with the License. |
| | | // You may obtain a copy of the License at |
| | | // http://www.apache.org/licenses/LICENSE-2.0 |
| | | // |
| | | // Unless required by applicable law or agreed to in writing, software |
| | | // distributed under the License is distributed on an "AS IS" BASIS, |
| | | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | // See the License for the specific language governing permissions and |
| | | // limitations under the License. |
| | | // |
| | | //------------------------------------------------------------------------------ |
| | | |
| | | |
| | | #ifndef __CMSIS_ICCARM_H__ |
| | | #define __CMSIS_ICCARM_H__ |
| | | |
| | | #ifndef __ICCARM__ |
| | | #error This file should only be compiled by ICCARM |
| | | #endif |
| | | |
| | | #pragma system_include |
| | | |
| | | #define __IAR_FT _Pragma("inline=forced") __intrinsic |
| | | |
| | | #if (__VER__ >= 8000000) |
| | | #define __ICCARM_V8 1 |
| | | #else |
| | | #define __ICCARM_V8 0 |
| | | #endif |
| | | |
| | | #ifndef __ALIGNED |
| | | #if __ICCARM_V8 |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #elif (__VER__ >= 7080000) |
| | | /* Needs IAR language extensions */ |
| | | #define __ALIGNED(x) __attribute__((aligned(x))) |
| | | #else |
| | | #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. |
| | | #define __ALIGNED(x) |
| | | #endif |
| | | #endif |
| | | |
| | | |
| | | /* Define compiler macros for CPU architecture, used in CMSIS 5. |
| | | */ |
| | | #if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ |
| | | /* Macros already defined */ |
| | | #else |
| | | #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) |
| | | #define __ARM_ARCH_8M_MAIN__ 1 |
| | | #elif defined(__ARM8M_BASELINE__) |
| | | #define __ARM_ARCH_8M_BASE__ 1 |
| | | #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' |
| | | #if __ARM_ARCH == 6 |
| | | #define __ARM_ARCH_6M__ 1 |
| | | #elif __ARM_ARCH == 7 |
| | | #if __ARM_FEATURE_DSP |
| | | #define __ARM_ARCH_7EM__ 1 |
| | | #else |
| | | #define __ARM_ARCH_7M__ 1 |
| | | #endif |
| | | #endif /* __ARM_ARCH */ |
| | | #endif /* __ARM_ARCH_PROFILE == 'M' */ |
| | | #endif |
| | | |
| | | /* Alternativ core deduction for older ICCARM's */ |
| | | #if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ |
| | | !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) |
| | | #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) |
| | | #define __ARM_ARCH_6M__ 1 |
| | | #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) |
| | | #define __ARM_ARCH_7M__ 1 |
| | | #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) |
| | | #define __ARM_ARCH_7EM__ 1 |
| | | #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) |
| | | #define __ARM_ARCH_8M_BASE__ 1 |
| | | #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) |
| | | #define __ARM_ARCH_8M_MAIN__ 1 |
| | | #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) |
| | | #define __ARM_ARCH_8M_MAIN__ 1 |
| | | #else |
| | | #error "Unknown target." |
| | | #endif |
| | | #endif |
| | | |
| | | |
| | | |
| | | #if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 |
| | | #define __IAR_M0_FAMILY 1 |
| | | #elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 |
| | | #define __IAR_M0_FAMILY 1 |
| | | #else |
| | | #define __IAR_M0_FAMILY 0 |
| | | #endif |
| | | |
| | | |
| | | #ifndef __ASM |
| | | #define __ASM __asm |
| | | #endif |
| | | |
| | | #ifndef __COMPILER_BARRIER |
| | | #define __COMPILER_BARRIER() __ASM volatile("":::"memory") |
| | | #endif |
| | | |
| | | #ifndef __INLINE |
| | | #define __INLINE inline |
| | | #endif |
| | | |
| | | #ifndef __NO_RETURN |
| | | #if __ICCARM_V8 |
| | | #define __NO_RETURN __attribute__((__noreturn__)) |
| | | #else |
| | | #define __NO_RETURN _Pragma("object_attribute=__noreturn") |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __PACKED |
| | | #if __ICCARM_V8 |
| | | #define __PACKED __attribute__((packed, aligned(1))) |
| | | #else |
| | | /* Needs IAR language extensions */ |
| | | #define __PACKED __packed |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __PACKED_STRUCT |
| | | #if __ICCARM_V8 |
| | | #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) |
| | | #else |
| | | /* Needs IAR language extensions */ |
| | | #define __PACKED_STRUCT __packed struct |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __PACKED_UNION |
| | | #if __ICCARM_V8 |
| | | #define __PACKED_UNION union __attribute__((packed, aligned(1))) |
| | | #else |
| | | /* Needs IAR language extensions */ |
| | | #define __PACKED_UNION __packed union |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __RESTRICT |
| | | #if __ICCARM_V8 |
| | | #define __RESTRICT __restrict |
| | | #else |
| | | /* Needs IAR language extensions */ |
| | | #define __RESTRICT restrict |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __STATIC_INLINE |
| | | #define __STATIC_INLINE static inline |
| | | #endif |
| | | |
| | | #ifndef __FORCEINLINE |
| | | #define __FORCEINLINE _Pragma("inline=forced") |
| | | #endif |
| | | |
| | | #ifndef __STATIC_FORCEINLINE |
| | | #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE |
| | | #endif |
| | | |
| | | #ifndef __UNALIGNED_UINT16_READ |
| | | #pragma language=save |
| | | #pragma language=extended |
| | | __IAR_FT uint16_t __iar_uint16_read(void const *ptr) |
| | | { |
| | | return *(__packed uint16_t*)(ptr); |
| | | } |
| | | #pragma language=restore |
| | | #define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) |
| | | #endif |
| | | |
| | | |
| | | #ifndef __UNALIGNED_UINT16_WRITE |
| | | #pragma language=save |
| | | #pragma language=extended |
| | | __IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) |
| | | { |
| | | *(__packed uint16_t*)(ptr) = val;; |
| | | } |
| | | #pragma language=restore |
| | | #define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) |
| | | #endif |
| | | |
| | | #ifndef __UNALIGNED_UINT32_READ |
| | | #pragma language=save |
| | | #pragma language=extended |
| | | __IAR_FT uint32_t __iar_uint32_read(void const *ptr) |
| | | { |
| | | return *(__packed uint32_t*)(ptr); |
| | | } |
| | | #pragma language=restore |
| | | #define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) |
| | | #endif |
| | | |
| | | #ifndef __UNALIGNED_UINT32_WRITE |
| | | #pragma language=save |
| | | #pragma language=extended |
| | | __IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) |
| | | { |
| | | *(__packed uint32_t*)(ptr) = val;; |
| | | } |
| | | #pragma language=restore |
| | | #define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) |
| | | #endif |
| | | |
| | | #ifndef __UNALIGNED_UINT32 /* deprecated */ |
| | | #pragma language=save |
| | | #pragma language=extended |
| | | __packed struct __iar_u32 { uint32_t v; }; |
| | | #pragma language=restore |
| | | #define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) |
| | | #endif |
| | | |
| | | #ifndef __USED |
| | | #if __ICCARM_V8 |
| | | #define __USED __attribute__((used)) |
| | | #else |
| | | #define __USED _Pragma("__root") |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __WEAK |
| | | #if __ICCARM_V8 |
| | | #define __WEAK __attribute__((weak)) |
| | | #else |
| | | #define __WEAK _Pragma("__weak") |
| | | #endif |
| | | #endif |
| | | |
| | | #ifndef __PROGRAM_START |
| | | #define __PROGRAM_START __iar_program_start |
| | | #endif |
| | | |
| | | #ifndef __INITIAL_SP |
| | | #define __INITIAL_SP CSTACK$$Limit |
| | | #endif |
| | | |
| | | #ifndef __STACK_LIMIT |
| | | #define __STACK_LIMIT CSTACK$$Base |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE |
| | | #define __VECTOR_TABLE __vector_table |
| | | #endif |
| | | |
| | | #ifndef __VECTOR_TABLE_ATTRIBUTE |
| | | #define __VECTOR_TABLE_ATTRIBUTE @".intvec" |
| | | #endif |
| | | |
| | | #ifndef __ICCARM_INTRINSICS_VERSION__ |
| | | #define __ICCARM_INTRINSICS_VERSION__ 0 |
| | | #endif |
| | | |
| | | #if __ICCARM_INTRINSICS_VERSION__ == 2 |
| | | |
| | | #if defined(__CLZ) |
| | | #undef __CLZ |
| | | #endif |
| | | #if defined(__REVSH) |
| | | #undef __REVSH |
| | | #endif |
| | | #if defined(__RBIT) |
| | | #undef __RBIT |
| | | #endif |
| | | #if defined(__SSAT) |
| | | #undef __SSAT |
| | | #endif |
| | | #if defined(__USAT) |
| | | #undef __USAT |
| | | #endif |
| | | |
| | | #include "iccarm_builtin.h" |
| | | |
| | | #define __disable_fault_irq __iar_builtin_disable_fiq |
| | | #define __disable_irq __iar_builtin_disable_interrupt |
| | | #define __enable_fault_irq __iar_builtin_enable_fiq |
| | | #define __enable_irq __iar_builtin_enable_interrupt |
| | | #define __arm_rsr __iar_builtin_rsr |
| | | #define __arm_wsr __iar_builtin_wsr |
| | | |
| | | |
| | | #define __get_APSR() (__arm_rsr("APSR")) |
| | | #define __get_BASEPRI() (__arm_rsr("BASEPRI")) |
| | | #define __get_CONTROL() (__arm_rsr("CONTROL")) |
| | | #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) |
| | | |
| | | #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) |
| | | #define __get_FPSCR() (__arm_rsr("FPSCR")) |
| | | #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) |
| | | #else |
| | | #define __get_FPSCR() ( 0 ) |
| | | #define __set_FPSCR(VALUE) ((void)VALUE) |
| | | #endif |
| | | |
| | | #define __get_IPSR() (__arm_rsr("IPSR")) |
| | | #define __get_MSP() (__arm_rsr("MSP")) |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | #define __get_MSPLIM() (0U) |
| | | #else |
| | | #define __get_MSPLIM() (__arm_rsr("MSPLIM")) |
| | | #endif |
| | | #define __get_PRIMASK() (__arm_rsr("PRIMASK")) |
| | | #define __get_PSP() (__arm_rsr("PSP")) |
| | | |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | #define __get_PSPLIM() (0U) |
| | | #else |
| | | #define __get_PSPLIM() (__arm_rsr("PSPLIM")) |
| | | #endif |
| | | |
| | | #define __get_xPSR() (__arm_rsr("xPSR")) |
| | | |
| | | #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) |
| | | #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) |
| | | #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) |
| | | #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) |
| | | #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) |
| | | |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | #define __set_MSPLIM(VALUE) ((void)(VALUE)) |
| | | #else |
| | | #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) |
| | | #endif |
| | | #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) |
| | | #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | #define __set_PSPLIM(VALUE) ((void)(VALUE)) |
| | | #else |
| | | #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) |
| | | #endif |
| | | |
| | | #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) |
| | | #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) |
| | | #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) |
| | | #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) |
| | | #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) |
| | | #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) |
| | | #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) |
| | | #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) |
| | | #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) |
| | | #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) |
| | | #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) |
| | | #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) |
| | | #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) |
| | | #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) |
| | | |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | #define __TZ_get_PSPLIM_NS() (0U) |
| | | #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) |
| | | #else |
| | | #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) |
| | | #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) |
| | | #endif |
| | | |
| | | #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) |
| | | #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) |
| | | |
| | | #define __NOP __iar_builtin_no_operation |
| | | |
| | | #define __CLZ __iar_builtin_CLZ |
| | | #define __CLREX __iar_builtin_CLREX |
| | | |
| | | #define __DMB __iar_builtin_DMB |
| | | #define __DSB __iar_builtin_DSB |
| | | #define __ISB __iar_builtin_ISB |
| | | |
| | | #define __LDREXB __iar_builtin_LDREXB |
| | | #define __LDREXH __iar_builtin_LDREXH |
| | | #define __LDREXW __iar_builtin_LDREX |
| | | |
| | | #define __RBIT __iar_builtin_RBIT |
| | | #define __REV __iar_builtin_REV |
| | | #define __REV16 __iar_builtin_REV16 |
| | | |
| | | __IAR_FT int16_t __REVSH(int16_t val) |
| | | { |
| | | return (int16_t) __iar_builtin_REVSH(val); |
| | | } |
| | | |
| | | #define __ROR __iar_builtin_ROR |
| | | #define __RRX __iar_builtin_RRX |
| | | |
| | | #define __SEV __iar_builtin_SEV |
| | | |
| | | #if !__IAR_M0_FAMILY |
| | | #define __SSAT __iar_builtin_SSAT |
| | | #endif |
| | | |
| | | #define __STREXB __iar_builtin_STREXB |
| | | #define __STREXH __iar_builtin_STREXH |
| | | #define __STREXW __iar_builtin_STREX |
| | | |
| | | #if !__IAR_M0_FAMILY |
| | | #define __USAT __iar_builtin_USAT |
| | | #endif |
| | | |
| | | #define __WFE __iar_builtin_WFE |
| | | #define __WFI __iar_builtin_WFI |
| | | |
| | | #if __ARM_MEDIA__ |
| | | #define __SADD8 __iar_builtin_SADD8 |
| | | #define __QADD8 __iar_builtin_QADD8 |
| | | #define __SHADD8 __iar_builtin_SHADD8 |
| | | #define __UADD8 __iar_builtin_UADD8 |
| | | #define __UQADD8 __iar_builtin_UQADD8 |
| | | #define __UHADD8 __iar_builtin_UHADD8 |
| | | #define __SSUB8 __iar_builtin_SSUB8 |
| | | #define __QSUB8 __iar_builtin_QSUB8 |
| | | #define __SHSUB8 __iar_builtin_SHSUB8 |
| | | #define __USUB8 __iar_builtin_USUB8 |
| | | #define __UQSUB8 __iar_builtin_UQSUB8 |
| | | #define __UHSUB8 __iar_builtin_UHSUB8 |
| | | #define __SADD16 __iar_builtin_SADD16 |
| | | #define __QADD16 __iar_builtin_QADD16 |
| | | #define __SHADD16 __iar_builtin_SHADD16 |
| | | #define __UADD16 __iar_builtin_UADD16 |
| | | #define __UQADD16 __iar_builtin_UQADD16 |
| | | #define __UHADD16 __iar_builtin_UHADD16 |
| | | #define __SSUB16 __iar_builtin_SSUB16 |
| | | #define __QSUB16 __iar_builtin_QSUB16 |
| | | #define __SHSUB16 __iar_builtin_SHSUB16 |
| | | #define __USUB16 __iar_builtin_USUB16 |
| | | #define __UQSUB16 __iar_builtin_UQSUB16 |
| | | #define __UHSUB16 __iar_builtin_UHSUB16 |
| | | #define __SASX __iar_builtin_SASX |
| | | #define __QASX __iar_builtin_QASX |
| | | #define __SHASX __iar_builtin_SHASX |
| | | #define __UASX __iar_builtin_UASX |
| | | #define __UQASX __iar_builtin_UQASX |
| | | #define __UHASX __iar_builtin_UHASX |
| | | #define __SSAX __iar_builtin_SSAX |
| | | #define __QSAX __iar_builtin_QSAX |
| | | #define __SHSAX __iar_builtin_SHSAX |
| | | #define __USAX __iar_builtin_USAX |
| | | #define __UQSAX __iar_builtin_UQSAX |
| | | #define __UHSAX __iar_builtin_UHSAX |
| | | #define __USAD8 __iar_builtin_USAD8 |
| | | #define __USADA8 __iar_builtin_USADA8 |
| | | #define __SSAT16 __iar_builtin_SSAT16 |
| | | #define __USAT16 __iar_builtin_USAT16 |
| | | #define __UXTB16 __iar_builtin_UXTB16 |
| | | #define __UXTAB16 __iar_builtin_UXTAB16 |
| | | #define __SXTB16 __iar_builtin_SXTB16 |
| | | #define __SXTAB16 __iar_builtin_SXTAB16 |
| | | #define __SMUAD __iar_builtin_SMUAD |
| | | #define __SMUADX __iar_builtin_SMUADX |
| | | #define __SMMLA __iar_builtin_SMMLA |
| | | #define __SMLAD __iar_builtin_SMLAD |
| | | #define __SMLADX __iar_builtin_SMLADX |
| | | #define __SMLALD __iar_builtin_SMLALD |
| | | #define __SMLALDX __iar_builtin_SMLALDX |
| | | #define __SMUSD __iar_builtin_SMUSD |
| | | #define __SMUSDX __iar_builtin_SMUSDX |
| | | #define __SMLSD __iar_builtin_SMLSD |
| | | #define __SMLSDX __iar_builtin_SMLSDX |
| | | #define __SMLSLD __iar_builtin_SMLSLD |
| | | #define __SMLSLDX __iar_builtin_SMLSLDX |
| | | #define __SEL __iar_builtin_SEL |
| | | #define __QADD __iar_builtin_QADD |
| | | #define __QSUB __iar_builtin_QSUB |
| | | #define __PKHBT __iar_builtin_PKHBT |
| | | #define __PKHTB __iar_builtin_PKHTB |
| | | #endif |
| | | |
| | | #else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ |
| | | |
| | | #if __IAR_M0_FAMILY |
| | | /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ |
| | | #define __CLZ __cmsis_iar_clz_not_active |
| | | #define __SSAT __cmsis_iar_ssat_not_active |
| | | #define __USAT __cmsis_iar_usat_not_active |
| | | #define __RBIT __cmsis_iar_rbit_not_active |
| | | #define __get_APSR __cmsis_iar_get_APSR_not_active |
| | | #endif |
| | | |
| | | |
| | | #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) |
| | | #define __get_FPSCR __cmsis_iar_get_FPSR_not_active |
| | | #define __set_FPSCR __cmsis_iar_set_FPSR_not_active |
| | | #endif |
| | | |
| | | #ifdef __INTRINSICS_INCLUDED |
| | | #error intrinsics.h is already included previously! |
| | | #endif |
| | | |
| | | #include <intrinsics.h> |
| | | |
| | | #if __IAR_M0_FAMILY |
| | | /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ |
| | | #undef __CLZ |
| | | #undef __SSAT |
| | | #undef __USAT |
| | | #undef __RBIT |
| | | #undef __get_APSR |
| | | |
| | | __STATIC_INLINE uint8_t __CLZ(uint32_t data) |
| | | { |
| | | if (data == 0U) { return 32U; } |
| | | |
| | | uint32_t count = 0U; |
| | | uint32_t mask = 0x80000000U; |
| | | |
| | | while ((data & mask) == 0U) |
| | | { |
| | | count += 1U; |
| | | mask = mask >> 1U; |
| | | } |
| | | return count; |
| | | } |
| | | |
| | | __STATIC_INLINE uint32_t __RBIT(uint32_t v) |
| | | { |
| | | uint8_t sc = 31U; |
| | | uint32_t r = v; |
| | | for (v >>= 1U; v; v >>= 1U) |
| | | { |
| | | r <<= 1U; |
| | | r |= v & 1U; |
| | | sc--; |
| | | } |
| | | return (r << sc); |
| | | } |
| | | |
| | | __STATIC_INLINE uint32_t __get_APSR(void) |
| | | { |
| | | uint32_t res; |
| | | __asm("MRS %0,APSR" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | #endif |
| | | |
| | | #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ |
| | | (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) |
| | | #undef __get_FPSCR |
| | | #undef __set_FPSCR |
| | | #define __get_FPSCR() (0) |
| | | #define __set_FPSCR(VALUE) ((void)VALUE) |
| | | #endif |
| | | |
| | | #pragma diag_suppress=Pe940 |
| | | #pragma diag_suppress=Pe177 |
| | | |
| | | #define __enable_irq __enable_interrupt |
| | | #define __disable_irq __disable_interrupt |
| | | #define __NOP __no_operation |
| | | |
| | | #define __get_xPSR __get_PSR |
| | | |
| | | #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) |
| | | |
| | | __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) |
| | | { |
| | | return __LDREX((unsigned long *)ptr); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) |
| | | { |
| | | return __STREX(value, (unsigned long *)ptr); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ |
| | | #if (__CORTEX_M >= 0x03) |
| | | |
| | | __IAR_FT uint32_t __RRX(uint32_t value) |
| | | { |
| | | uint32_t result; |
| | | __ASM volatile("RRX %0, %1" : "=r"(result) : "r" (value)); |
| | | return(result); |
| | | } |
| | | |
| | | __IAR_FT void __set_BASEPRI_MAX(uint32_t value) |
| | | { |
| | | __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); |
| | | } |
| | | |
| | | |
| | | #define __enable_fault_irq __enable_fiq |
| | | #define __disable_fault_irq __disable_fiq |
| | | |
| | | |
| | | #endif /* (__CORTEX_M >= 0x03) */ |
| | | |
| | | __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) |
| | | { |
| | | return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); |
| | | } |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | |
| | | __IAR_FT uint32_t __get_MSPLIM(void) |
| | | { |
| | | uint32_t res; |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | res = 0U; |
| | | #else |
| | | __asm volatile("MRS %0,MSPLIM" : "=r" (res)); |
| | | #endif |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __set_MSPLIM(uint32_t value) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure MSPLIM is RAZ/WI |
| | | (void)value; |
| | | #else |
| | | __asm volatile("MSR MSPLIM,%0" :: "r" (value)); |
| | | #endif |
| | | } |
| | | |
| | | __IAR_FT uint32_t __get_PSPLIM(void) |
| | | { |
| | | uint32_t res; |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | res = 0U; |
| | | #else |
| | | __asm volatile("MRS %0,PSPLIM" : "=r" (res)); |
| | | #endif |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __set_PSPLIM(uint32_t value) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)value; |
| | | #else |
| | | __asm volatile("MSR PSPLIM,%0" :: "r" (value)); |
| | | #endif |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_PSP_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,PSP_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_PSP_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR PSP_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_MSP_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,MSP_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_MSP_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR MSP_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_SP_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,SP_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | __IAR_FT void __TZ_set_SP_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR SP_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) |
| | | { |
| | | uint32_t res; |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | res = 0U; |
| | | #else |
| | | __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); |
| | | #endif |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) |
| | | { |
| | | #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ |
| | | (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) |
| | | // without main extensions, the non-secure PSPLIM is RAZ/WI |
| | | (void)value; |
| | | #else |
| | | __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); |
| | | #endif |
| | | } |
| | | |
| | | __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) |
| | | { |
| | | uint32_t res; |
| | | __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) |
| | | { |
| | | __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); |
| | | } |
| | | |
| | | #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ |
| | | |
| | | #endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ |
| | | |
| | | #define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) |
| | | |
| | | #if __IAR_M0_FAMILY |
| | | __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) |
| | | { |
| | | if ((sat >= 1U) && (sat <= 32U)) |
| | | { |
| | | const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); |
| | | const int32_t min = -1 - max ; |
| | | if (val > max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < min) |
| | | { |
| | | return min; |
| | | } |
| | | } |
| | | return val; |
| | | } |
| | | |
| | | __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) |
| | | { |
| | | if (sat <= 31U) |
| | | { |
| | | const uint32_t max = ((1U << sat) - 1U); |
| | | if (val > (int32_t)max) |
| | | { |
| | | return max; |
| | | } |
| | | else if (val < 0) |
| | | { |
| | | return 0U; |
| | | } |
| | | } |
| | | return (uint32_t)val; |
| | | } |
| | | #endif |
| | | |
| | | #if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ |
| | | |
| | | __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); |
| | | return ((uint8_t)res); |
| | | } |
| | | |
| | | __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); |
| | | return ((uint16_t)res); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) |
| | | { |
| | | __ASM volatile ("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); |
| | | } |
| | | |
| | | __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) |
| | | { |
| | | __ASM volatile ("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); |
| | | } |
| | | |
| | | __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) |
| | | { |
| | | __ASM volatile ("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); |
| | | } |
| | | |
| | | #endif /* (__CORTEX_M >= 0x03) */ |
| | | |
| | | #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ |
| | | (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) |
| | | |
| | | |
| | | __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); |
| | | return ((uint8_t)res); |
| | | } |
| | | |
| | | __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); |
| | | return ((uint16_t)res); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); |
| | | } |
| | | |
| | | __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); |
| | | } |
| | | |
| | | __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); |
| | | } |
| | | |
| | | __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); |
| | | return ((uint8_t)res); |
| | | } |
| | | |
| | | __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); |
| | | return ((uint16_t)res); |
| | | } |
| | | |
| | | __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); |
| | | return res; |
| | | } |
| | | |
| | | __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) |
| | | { |
| | | uint32_t res; |
| | | __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); |
| | | return res; |
| | | } |
| | | |
| | | #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ |
| | | |
| | | #undef __IAR_FT |
| | | #undef __IAR_M0_FAMILY |
| | | #undef __ICCARM_V8 |
| | | |
| | | #pragma diag_default=Pe940 |
| | | #pragma diag_default=Pe177 |
| | | |
| | | #define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) |
| | | |
| | | #endif /* __CMSIS_ICCARM_H__ */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file cmsis_version.h |
| | | * @brief CMSIS Core(M) Version definitions |
| | | * @version V5.0.4 |
| | | * @date 23. July 2019 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2009-2019 ARM Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | #if defined ( __ICCARM__ ) |
| | | #pragma system_include /* treat file as system include file for MISRA check */ |
| | | #elif defined (__clang__) |
| | | #pragma clang system_header /* treat file as system include file */ |
| | | #endif |
| | | |
| | | #ifndef __CMSIS_VERSION_H |
| | | #define __CMSIS_VERSION_H |
| | | |
| | | /* CMSIS Version definitions */ |
| | | #define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ |
| | | #define __CM_CMSIS_VERSION_SUB ( 4U) /*!< [15:0] CMSIS Core(M) sub version */ |
| | | #define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ |
| | | __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ |
| | | #endif |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /**************************************************************************//** |
| | | * @file core_cm0.h |
| | | * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File |
| | | * @version V5.0.8 |
| | | * @date 21. August 2019 |
| | | ******************************************************************************/ |
| | | /* |
| | | * Copyright (c) 2009-2019 Arm Limited. All rights reserved. |
| | | * |
| | | * SPDX-License-Identifier: Apache-2.0 |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the License); you may |
| | | * not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| | | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | #if defined ( __ICCARM__ ) |
| | | #pragma system_include /* treat file as system include file for MISRA check */ |
| | | #elif defined (__clang__) |
| | | #pragma clang system_header /* treat file as system include file */ |
| | | #endif |
| | | |
| | | #ifndef __CORE_CM0_H_GENERIC |
| | | #define __CORE_CM0_H_GENERIC |
| | | |
| | | #include <stdint.h> |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions |
| | | CMSIS violates the following MISRA-C:2004 rules: |
| | | |
| | | \li Required Rule 8.5, object/function definition in header file.<br> |
| | | Function definitions in header files are used to allow 'inlining'. |
| | | |
| | | \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br> |
| | | Unions are used for effective representation of core registers. |
| | | |
| | | \li Advisory Rule 19.7, Function-like macro defined.<br> |
| | | Function-like macros are used to allow more efficient code. |
| | | */ |
| | | |
| | | |
| | | /******************************************************************************* |
| | | * CMSIS definitions |
| | | ******************************************************************************/ |
| | | /** |
| | | \ingroup Cortex_M0 |
| | | @{ |
| | | */ |
| | | |
| | | #include "cmsis_version.h" |
| | | |
| | | /* CMSIS CM0 definitions */ |
| | | #define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ |
| | | #define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ |
| | | #define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ |
| | | __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ |
| | | |
| | | #define __CORTEX_M (0U) /*!< Cortex-M Core */ |
| | | |
| | | /** __FPU_USED indicates whether an FPU is used or not. |
| | | This core does not support an FPU at all |
| | | */ |
| | | #define __FPU_USED 0U |
| | | |
| | | #if defined ( __CC_ARM ) |
| | | #if defined __TARGET_FPU_VFP |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) |
| | | #if defined __ARM_FP |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #elif defined ( __GNUC__ ) |
| | | #if defined (__VFP_FP__) && !defined(__SOFTFP__) |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #elif defined ( __ICCARM__ ) |
| | | #if defined __ARMVFP__ |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #elif defined ( __TI_ARM__ ) |
| | | #if defined __TI_VFP_SUPPORT__ |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #elif defined ( __TASKING__ ) |
| | | #if defined __FPU_VFP__ |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #elif defined ( __CSMC__ ) |
| | | #if ( __CSMC__ & 0x400U) |
| | | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" |
| | | #endif |
| | | |
| | | #endif |
| | | |
| | | #include "cmsis_compiler.h" /* CMSIS compiler specific defines */ |
| | | |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | #endif /* __CORE_CM0_H_GENERIC */ |
| | | |
| | | #ifndef __CMSIS_GENERIC |
| | | |
| | | #ifndef __CORE_CM0_H_DEPENDANT |
| | | #define __CORE_CM0_H_DEPENDANT |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /* check device defines and use defaults */ |
| | | #if defined __CHECK_DEVICE_DEFINES |
| | | #ifndef __CM0_REV |
| | | #define __CM0_REV 0x0000U |
| | | #warning "__CM0_REV not defined in device header file; using default!" |
| | | #endif |
| | | |
| | | #ifndef __NVIC_PRIO_BITS |
| | | #define __NVIC_PRIO_BITS 2U |
| | | #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" |
| | | #endif |
| | | |
| | | #ifndef __Vendor_SysTickConfig |
| | | #define __Vendor_SysTickConfig 0U |
| | | #warning "__Vendor_SysTickConfig not defined in device header file; using default!" |
| | | #endif |
| | | #endif |
| | | |
| | | /* IO definitions (access restrictions to peripheral registers) */ |
| | | /** |
| | | \defgroup CMSIS_glob_defs CMSIS Global Defines |
| | | |
| | | <strong>IO Type Qualifiers</strong> are used |
| | | \li to specify the access to peripheral variables. |
| | | \li for automatic generation of peripheral register debug information. |
| | | */ |
| | | #ifdef __cplusplus |
| | | #define __I volatile /*!< Defines 'read only' permissions */ |
| | | #else |
| | | #define __I volatile const /*!< Defines 'read only' permissions */ |
| | | #endif |
| | | #define __O volatile /*!< Defines 'write only' permissions */ |
| | | #define __IO volatile /*!< Defines 'read / write' permissions */ |
| | | |
| | | /* following defines should be used for structure members */ |
| | | #define __IM volatile const /*! Defines 'read only' structure member permissions */ |
| | | #define __OM volatile /*! Defines 'write only' structure member permissions */ |
| | | #define __IOM volatile /*! Defines 'read / write' structure member permissions */ |
| | | |
| | | /*@} end of group Cortex_M0 */ |
| | | |
| | | |
| | | |
| | | /******************************************************************************* |
| | | * Register Abstraction |
| | | Core Register contain: |
| | | - Core Register |
| | | - Core NVIC Register |
| | | - Core SCB Register |
| | | - Core SysTick Register |
| | | ******************************************************************************/ |
| | | /** |
| | | \defgroup CMSIS_core_register Defines and Type Definitions |
| | | \brief Type definitions and defines for Cortex-M processor based devices. |
| | | */ |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_CORE Status and Control Registers |
| | | \brief Core Register type definitions. |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Union type to access the Application Program Status Register (APSR). |
| | | */ |
| | | typedef union |
| | | { |
| | | struct |
| | | { |
| | | uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ |
| | | uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ |
| | | uint32_t C:1; /*!< bit: 29 Carry condition code flag */ |
| | | uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ |
| | | uint32_t N:1; /*!< bit: 31 Negative condition code flag */ |
| | | } b; /*!< Structure used for bit access */ |
| | | uint32_t w; /*!< Type used for word access */ |
| | | } APSR_Type; |
| | | |
| | | /* APSR Register Definitions */ |
| | | #define APSR_N_Pos 31U /*!< APSR: N Position */ |
| | | #define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ |
| | | |
| | | #define APSR_Z_Pos 30U /*!< APSR: Z Position */ |
| | | #define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ |
| | | |
| | | #define APSR_C_Pos 29U /*!< APSR: C Position */ |
| | | #define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ |
| | | |
| | | #define APSR_V_Pos 28U /*!< APSR: V Position */ |
| | | #define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ |
| | | |
| | | |
| | | /** |
| | | \brief Union type to access the Interrupt Program Status Register (IPSR). |
| | | */ |
| | | typedef union |
| | | { |
| | | struct |
| | | { |
| | | uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ |
| | | uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ |
| | | } b; /*!< Structure used for bit access */ |
| | | uint32_t w; /*!< Type used for word access */ |
| | | } IPSR_Type; |
| | | |
| | | /* IPSR Register Definitions */ |
| | | #define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ |
| | | #define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ |
| | | |
| | | |
| | | /** |
| | | \brief Union type to access the Special-Purpose Program Status Registers (xPSR). |
| | | */ |
| | | typedef union |
| | | { |
| | | struct |
| | | { |
| | | uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ |
| | | uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ |
| | | uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ |
| | | uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ |
| | | uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ |
| | | uint32_t C:1; /*!< bit: 29 Carry condition code flag */ |
| | | uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ |
| | | uint32_t N:1; /*!< bit: 31 Negative condition code flag */ |
| | | } b; /*!< Structure used for bit access */ |
| | | uint32_t w; /*!< Type used for word access */ |
| | | } xPSR_Type; |
| | | |
| | | /* xPSR Register Definitions */ |
| | | #define xPSR_N_Pos 31U /*!< xPSR: N Position */ |
| | | #define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ |
| | | |
| | | #define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ |
| | | #define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ |
| | | |
| | | #define xPSR_C_Pos 29U /*!< xPSR: C Position */ |
| | | #define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ |
| | | |
| | | #define xPSR_V_Pos 28U /*!< xPSR: V Position */ |
| | | #define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ |
| | | |
| | | #define xPSR_T_Pos 24U /*!< xPSR: T Position */ |
| | | #define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ |
| | | |
| | | #define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ |
| | | #define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ |
| | | |
| | | |
| | | /** |
| | | \brief Union type to access the Control Registers (CONTROL). |
| | | */ |
| | | typedef union |
| | | { |
| | | struct |
| | | { |
| | | uint32_t _reserved0:1; /*!< bit: 0 Reserved */ |
| | | uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ |
| | | uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ |
| | | } b; /*!< Structure used for bit access */ |
| | | uint32_t w; /*!< Type used for word access */ |
| | | } CONTROL_Type; |
| | | |
| | | /* CONTROL Register Definitions */ |
| | | #define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ |
| | | #define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ |
| | | |
| | | /*@} end of group CMSIS_CORE */ |
| | | |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) |
| | | \brief Type definitions for the NVIC Registers |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). |
| | | */ |
| | | typedef struct |
| | | { |
| | | __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ |
| | | uint32_t RESERVED0[31U]; |
| | | __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ |
| | | uint32_t RESERVED1[31U]; |
| | | __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ |
| | | uint32_t RESERVED2[31U]; |
| | | __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ |
| | | uint32_t RESERVED3[31U]; |
| | | uint32_t RESERVED4[64U]; |
| | | __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ |
| | | } NVIC_Type; |
| | | |
| | | /*@} end of group CMSIS_NVIC */ |
| | | |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_SCB System Control Block (SCB) |
| | | \brief Type definitions for the System Control Block Registers |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Structure type to access the System Control Block (SCB). |
| | | */ |
| | | typedef struct |
| | | { |
| | | __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ |
| | | __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ |
| | | uint32_t RESERVED0; |
| | | __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ |
| | | __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ |
| | | __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ |
| | | uint32_t RESERVED1; |
| | | __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ |
| | | __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ |
| | | } SCB_Type; |
| | | |
| | | /* SCB CPUID Register Definitions */ |
| | | #define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ |
| | | #define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ |
| | | |
| | | #define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ |
| | | #define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ |
| | | |
| | | #define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ |
| | | #define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ |
| | | |
| | | #define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ |
| | | #define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ |
| | | |
| | | #define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ |
| | | #define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ |
| | | |
| | | /* SCB Interrupt Control State Register Definitions */ |
| | | #define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ |
| | | #define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ |
| | | |
| | | #define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ |
| | | #define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ |
| | | |
| | | #define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ |
| | | #define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ |
| | | |
| | | #define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ |
| | | #define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ |
| | | |
| | | #define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ |
| | | #define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ |
| | | |
| | | #define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ |
| | | #define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ |
| | | |
| | | #define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ |
| | | #define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ |
| | | |
| | | #define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ |
| | | #define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ |
| | | |
| | | #define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ |
| | | #define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ |
| | | |
| | | /* SCB Application Interrupt and Reset Control Register Definitions */ |
| | | #define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ |
| | | #define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ |
| | | |
| | | #define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ |
| | | #define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ |
| | | |
| | | #define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ |
| | | #define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ |
| | | |
| | | #define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ |
| | | #define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ |
| | | |
| | | #define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ |
| | | #define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ |
| | | |
| | | /* SCB System Control Register Definitions */ |
| | | #define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ |
| | | #define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ |
| | | |
| | | #define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ |
| | | #define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ |
| | | |
| | | #define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ |
| | | #define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ |
| | | |
| | | /* SCB Configuration Control Register Definitions */ |
| | | #define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ |
| | | #define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ |
| | | |
| | | #define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ |
| | | #define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ |
| | | |
| | | /* SCB System Handler Control and State Register Definitions */ |
| | | #define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ |
| | | #define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ |
| | | |
| | | /*@} end of group CMSIS_SCB */ |
| | | |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_SysTick System Tick Timer (SysTick) |
| | | \brief Type definitions for the System Timer Registers. |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Structure type to access the System Timer (SysTick). |
| | | */ |
| | | typedef struct |
| | | { |
| | | __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ |
| | | __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ |
| | | __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ |
| | | __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ |
| | | } SysTick_Type; |
| | | |
| | | /* SysTick Control / Status Register Definitions */ |
| | | #define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ |
| | | #define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ |
| | | |
| | | #define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ |
| | | #define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ |
| | | |
| | | #define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ |
| | | #define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ |
| | | |
| | | #define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ |
| | | #define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ |
| | | |
| | | /* SysTick Reload Register Definitions */ |
| | | #define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ |
| | | #define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ |
| | | |
| | | /* SysTick Current Register Definitions */ |
| | | #define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ |
| | | #define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ |
| | | |
| | | /* SysTick Calibration Register Definitions */ |
| | | #define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ |
| | | #define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ |
| | | |
| | | #define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ |
| | | #define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ |
| | | |
| | | #define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ |
| | | #define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ |
| | | |
| | | /*@} end of group CMSIS_SysTick */ |
| | | |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) |
| | | \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. |
| | | Therefore they are not covered by the Cortex-M0 header file. |
| | | @{ |
| | | */ |
| | | /*@} end of group CMSIS_CoreDebug */ |
| | | |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_core_bitfield Core register bit field macros |
| | | \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief Mask and shift a bit field value for use in a register bit range. |
| | | \param[in] field Name of the register bit field. |
| | | \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. |
| | | \return Masked and shifted value. |
| | | */ |
| | | #define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) |
| | | |
| | | /** |
| | | \brief Mask and shift a register value to extract a bit filed value. |
| | | \param[in] field Name of the register bit field. |
| | | \param[in] value Value of register. This parameter is interpreted as an uint32_t type. |
| | | \return Masked and shifted bit field value. |
| | | */ |
| | | #define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) |
| | | |
| | | /*@} end of group CMSIS_core_bitfield */ |
| | | |
| | | |
| | | /** |
| | | \ingroup CMSIS_core_register |
| | | \defgroup CMSIS_core_base Core Definitions |
| | | \brief Definitions for base addresses, unions, and structures. |
| | | @{ |
| | | */ |
| | | |
| | | /* Memory mapping of Core Hardware */ |
| | | #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ |
| | | #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ |
| | | #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ |
| | | #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ |
| | | |
| | | #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ |
| | | #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ |
| | | #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ |
| | | |
| | | |
| | | /*@} */ |
| | | |
| | | |
| | | |
| | | /******************************************************************************* |
| | | * Hardware Abstraction Layer |
| | | Core Function Interface contains: |
| | | - Core NVIC Functions |
| | | - Core SysTick Functions |
| | | - Core Register Access Functions |
| | | ******************************************************************************/ |
| | | /** |
| | | \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference |
| | | */ |
| | | |
| | | |
| | | |
| | | /* ########################## NVIC functions #################################### */ |
| | | /** |
| | | \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_NVICFunctions NVIC Functions |
| | | \brief Functions that manage interrupts and exceptions via the NVIC. |
| | | @{ |
| | | */ |
| | | |
| | | #ifdef CMSIS_NVIC_VIRTUAL |
| | | #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE |
| | | #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" |
| | | #endif |
| | | #include CMSIS_NVIC_VIRTUAL_HEADER_FILE |
| | | #else |
| | | #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping |
| | | #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping |
| | | #define NVIC_EnableIRQ __NVIC_EnableIRQ |
| | | #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ |
| | | #define NVIC_DisableIRQ __NVIC_DisableIRQ |
| | | #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ |
| | | #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ |
| | | #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ |
| | | /*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ |
| | | #define NVIC_SetPriority __NVIC_SetPriority |
| | | #define NVIC_GetPriority __NVIC_GetPriority |
| | | #define NVIC_SystemReset __NVIC_SystemReset |
| | | #endif /* CMSIS_NVIC_VIRTUAL */ |
| | | |
| | | #ifdef CMSIS_VECTAB_VIRTUAL |
| | | #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE |
| | | #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" |
| | | #endif |
| | | #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE |
| | | #else |
| | | #define NVIC_SetVector __NVIC_SetVector |
| | | #define NVIC_GetVector __NVIC_GetVector |
| | | #endif /* (CMSIS_VECTAB_VIRTUAL) */ |
| | | |
| | | #define NVIC_USER_IRQ_OFFSET 16 |
| | | |
| | | |
| | | /* The following EXC_RETURN values are saved the LR on exception entry */ |
| | | #define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ |
| | | #define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ |
| | | #define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ |
| | | |
| | | |
| | | /* Interrupt Priorities are WORD accessible only under Armv6-M */ |
| | | /* The following MACROS handle generation of the register offset and byte masks */ |
| | | #define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) |
| | | #define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) |
| | | #define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) |
| | | |
| | | #define __NVIC_SetPriorityGrouping(X) (void)(X) |
| | | #define __NVIC_GetPriorityGrouping() (0U) |
| | | |
| | | /** |
| | | \brief Enable Interrupt |
| | | \details Enables a device specific interrupt in the NVIC interrupt controller. |
| | | \param [in] IRQn Device specific interrupt number. |
| | | \note IRQn must not be negative. |
| | | */ |
| | | __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | __COMPILER_BARRIER(); |
| | | NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); |
| | | __COMPILER_BARRIER(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Interrupt Enable status |
| | | \details Returns a device specific interrupt enable status from the NVIC interrupt controller. |
| | | \param [in] IRQn Device specific interrupt number. |
| | | \return 0 Interrupt is not enabled. |
| | | \return 1 Interrupt is enabled. |
| | | \note IRQn must not be negative. |
| | | */ |
| | | __STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); |
| | | } |
| | | else |
| | | { |
| | | return(0U); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Disable Interrupt |
| | | \details Disables a device specific interrupt in the NVIC interrupt controller. |
| | | \param [in] IRQn Device specific interrupt number. |
| | | \note IRQn must not be negative. |
| | | */ |
| | | __STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); |
| | | __DSB(); |
| | | __ISB(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Pending Interrupt |
| | | \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. |
| | | \param [in] IRQn Device specific interrupt number. |
| | | \return 0 Interrupt status is not pending. |
| | | \return 1 Interrupt status is pending. |
| | | \note IRQn must not be negative. |
| | | */ |
| | | __STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); |
| | | } |
| | | else |
| | | { |
| | | return(0U); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Pending Interrupt |
| | | \details Sets the pending bit of a device specific interrupt in the NVIC pending register. |
| | | \param [in] IRQn Device specific interrupt number. |
| | | \note IRQn must not be negative. |
| | | */ |
| | | __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Clear Pending Interrupt |
| | | \details Clears the pending bit of a device specific interrupt in the NVIC pending register. |
| | | \param [in] IRQn Device specific interrupt number. |
| | | \note IRQn must not be negative. |
| | | */ |
| | | __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Set Interrupt Priority |
| | | \details Sets the priority of a device specific interrupt or a processor exception. |
| | | The interrupt number can be positive to specify a device specific interrupt, |
| | | or negative to specify a processor exception. |
| | | \param [in] IRQn Interrupt number. |
| | | \param [in] priority Priority to set. |
| | | \note The priority cannot be set for every processor exception. |
| | | */ |
| | | __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) |
| | | { |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | |
| | | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); |
| | | } |
| | | else |
| | | { |
| | | SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | |
| | | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Interrupt Priority |
| | | \details Reads the priority of a device specific interrupt or a processor exception. |
| | | The interrupt number can be positive to specify a device specific interrupt, |
| | | or negative to specify a processor exception. |
| | | \param [in] IRQn Interrupt number. |
| | | \return Interrupt Priority. |
| | | Value is aligned automatically to the implemented priority bits of the microcontroller. |
| | | */ |
| | | __STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) |
| | | { |
| | | |
| | | if ((int32_t)(IRQn) >= 0) |
| | | { |
| | | return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); |
| | | } |
| | | else |
| | | { |
| | | return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Encode Priority |
| | | \details Encodes the priority for an interrupt with the given priority group, |
| | | preemptive priority value, and subpriority value. |
| | | In case of a conflict between priority grouping and available |
| | | priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. |
| | | \param [in] PriorityGroup Used priority group. |
| | | \param [in] PreemptPriority Preemptive priority value (starting from 0). |
| | | \param [in] SubPriority Subpriority value (starting from 0). |
| | | \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). |
| | | */ |
| | | __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) |
| | | { |
| | | uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ |
| | | uint32_t PreemptPriorityBits; |
| | | uint32_t SubPriorityBits; |
| | | |
| | | PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); |
| | | SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); |
| | | |
| | | return ( |
| | | ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | |
| | | ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) |
| | | ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Decode Priority |
| | | \details Decodes an interrupt priority value with a given priority group to |
| | | preemptive priority value and subpriority value. |
| | | In case of a conflict between priority grouping and available |
| | | priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. |
| | | \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). |
| | | \param [in] PriorityGroup Used priority group. |
| | | \param [out] pPreemptPriority Preemptive priority value (starting from 0). |
| | | \param [out] pSubPriority Subpriority value (starting from 0). |
| | | */ |
| | | __STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) |
| | | { |
| | | uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ |
| | | uint32_t PreemptPriorityBits; |
| | | uint32_t SubPriorityBits; |
| | | |
| | | PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); |
| | | SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); |
| | | |
| | | *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); |
| | | *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | \brief Set Interrupt Vector |
| | | \details Sets an interrupt vector in SRAM based interrupt vector table. |
| | | The interrupt number can be positive to specify a device specific interrupt, |
| | | or negative to specify a processor exception. |
| | | Address 0 must be mapped to SRAM. |
| | | \param [in] IRQn Interrupt number |
| | | \param [in] vector Address of interrupt handler function |
| | | */ |
| | | __STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) |
| | | { |
| | | uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ |
| | | *(vectors + (int32_t)IRQn) = vector; /* use pointer arithmetic to access vector */ |
| | | /* ARM Application Note 321 states that the M0 does not require the architectural barrier */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief Get Interrupt Vector |
| | | \details Reads an interrupt vector from interrupt vector table. |
| | | The interrupt number can be positive to specify a device specific interrupt, |
| | | or negative to specify a processor exception. |
| | | \param [in] IRQn Interrupt number. |
| | | \return Address of interrupt handler function |
| | | */ |
| | | __STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) |
| | | { |
| | | uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ |
| | | return *(vectors + (int32_t)IRQn); /* use pointer arithmetic to access vector */ |
| | | } |
| | | |
| | | |
| | | /** |
| | | \brief System Reset |
| | | \details Initiates a system reset request to reset the MCU. |
| | | */ |
| | | __NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) |
| | | { |
| | | __DSB(); /* Ensure all outstanding memory accesses included |
| | | buffered write are completed before reset */ |
| | | SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | |
| | | SCB_AIRCR_SYSRESETREQ_Msk); |
| | | __DSB(); /* Ensure completion of memory access */ |
| | | |
| | | for(;;) /* wait until reset */ |
| | | { |
| | | __NOP(); |
| | | } |
| | | } |
| | | |
| | | /*@} end of CMSIS_Core_NVICFunctions */ |
| | | |
| | | |
| | | /* ########################## FPU functions #################################### */ |
| | | /** |
| | | \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_FpuFunctions FPU Functions |
| | | \brief Function that provides FPU type. |
| | | @{ |
| | | */ |
| | | |
| | | /** |
| | | \brief get FPU type |
| | | \details returns the FPU type |
| | | \returns |
| | | - \b 0: No FPU |
| | | - \b 1: Single precision FPU |
| | | - \b 2: Double + Single precision FPU |
| | | */ |
| | | __STATIC_INLINE uint32_t SCB_GetFPUType(void) |
| | | { |
| | | return 0U; /* No FPU */ |
| | | } |
| | | |
| | | |
| | | /*@} end of CMSIS_Core_FpuFunctions */ |
| | | |
| | | |
| | | |
| | | /* ################################## SysTick function ############################################ */ |
| | | /** |
| | | \ingroup CMSIS_Core_FunctionInterface |
| | | \defgroup CMSIS_Core_SysTickFunctions SysTick Functions |
| | | \brief Functions that configure the System. |
| | | @{ |
| | | */ |
| | | |
| | | #if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) |
| | | |
| | | /** |
| | | \brief System Tick Configuration |
| | | \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. |
| | | Counter is in free running mode to generate periodic interrupts. |
| | | \param [in] ticks Number of ticks between two interrupts. |
| | | \return 0 Function succeeded. |
| | | \return 1 Function failed. |
| | | \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the |
| | | function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b> |
| | | must contain a vendor-specific implementation of this function. |
| | | */ |
| | | __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) |
| | | { |
| | | if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) |
| | | { |
| | | return (1UL); /* Reload value impossible */ |
| | | } |
| | | |
| | | SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ |
| | | NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ |
| | | SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ |
| | | SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | |
| | | SysTick_CTRL_TICKINT_Msk | |
| | | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ |
| | | return (0UL); /* Function successful */ |
| | | } |
| | | |
| | | #endif |
| | | |
| | | /*@} end of CMSIS_Core_SysTickFunctions */ |
| | | |
| | | |
| | | |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | #endif /* __CORE_CM0_H_DEPENDANT */ |
| | | |
| | | #endif /* __CMSIS_GENERIC */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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 "board.h" |
| | | #include "mk_power.h" |
| | | #include "mk_clock.h" |
| | | #include "mk_calib.h" |
| | | #include "mk_misc.h" |
| | | #include "mk_uwb.h" |
| | | #ifdef WSF_EN |
| | | #include "wsf_nvm.h" |
| | | #endif |
| | | #if defined(UCI_INTF_PORT) |
| | | #include "uci_tl_task.h" |
| | | #endif |
| | | |
| | | #if TRACE_EN |
| | | static enum TRACE_PORT_T user_trace_port; |
| | | #endif |
| | | |
| | | #ifndef TRACE_BAUD_RATE |
| | | #define TRACE_BAUD_RATE (BAUD_921600) |
| | | #endif |
| | | |
| | | struct BOARD_PARAM_T board_param = {0}; |
| | | static GPIO_IRQ_HANDLER_T button_irq_handler = NULL; |
| | | |
| | | void board_clock_run(void) |
| | | { |
| | | // default load cap |
| | | REG_WRITE(0x40000048, 76); |
| | | |
| | | clock_attach(CLOCK_48M_RO_TO_SYS_CLK); |
| | | delay_us(50); |
| | | |
| | | // calibrate REFPLL |
| | | calib_open(); |
| | | calib_start(CALIB_PO_REFPLL_EN); |
| | | calib_check(CALIB_REFPLL_DONE); |
| | | calib_close(); |
| | | |
| | | /* SYSCLK comes from XTAL */ |
| | | clock_attach(SYS_CLK_SOURCE); |
| | | |
| | | /* Configure AHB clock, AHBCLK = SYSCLK/(div) */ |
| | | clock_set_divider(CLOCK_AHB_DIV, AHB_DIV); |
| | | |
| | | /* Configure APB clock, APBCLK = AHBCLK/(div) */ |
| | | clock_set_divider(CLOCK_APB_DIV, APB_DIV); |
| | | |
| | | /* Select 32k clock source: 32768Hz XTAL or 32000Hz RCO */ |
| | | clock_attach(CLK_32K_SOURCE); |
| | | |
| | | /* Select WDT clcok source: 32K or APBCLK */ |
| | | clock_attach(CLOCK_32K_TO_WDT_CLK); |
| | | |
| | | #if SYS_TICK_EN |
| | | /* Configure sys tick timer, 32768 / 100 = 10ms @ 32k */ |
| | | sys_tick_start(328); |
| | | #endif |
| | | |
| | | /* System timer */ |
| | | sys_timer_open(); |
| | | } |
| | | |
| | | void board_debug_console_open(enum TRACE_PORT_T port) |
| | | { |
| | | #if TRACE_EN |
| | | trace_open(port, TRACE_BAUD_RATE); |
| | | user_trace_port = port; |
| | | #endif |
| | | LOG_INFO(TRACE_MODULE_APP, "Hello from MKSEMI!\r\n"); |
| | | LOG_INFO(TRACE_MODULE_APP, "Build information %s\r\n", mk_build_inf); |
| | | } |
| | | |
| | | void board_calibration_params_default(void) |
| | | { |
| | | board_param.load_cap = 76; |
| | | #ifdef UWB_EN |
| | | board_param.tx_power_fcc[CALIB_CH9] = TX_POWER_LEVEL; |
| | | board_param.tx_power_fcc[CALIB_CH5] = TX_POWER_LEVEL; |
| | | board_param.tx_power_fcc[CALIB_CH2] = TX_POWER_LEVEL; |
| | | |
| | | board_param.ranging_session_id = 0; |
| | | board_param.local_short_addr = 0; |
| | | board_param.peer_short_addr = 0; |
| | | |
| | | #if (ANT_PATTERN == ANT_PATTERN_SQUARE) |
| | | int16_t ant_delays_ch9[4] = {0, 0, 0, 36}; |
| | | int16_t ant_delays_ch5[4] = {0, 0, 0, 36}; |
| | | int16_t ant_delays_ch2[4] = {0, 0, 36, 0}; |
| | | |
| | | // 4-ANTs: 0, 1, 2, 3 |
| | | int16_t pdoa_delays_ch9[4] = {52, -21, -8, 0}; |
| | | int16_t pdoa_delays_ch5[4] = {52, -21, -8, 0}; |
| | | // int16_t pdoa_delays_ch5[4] = {70, -2, -0, 0}; |
| | | int16_t pdoa_delays_ch2[4] = {52, -21, -8, 0}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {94, 99, 89, 88}; |
| | | int16_t pdoa_gains_ch5[4] = {94, 99, 89, 88}; |
| | | // int16_t pdoa_gains_ch5[4] = {94, 93, 89, 98}; |
| | | int16_t pdoa_gains_ch2[4] = {94, 99, 89, 88}; |
| | | |
| | | int16_t pdoa_offsets[2] = {0, 0}; |
| | | board_param.pdoa_ant_space = 180; |
| | | |
| | | #elif (ANT_PATTERN == ANT_PATTERN_TRIANGLE_REGULAR) |
| | | |
| | | int16_t ant_delays_ch9[4] = {0, 0, 0, 36}; |
| | | int16_t ant_delays_ch5[4] = {0, 0, 0, 36}; |
| | | int16_t ant_delays_ch2[4] = {0, 0, 36, 0}; |
| | | |
| | | // 3-ANTs: 3, 0, 1 |
| | | int16_t pdoa_delays_ch9[4] = {0, -21, 52}; |
| | | int16_t pdoa_delays_ch5[4] = {0, -21, 52}; |
| | | int16_t pdoa_delays_ch2[4] = {0, -21, 52}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {88, 94, 99}; |
| | | int16_t pdoa_gains_ch5[4] = {88, 94, 99}; |
| | | int16_t pdoa_gains_ch2[4] = {88, 94, 99}; |
| | | |
| | | int16_t pdoa_offsets[2] = {0, 0}; |
| | | board_param.pdoa_ant_space = 180; |
| | | |
| | | #else |
| | | // linear antenna array |
| | | |
| | | int16_t ant_delays_ch9[4] = {0, 0, 0, 122}; |
| | | int16_t ant_delays_ch5[4] = {0, 0, 0, 122}; |
| | | int16_t ant_delays_ch2[4] = {0, 0, 122, 0}; |
| | | |
| | | #if RX_ANT_PORTS_NUM == 4 |
| | | // 4-ANTs: 0, 1, 2, 3 |
| | | int16_t pdoa_delays_ch9[4] = {36, 47, 57, 0}; |
| | | int16_t pdoa_delays_ch5[4] = {51, -73, -57, 0}; |
| | | int16_t pdoa_delays_ch2[4] = {36, 47, 57, 0}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {108, 99, 98, 100}; |
| | | int16_t pdoa_gains_ch5[4] = {94, 103, 87, 100}; |
| | | int16_t pdoa_gains_ch2[4] = {108, 99, 98, 100}; |
| | | |
| | | int16_t pdoa_offsets[2] = {0, 0}; |
| | | board_param.pdoa_ant_space = 180; |
| | | |
| | | #elif RX_ANT_PORTS_NUM == 3 |
| | | |
| | | #if 0 |
| | | // 3-ANTs: 3, 0, 1 |
| | | int16_t pdoa_delays_ch9[4] = {0, 36, 47}; |
| | | int16_t pdoa_delays_ch5[4] = {0, 51, -73}; |
| | | int16_t pdoa_delays_ch2[4] = {0, 36, 47}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {100, 108, 99}; |
| | | int16_t pdoa_gains_ch5[4] = {100, 94, 103}; |
| | | int16_t pdoa_gains_ch2[4] = {100, 108, 99}; |
| | | #else |
| | | // 3-ANTs: 1, 2, 3 |
| | | int16_t pdoa_delays_ch9[4] = {47, 57, 0}; |
| | | int16_t pdoa_delays_ch5[4] = {-73, -57, 0}; |
| | | int16_t pdoa_delays_ch2[4] = {47, 57, 0}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {99, 98, 100}; |
| | | int16_t pdoa_gains_ch5[4] = {103, 87, 100}; |
| | | int16_t pdoa_gains_ch2[4] = {99, 98, 100}; |
| | | #endif |
| | | int16_t pdoa_offsets[2] = {0, 0}; |
| | | board_param.pdoa_ant_space = 180; |
| | | |
| | | #elif RX_ANT_PORTS_NUM == 2 |
| | | |
| | | #if 0 |
| | | // 2-ANTs: 2, 3 |
| | | int16_t pdoa_delays_ch9[4] = {57, 0}; |
| | | int16_t pdoa_delays_ch5[4] = {-57, 0}; |
| | | int16_t pdoa_delays_ch2[4] = {57, 0}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {98, 100}; |
| | | int16_t pdoa_gains_ch5[4] = {87, 100}; |
| | | int16_t pdoa_gains_ch2[4] = {98, 100}; |
| | | #else |
| | | // 2-ANTs: 3, 0 |
| | | int16_t pdoa_delays_ch9[4] = {0, 36}; |
| | | int16_t pdoa_delays_ch5[4] = {0, 51}; |
| | | int16_t pdoa_delays_ch2[4] = {0, 36}; |
| | | |
| | | int16_t pdoa_gains_ch9[4] = {100, 108}; |
| | | int16_t pdoa_gains_ch5[4] = {100, 94}; |
| | | int16_t pdoa_gains_ch2[4] = {100, 108}; |
| | | #endif |
| | | int16_t pdoa_offsets[2] = {0, 0}; |
| | | board_param.pdoa_ant_space = 180; |
| | | |
| | | #endif |
| | | #endif |
| | | |
| | | memcpy((uint8_t *)&board_param.ant_delays[CALIB_CH9], ant_delays_ch9, sizeof(ant_delays_ch9)); |
| | | memcpy((uint8_t *)&board_param.ant_delays[CALIB_CH5], ant_delays_ch5, sizeof(ant_delays_ch5)); |
| | | memcpy((uint8_t *)&board_param.ant_delays[CALIB_CH2], ant_delays_ch2, sizeof(ant_delays_ch2)); |
| | | |
| | | #if RX_ANT_PORTS_NUM > 1 |
| | | memcpy((uint8_t *)&board_param.pdoa_delays[CALIB_CH9], pdoa_delays_ch9, sizeof(pdoa_delays_ch9)); |
| | | memcpy((uint8_t *)&board_param.pdoa_delays[CALIB_CH5], pdoa_delays_ch5, sizeof(pdoa_delays_ch5)); |
| | | memcpy((uint8_t *)&board_param.pdoa_delays[CALIB_CH2], pdoa_delays_ch2, sizeof(pdoa_delays_ch2)); |
| | | |
| | | memcpy((uint8_t *)&board_param.pdoa_gains[CALIB_CH9], pdoa_gains_ch9, sizeof(pdoa_gains_ch9)); |
| | | memcpy((uint8_t *)&board_param.pdoa_gains[CALIB_CH5], pdoa_gains_ch5, sizeof(pdoa_gains_ch5)); |
| | | memcpy((uint8_t *)&board_param.pdoa_gains[CALIB_CH2], pdoa_gains_ch2, sizeof(pdoa_gains_ch2)); |
| | | |
| | | memcpy((uint8_t *)&board_param.pdoa_offsets[0], pdoa_offsets, sizeof(pdoa_offsets)); |
| | | #endif |
| | | |
| | | board_param.dev_role = 0; |
| | | board_param.dev_role_idx = 0; |
| | | #endif |
| | | } |
| | | |
| | | void board_calibration_params_load(void) |
| | | { |
| | | board_calibration_params_default(); |
| | | #ifdef WSF_EN |
| | | if (TRUE == WsfNvmReadData(BOARD_LOAD_CAP, &board_param.load_cap, sizeof(board_param.load_cap), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_LOAD_CAP); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_TX_POWER_FCC_LEVEL, &board_param.tx_power_fcc[0], sizeof(board_param.tx_power_fcc), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_TX_POWER_FCC_LEVEL); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_RANGING_SESSION_ID, (uint8_t *)&board_param.ranging_session_id, sizeof(board_param.ranging_session_id), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_RANGING_SESSION_ID); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_LOCAL_SHORT_ADDR, (uint8_t *)&board_param.local_short_addr, sizeof(board_param.local_short_addr), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_LOCAL_SHORT_ADDR); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_PEER_SHORT_ADDR, (uint8_t *)&board_param.peer_short_addr, sizeof(board_param.peer_short_addr), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_PEER_SHORT_ADDR); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_ANT_DELAYS, (uint8_t *)&board_param.ant_delays[0], sizeof(board_param.ant_delays), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_ANT_DELAYS); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_PDOA_DELAYS, (uint8_t *)&board_param.pdoa_delays[0], sizeof(board_param.pdoa_delays), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_PDOA_DELAYS); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_PDOA_GAINS, (uint8_t *)&board_param.pdoa_gains[0], sizeof(board_param.pdoa_gains), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_PDOA_GAINS); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_PDOA_ANT_SPACE, (uint8_t *)&board_param.pdoa_ant_space, sizeof(board_param.pdoa_ant_space), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_PDOA_ANT_SPACE); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_PDOA_OFFSETS, (uint8_t *)&board_param.pdoa_offsets[0], sizeof(board_param.pdoa_offsets), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_PDOA_OFFSETS); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_DEV_ROLE, (uint8_t *)&board_param.dev_role, sizeof(board_param.dev_role), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_DEV_ROLE); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_DEV_ROLE_IDX, (uint8_t *)&board_param.dev_role_idx, sizeof(board_param.dev_role_idx), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_DEV_ROLE_IDX); |
| | | } |
| | | |
| | | if (TRUE == WsfNvmReadData(BOARD_X32K_LOAD_CAP, &board_param.x32k_load_cap, sizeof(board_param.x32k_load_cap), 0)) |
| | | { |
| | | board_param.flag |= (1 << BOARD_X32K_LOAD_CAP); |
| | | } |
| | | #endif |
| | | } |
| | | |
| | | uint8_t board_calibration_param_write(uint8_t id, uint8_t *param, uint8_t param_len) |
| | | { |
| | | uint8_t ret = 0; |
| | | #ifdef WSF_EN |
| | | if (((id == BOARD_LOAD_CAP) && (param_len == sizeof(board_param.load_cap))) || |
| | | ((id == BOARD_TX_POWER_FCC_LEVEL) && (param_len == sizeof(board_param.tx_power_fcc))) || |
| | | ((id == BOARD_RANGING_SESSION_ID) && (param_len == sizeof(board_param.ranging_session_id))) || |
| | | ((id == BOARD_LOCAL_SHORT_ADDR) && (param_len == sizeof(board_param.local_short_addr))) || |
| | | ((id == BOARD_PEER_SHORT_ADDR) && (param_len == sizeof(board_param.peer_short_addr))) || |
| | | ((id == BOARD_ANT_DELAYS) && (param_len == sizeof(board_param.ant_delays))) || |
| | | ((id == BOARD_PDOA_DELAYS) && (param_len == sizeof(board_param.pdoa_delays))) || |
| | | ((id == BOARD_PDOA_GAINS) && (param_len == sizeof(board_param.pdoa_gains))) || |
| | | ((id == BOARD_PDOA_ANT_SPACE) && (param_len == sizeof(board_param.pdoa_ant_space))) || |
| | | ((id == BOARD_PDOA_OFFSETS) && (param_len == sizeof(board_param.pdoa_offsets))) || |
| | | ((id == BOARD_DEV_ROLE) && (param_len == sizeof(board_param.dev_role))) || |
| | | ((id == BOARD_DEV_ROLE_IDX) && (param_len == sizeof(board_param.dev_role_idx))) || |
| | | ((id == BOARD_X32K_LOAD_CAP) && (param_len == sizeof(board_param.x32k_load_cap)))) |
| | | { |
| | | ret = WsfNvmWriteData(id, param, param_len, 0); |
| | | } |
| | | #endif |
| | | return ret; |
| | | } |
| | | |
| | | void board_ranging_result_correct(uint16_t *distance, int16_t *azimuth, int16_t *elevation) |
| | | { |
| | | if ((distance == NULL) || (azimuth == NULL) || (elevation == NULL)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | #if (ANT_PATTERN == ANT_PATTERN_SQUARE) // 3D |
| | | |
| | | #elif (ANT_PATTERN == ANT_PATTERN_TRIANGLE_REGULAR) // 3D |
| | | |
| | | #elif (ANT_PATTERN == ANT_PATTERN_LINEAR) // 2D -90 ~ 90 |
| | | // azimuth correction |
| | | float post_azimuth = mk_q7_to_f32(*azimuth); |
| | | #if RX_ANT_PORTS_NUM == 4 |
| | | |
| | | post_azimuth = (int16_t)(1.1221f * post_azimuth + 0.2729f); |
| | | |
| | | #elif RX_ANT_PORTS_NUM == 3 |
| | | |
| | | post_azimuth = (int16_t)(1.2287f * post_azimuth + 1.3633f); |
| | | |
| | | #elif RX_ANT_PORTS_NUM == 2 |
| | | |
| | | if (post_azimuth < -13.1) |
| | | { |
| | | post_azimuth = (int16_t)(0.8719f * post_azimuth - 28.282f); |
| | | } |
| | | else if (post_azimuth < -4.6) |
| | | { |
| | | post_azimuth = (int16_t)(3.7137f * post_azimuth + 10.307f); |
| | | } |
| | | else |
| | | { |
| | | post_azimuth = (int16_t)(1.0492f * post_azimuth - 3.1928f); |
| | | } |
| | | |
| | | #endif |
| | | post_azimuth = ((post_azimuth > 90) ? 90 : ((post_azimuth < -90) ? -90 : post_azimuth)); |
| | | *azimuth = mk_f32_to_q7(post_azimuth); |
| | | #endif |
| | | } |
| | | void board_5V_input_init(GPIO_IRQ_HANDLER_T irq_handler) |
| | | { |
| | | button_irq_handler = irq_handler; |
| | | gpio_pin_set_dir(IO_PIN_9, GPIO_DIR_IN, 0); |
| | | io_pull_set(IO_PIN_9, IO_PULL_DOWN, IO_PULL_UP_LEVEL4); |
| | | // gpio_enable_irq(IO_PIN_9, GPIO_IRQ_TYPE_RISING_EDGE, button_irq_handler); |
| | | // power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)IO_PIN_9, POWER_WAKEUP_LEVEL_LOW); |
| | | } |
| | | void board_button_init(GPIO_IRQ_HANDLER_T irq_handler) |
| | | { |
| | | button_irq_handler = irq_handler; |
| | | gpio_pin_set_dir(BOARD_SW_1, GPIO_DIR_IN, 0); |
| | | io_pull_set(BOARD_SW_1, IO_PULL_UP, IO_PULL_UP_LEVEL4); |
| | | gpio_enable_irq(BOARD_SW_1, GPIO_IRQ_TYPE_FALLING_EDGE, button_irq_handler); |
| | | |
| | | power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)BOARD_SW_1, POWER_WAKEUP_LEVEL_LOW); |
| | | } |
| | | |
| | | void board_led_init(void) |
| | | { |
| | | gpio_pin_set_dir(BOARD_LED_1, GPIO_DIR_OUT, 0); |
| | | gpio_pin_set_dir(BOARD_LED_2, GPIO_DIR_OUT, 0); |
| | | } |
| | | |
| | | void board_led_on(enum IO_PIN_T idx) |
| | | { |
| | | gpio_pin_set(idx); |
| | | } |
| | | |
| | | void board_led_off(enum IO_PIN_T idx) |
| | | { |
| | | gpio_pin_clr(idx); |
| | | } |
| | | |
| | | void board_led_toggle(enum IO_PIN_T idx) |
| | | { |
| | | gpio_pin_toggle(idx); |
| | | } |
| | | |
| | | void board_configure(void) |
| | | { |
| | | } |
| | | |
| | | void board_prepare_for_power_down(void) |
| | | { |
| | | #if !defined(CELL_PHONE_EN) |
| | | board_led_off(BOARD_LED_1); |
| | | #endif |
| | | } |
| | | |
| | | void board_restore_from_power_down(void) |
| | | { |
| | | #if defined(UCI_INTF_PORT) |
| | | uci_tl_resume(); |
| | | #else |
| | | // button - restore interrupt type |
| | | if (button_irq_handler) |
| | | { |
| | | gpio_enable_irq(BOARD_SW_1, GPIO_IRQ_TYPE_FALLING_EDGE, button_irq_handler); |
| | | } |
| | | #endif |
| | | |
| | | #if !defined(CELL_PHONE_EN) |
| | | board_led_on(BOARD_LED_1); |
| | | #endif |
| | | |
| | | // system timer |
| | | sys_timer_open(); |
| | | |
| | | #if TRACE_EN |
| | | trace_open(user_trace_port, TRACE_BAUD_RATE); |
| | | #endif |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef BOARD_H_ |
| | | #define BOARD_H_ |
| | | |
| | | #include "mk_common.h" |
| | | #include "mk_trace.h" |
| | | #include "mk_gpio.h" |
| | | |
| | | /* LGA CSP |
| | | IO00 - UART1 RX - UART1 RX |
| | | IO01 - UART1 TX - UART1 TX (trace port) |
| | | IO02 - Ranging Role - Ranging Role |
| | | IO03 - - ISP_EN |
| | | IO04 - - UCI Handshake S->H |
| | | IO05 - UART0_TX - UART0_TX | SPI_MISO |
| | | IO06 - UART0_RX - UART0_RX | SPI_MOSI |
| | | IO07 - LED - LED | SPI_CLK |
| | | IO08 - LED - LED | SPI_CS |
| | | IO09 - - EXT Flash |
| | | IO10 - - EXT Flash |
| | | IO11 - SPI_MOSI - EXT Flash |
| | | IO12 - SPI_MISO - EXT Flash |
| | | IO13 - SPI_CLK - EXT Flash |
| | | IO14 - SPI_CS - EXT Flash |
| | | IO15 - SWDIO - SWDIO |
| | | IO16 - SWDCLK - SWDCLK |
| | | IO17 - Button - UCI Handshake H->S |
| | | */ |
| | | |
| | | /* Evaluation Kit */ |
| | | #define BOARD_TYPE MK8000_EVK |
| | | |
| | | /* Board buttons */ |
| | | #define BOARD_SW_1 IO_PIN_17 |
| | | |
| | | /* Board leds */ |
| | | #define BOARD_LED_1 IO_PIN_7 |
| | | #define BOARD_LED_2 IO_PIN_8 |
| | | |
| | | /** UCI handshake pin, from host to slave */ |
| | | #define HOST2SLAVE_HS_GPIO (IO_PIN_17) |
| | | |
| | | /** UCI handshake pin, from slave to host */ |
| | | #define SLAVE2HOST_HS_GPIO (IO_PIN_4) |
| | | |
| | | #define CALIB_CH9 0 |
| | | #define CALIB_CH5 1 |
| | | #define CALIB_CH2 2 |
| | | #define CALIB_CH_NUM 3 |
| | | |
| | | #define CALIB_CH(x) (x == 9 ? 0 : (x == 5 ? 1 : 2)) |
| | | |
| | | enum BOARD_NVM_ITEM_ID_T |
| | | { |
| | | BOARD_LOAD_CAP = 1, |
| | | BOARD_LOCAL_SHORT_ADDR = 2, |
| | | BOARD_PEER_SHORT_ADDR = 3, |
| | | BOARD_RANGING_SESSION_ID = 4, |
| | | BOARD_TX_POWER_FCC_LEVEL = 5, |
| | | BOARD_ANT_DELAYS = 6, |
| | | BOARD_DEV_ROLE = 7, |
| | | BOARD_DEV_ROLE_IDX = 8, |
| | | BOARD_PDOA_DELAYS = 9, |
| | | BOARD_PDOA_GAINS = 10, |
| | | BOARD_PDOA_ANT_SPACE = 11, |
| | | BOARD_PDOA_OFFSETS = 12, |
| | | BOARD_X32K_LOAD_CAP = 13, |
| | | }; |
| | | |
| | | /* Board parameters */ |
| | | struct BOARD_PARAM_T |
| | | { |
| | | uint32_t flag; |
| | | uint8_t load_cap; |
| | | uint8_t tx_power_fcc[CALIB_CH_NUM]; // [CH9, CH5, CH2] |
| | | uint16_t ranging_session_id; |
| | | uint16_t local_short_addr; |
| | | uint16_t peer_short_addr; |
| | | int16_t ant_delays[CALIB_CH_NUM][4]; // [CH9, CH5, CH2][ANT0, ANT1, ANT2, ANT3], unit: 15.65ps |
| | | int16_t pdoa_delays[CALIB_CH_NUM][4]; // [CH9, CH5, CH2][ANT0, ANT1, ANT2, ANT3], uint: ps |
| | | int16_t pdoa_gains[CALIB_CH_NUM][4]; // [CH9, CH5, CH2][ANT0, ANT1, ANT2, ANT3] |
| | | int16_t pdoa_ant_space; // unit: 0.1mm |
| | | int16_t pdoa_offsets[2]; // [azimuth, elevation], unit: 0.1degree |
| | | uint8_t dev_role; |
| | | uint8_t dev_role_idx; |
| | | uint8_t x32k_load_cap; |
| | | }; |
| | | |
| | | #if defined(__cplusplus) |
| | | extern "C" { |
| | | #endif |
| | | |
| | | extern struct BOARD_PARAM_T board_param; |
| | | |
| | | /** |
| | | * @brief Configure clock. |
| | | * |
| | | */ |
| | | void board_clock_run(void); |
| | | |
| | | /** |
| | | * @brief Configure pin routing and optionally pin electrical features. |
| | | * |
| | | */ |
| | | void board_pins_config(void); |
| | | |
| | | /** |
| | | * @brief Configure debug trace port. |
| | | * @param[in] port Trace port |
| | | * |
| | | */ |
| | | void board_debug_console_open(enum TRACE_PORT_T port); |
| | | |
| | | /** |
| | | * @brief Load default calibration parameters. |
| | | * |
| | | */ |
| | | void board_calibration_params_default(void); |
| | | |
| | | /** |
| | | * @brief Load calibration parameters from NVM. |
| | | * |
| | | */ |
| | | void board_calibration_params_load(void); |
| | | |
| | | /** |
| | | * @brief Write calibration item into NVM. |
| | | * @param[in] id calibration item ID |
| | | * @param[in] param pointer of the parameter to be written |
| | | * @param[in] param_len parameter length |
| | | * @return TRUE sucess or FALSE fail |
| | | */ |
| | | uint8_t board_calibration_param_write(uint8_t id, uint8_t *param, uint8_t param_len); |
| | | |
| | | /** |
| | | * @brief Correct ranging result, correction formula depends on the antenna design |
| | | * |
| | | * @param [inout] distance Pointer of ranging distance result |
| | | * @param [inout] azimuth Pointer of azimuth result |
| | | * @param [inout] elevation Pointer of elevation result |
| | | */ |
| | | void board_ranging_result_correct(uint16_t *distance, int16_t *azimuth, int16_t *elevation); |
| | | |
| | | /** |
| | | * @brief Configure button GPIO. |
| | | * @param[in] irq_handler button interrupt process handler |
| | | * |
| | | */ |
| | | void board_button_init(GPIO_IRQ_HANDLER_T irq_handler); |
| | | /** |
| | | * @brief Configure button GPIO. |
| | | * @param[in] irq_handler 5v input interrupt process handler |
| | | * |
| | | */ |
| | | void board_5V_input_init(GPIO_IRQ_HANDLER_T irq_handler); |
| | | /** |
| | | * @brief Configure LED GPIO. |
| | | * |
| | | */ |
| | | void board_led_init(void); |
| | | |
| | | /** |
| | | * @brief LED on. |
| | | * @param[in] idx LED index |
| | | * |
| | | */ |
| | | void board_led_on(enum IO_PIN_T idx); |
| | | |
| | | /** |
| | | * @brief LED off. |
| | | * @param[in] idx LED index |
| | | * |
| | | */ |
| | | void board_led_off(enum IO_PIN_T idx); |
| | | |
| | | /** |
| | | * @brief LED toggle. |
| | | * @param[in] idx LED index |
| | | * |
| | | */ |
| | | void board_led_toggle(enum IO_PIN_T idx); |
| | | |
| | | /** |
| | | * @brief Configure peripherals on board (for board function extension). |
| | | * |
| | | */ |
| | | void board_configure(void); |
| | | |
| | | /** |
| | | * @brief Prepare to enter power down mode. |
| | | * |
| | | */ |
| | | void board_prepare_for_power_down(void); |
| | | |
| | | /** |
| | | * @brief Restore board setting from power down mode. |
| | | * |
| | | */ |
| | | void board_restore_from_power_down(void); |
| | | |
| | | #if defined(__cplusplus) |
| | | } |
| | | #endif |
| | | |
| | | #endif /* BOARD_H_ */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef MK8000_KF_TOP_H |
| | | #define MK8000_KF_TOP_H |
| | | #include "mk_common.h" |
| | | |
| | | #define ANGLE_AMBIGUITY_THRES 280 |
| | | |
| | | enum KF_CHANNEL_TYPE_T |
| | | { |
| | | KF_CHANNEL_TYPE_RANGING = 0, |
| | | KF_CHANNEL_TYPE_ANGLE = 1, |
| | | KF_CHANNEL_TYPE_ANGLE_POSITIVE = 2, |
| | | }; |
| | | |
| | | typedef struct |
| | | { |
| | | float dt; |
| | | float Q; // covariance of the process noise |
| | | float rR; // covariance of the obervation noise for ranging |
| | | float aR; // covariance of the obervation noise for azimuth & elevation |
| | | float r_v_max; // ranging velocity limit for state estimation |
| | | float a_v_max; // azimuth/elevation velocity limit for state estimation |
| | | uint16_t r_vlimit_opt; // enable ranging velocity limitation |
| | | uint16_t a_vlimit_opt; // enable azimuth/elevation velocity limitation |
| | | } kf_params_t; |
| | | |
| | | extern uint8_t pdoa_3d_ant_layout_get(void); |
| | | |
| | | typedef struct |
| | | { |
| | | int row, col; |
| | | float *element; |
| | | } Mat; |
| | | |
| | | typedef struct |
| | | { |
| | | Mat H; |
| | | Mat F; |
| | | Mat G; |
| | | Mat P_t_tm1; |
| | | Mat X_t_tm1; |
| | | Mat K_t; |
| | | Mat X_t_t; |
| | | float last_post_range; |
| | | float v_max; |
| | | float v_max_default; |
| | | float q_variance; |
| | | uint16_t v_state; |
| | | uint16_t v_max_cnt; |
| | | } kf_channel_env_t; |
| | | |
| | | typedef struct |
| | | { |
| | | float mat_H[1 * 2]; |
| | | float mat_P_t_tm1[2 * 2]; |
| | | float mat_X_t_tm1[2 * 1]; |
| | | float mat_K_t[2 * 1]; |
| | | float mat_X_t_t[2 * 1]; |
| | | float mat_F[2 * 2]; |
| | | float mat_G[2 * 1]; |
| | | } kf_channel_mat_value_t; |
| | | |
| | | void MK8000_kf_config(kf_params_t params, kf_channel_env_t *channel_env, kf_channel_mat_value_t *channel_mat_value, size_t cache_len); |
| | | |
| | | void MK8000_kf_processor(float data_meas, uint16_t channel, enum KF_CHANNEL_TYPE_T type, int8_t do_init, float *post_data); |
| | | |
| | | #endif // MK8000_KF_TOP_H |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef AOA_LIB_H |
| | | #define AOA_LIB_H |
| | | #include "mk_uwb.h" |
| | | |
| | | /** |
| | | * @addtogroup MK8000_ALGO_AOA |
| | | * @{ |
| | | * |
| | | * AoA support: |
| | | * - Linear 2/3/4-ants |
| | | * - Square 4-ants (horizontal - 360 degree) |
| | | * |
| | | */ |
| | | |
| | | #ifndef AOA_3D_EN |
| | | #define AOA_3D_EN (0) |
| | | #endif |
| | | |
| | | #if AOA_3D_EN |
| | | |
| | | #ifndef XIP_EN |
| | | extern const uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM]; |
| | | extern const uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM]; |
| | | #else |
| | | extern uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM]; |
| | | extern uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM]; |
| | | #endif |
| | | |
| | | #else |
| | | |
| | | #ifndef XIP_EN |
| | | extern const uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM]; |
| | | extern const uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM]; |
| | | #else |
| | | extern uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM]; |
| | | extern uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM]; |
| | | #endif |
| | | |
| | | #endif |
| | | |
| | | // (aux_mode << 4) | (algo_option) |
| | | enum AOA_AUX_OPT_T |
| | | { |
| | | // 135us |
| | | AOA_AUX_ANT_IQ_RSSI = ((1 << 4) | 3), |
| | | // 239us |
| | | AOA_AUX_ANT_IQ_RSSI_PDOA = ((1 << 4) | 0), |
| | | // 312us |
| | | AOA_AUX_ANT_IQ_RSSI_PDOA_AOA = ((1 << 4) | 2), |
| | | // 930us |
| | | AOA_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM = ((2 << 4) | 2), |
| | | }; |
| | | |
| | | // Structure holding the angle information for steering vector generation |
| | | struct AOA_ANGLE_SPAN_T |
| | | { |
| | | uint16_t Ndim; ///> Number of dimensions. 1 - Azimuth only, 2 - Azimuth and Elevation |
| | | int16_t az_low; ///> Lower end of azimuth scan range (in degrees) |
| | | int16_t az_high; ///> Higher end of azimuth scan range (in degrees) |
| | | uint16_t az_step; ///> Azimuth step size in degrees. Normally 3 |
| | | int16_t el_low; ///> Lower end of elevation scan range (in degrees) |
| | | int16_t el_high; ///> Higher end of elevation scan range (in degrees) |
| | | uint16_t el_step; ///> Elevation step size in degrees. Normally 3 |
| | | }; |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | * @brief Set angle search span |
| | | * |
| | | * @param [in] span pointer to AoA angle search span structure |
| | | */ |
| | | void aoa_angle_search_span_set(struct AOA_ANGLE_SPAN_T *span); |
| | | |
| | | /** |
| | | * @brief Configure AoA parameters. |
| | | * @return Size of samples that need LSP to process |
| | | */ |
| | | uint16_t aoa_param_config(void); |
| | | |
| | | /** |
| | | * @brief Update AoA parameters. |
| | | * @param [in] main_ant RX main antenna |
| | | */ |
| | | void aoa_param_update(uint8_t main_ant); |
| | | |
| | | /** |
| | | * @brief Enable or disable dynamic port selection |
| | | * @param [in] enable 0: disable, 1: enable |
| | | */ |
| | | void aoa_param_dynamic_port_sel(uint8_t enable); |
| | | |
| | | /** |
| | | * @brief Calculate AoA. |
| | | * |
| | | * @param [out] elevation AoA elevation result |
| | | * @param [out] azimuth AoA azimuth result |
| | | * @return 1: success, 2: failure |
| | | */ |
| | | uint8_t aoa_calculate(int16_t *elevation, int16_t *azimuth); |
| | | |
| | | /** |
| | | * @brief Get AoA FoM. |
| | | * |
| | | * @param [out] elevation_fom AoA elevation FoM |
| | | * @param [out] azimuth_fom AoA azimuth FoM |
| | | */ |
| | | void aoa_fom_get(uint8_t *elevation_fom, uint8_t *azimuth_fom); |
| | | |
| | | /** |
| | | * @brief Store LSP result of RX ranging frame. |
| | | */ |
| | | void sts_lsp_store(void); |
| | | |
| | | /** |
| | | * @brief Stop storing LSP result of RX ranging frame. |
| | | */ |
| | | void sts_lsp_store_stop(void); |
| | | |
| | | /** |
| | | * @brief Validate STS. |
| | | * @return 1 represents STS is valid |
| | | */ |
| | | uint8_t sts_valid_check(void); |
| | | |
| | | /** |
| | | * @brief Detect the fisrt path of ranging frame based on STS. |
| | | * @param [in] rssi RSSI |
| | | * @param [out] sts_main_path_loc STS main path location |
| | | * @param [out] sts_fap_loc STS FAP location |
| | | * @return delta of the first path |
| | | */ |
| | | int32_t sts_first_path_detect(int8_t rssi, uint16_t *sts_main_path_loc, uint16_t *sts_fap_loc); |
| | | |
| | | /** |
| | | * @brief Calculate RX main antenna based on STS RSSI. |
| | | * @param [in][out] Input current main antenna ID, ouput updated main antenna ID |
| | | */ |
| | | void sts_rx_main_ant_get(uint8_t *id); |
| | | |
| | | /** |
| | | * @brief Get 4 antenna port RSSI. |
| | | * @return array of 4 antenna port RSSI |
| | | */ |
| | | float *sts_4ant_rssi_get(void); |
| | | |
| | | /** |
| | | * @brief Configure location post process filter. |
| | | * |
| | | * @param [in] update_period_ms Input data update period |
| | | * @param [in] range_en Enable filter for range data |
| | | * @param [in] angle_en Enable filter for angle data |
| | | */ |
| | | void loc_post_filter_config(uint32_t update_period_ms, uint8_t range_en, uint8_t angle_en); |
| | | |
| | | /** |
| | | * @brief Location post process filter. |
| | | * |
| | | * @param [in] channel Filter channel |
| | | * @param [in] range_meas Input range data |
| | | * @param [in] angle_meas Input angle data |
| | | * @param [out] range_post Output range data |
| | | * @param [out] angle_post Output angle data |
| | | * @return 1 represents post filter process successfully |
| | | */ |
| | | uint8_t loc_post_filter(uint8_t channel, float range_meas, int angle_meas, float *range_post, float *angle_post); |
| | | |
| | | /** |
| | | * @brief Set AOA aux mode. |
| | | * |
| | | * @param [in] mode AOA aux mode @ref enum AOA_AUX_OPT_T |
| | | */ |
| | | void aoa_aux_info_set(enum AOA_AUX_OPT_T mode); |
| | | |
| | | /** |
| | | * @brief Set AOA steering vector based on channel |
| | | * |
| | | * @param [in] vector_table AOA steering vector table |
| | | */ |
| | | void aoa_steering_vector_set(const float *vector_table); |
| | | |
| | | /** |
| | | * @brief Get PDoA ANT IQ result. |
| | | * |
| | | * @param [out] iq Pointer of raw IQ data for all antennas |
| | | * @return 1: success, 0: failure |
| | | */ |
| | | uint8_t pdoa_iq_get(float **iq); |
| | | |
| | | /** |
| | | * @brief Get PDoA result from ANT_start_index - ANT_end_index. |
| | | * |
| | | * @param [in] start_index Antenna port start index, from 0 to 3 |
| | | * @param [in] end_index Antenna port end index, from 0 to 3 |
| | | * @return PDoA result in radian |
| | | */ |
| | | float pdoa_select_get(uint8_t start_index, uint8_t end_index); |
| | | |
| | | /** |
| | | * @brief Set delay of antenna for PDoA |
| | | * |
| | | * @param [in] delays Delay list of antenna port, uint: ps |
| | | * @param [in] rx_ant_num The number of antenna delays to be set |
| | | * @return 0: success, -1: fail |
| | | */ |
| | | int pdoa_ant_delays_set(int16_t *delays, uint8_t rx_ant_num); |
| | | |
| | | /** |
| | | * @brief Get antenna delay for PDoA |
| | | * |
| | | * @param [in] delays Delay list of antenna port, uint: ps |
| | | * @param [in] rx_ant_num The number of antenna delays to be get |
| | | * @return 0: success, -1: fail |
| | | */ |
| | | int pdoa_ant_delays_get(int16_t *delays, uint8_t rx_ant_num); |
| | | |
| | | /** |
| | | * @brief Set adjacent antenna space |
| | | * |
| | | * @param [in] ant_space the space of adjacent antennas, unit: 0.1mm |
| | | */ |
| | | int pdoa_ant_space_set(int16_t ant_space); |
| | | |
| | | /** |
| | | * @brief Get RSSI result. |
| | | * |
| | | * @return RSSI |
| | | */ |
| | | float *sts_rssi_output_get(void); |
| | | |
| | | /** |
| | | * @brief Get STS first path IQ of each antenna port, needs to call AoA calculation or PDoA calculation in advanced. |
| | | * |
| | | * @return STS first path IQ |
| | | */ |
| | | float *sts_first_path_iq_get(void); |
| | | |
| | | /** |
| | | * @brief Get AoA library version. |
| | | * |
| | | * @return String of AoA library version |
| | | */ |
| | | const char *MK8000_get_aoalib_version(void); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | /** |
| | | * @} |
| | | */ |
| | | |
| | | #endif // AOA_LIB_H |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef LIB_KF_H |
| | | #define LIB_KF_H |
| | | #include "mk_common.h" |
| | | |
| | | enum KF_DATA_TYPE_T |
| | | { |
| | | KF_DATA_TYPE_RANGING = 0, |
| | | KF_DATA_TYPE_AZIMUTH = 1, |
| | | KF_DATA_TYPE_ELEVATION = 2, |
| | | }; |
| | | |
| | | struct KF_MAC_ADDR_T |
| | | { |
| | | uint8_t mac_addr[8]; |
| | | uint32_t elapsed_time; |
| | | uint8_t data_type; |
| | | }; |
| | | |
| | | struct MAT_CACHE_T |
| | | { |
| | | int row, col; |
| | | float *element; |
| | | }; |
| | | |
| | | struct KF_MAT_VALUE_CACHE_T |
| | | { |
| | | float float_1_2[1 * 1 * 2]; |
| | | float float_2_1[4 * 2 * 1]; |
| | | float float_2_2[2 * 2 * 2]; |
| | | }; |
| | | |
| | | struct KF_CHANNEL_CACHE_T |
| | | { |
| | | struct MAT_CACHE_T mat_cache[7]; |
| | | float float_cache[4]; |
| | | uint16_t uint16_t_chache[2]; |
| | | }; |
| | | |
| | | /** |
| | | * @addtogroup MK8000_ALGO_KF |
| | | * @{ |
| | | */ |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | * @brief Configure location post process Kalman filter. |
| | | * |
| | | * @param[in] update_period_ms Ranging result update period, unit: ms |
| | | * @param[in] mac_addr_cache mac address list input |
| | | * @param[in] kf_channel_cache kf channel state data list input |
| | | * @param[in] mat_value_cache kf mat data list input |
| | | * @param[in] cache_len list length(equal to the tag number supported) |
| | | * @param[in] timeout_ms timeout setting for Kalman filter, unit: millisecond |
| | | */ |
| | | void loc_post_kf_config(uint32_t update_period_ms, |
| | | struct KF_MAC_ADDR_T *mac_addr_cache, |
| | | struct KF_CHANNEL_CACHE_T *kf_channel_cache, |
| | | struct KF_MAT_VALUE_CACHE_T *mat_value_cache, |
| | | size_t cache_len, |
| | | uint32_t timeout_ms); |
| | | |
| | | /** |
| | | * @brief Filter input data. |
| | | * @param[in] data_meas data measurement result |
| | | * @param[out] data_post data filtered result |
| | | * @param[in] channel data type |
| | | */ |
| | | |
| | | /** |
| | | * @brief Filter input data. |
| | | * |
| | | * @param[in] data_meas data measurement result |
| | | * @param[in] data_type data type |
| | | * @param[in] mac_addr mac address |
| | | * @param[out] data_post data filtered result |
| | | * @return uint8_t |
| | | */ |
| | | uint8_t loc_kf_filter(float data_meas, enum KF_DATA_TYPE_T data_type, uint8_t *mac_addr, float *data_post); |
| | | |
| | | /** |
| | | * @brief Get KF lib version. |
| | | * @return KF lib version |
| | | */ |
| | | const char *MK8000_get_kflib_version(void); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | /** |
| | | * @} |
| | | */ |
| | | |
| | | #endif // LIB_KF_H |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef PDOA_3D_LIB_H |
| | | #define PDOA_3D_LIB_H |
| | | #include "mk_uwb.h" |
| | | |
| | | /** |
| | | * @addtogroup MK8000_ALGO_PDOA |
| | | * @{ |
| | | * |
| | | * PDoA support: |
| | | * - Linear 2/3/4-ants |
| | | * - Square 4-ants (horizontal - 360 degree, vertical - half ball 3D) |
| | | * - Triangle 3-ants |
| | | * |
| | | */ |
| | | |
| | | enum PDOA_3D_AMBIGUITY_MODE_T |
| | | { |
| | | PDOA_3D_AMBIGUITY_LEVEL_HIGH = 0, |
| | | PDOA_3D_AMBIGUITY_LEVEL_MIDIUM, |
| | | PDOA_3D_AMBIGUITY_LEVEL_LOW, |
| | | PDOA_3D_AMBIGUITY_LEVEL_NONE, |
| | | }; |
| | | |
| | | struct PDOA_3D_MAC_ADDR_T |
| | | { |
| | | uint8_t mac_addr[8]; |
| | | uint32_t elapsed_time; |
| | | }; |
| | | |
| | | struct PDOA_3D_PDOA_DATA_T |
| | | { |
| | | int16_t pdoa[18]; |
| | | }; |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | * @brief PDoA configuration. |
| | | * |
| | | * @param [in] ant_pattern antenna pattern |
| | | * @param [in] ant_layout layout of PCB board configuration |
| | | * @param [in] ambiguity_mode PDoA ambiguity configuration |
| | | * @param [in] mac_addr_cache mac address list input |
| | | * @param [in] azimuth previous PDoA data list input |
| | | * @param [in] cache_len list length(equal to the tag number supported) |
| | | * @param [in] timeout_ms timeout setting for PDoA ambiguity process, unit: millisecond |
| | | */ |
| | | void pdoa_3d_param_config(uint8_t ant_pattern, |
| | | enum ANT_LAYOUT_T ant_layout, |
| | | enum PDOA_3D_AMBIGUITY_MODE_T ambiguity_mode, |
| | | struct PDOA_3D_MAC_ADDR_T *mac_addr_cache, |
| | | struct PDOA_3D_PDOA_DATA_T *pdoa_data_cache, |
| | | size_t cache_len, |
| | | uint32_t timeout_ms); |
| | | |
| | | /** |
| | | * @brief Calculate PDoA. |
| | | * |
| | | * @param [in] mac_addr mac address |
| | | * @param [out] elevation PDoA elevation result |
| | | * @param [out] azimuth PDoA azimuth result |
| | | * @return 1: success, 0: failure |
| | | */ |
| | | uint8_t pdoa_3d_calculate(uint8_t *mac_addr, int16_t *elevation, int16_t *azimuth); |
| | | |
| | | /** |
| | | * @brief Set gain of each PDoA channel |
| | | * |
| | | * @param [in] gain gain list of antenna port |
| | | * @param [in] rx_ant_num The number of antenna gain(PDoA channel) to be set |
| | | * @return 0: success, -1: fail |
| | | */ |
| | | uint8_t pdoa_3d_ant_layout_get(void); |
| | | |
| | | /** |
| | | * @brief Set gain of each PDoA channel |
| | | * |
| | | * @param [in] gain gain list of antenna port, unit: 1 percent |
| | | * @param [in] rx_ant_num The number of antenna gain(PDoA channel) to be set |
| | | * @return 0: success, -1: fail |
| | | */ |
| | | int pdoa_gain_set(int16_t *gain, uint8_t rx_ant_num); |
| | | |
| | | /** |
| | | * @brief Set offset for each angle |
| | | * |
| | | * @param [in] angle_offset offset list for azimuth & elevation, unit: 0.1 degree |
| | | */ |
| | | int pdoa_angle_offset_set(int16_t *angle_offset); |
| | | |
| | | /** |
| | | * @brief Get pdoa fom |
| | | * |
| | | * @param ele_fom elevation fom, completely untrustworthy when fom equal to 0 |
| | | * @param az_fom azimuth fom, completely untrustworthy when fom equal to 0 |
| | | */ |
| | | void pdoa_fom_get(uint8_t *ele_fom, uint8_t *az_fom); |
| | | |
| | | /** |
| | | * @brief Reverse angle |
| | | * |
| | | * @param azimuth_reverse reverse azimuth |
| | | * @param elevation_reverse reverse elevation |
| | | */ |
| | | void pdoa_angle_reverse_set(bool azimuth_reverse, bool elevation_reverse); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | /** |
| | | * @} |
| | | */ |
| | | |
| | | #endif // PDOA_3D_LIB_H |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef RANGING_LIB_H |
| | | #define RANGING_LIB_H |
| | | #include "mk_mac.h" |
| | | #include "mk_phy.h" |
| | | |
| | | /** |
| | | * @addtogroup MK8000_ALGO_Ranging |
| | | * @{ |
| | | */ |
| | | |
| | | #ifndef CHEST_DUMP_EN |
| | | #define CHEST_DUMP_EN (1) |
| | | #endif |
| | | |
| | | /* When debugging offline channel estimation, enable this macro */ |
| | | #ifndef OFFLINE_CHEST_EN |
| | | #define OFFLINE_CHEST_EN (0) |
| | | #endif |
| | | |
| | | // total channel tap length |
| | | #define MLAGS_LENGTH 160 |
| | | // output channel tap length |
| | | #define CH_LEN_DEFAULT (128) |
| | | |
| | | /** Ranging channel status information */ |
| | | struct RANGING_CSI_T |
| | | { |
| | | uint32_t session_id; |
| | | uint32_t sts_index; |
| | | uint16_t ranging_status; |
| | | uint16_t block_index; |
| | | uint16_t round_index; |
| | | uint16_t distance_cm; |
| | | int16_t azimuth; |
| | | uint8_t ranging_fom; |
| | | uint8_t azimuth_fom; |
| | | uint8_t frame_idx; |
| | | uint8_t rframe_idx; |
| | | uint16_t reserved; |
| | | |
| | | // pre-poll | poll | final | final-data |
| | | struct FRAME_INF_T |
| | | { |
| | | int8_t rssi; |
| | | int8_t snr; |
| | | uint8_t rf_gain; |
| | | uint8_t bb_gain; |
| | | uint16_t bd_cnt; |
| | | uint16_t sfd_cnt; |
| | | uint16_t error_code; |
| | | } frame[4]; |
| | | |
| | | // poll | final |
| | | struct RFRAME_INF_T |
| | | { |
| | | int32_t freq_offset; |
| | | float kfactor; |
| | | uint32_t channel_power; |
| | | uint32_t noise_power; |
| | | int8_t main_tap_power; |
| | | int8_t first_tap_power; |
| | | uint8_t main_tap; |
| | | uint8_t first_tap; |
| | | uint8_t sts_main_tap; |
| | | uint8_t sts_first_tap; |
| | | uint8_t nlos; |
| | | uint8_t fom; |
| | | int8_t cir[128][2]; |
| | | float sts_taps[11]; |
| | | } rframe[2]; |
| | | }; |
| | | |
| | | typedef struct |
| | | { |
| | | int16_t tap1_loc; |
| | | int16_t tap2_loc; |
| | | int16_t tap3_loc; |
| | | float tap1_re; |
| | | float tap1_im; |
| | | float tap2_re; |
| | | float tap2_im; |
| | | float tap3_re; |
| | | float tap3_im; |
| | | int16_t fap_loc; |
| | | float fap_pow; |
| | | } ranging_aux_t; |
| | | |
| | | typedef struct |
| | | { |
| | | float Kfactor; ///> ratio of the main tap to the total energy |
| | | int16_t loc_deviation; ///> Deviation in main tap location from the expected one |
| | | float fom1; ///> Mean excess delay spread |
| | | float fom2; ///> RMS delay spread |
| | | float fom3; ///> Channel type: 0/1 : LoS, 2: Multipath, 3: NLos |
| | | ranging_aux_t aux_data; ///> First path location and energy |
| | | float mean_npwr; ///> Mean noise power (in offline CE mode) -- linear scale |
| | | float max_npwr; ///> Max noise power (in offline CE mode) -- linear scale |
| | | float chpwr; ///> Total channel power (in offline CE mode) -- linear scale |
| | | } ranging_FoM_t; |
| | | |
| | | struct RANGING_TAPS_INF_T |
| | | { |
| | | int16_t fap_loc; |
| | | int16_t tap1_loc; |
| | | int16_t tap2_loc; |
| | | int16_t tap3_loc; |
| | | float fap_pow; |
| | | float tap1_pow; |
| | | float tap2_pow; |
| | | float tap3_pow; |
| | | float Kfactor; // ratio of the main tap to the total energy |
| | | int16_t loc_deviation; // Deviation in main tap location from the expected one |
| | | uint8_t NLoS; // 0/1: LoS, 2: Multipath, 3: NLoS |
| | | uint8_t FoM; // 0 ~ 100 |
| | | }; |
| | | |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | #if CHEST_DUMP_EN |
| | | #define CIR_LEN 128 |
| | | #define CE_WIN 16 |
| | | |
| | | #define PWR_TH 100 |
| | | #define TAP_MARGIN 4 |
| | | |
| | | extern struct RANGING_CSI_T debug_csi; |
| | | uint8_t first_path_align(uint8_t *ce_chest_gaps, uint8_t *ce_chest_gaps_num, int8_t ce_chest[CIR_LEN][2], uint8_t ce_fap, uint8_t th, uint8_t margin); |
| | | uint8_t ranging_fom_calculate(struct RANGING_CSI_T *csi, uint8_t response_fom, uint8_t *response_tap_gaps, uint8_t response_tap_gaps_num); |
| | | void dump_preamble_cir(uint8_t idx, uint8_t taps_num); |
| | | void dump_sts_cir(uint8_t idx); |
| | | void print_preamble_chest(uint8_t rx_pkt_num, uint8_t rframe_num); |
| | | void print_sts_ch_taps(uint8_t rframe_num); |
| | | void calculate_first_tap_power(uint8_t rx_pkt_num, uint8_t rframe_num); |
| | | int8_t calculate_noise_floor(uint8_t rf_gain, uint8_t bb_gain); |
| | | #endif |
| | | |
| | | /** |
| | | * @brief Initialize all the global variables that will be used in the ranging lib. |
| | | */ |
| | | void ranging_lib_init(void); |
| | | |
| | | /** |
| | | * @brief Enable or disable ranging debug CSI output |
| | | * @param[in] en Enable or disable |
| | | */ |
| | | void ranging_debug_csi_en_set(uint8_t en); |
| | | |
| | | /** |
| | | * @brief Get ranging debug CSI output status |
| | | * @return ranging debug CSI output status |
| | | */ |
| | | uint8_t ranging_debug_csi_en_get(void); |
| | | |
| | | /** |
| | | * @brief Set ranging frame type. |
| | | * @param[in] type ranging frame type, SP0 ~ SP3 |
| | | */ |
| | | void ranging_frame_type_set(uint8_t type); |
| | | |
| | | /** |
| | | * @brief Get ranging frame type. |
| | | * @return ranging frame type SP0 ~ SP3 |
| | | */ |
| | | uint8_t ranging_frame_type_get(void); |
| | | |
| | | /** |
| | | * @brief Detect the fisrt path of ranging frame. |
| | | * @param[in] rssi Rx packet RSSI |
| | | * @return delta of the first path |
| | | */ |
| | | int32_t ranging_first_path_detect(int8_t rssi); |
| | | |
| | | /** |
| | | * @brief Calculate TX timestamp of the ranging frame. |
| | | * |
| | | * @param[in] timestamp PHY timer count of TX |
| | | * @return TX timestamp (unit: 15.65ps) |
| | | */ |
| | | int64_t ranging_tx_time(uint32_t timestamp); |
| | | |
| | | /** |
| | | * @brief Calculate RX timestamp of the ranging frame. |
| | | * |
| | | * @param[in] ind MAC RX report |
| | | * @return RX timestamp (unit: 15.65ps) |
| | | */ |
| | | int64_t ranging_rx_time(const struct MAC_HW_REPORT_T *ind); |
| | | |
| | | /** |
| | | * @brief Get ranging FAP FoM. |
| | | * |
| | | * @param[out] NLoS Non-Line of sight flag, 0/1: LoS, 2: Multipath, 3: NLoS |
| | | * @param[out] FoM FAP confidence measure, 0 ~ 100 |
| | | */ |
| | | void ranging_fom_get(uint8_t *NLoS, uint8_t *FoM); |
| | | |
| | | /** |
| | | * @brief Get multi-taps information. |
| | | * |
| | | * @param[out] inf multi-taps information |
| | | */ |
| | | void ranging_taps_inf_get(struct RANGING_TAPS_INF_T *inf); |
| | | |
| | | /** |
| | | * @brief Get multi-taps I/Q result. |
| | | * |
| | | * @param[out] chtaps_re pointer of output buffer of multi-taps real part |
| | | * @param[out] chtaps_im pointer of output buffer of multi-taps imagine part |
| | | * @param[in] taps_num number of taps to be get, the maximum value is 128 |
| | | */ |
| | | void ranging_multi_taps_iq_get(float *chtaps_re, float *chtaps_im, uint8_t taps_num); |
| | | |
| | | #if OFFLINE_CHEST_EN |
| | | /** |
| | | * @brief Enable offline channel estimate. |
| | | * |
| | | * @param[in] en enable or disable |
| | | */ |
| | | void ranging_offline_chest_enable(uint8_t en); |
| | | #endif |
| | | |
| | | /** |
| | | * @brief Set antenna delay for ranging. |
| | | * |
| | | * @param[in] ant_idx antenna port index, from 0 to 3 |
| | | * @param[in] delay_ps antenna delay, unit 15.6ps |
| | | */ |
| | | void ranging_ant_delays_set(uint8_t ant_idx, int16_t delay_ps); |
| | | |
| | | /** |
| | | * @brief Get antenna delay for ranging. |
| | | * |
| | | * @param[in] ant_idx antenna port index, from 0 to 3 |
| | | * @return antenna delay of the specified port, unit 15.6ps |
| | | */ |
| | | int16_t ranging_ant_delays_get(uint8_t ant_idx); |
| | | |
| | | /** |
| | | * @brief Select aux information output |
| | | * |
| | | * @param [in] len Length of samples to be processed (64, 32) |
| | | * @param [in] opt Options for aux information |
| | | * 0 (000) - No auxiliary data is generated |
| | | * 1 (001) - combo 1 (Kfactor, location deviation, LoS/NLoS) |
| | | * 2 (010) - combo 2 (3 largest taps info) |
| | | * 4 (100) - combo 3 (Mean excess delay, RMS excess delay) |
| | | * 3 (011) - combo 1 and combo 2 |
| | | * 5 (101) - combo 1 and combo 3 |
| | | * 7 (111) - combo 1, 2 and 3 |
| | | * |
| | | */ |
| | | void ranging_aux_out_opt_set(uint8_t len, uint8_t opt); |
| | | |
| | | /** |
| | | * @brief Get UWB RX RSSI. |
| | | * |
| | | * @param[out] rssi RSSI (-110 ~ -10) dBm |
| | | * @param[out] snr SNR (-21 ~ 20) dB |
| | | */ |
| | | void ranging_rssi_get(int8_t *rssi, int8_t *snr); |
| | | |
| | | /** |
| | | * @brief Compute expected RSSI based on TX power and ranging distance result |
| | | * |
| | | * @param[in] uwb_tx_power Ranging UWB TX power in dBm |
| | | * @param[in] distance Ranging distance result in cm |
| | | * @param[in] path_loss_exp Ranges from 2 to 5 (including fractional values, simplified here) 2 - for outdoor, 3 or 4 for multipath channels |
| | | * @param[in] ant_gain_loss Antenna gain or loss in dB |
| | | */ |
| | | int8_t ranging_expected_rssi_get(int8_t uwb_tx_power, uint16_t distance, uint8_t path_loss_exp, int8_t ant_gain_loss); |
| | | |
| | | /** |
| | | * @brief Get ranging library version. |
| | | * |
| | | * @return String of ranging library version |
| | | */ |
| | | const char *MK8000_get_rangelib_version(void); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | |
| | | /** |
| | | * @} |
| | | */ |
| | | |
| | | #endif // RANGING_LIB_H |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef _MK8000_PRESENT_INTERFACE_H |
| | | #define _MK8000_PRESENT_INTERFACE_H |
| | | |
| | | #include "radar_cfar.h" |
| | | |
| | | struct Present_sto |
| | | { |
| | | struct Cf_sto *cf_data; |
| | | float *Y; |
| | | int index; |
| | | int flag; |
| | | }; |
| | | |
| | | struct Pres_para_sto |
| | | { |
| | | struct Cp_fara_sto cp_para; |
| | | int train; |
| | | int rep; |
| | | int frame; |
| | | int norm; |
| | | float apole; |
| | | int acc; |
| | | }; |
| | | |
| | | /** |
| | | * \fn |
| | | * \brief static component process |
| | | * |
| | | * \param [in] in_X input data |
| | | * \param [in] lenth length of input data |
| | | * \param [in] pre_para input parameters |
| | | * \param [out] present output data of presence |
| | | * |
| | | * \note |
| | | * |
| | | */ |
| | | int mcu_static_process_series(float *in_X, int lenth, struct Pres_para_sto *pre_para, struct Present_sto *present); |
| | | |
| | | /** |
| | | * \fn |
| | | * \brief target detect process |
| | | * |
| | | * \param [in] in_X input data |
| | | * \param [in] lenth length of input data |
| | | * \param [in] pre_para input parameters |
| | | * \param [out] present output data of presence |
| | | */ |
| | | void mcu_target_detect_process(float *in_X, int lenth, struct Pres_para_sto *pre_para, struct Present_sto *present); |
| | | |
| | | /** |
| | | * \fn |
| | | * \brief Get present detect library version |
| | | * \return String of present detect library version |
| | | * \note |
| | | */ |
| | | const char *mk8000_get_presentlib_version(void); |
| | | |
| | | #endif /* _MK8000_PRESENT_INTERFACE_H */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | #ifndef _RADAR_CFAR_H |
| | | #define _RADAR_CFAR_H |
| | | |
| | | struct Cf_sto |
| | | { |
| | | float power; |
| | | float power_th; |
| | | float nse; |
| | | int flag; |
| | | }; |
| | | |
| | | struct Cp_fara_sto |
| | | { |
| | | int sec_alp[7]; |
| | | int sec_sol[7]; |
| | | int range[3]; |
| | | int ref_x[3]; |
| | | int sec_len; |
| | | int tar_num; |
| | | int nbor; |
| | | float ma_val; |
| | | }; |
| | | |
| | | float calc_array_sum(struct Cf_sto *in_X, int strt_c, int len, int size_x); |
| | | |
| | | float calc_array_order(struct Cf_sto *in_X, int strt_c, int len, int size_x); |
| | | |
| | | void mcu_target_power_process_sec(struct Cf_sto *in_X, int lenth, struct Cp_fara_sto *pre_para); |
| | | |
| | | /** |
| | | * \fn |
| | | * \brief target detect process const |
| | | * |
| | | * \param [in] in_X input data |
| | | * \param [in] lenth lenth of input data |
| | | * \param [in] pre_para input parameter |
| | | * |
| | | * \note |
| | | * |
| | | */ |
| | | |
| | | void mcu_target_power_process_cons(struct Cf_sto *in_X, int lenth, struct Cp_fara_sto *pre_para); |
| | | |
| | | #endif /* _RADAR_CFAR_H */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and |
| | | * its subsidiaries and affiliates (collectly called MKSEMI). |
| | | * |
| | | * All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * 1. Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * |
| | | * 2. Redistributions in binary form, except as embedded into an MKSEMI |
| | | * integrated circuit in a product or a software update for such product, |
| | | * 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. |
| | | * |
| | | * 3. Neither the name of MKSEMI nor the names of its contributors may be used |
| | | * to endorse or promote products derived from this software without |
| | | * specific prior written permission. |
| | | * |
| | | * 4. This software, with or without modification, must only be used with a |
| | | * MKSEMI integrated circuit. |
| | | * |
| | | * 5. Any software provided in binary form under this license must not be |
| | | * reverse engineered, decompiled, modified and/or disassembled. |
| | | * |
| | | * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED |
| | | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| | | * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| | | * DISCLAIMED. IN NO EVENT SHALL MKSEMI 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. |
| | | */ |
| | | |
| | | /* |
| | | * |
| | | * Modification History: |
| | | * |
| | | * |
| | | */ |
| | | #include "MK8000_kf_top.h" |
| | | #include "mk_trace.h" |
| | | #include "lib_kf.h" |
| | | #include "mk_misc.h" |
| | | |
| | | static struct KF_MAC_ADDR_T *addr_arr; |
| | | static size_t kf_support_num = 0; |
| | | static uint32_t kf_timeout_ms = 0; |
| | | |
| | | static int8_t do_init = 1; |
| | | |
| | | static kf_params_t g_kf_params = { |
| | | 0.048f, // should be equal to update time |
| | | 0.53356f, // Q = (9.8/3)^2/20 |
| | | 0.0036f, // ranging_R = 0.06^2 |
| | | 0.000625f, // azimuth_R = 0.025^2 |
| | | 0.2f, // ranging v_max in m/s |
| | | 10.0f, // azimuth v_max in degree/s |
| | | 1, // enable ranging velocity limitation |
| | | 1, // enable azimuth/elevation velocity limitation |
| | | }; |
| | | |
| | | static uint16_t get_addr_index(uint8_t *mac_addr, uint8_t data_type) |
| | | { |
| | | for (uint16_t i = 0; i < kf_support_num; i++) |
| | | { |
| | | if ((memcmp(addr_arr[i].mac_addr, mac_addr, 8) == 0) && (addr_arr[i].data_type == data_type)) |
| | | { |
| | | return i; |
| | | } |
| | | } |
| | | uint32_t min_time = addr_arr[0].elapsed_time; |
| | | uint16_t min_time_index = 0; |
| | | for (uint16_t i = 0; i < kf_support_num; i++) |
| | | { |
| | | if (addr_arr[i].elapsed_time < min_time) |
| | | { |
| | | min_time = addr_arr[i].elapsed_time; |
| | | min_time_index = i; |
| | | } |
| | | } |
| | | memcpy(addr_arr[min_time_index].mac_addr, mac_addr, 8); |
| | | addr_arr[min_time_index].data_type = data_type; |
| | | addr_arr[min_time_index].elapsed_time = 0; |
| | | return min_time_index; |
| | | } |
| | | |
| | | void loc_post_kf_config(uint32_t update_period_ms, |
| | | struct KF_MAC_ADDR_T *mac_addr_cache, |
| | | struct KF_CHANNEL_CACHE_T *kf_channel_cache, |
| | | struct KF_MAT_VALUE_CACHE_T *mat_value_cache, |
| | | size_t cache_len, |
| | | uint32_t timeout_ms) |
| | | { |
| | | g_kf_params.dt = (float)(update_period_ms / 1000.0); |
| | | addr_arr = mac_addr_cache; |
| | | memset(addr_arr, 0, sizeof(struct KF_MAC_ADDR_T) * cache_len); |
| | | kf_support_num = cache_len; |
| | | kf_timeout_ms = timeout_ms; |
| | | |
| | | MK8000_kf_config(g_kf_params, (kf_channel_env_t *)kf_channel_cache, (kf_channel_mat_value_t *)mat_value_cache, cache_len); |
| | | } |
| | | |
| | | uint8_t loc_kf_filter(float data_meas, enum KF_DATA_TYPE_T data_type, uint8_t *mac_addr, float *data_post) |
| | | { |
| | | if (kf_support_num == 0) |
| | | { |
| | | return 0; |
| | | } |
| | | uint16_t id = get_addr_index(mac_addr, (uint8_t)data_type); |
| | | uint32_t now = sys_tick_ms(); |
| | | if (addr_arr[id].elapsed_time == 0 || (now - addr_arr[id].elapsed_time) > kf_timeout_ms) |
| | | { |
| | | do_init = 1; |
| | | } |
| | | addr_arr[id].elapsed_time = now; |
| | | enum KF_CHANNEL_TYPE_T type = KF_CHANNEL_TYPE_RANGING; |
| | | if (data_type == KF_DATA_TYPE_AZIMUTH) |
| | | { |
| | | type = KF_CHANNEL_TYPE_ANGLE; |
| | | } |
| | | else if (data_type == KF_DATA_TYPE_ELEVATION) |
| | | { |
| | | if (pdoa_3d_ant_layout_get() == 0) |
| | | { |
| | | type = KF_CHANNEL_TYPE_ANGLE_POSITIVE; |
| | | } |
| | | else |
| | | { |
| | | type = KF_CHANNEL_TYPE_ANGLE; |
| | | } |
| | | } |
| | | MK8000_kf_processor(data_meas, id, type, do_init, data_post); |
| | | do_init = 0; |
| | | return 1; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | #include <stdint.h> |
| | | #include "lib_aoa.h" |
| | | |
| | | #if AOA_3D_EN |
| | | |
| | | #ifndef XIP_EN |
| | | const uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM] = { |
| | | #else |
| | | uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM] = { |
| | | #endif |
| | | #include "cmp_3D_svec_hex_sq4ant_az3el5_ch5.txt" |
| | | }; |
| | | |
| | | #ifndef XIP_EN |
| | | const uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM] = { |
| | | #else |
| | | uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM] = { |
| | | #endif |
| | | #include "cmp_3D_svec_hex_sq4ant_az3el5_ch9.txt" |
| | | }; |
| | | |
| | | #else |
| | | |
| | | #ifndef XIP_EN |
| | | const uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM] = { |
| | | #else |
| | | uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM] = { |
| | | #endif |
| | | #if (ANT_PATTERN == ANT_PATTERN_SQUARE) |
| | | #include "cmp_svec_hex_square4ant_ch5.txt" |
| | | #else |
| | | #if (RX_ANT_PORTS_NUM == 4) |
| | | #include "cmp_svec_hex_ch5.txt" |
| | | #elif (RX_ANT_PORTS_NUM == 3) |
| | | #include "cmp_svec_hex_3ant_ch5.txt" |
| | | #elif (RX_ANT_PORTS_NUM == 2) |
| | | #include "cmp_svec_hex_2ant_withzeros_ch5.txt" |
| | | #else |
| | | 0 |
| | | #endif |
| | | #endif |
| | | }; |
| | | |
| | | #ifndef XIP_EN |
| | | const uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM] = { |
| | | #else |
| | | uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM] = { |
| | | #endif |
| | | #if (ANT_PATTERN == ANT_PATTERN_SQUARE) |
| | | #include "cmp_svec_hex_square4ant_ch9.txt" |
| | | #else |
| | | #if (RX_ANT_PORTS_NUM == 4) |
| | | #include "cmp_svec_hex_ch9.txt" |
| | | #elif (RX_ANT_PORTS_NUM == 3) |
| | | #include "cmp_svec_hex_3ant_ch9.txt" |
| | | #elif (RX_ANT_PORTS_NUM == 2) |
| | | #include "cmp_svec_hex_2ant_withzeros_ch9.txt" |
| | | #else |
| | | 0 |
| | | #endif |
| | | #endif |
| | | }; |
| | | |
| | | #endif |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd7d04040, |
| | | 0x0, |
| | | 0xd7d14040, |
| | | 0x0, |
| | | 0xd7d14040, |
| | | 0x0, |
| | | 0xd7d14040, |
| | | 0x0, |
| | | 0xd6d14040, |
| | | 0x0, |
| | | 0xd6d24040, |
| | | 0x0, |
| | | 0xd6d24040, |
| | | 0x0, |
| | | 0xd5d24040, |
| | | 0x0, |
| | | 0xd5d34040, |
| | | 0x0, |
| | | 0xd4d34040, |
| | | 0x0, |
| | | 0xd4d44040, |
| | | 0x0, |
| | | 0xd3d44040, |
| | | 0x0, |
| | | 0xd3d54040, |
| | | 0x0, |
| | | 0xd2d64040, |
| | | 0x0, |
| | | 0xd1d64040, |
| | | 0x0, |
| | | 0xd1d74040, |
| | | 0x0, |
| | | 0xd0d84040, |
| | | 0x0, |
| | | 0xcfd94040, |
| | | 0x0, |
| | | 0xcfd94040, |
| | | 0x0, |
| | | 0xceda4040, |
| | | 0x0, |
| | | 0xcddb4040, |
| | | 0x0, |
| | | 0xcddc4040, |
| | | 0x0, |
| | | 0xccdd4040, |
| | | 0x0, |
| | | 0xcbde4040, |
| | | 0x0, |
| | | 0xcae04040, |
| | | 0x0, |
| | | 0xcae14040, |
| | | 0x0, |
| | | 0xc9e24040, |
| | | 0x0, |
| | | 0xc8e34040, |
| | | 0x0, |
| | | 0xc8e54040, |
| | | 0x0, |
| | | 0xc7e64040, |
| | | 0x0, |
| | | 0xc6e74040, |
| | | 0x0, |
| | | 0xc6e94040, |
| | | 0x0, |
| | | 0xc5eb4040, |
| | | 0x0, |
| | | 0xc4ec4040, |
| | | 0x0, |
| | | 0xc4ee4040, |
| | | 0x0, |
| | | 0xc3f04040, |
| | | 0x0, |
| | | 0xc3f14040, |
| | | 0x0, |
| | | 0xc3f34040, |
| | | 0x0, |
| | | 0xc2f54040, |
| | | 0x0, |
| | | 0xc2f74040, |
| | | 0x0, |
| | | 0xc2f94040, |
| | | 0x0, |
| | | 0xc1fb4040, |
| | | 0x0, |
| | | 0xc1fd4040, |
| | | 0x0, |
| | | 0xc1ff4040, |
| | | 0x0, |
| | | 0xc1004040, |
| | | 0x0, |
| | | 0xc1024040, |
| | | 0x0, |
| | | 0xc1044040, |
| | | 0x0, |
| | | 0xc1064040, |
| | | 0x0, |
| | | 0xc2084040, |
| | | 0x0, |
| | | 0xc20b4040, |
| | | 0x0, |
| | | 0xc20d4040, |
| | | 0x0, |
| | | 0xc30f4040, |
| | | 0x0, |
| | | 0xc3114040, |
| | | 0x0, |
| | | 0xc4144040, |
| | | 0x0, |
| | | 0xc5164040, |
| | | 0x0, |
| | | 0xc6184040, |
| | | 0x0, |
| | | 0xc71a4040, |
| | | 0x0, |
| | | 0xc81c4040, |
| | | 0x0, |
| | | 0xc91f4040, |
| | | 0x0, |
| | | 0xca214040, |
| | | 0x0, |
| | | 0xcb234040, |
| | | 0x0, |
| | | 0xcd254040, |
| | | 0x0, |
| | | 0xce274040, |
| | | 0x0, |
| | | 0xd0294040, |
| | | 0x0, |
| | | 0xd12b4040, |
| | | 0x0, |
| | | 0xd32d4040, |
| | | 0x0, |
| | | 0xd52f4040, |
| | | 0x0, |
| | | 0xd7304040, |
| | | 0x0, |
| | | 0xd9324040, |
| | | 0x0, |
| | | 0xdb344040, |
| | | 0x0, |
| | | 0xdd354040, |
| | | 0x0, |
| | | 0xe0374040, |
| | | 0x0, |
| | | 0xe2384040, |
| | | 0x0, |
| | | 0xe4394040, |
| | | 0x0, |
| | | 0xe73a4040, |
| | | 0x0, |
| | | 0xe93b4040, |
| | | 0x0, |
| | | 0xec3c4040, |
| | | 0x0, |
| | | 0xee3d4040, |
| | | 0x0, |
| | | 0xf13e4040, |
| | | 0x0, |
| | | 0xf33f4040, |
| | | 0x0, |
| | | 0xf63f4040, |
| | | 0x0, |
| | | 0xf93f4040, |
| | | 0x0, |
| | | 0xfc404040, |
| | | 0x0, |
| | | 0xfe404040, |
| | | 0x0, |
| | | 0x404040, |
| | | 0x0, |
| | | 0x3404040, |
| | | 0x0, |
| | | 0x5404040, |
| | | 0x0, |
| | | 0x83f4040, |
| | | 0x0, |
| | | 0xb3f4040, |
| | | 0x0, |
| | | 0xe3f4040, |
| | | 0x0, |
| | | 0x103e4040, |
| | | 0x0, |
| | | 0x133d4040, |
| | | 0x0, |
| | | 0x153c4040, |
| | | 0x0, |
| | | 0x183b4040, |
| | | 0x0, |
| | | 0x1a3a4040, |
| | | 0x0, |
| | | 0x1d394040, |
| | | 0x0, |
| | | 0x1f384040, |
| | | 0x0, |
| | | 0x21374040, |
| | | 0x0, |
| | | 0x24354040, |
| | | 0x0, |
| | | 0x26344040, |
| | | 0x0, |
| | | 0x28324040, |
| | | 0x0, |
| | | 0x2a304040, |
| | | 0x0, |
| | | 0x2c2f4040, |
| | | 0x0, |
| | | 0x2e2d4040, |
| | | 0x0, |
| | | 0x302b4040, |
| | | 0x0, |
| | | 0x31294040, |
| | | 0x0, |
| | | 0x33274040, |
| | | 0x0, |
| | | 0x34254040, |
| | | 0x0, |
| | | 0x36234040, |
| | | 0x0, |
| | | 0x37214040, |
| | | 0x0, |
| | | 0x381f4040, |
| | | 0x0, |
| | | 0x391c4040, |
| | | 0x0, |
| | | 0x3a1a4040, |
| | | 0x0, |
| | | 0x3b184040, |
| | | 0x0, |
| | | 0x3c164040, |
| | | 0x0, |
| | | 0x3d144040, |
| | | 0x0, |
| | | 0x3e114040, |
| | | 0x0, |
| | | 0x3e0f4040, |
| | | 0x0, |
| | | 0x3f0d4040, |
| | | 0x0, |
| | | 0x3f0b4040, |
| | | 0x0, |
| | | 0x3f084040, |
| | | 0x0, |
| | | 0x40064040, |
| | | 0x0, |
| | | 0x40044040, |
| | | 0x0, |
| | | 0x40024040, |
| | | 0x0, |
| | | 0x40004040, |
| | | 0x0, |
| | | 0x40ff4040, |
| | | 0x0, |
| | | 0x40fd4040, |
| | | 0x0, |
| | | 0x40fb4040, |
| | | 0x0, |
| | | 0x3ff94040, |
| | | 0x0, |
| | | 0x3ff74040, |
| | | 0x0, |
| | | 0x3ff54040, |
| | | 0x0, |
| | | 0x3ef34040, |
| | | 0x0, |
| | | 0x3ef14040, |
| | | 0x0, |
| | | 0x3ef04040, |
| | | 0x0, |
| | | 0x3dee4040, |
| | | 0x0, |
| | | 0x3dec4040, |
| | | 0x0, |
| | | 0x3ceb4040, |
| | | 0x0, |
| | | 0x3be94040, |
| | | 0x0, |
| | | 0x3be74040, |
| | | 0x0, |
| | | 0x3ae64040, |
| | | 0x0, |
| | | 0x39e54040, |
| | | 0x0, |
| | | 0x39e34040, |
| | | 0x0, |
| | | 0x38e24040, |
| | | 0x0, |
| | | 0x37e14040, |
| | | 0x0, |
| | | 0x37e04040, |
| | | 0x0, |
| | | 0x36de4040, |
| | | 0x0, |
| | | 0x35dd4040, |
| | | 0x0, |
| | | 0x34dc4040, |
| | | 0x0, |
| | | 0x34db4040, |
| | | 0x0, |
| | | 0x33da4040, |
| | | 0x0, |
| | | 0x32d94040, |
| | | 0x0, |
| | | 0x32d94040, |
| | | 0x0, |
| | | 0x31d84040, |
| | | 0x0, |
| | | 0x30d74040, |
| | | 0x0, |
| | | 0x30d64040, |
| | | 0x0, |
| | | 0x2fd64040, |
| | | 0x0, |
| | | 0x2ed54040, |
| | | 0x0, |
| | | 0x2ed44040, |
| | | 0x0, |
| | | 0x2dd44040, |
| | | 0x0, |
| | | 0x2dd34040, |
| | | 0x0, |
| | | 0x2cd34040, |
| | | 0x0, |
| | | 0x2cd24040, |
| | | 0x0, |
| | | 0x2bd24040, |
| | | 0x0, |
| | | 0x2bd24040, |
| | | 0x0, |
| | | 0x2bd14040, |
| | | 0x0, |
| | | 0x2ad14040, |
| | | 0x0, |
| | | 0x2ad14040, |
| | | 0x0, |
| | | 0x2ad14040, |
| | | 0x0, |
| | | 0x2ad04040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 0xf9c24040, |
| | | 0x0, |
| | | 0xf9c24040, |
| | | 0x0, |
| | | 0xf9c24040, |
| | | 0x0, |
| | | 0xf9c24040, |
| | | 0x0, |
| | | 0xf8c24040, |
| | | 0x0, |
| | | 0xf8c24040, |
| | | 0x0, |
| | | 0xf8c24040, |
| | | 0x0, |
| | | 0xf7c24040, |
| | | 0x0, |
| | | 0xf7c24040, |
| | | 0x0, |
| | | 0xf6c24040, |
| | | 0x0, |
| | | 0xf6c24040, |
| | | 0x0, |
| | | 0xf5c24040, |
| | | 0x0, |
| | | 0xf5c24040, |
| | | 0x0, |
| | | 0xf4c24040, |
| | | 0x0, |
| | | 0xf3c34040, |
| | | 0x0, |
| | | 0xf2c34040, |
| | | 0x0, |
| | | 0xf1c34040, |
| | | 0x0, |
| | | 0xf1c34040, |
| | | 0x0, |
| | | 0xf0c34040, |
| | | 0x0, |
| | | 0xefc44040, |
| | | 0x0, |
| | | 0xedc44040, |
| | | 0x0, |
| | | 0xecc44040, |
| | | 0x0, |
| | | 0xebc54040, |
| | | 0x0, |
| | | 0xeac54040, |
| | | 0x0, |
| | | 0xe9c64040, |
| | | 0x0, |
| | | 0xe7c64040, |
| | | 0x0, |
| | | 0xe6c74040, |
| | | 0x0, |
| | | 0xe5c84040, |
| | | 0x0, |
| | | 0xe3c84040, |
| | | 0x0, |
| | | 0xe2c94040, |
| | | 0x0, |
| | | 0xe1ca4040, |
| | | 0x0, |
| | | 0xdfcb4040, |
| | | 0x0, |
| | | 0xdecc4040, |
| | | 0x0, |
| | | 0xdccd4040, |
| | | 0x0, |
| | | 0xdbce4040, |
| | | 0x0, |
| | | 0xd9cf4040, |
| | | 0x0, |
| | | 0xd8d04040, |
| | | 0x0, |
| | | 0xd6d24040, |
| | | 0x0, |
| | | 0xd5d34040, |
| | | 0x0, |
| | | 0xd3d44040, |
| | | 0x0, |
| | | 0xd2d64040, |
| | | 0x0, |
| | | 0xd0d84040, |
| | | 0x0, |
| | | 0xcfd94040, |
| | | 0x0, |
| | | 0xcddb4040, |
| | | 0x0, |
| | | 0xccdd4040, |
| | | 0x0, |
| | | 0xcbdf4040, |
| | | 0x0, |
| | | 0xcae14040, |
| | | 0x0, |
| | | 0xc8e34040, |
| | | 0x0, |
| | | 0xc7e54040, |
| | | 0x0, |
| | | 0xc6e84040, |
| | | 0x0, |
| | | 0xc5ea4040, |
| | | 0x0, |
| | | 0xc4ed4040, |
| | | 0x0, |
| | | 0xc4ef4040, |
| | | 0x0, |
| | | 0xc3f24040, |
| | | 0x0, |
| | | 0xc2f44040, |
| | | 0x0, |
| | | 0xc2f74040, |
| | | 0x0, |
| | | 0xc1fa4040, |
| | | 0x0, |
| | | 0xc1fd4040, |
| | | 0x0, |
| | | 0xc1ff4040, |
| | | 0x0, |
| | | 0xc1014040, |
| | | 0x0, |
| | | 0xc1044040, |
| | | 0x0, |
| | | 0xc1074040, |
| | | 0x0, |
| | | 0xc20a4040, |
| | | 0x0, |
| | | 0xc20d4040, |
| | | 0x0, |
| | | 0xc3104040, |
| | | 0x0, |
| | | 0xc4134040, |
| | | 0x0, |
| | | 0xc5164040, |
| | | 0x0, |
| | | 0xc6194040, |
| | | 0x0, |
| | | 0xc71b4040, |
| | | 0x0, |
| | | 0xc91e4040, |
| | | 0x0, |
| | | 0xca214040, |
| | | 0x0, |
| | | 0xcc244040, |
| | | 0x0, |
| | | 0xce264040, |
| | | 0x0, |
| | | 0xd0294040, |
| | | 0x0, |
| | | 0xd22b4040, |
| | | 0x0, |
| | | 0xd42e4040, |
| | | 0x0, |
| | | 0xd6304040, |
| | | 0x0, |
| | | 0xd9324040, |
| | | 0x0, |
| | | 0xdb344040, |
| | | 0x0, |
| | | 0xde364040, |
| | | 0x0, |
| | | 0xe1374040, |
| | | 0x0, |
| | | 0xe4394040, |
| | | 0x0, |
| | | 0xe73a4040, |
| | | 0x0, |
| | | 0xea3c4040, |
| | | 0x0, |
| | | 0xed3d4040, |
| | | 0x0, |
| | | 0xf03e4040, |
| | | 0x0, |
| | | 0xf43f4040, |
| | | 0x0, |
| | | 0xf73f4040, |
| | | 0x0, |
| | | 0xfa404040, |
| | | 0x0, |
| | | 0xfe404040, |
| | | 0x0, |
| | | 0x404040, |
| | | 0x0, |
| | | 0x3404040, |
| | | 0x0, |
| | | 0x7404040, |
| | | 0x0, |
| | | 0xa3f4040, |
| | | 0x0, |
| | | 0xd3f4040, |
| | | 0x0, |
| | | 0x113e4040, |
| | | 0x0, |
| | | 0x143d4040, |
| | | 0x0, |
| | | 0x173c4040, |
| | | 0x0, |
| | | 0x1a3a4040, |
| | | 0x0, |
| | | 0x1d394040, |
| | | 0x0, |
| | | 0x20374040, |
| | | 0x0, |
| | | 0x23364040, |
| | | 0x0, |
| | | 0x26344040, |
| | | 0x0, |
| | | 0x28324040, |
| | | 0x0, |
| | | 0x2b304040, |
| | | 0x0, |
| | | 0x2d2e4040, |
| | | 0x0, |
| | | 0x2f2b4040, |
| | | 0x0, |
| | | 0x31294040, |
| | | 0x0, |
| | | 0x33264040, |
| | | 0x0, |
| | | 0x35244040, |
| | | 0x0, |
| | | 0x37214040, |
| | | 0x0, |
| | | 0x381e4040, |
| | | 0x0, |
| | | 0x3a1b4040, |
| | | 0x0, |
| | | 0x3b194040, |
| | | 0x0, |
| | | 0x3c164040, |
| | | 0x0, |
| | | 0x3d134040, |
| | | 0x0, |
| | | 0x3e104040, |
| | | 0x0, |
| | | 0x3f0d4040, |
| | | 0x0, |
| | | 0x3f0a4040, |
| | | 0x0, |
| | | 0x40074040, |
| | | 0x0, |
| | | 0x40044040, |
| | | 0x0, |
| | | 0x40014040, |
| | | 0x0, |
| | | 0x40ff4040, |
| | | 0x0, |
| | | 0x40fd4040, |
| | | 0x0, |
| | | 0x40fa4040, |
| | | 0x0, |
| | | 0x3ff74040, |
| | | 0x0, |
| | | 0x3ff44040, |
| | | 0x0, |
| | | 0x3ef24040, |
| | | 0x0, |
| | | 0x3def4040, |
| | | 0x0, |
| | | 0x3ded4040, |
| | | 0x0, |
| | | 0x3cea4040, |
| | | 0x0, |
| | | 0x3be84040, |
| | | 0x0, |
| | | 0x3ae54040, |
| | | 0x0, |
| | | 0x39e34040, |
| | | 0x0, |
| | | 0x37e14040, |
| | | 0x0, |
| | | 0x36df4040, |
| | | 0x0, |
| | | 0x35dd4040, |
| | | 0x0, |
| | | 0x34db4040, |
| | | 0x0, |
| | | 0x32d94040, |
| | | 0x0, |
| | | 0x31d84040, |
| | | 0x0, |
| | | 0x2fd64040, |
| | | 0x0, |
| | | 0x2ed44040, |
| | | 0x0, |
| | | 0x2cd34040, |
| | | 0x0, |
| | | 0x2bd24040, |
| | | 0x0, |
| | | 0x29d04040, |
| | | 0x0, |
| | | 0x28cf4040, |
| | | 0x0, |
| | | 0x26ce4040, |
| | | 0x0, |
| | | 0x25cd4040, |
| | | 0x0, |
| | | 0x23cc4040, |
| | | 0x0, |
| | | 0x22cb4040, |
| | | 0x0, |
| | | 0x20ca4040, |
| | | 0x0, |
| | | 0x1fc94040, |
| | | 0x0, |
| | | 0x1ec84040, |
| | | 0x0, |
| | | 0x1cc84040, |
| | | 0x0, |
| | | 0x1bc74040, |
| | | 0x0, |
| | | 0x1ac64040, |
| | | 0x0, |
| | | 0x18c64040, |
| | | 0x0, |
| | | 0x17c54040, |
| | | 0x0, |
| | | 0x16c54040, |
| | | 0x0, |
| | | 0x15c44040, |
| | | 0x0, |
| | | 0x14c44040, |
| | | 0x0, |
| | | 0x12c44040, |
| | | 0x0, |
| | | 0x11c34040, |
| | | 0x0, |
| | | 0x10c34040, |
| | | 0x0, |
| | | 0x10c34040, |
| | | 0x0, |
| | | 0xfc34040, |
| | | 0x0, |
| | | 0xec34040, |
| | | 0x0, |
| | | 0xdc24040, |
| | | 0x0, |
| | | 0xcc24040, |
| | | 0x0, |
| | | 0xcc24040, |
| | | 0x0, |
| | | 0xbc24040, |
| | | 0x0, |
| | | 0xbc24040, |
| | | 0x0, |
| | | 0xac24040, |
| | | 0x0, |
| | | 0xac24040, |
| | | 0x0, |
| | | 0x9c24040, |
| | | 0x0, |
| | | 0x9c24040, |
| | | 0x0, |
| | | 0x9c24040, |
| | | 0x0, |
| | | 0x8c24040, |
| | | 0x0, |
| | | 0x8c24040, |
| | | 0x0, |
| | | 0x8c24040, |
| | | 0x0, |
| | | 0x8c24040, |
| | | 0x0, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 0xd0404040, |
| | | 0xd03f0cd8, |
| | | 0xd8, |
| | | 0xd0404040, |
| | | 0xd03f0cd8, |
| | | 0xd8, |
| | | 0xd0404040, |
| | | 0xd03f0cd8, |
| | | 0xd8, |
| | | 0xd0404040, |
| | | 0xd03f0bd8, |
| | | 0xd8, |
| | | 0xd0404040, |
| | | 0xd03f0bd8, |
| | | 0xd8, |
| | | 0xd0404040, |
| | | 0xd03f0bd8, |
| | | 0xd8, |
| | | 0xd0404040, |
| | | 0xd03f0ad7, |
| | | 0xd7, |
| | | 0xd1404040, |
| | | 0xd13f09d7, |
| | | 0xd7, |
| | | 0xd1404040, |
| | | 0xd13f09d7, |
| | | 0xd7, |
| | | 0xd1404040, |
| | | 0xd14008d7, |
| | | 0xd7, |
| | | 0xd1404040, |
| | | 0xd14007d6, |
| | | 0xd6, |
| | | 0xd2404040, |
| | | 0xd24006d6, |
| | | 0xd6, |
| | | 0xd2404040, |
| | | 0xd24005d6, |
| | | 0xd6, |
| | | 0xd2404040, |
| | | 0xd24004d5, |
| | | 0xd5, |
| | | 0xd3404040, |
| | | 0xd34002d5, |
| | | 0xd5, |
| | | 0xd3404040, |
| | | 0xd34001d4, |
| | | 0xd4, |
| | | 0xd4404040, |
| | | 0xd44000d4, |
| | | 0xd4, |
| | | 0xd4404040, |
| | | 0xd440ffd3, |
| | | 0xd3, |
| | | 0xd5404040, |
| | | 0xd540fdd3, |
| | | 0xd3, |
| | | 0xd6404040, |
| | | 0xd640fcd2, |
| | | 0xd2, |
| | | 0xd6404040, |
| | | 0xd640fad1, |
| | | 0xd1, |
| | | 0xd7404040, |
| | | 0xd73ff8d1, |
| | | 0xd1, |
| | | 0xd8404040, |
| | | 0xd83ff6d0, |
| | | 0xd0, |
| | | 0xd9404040, |
| | | 0xd93ff4cf, |
| | | 0xcf, |
| | | 0xd9404040, |
| | | 0xd93ef2cf, |
| | | 0xcf, |
| | | 0xda404040, |
| | | 0xda3ef0ce, |
| | | 0xce, |
| | | 0xdb404040, |
| | | 0xdb3dedcd, |
| | | 0xcd, |
| | | 0xdc404040, |
| | | 0xdc3cebcd, |
| | | 0xcd, |
| | | 0xdd404040, |
| | | 0xdd3be9cc, |
| | | 0xcc, |
| | | 0xde404040, |
| | | 0xde3ae6cb, |
| | | 0xcb, |
| | | 0xe0404040, |
| | | 0xe039e4ca, |
| | | 0xca, |
| | | 0xe1404040, |
| | | 0xe138e1ca, |
| | | 0xca, |
| | | 0xe2404040, |
| | | 0xe236dfc9, |
| | | 0xc9, |
| | | 0xe3404040, |
| | | 0xe335ddc8, |
| | | 0xc8, |
| | | 0xe5404040, |
| | | 0xe533dac8, |
| | | 0xc8, |
| | | 0xe6404040, |
| | | 0xe631d8c7, |
| | | 0xc7, |
| | | 0xe7404040, |
| | | 0xe72fd5c6, |
| | | 0xc6, |
| | | 0xe9404040, |
| | | 0xe92dd3c6, |
| | | 0xc6, |
| | | 0xeb404040, |
| | | 0xeb2ad1c5, |
| | | 0xc5, |
| | | 0xec404040, |
| | | 0xec27cfc4, |
| | | 0xc4, |
| | | 0xee404040, |
| | | 0xee25cdc4, |
| | | 0xc4, |
| | | 0xf0404040, |
| | | 0xf022cbc3, |
| | | 0xc3, |
| | | 0xf1404040, |
| | | 0xf11fc9c3, |
| | | 0xc3, |
| | | 0xf3404040, |
| | | 0xf31bc7c3, |
| | | 0xc3, |
| | | 0xf5404040, |
| | | 0xf518c6c2, |
| | | 0xc2, |
| | | 0xf7404040, |
| | | 0xf714c4c2, |
| | | 0xc2, |
| | | 0xf9404040, |
| | | 0xf910c3c2, |
| | | 0xc2, |
| | | 0xfb404040, |
| | | 0xfb0dc2c1, |
| | | 0xc1, |
| | | 0xfd404040, |
| | | 0xfd09c2c1, |
| | | 0xc1, |
| | | 0xff404040, |
| | | 0xff05c1c1, |
| | | 0xc1, |
| | | 0x404040, |
| | | 0xc1c1, |
| | | 0xc1, |
| | | 0x2404040, |
| | | 0x2fdc1c1, |
| | | 0xc1, |
| | | 0x4404040, |
| | | 0x4f9c2c1, |
| | | 0xc1, |
| | | 0x6404040, |
| | | 0x6f5c2c1, |
| | | 0xc1, |
| | | 0x8404040, |
| | | 0x8f0c3c2, |
| | | 0xc2, |
| | | 0xb404040, |
| | | 0xbecc5c2, |
| | | 0xc2, |
| | | 0xd404040, |
| | | 0xde8c6c2, |
| | | 0xc2, |
| | | 0xf404040, |
| | | 0xfe4c8c3, |
| | | 0xc3, |
| | | 0x11404040, |
| | | 0x11e0cac3, |
| | | 0xc3, |
| | | 0x14404040, |
| | | 0x14dccdc4, |
| | | 0xc4, |
| | | 0x16404040, |
| | | 0x16d8d0c5, |
| | | 0xc5, |
| | | 0x18404040, |
| | | 0x18d5d3c6, |
| | | 0xc6, |
| | | 0x1a404040, |
| | | 0x1ad1d6c7, |
| | | 0xc7, |
| | | 0x1c404040, |
| | | 0x1ccedac8, |
| | | 0xc8, |
| | | 0x1f404040, |
| | | 0x1fcbdec9, |
| | | 0xc9, |
| | | 0x21404040, |
| | | 0x21c9e2ca, |
| | | 0xca, |
| | | 0x23404040, |
| | | 0x23c7e7cb, |
| | | 0xcb, |
| | | 0x25404040, |
| | | 0x25c5eccd, |
| | | 0xcd, |
| | | 0x27404040, |
| | | 0x27c3f0ce, |
| | | 0xce, |
| | | 0x29404040, |
| | | 0x29c2f5d0, |
| | | 0xd0, |
| | | 0x2b404040, |
| | | 0x2bc1fad1, |
| | | 0xd1, |
| | | 0x2d404040, |
| | | 0x2dc100d3, |
| | | 0xd3, |
| | | 0x2f404040, |
| | | 0x2fc104d5, |
| | | 0xd5, |
| | | 0x30404040, |
| | | 0x30c209d7, |
| | | 0xd7, |
| | | 0x32404040, |
| | | 0x32c30ed9, |
| | | 0xd9, |
| | | 0x34404040, |
| | | 0x34c413db, |
| | | 0xdb, |
| | | 0x35404040, |
| | | 0x35c618dd, |
| | | 0xdd, |
| | | 0x37404040, |
| | | 0x37c81de0, |
| | | 0xe0, |
| | | 0x38404040, |
| | | 0x38cb22e2, |
| | | 0xe2, |
| | | 0x39404040, |
| | | 0x39ce26e4, |
| | | 0xe4, |
| | | 0x3a404040, |
| | | 0x3ad12ae7, |
| | | 0xe7, |
| | | 0x3b404040, |
| | | 0x3bd52ee9, |
| | | 0xe9, |
| | | 0x3c404040, |
| | | 0x3cd932ec, |
| | | 0xec, |
| | | 0x3d404040, |
| | | 0x3ddd35ee, |
| | | 0xee, |
| | | 0x3e404040, |
| | | 0x3ee238f1, |
| | | 0xf1, |
| | | 0x3f404040, |
| | | 0x3fe73af3, |
| | | 0xf3, |
| | | 0x3f404040, |
| | | 0x3fec3cf6, |
| | | 0xf6, |
| | | 0x3f404040, |
| | | 0x3ff13ef9, |
| | | 0xf9, |
| | | 0x40404040, |
| | | 0x40f63ffc, |
| | | 0xfc, |
| | | 0x40404040, |
| | | 0x40fc40fe, |
| | | 0xfe, |
| | | 0x40404040, |
| | | 0x40004000, |
| | | 0x0, |
| | | 0x40404040, |
| | | 0x40054003, |
| | | 0x3, |
| | | 0x40404040, |
| | | 0x400b3f05, |
| | | 0x5, |
| | | 0x3f404040, |
| | | 0x3f103e08, |
| | | 0x8, |
| | | 0x3f404040, |
| | | 0x3f153c0b, |
| | | 0xb, |
| | | 0x3f404040, |
| | | 0x3f1a3a0e, |
| | | 0xe, |
| | | 0x3e404040, |
| | | 0x3e1f3810, |
| | | 0x10, |
| | | 0x3d404040, |
| | | 0x3d243513, |
| | | 0x13, |
| | | 0x3c404040, |
| | | 0x3c283215, |
| | | 0x15, |
| | | 0x3b404040, |
| | | 0x3b2c2e18, |
| | | 0x18, |
| | | 0x3a404040, |
| | | 0x3a302a1a, |
| | | 0x1a, |
| | | 0x39404040, |
| | | 0x3933261d, |
| | | 0x1d, |
| | | 0x38404040, |
| | | 0x3836221f, |
| | | 0x1f, |
| | | 0x37404040, |
| | | 0x37391d21, |
| | | 0x21, |
| | | 0x35404040, |
| | | 0x353b1824, |
| | | 0x24, |
| | | 0x34404040, |
| | | 0x343d1326, |
| | | 0x26, |
| | | 0x32404040, |
| | | 0x323e0e28, |
| | | 0x28, |
| | | 0x30404040, |
| | | 0x303f092a, |
| | | 0x2a, |
| | | 0x2f404040, |
| | | 0x2f40042c, |
| | | 0x2c, |
| | | 0x2d404040, |
| | | 0x2d40002e, |
| | | 0x2e, |
| | | 0x2b404040, |
| | | 0x2b40fa30, |
| | | 0x30, |
| | | 0x29404040, |
| | | 0x293ff531, |
| | | 0x31, |
| | | 0x27404040, |
| | | 0x273ef033, |
| | | 0x33, |
| | | 0x25404040, |
| | | 0x253cec34, |
| | | 0x34, |
| | | 0x23404040, |
| | | 0x233ae736, |
| | | 0x36, |
| | | 0x21404040, |
| | | 0x2138e237, |
| | | 0x37, |
| | | 0x1f404040, |
| | | 0x1f36de38, |
| | | 0x38, |
| | | 0x1c404040, |
| | | 0x1c33da39, |
| | | 0x39, |
| | | 0x1a404040, |
| | | 0x1a30d63a, |
| | | 0x3a, |
| | | 0x18404040, |
| | | 0x182cd33b, |
| | | 0x3b, |
| | | 0x16404040, |
| | | 0x1629d03c, |
| | | 0x3c, |
| | | 0x14404040, |
| | | 0x1425cd3d, |
| | | 0x3d, |
| | | 0x11404040, |
| | | 0x1121ca3e, |
| | | 0x3e, |
| | | 0xf404040, |
| | | 0xf1dc83e, |
| | | 0x3e, |
| | | 0xd404040, |
| | | 0xd19c63f, |
| | | 0x3f, |
| | | 0xb404040, |
| | | 0xb15c53f, |
| | | 0x3f, |
| | | 0x8404040, |
| | | 0x811c33f, |
| | | 0x3f, |
| | | 0x6404040, |
| | | 0x60cc240, |
| | | 0x40, |
| | | 0x4404040, |
| | | 0x408c240, |
| | | 0x40, |
| | | 0x2404040, |
| | | 0x204c140, |
| | | 0x40, |
| | | 0x404040, |
| | | 0xc140, |
| | | 0x40, |
| | | 0xff404040, |
| | | 0xfffcc140, |
| | | 0x40, |
| | | 0xfd404040, |
| | | 0xfdf8c240, |
| | | 0x40, |
| | | 0xfb404040, |
| | | 0xfbf4c240, |
| | | 0x40, |
| | | 0xf9404040, |
| | | 0xf9f1c33f, |
| | | 0x3f, |
| | | 0xf7404040, |
| | | 0xf7edc43f, |
| | | 0x3f, |
| | | 0xf5404040, |
| | | 0xf5e9c63f, |
| | | 0x3f, |
| | | 0xf3404040, |
| | | 0xf3e6c73e, |
| | | 0x3e, |
| | | 0xf1404040, |
| | | 0xf1e2c93e, |
| | | 0x3e, |
| | | 0xf0404040, |
| | | 0xf0dfcb3e, |
| | | 0x3e, |
| | | 0xee404040, |
| | | 0xeedccd3d, |
| | | 0x3d, |
| | | 0xec404040, |
| | | 0xecdacf3d, |
| | | 0x3d, |
| | | 0xeb404040, |
| | | 0xebd7d13c, |
| | | 0x3c, |
| | | 0xe9404040, |
| | | 0xe9d4d33b, |
| | | 0x3b, |
| | | 0xe7404040, |
| | | 0xe7d2d53b, |
| | | 0x3b, |
| | | 0xe6404040, |
| | | 0xe6d0d83a, |
| | | 0x3a, |
| | | 0xe5404040, |
| | | 0xe5ceda39, |
| | | 0x39, |
| | | 0xe3404040, |
| | | 0xe3ccdd39, |
| | | 0x39, |
| | | 0xe2404040, |
| | | 0xe2cbdf38, |
| | | 0x38, |
| | | 0xe1404040, |
| | | 0xe1c9e137, |
| | | 0x37, |
| | | 0xe0404040, |
| | | 0xe0c8e437, |
| | | 0x37, |
| | | 0xde404040, |
| | | 0xdec7e636, |
| | | 0x36, |
| | | 0xdd404040, |
| | | 0xddc6e935, |
| | | 0x35, |
| | | 0xdc404040, |
| | | 0xdcc5eb34, |
| | | 0x34, |
| | | 0xdb404040, |
| | | 0xdbc4ed34, |
| | | 0x34, |
| | | 0xda404040, |
| | | 0xdac3f033, |
| | | 0x33, |
| | | 0xd9404040, |
| | | 0xd9c3f232, |
| | | 0x32, |
| | | 0xd9404040, |
| | | 0xd9c2f432, |
| | | 0x32, |
| | | 0xd8404040, |
| | | 0xd8c2f631, |
| | | 0x31, |
| | | 0xd7404040, |
| | | 0xd7c2f830, |
| | | 0x30, |
| | | 0xd6404040, |
| | | 0xd6c1fa30, |
| | | 0x30, |
| | | 0xd6404040, |
| | | 0xd6c1fc2f, |
| | | 0x2f, |
| | | 0xd5404040, |
| | | 0xd5c1fd2e, |
| | | 0x2e, |
| | | 0xd4404040, |
| | | 0xd4c1ff2e, |
| | | 0x2e, |
| | | 0xd4404040, |
| | | 0xd4c1002d, |
| | | 0x2d, |
| | | 0xd3404040, |
| | | 0xd3c1012d, |
| | | 0x2d, |
| | | 0xd3404040, |
| | | 0xd3c1022c, |
| | | 0x2c, |
| | | 0xd2404040, |
| | | 0xd2c1042c, |
| | | 0x2c, |
| | | 0xd2404040, |
| | | 0xd2c1052b, |
| | | 0x2b, |
| | | 0xd2404040, |
| | | 0xd2c1062b, |
| | | 0x2b, |
| | | 0xd1404040, |
| | | 0xd1c1072b, |
| | | 0x2b, |
| | | 0xd1404040, |
| | | 0xd1c1082a, |
| | | 0x2a, |
| | | 0xd1404040, |
| | | 0xd1c2092a, |
| | | 0x2a, |
| | | 0xd1404040, |
| | | 0xd1c2092a, |
| | | 0x2a, |
| | | 0xd0404040, |
| | | 0xd0c20a2a, |
| | | 0x2a, |
| | | 0xd0404040, |
| | | 0xd0c20b29, |
| | | 0x29, |
| | | 0xd0404040, |
| | | 0xd0c20b29, |
| | | 0x29, |
| | | 0xd0404040, |
| | | 0xd0c20b29, |
| | | 0x29, |
| | | 0xd0404040, |
| | | 0xd0c20c29, |
| | | 0x29, |
| | | 0xd0404040, |
| | | 0xd0c20c29, |
| | | 0x29, |
| | | 0xd0404040, |
| | | 0xd0c20c29, |
| | | 0x29, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 0xc2404040, |
| | | 0xc2103ef9, |
| | | 0xf9, |
| | | 0xc2404040, |
| | | 0xc2103ef9, |
| | | 0xf9, |
| | | 0xc2404040, |
| | | 0xc2103ef9, |
| | | 0xf9, |
| | | 0xc2404040, |
| | | 0xc2113ef9, |
| | | 0xf9, |
| | | 0xc2404040, |
| | | 0xc2113ef8, |
| | | 0xf8, |
| | | 0xc2404040, |
| | | 0xc2123ef8, |
| | | 0xf8, |
| | | 0xc2404040, |
| | | 0xc2123df8, |
| | | 0xf8, |
| | | 0xc2404040, |
| | | 0xc2133df7, |
| | | 0xf7, |
| | | 0xc2404040, |
| | | 0xc2143df7, |
| | | 0xf7, |
| | | 0xc2404040, |
| | | 0xc2153df6, |
| | | 0xf6, |
| | | 0xc2404040, |
| | | 0xc2163cf6, |
| | | 0xf6, |
| | | 0xc2404040, |
| | | 0xc2173cf5, |
| | | 0xf5, |
| | | 0xc2404040, |
| | | 0xc2183bf5, |
| | | 0xf5, |
| | | 0xc2404040, |
| | | 0xc21a3bf4, |
| | | 0xf4, |
| | | 0xc3404040, |
| | | 0xc31b3af3, |
| | | 0xf3, |
| | | 0xc3404040, |
| | | 0xc31d39f2, |
| | | 0xf2, |
| | | 0xc3404040, |
| | | 0xc31e38f1, |
| | | 0xf1, |
| | | 0xc3404040, |
| | | 0xc32038f1, |
| | | 0xf1, |
| | | 0xc3404040, |
| | | 0xc32237f0, |
| | | 0xf0, |
| | | 0xc4404040, |
| | | 0xc42335ef, |
| | | 0xef, |
| | | 0xc4404040, |
| | | 0xc42534ed, |
| | | 0xed, |
| | | 0xc4404040, |
| | | 0xc42733ec, |
| | | 0xec, |
| | | 0xc5404040, |
| | | 0xc52931eb, |
| | | 0xeb, |
| | | 0xc5404040, |
| | | 0xc52b2fea, |
| | | 0xea, |
| | | 0xc6404040, |
| | | 0xc62d2ee9, |
| | | 0xe9, |
| | | 0xc6404040, |
| | | 0xc62f2ce7, |
| | | 0xe7, |
| | | 0xc7404040, |
| | | 0xc73129e6, |
| | | 0xe6, |
| | | 0xc8404040, |
| | | 0xc83327e5, |
| | | 0xe5, |
| | | 0xc8404040, |
| | | 0xc83525e3, |
| | | 0xe3, |
| | | 0xc9404040, |
| | | 0xc93622e2, |
| | | 0xe2, |
| | | 0xca404040, |
| | | 0xca381fe1, |
| | | 0xe1, |
| | | 0xcb404040, |
| | | 0xcb3a1cdf, |
| | | 0xdf, |
| | | 0xcc404040, |
| | | 0xcc3b19de, |
| | | 0xde, |
| | | 0xcd404040, |
| | | 0xcd3c15dc, |
| | | 0xdc, |
| | | 0xce404040, |
| | | 0xce3d12db, |
| | | 0xdb, |
| | | 0xcf404040, |
| | | 0xcf3e0ed9, |
| | | 0xd9, |
| | | 0xd0404040, |
| | | 0xd03f0ad8, |
| | | 0xd8, |
| | | 0xd2404040, |
| | | 0xd24006d6, |
| | | 0xd6, |
| | | 0xd3404040, |
| | | 0xd34002d5, |
| | | 0xd5, |
| | | 0xd4404040, |
| | | 0xd440ffd3, |
| | | 0xd3, |
| | | 0xd6404040, |
| | | 0xd640fbd2, |
| | | 0xd2, |
| | | 0xd8404040, |
| | | 0xd83ff7d0, |
| | | 0xd0, |
| | | 0xd9404040, |
| | | 0xd93ef2cf, |
| | | 0xcf, |
| | | 0xdb404040, |
| | | 0xdb3deecd, |
| | | 0xcd, |
| | | 0xdd404040, |
| | | 0xdd3be9cc, |
| | | 0xcc, |
| | | 0xdf404040, |
| | | 0xdf3ae5cb, |
| | | 0xcb, |
| | | 0xe1404040, |
| | | 0xe137e1ca, |
| | | 0xca, |
| | | 0xe3404040, |
| | | 0xe335ddc8, |
| | | 0xc8, |
| | | 0xe5404040, |
| | | 0xe532d9c7, |
| | | 0xc7, |
| | | 0xe8404040, |
| | | 0xe82ed5c6, |
| | | 0xc6, |
| | | 0xea404040, |
| | | 0xea2bd1c5, |
| | | 0xc5, |
| | | 0xed404040, |
| | | 0xed27cec4, |
| | | 0xc4, |
| | | 0xef404040, |
| | | 0xef22cbc4, |
| | | 0xc4, |
| | | 0xf2404040, |
| | | 0xf21ec8c3, |
| | | 0xc3, |
| | | 0xf4404040, |
| | | 0xf419c6c2, |
| | | 0xc2, |
| | | 0xf7404040, |
| | | 0xf714c4c2, |
| | | 0xc2, |
| | | 0xfa404040, |
| | | 0xfa0ec3c1, |
| | | 0xc1, |
| | | 0xfd404040, |
| | | 0xfd09c2c1, |
| | | 0xc1, |
| | | 0xff404040, |
| | | 0xff03c1c1, |
| | | 0xc1, |
| | | 0x1404040, |
| | | 0x1ffc1c1, |
| | | 0xc1, |
| | | 0x4404040, |
| | | 0x4f9c2c1, |
| | | 0xc1, |
| | | 0x7404040, |
| | | 0x7f3c3c1, |
| | | 0xc1, |
| | | 0xa404040, |
| | | 0xaedc4c2, |
| | | 0xc2, |
| | | 0xd404040, |
| | | 0xde8c6c2, |
| | | 0xc2, |
| | | 0x10404040, |
| | | 0x10e2c9c3, |
| | | 0xc3, |
| | | 0x13404040, |
| | | 0x13ddccc4, |
| | | 0xc4, |
| | | 0x16404040, |
| | | 0x16d8d0c5, |
| | | 0xc5, |
| | | 0x19404040, |
| | | 0x19d4d4c6, |
| | | 0xc6, |
| | | 0x1b404040, |
| | | 0x1bd0d8c7, |
| | | 0xc7, |
| | | 0x1e404040, |
| | | 0x1eccddc9, |
| | | 0xc9, |
| | | 0x21404040, |
| | | 0x21c9e3ca, |
| | | 0xca, |
| | | 0x24404040, |
| | | 0x24c6e9cc, |
| | | 0xcc, |
| | | 0x26404040, |
| | | 0x26c4efce, |
| | | 0xce, |
| | | 0x29404040, |
| | | 0x29c2f5d0, |
| | | 0xd0, |
| | | 0x2b404040, |
| | | 0x2bc1fbd2, |
| | | 0xd2, |
| | | 0x2e404040, |
| | | 0x2ec101d4, |
| | | 0xd4, |
| | | 0x30404040, |
| | | 0x30c107d6, |
| | | 0xd6, |
| | | 0x32404040, |
| | | 0x32c20ed9, |
| | | 0xd9, |
| | | 0x34404040, |
| | | 0x34c414db, |
| | | 0xdb, |
| | | 0x36404040, |
| | | 0x36c71ade, |
| | | 0xde, |
| | | 0x37404040, |
| | | 0x37ca20e1, |
| | | 0xe1, |
| | | 0x39404040, |
| | | 0x39cd26e4, |
| | | 0xe4, |
| | | 0x3a404040, |
| | | 0x3ad12be7, |
| | | 0xe7, |
| | | 0x3c404040, |
| | | 0x3cd630ea, |
| | | 0xea, |
| | | 0x3d404040, |
| | | 0x3ddb34ed, |
| | | 0xed, |
| | | 0x3e404040, |
| | | 0x3ee137f0, |
| | | 0xf0, |
| | | 0x3f404040, |
| | | 0x3fe73af4, |
| | | 0xf4, |
| | | 0x3f404040, |
| | | 0x3fed3df7, |
| | | 0xf7, |
| | | 0x40404040, |
| | | 0x40f43ffa, |
| | | 0xfa, |
| | | 0x40404040, |
| | | 0x40fa40fe, |
| | | 0xfe, |
| | | 0x40404040, |
| | | 0x40004000, |
| | | 0x0, |
| | | 0x40404040, |
| | | 0x40074003, |
| | | 0x3, |
| | | 0x40404040, |
| | | 0x400d3f07, |
| | | 0x7, |
| | | 0x3f404040, |
| | | 0x3f143d0a, |
| | | 0xa, |
| | | 0x3f404040, |
| | | 0x3f1a3a0d, |
| | | 0xd, |
| | | 0x3e404040, |
| | | 0x3e203711, |
| | | 0x11, |
| | | 0x3d404040, |
| | | 0x3d263414, |
| | | 0x14, |
| | | 0x3c404040, |
| | | 0x3c2b3017, |
| | | 0x17, |
| | | 0x3a404040, |
| | | 0x3a302b1a, |
| | | 0x1a, |
| | | 0x39404040, |
| | | 0x3934261d, |
| | | 0x1d, |
| | | 0x37404040, |
| | | 0x37372020, |
| | | 0x20, |
| | | 0x36404040, |
| | | 0x363a1a23, |
| | | 0x23, |
| | | 0x34404040, |
| | | 0x343d1426, |
| | | 0x26, |
| | | 0x32404040, |
| | | 0x323f0e28, |
| | | 0x28, |
| | | 0x30404040, |
| | | 0x3040072b, |
| | | 0x2b, |
| | | 0x2e404040, |
| | | 0x2e40012d, |
| | | 0x2d, |
| | | 0x2b404040, |
| | | 0x2b40fb2f, |
| | | 0x2f, |
| | | 0x29404040, |
| | | 0x293ff531, |
| | | 0x31, |
| | | 0x26404040, |
| | | 0x263def33, |
| | | 0x33, |
| | | 0x24404040, |
| | | 0x243be935, |
| | | 0x35, |
| | | 0x21404040, |
| | | 0x2138e337, |
| | | 0x37, |
| | | 0x1e404040, |
| | | 0x1e35dd38, |
| | | 0x38, |
| | | 0x1b404040, |
| | | 0x1b31d83a, |
| | | 0x3a, |
| | | 0x19404040, |
| | | 0x192dd43b, |
| | | 0x3b, |
| | | 0x16404040, |
| | | 0x1629d03c, |
| | | 0x3c, |
| | | 0x13404040, |
| | | 0x1324cc3d, |
| | | 0x3d, |
| | | 0x10404040, |
| | | 0x101fc93e, |
| | | 0x3e, |
| | | 0xd404040, |
| | | 0xd19c63f, |
| | | 0x3f, |
| | | 0xa404040, |
| | | 0xa14c43f, |
| | | 0x3f, |
| | | 0x7404040, |
| | | 0x70ec340, |
| | | 0x40, |
| | | 0x4404040, |
| | | 0x408c240, |
| | | 0x40, |
| | | 0x1404040, |
| | | 0x102c140, |
| | | 0x40, |
| | | 0xff404040, |
| | | 0xfffec140, |
| | | 0x40, |
| | | 0xfd404040, |
| | | 0xfdf8c240, |
| | | 0x40, |
| | | 0xfa404040, |
| | | 0xfaf3c340, |
| | | 0x40, |
| | | 0xf7404040, |
| | | 0xf7edc43f, |
| | | 0x3f, |
| | | 0xf4404040, |
| | | 0xf4e8c63f, |
| | | 0x3f, |
| | | 0xf2404040, |
| | | 0xf2e3c83e, |
| | | 0x3e, |
| | | 0xef404040, |
| | | 0xefdfcb3d, |
| | | 0x3d, |
| | | 0xed404040, |
| | | 0xeddace3d, |
| | | 0x3d, |
| | | 0xea404040, |
| | | 0xead6d13c, |
| | | 0x3c, |
| | | 0xe8404040, |
| | | 0xe8d3d53b, |
| | | 0x3b, |
| | | 0xe5404040, |
| | | 0xe5cfd93a, |
| | | 0x3a, |
| | | 0xe3404040, |
| | | 0xe3ccdd39, |
| | | 0x39, |
| | | 0xe1404040, |
| | | 0xe1cae137, |
| | | 0x37, |
| | | 0xdf404040, |
| | | 0xdfc7e536, |
| | | 0x36, |
| | | 0xdd404040, |
| | | 0xddc6e935, |
| | | 0x35, |
| | | 0xdb404040, |
| | | 0xdbc4ee34, |
| | | 0x34, |
| | | 0xd9404040, |
| | | 0xd9c3f232, |
| | | 0x32, |
| | | 0xd8404040, |
| | | 0xd8c2f731, |
| | | 0x31, |
| | | 0xd6404040, |
| | | 0xd6c1fb2f, |
| | | 0x2f, |
| | | 0xd4404040, |
| | | 0xd4c1ff2e, |
| | | 0x2e, |
| | | 0xd3404040, |
| | | 0xd3c1022c, |
| | | 0x2c, |
| | | 0xd2404040, |
| | | 0xd2c1062b, |
| | | 0x2b, |
| | | 0xd0404040, |
| | | 0xd0c20a29, |
| | | 0x29, |
| | | 0xcf404040, |
| | | 0xcfc30e28, |
| | | 0x28, |
| | | 0xce404040, |
| | | 0xcec41226, |
| | | 0x26, |
| | | 0xcd404040, |
| | | 0xcdc51525, |
| | | 0x25, |
| | | 0xcc404040, |
| | | 0xccc61923, |
| | | 0x23, |
| | | 0xcb404040, |
| | | 0xcbc71c22, |
| | | 0x22, |
| | | 0xca404040, |
| | | 0xcac91f20, |
| | | 0x20, |
| | | 0xc9404040, |
| | | 0xc9cb221f, |
| | | 0x1f, |
| | | 0xc8404040, |
| | | 0xc8cc251e, |
| | | 0x1e, |
| | | 0xc8404040, |
| | | 0xc8ce271c, |
| | | 0x1c, |
| | | 0xc7404040, |
| | | 0xc7d0291b, |
| | | 0x1b, |
| | | 0xc6404040, |
| | | 0xc6d22c1a, |
| | | 0x1a, |
| | | 0xc6404040, |
| | | 0xc6d42e18, |
| | | 0x18, |
| | | 0xc5404040, |
| | | 0xc5d62f17, |
| | | 0x17, |
| | | 0xc5404040, |
| | | 0xc5d83116, |
| | | 0x16, |
| | | 0xc4404040, |
| | | 0xc4da3315, |
| | | 0x15, |
| | | 0xc4404040, |
| | | 0xc4dc3414, |
| | | 0x14, |
| | | 0xc4404040, |
| | | 0xc4de3512, |
| | | 0x12, |
| | | 0xc3404040, |
| | | 0xc3df3711, |
| | | 0x11, |
| | | 0xc3404040, |
| | | 0xc3e13810, |
| | | 0x10, |
| | | 0xc3404040, |
| | | 0xc3e33810, |
| | | 0x10, |
| | | 0xc3404040, |
| | | 0xc3e4390f, |
| | | 0xf, |
| | | 0xc3404040, |
| | | 0xc3e63a0e, |
| | | 0xe, |
| | | 0xc2404040, |
| | | 0xc2e73b0d, |
| | | 0xd, |
| | | 0xc2404040, |
| | | 0xc2e93b0c, |
| | | 0xc, |
| | | 0xc2404040, |
| | | 0xc2ea3c0c, |
| | | 0xc, |
| | | 0xc2404040, |
| | | 0xc2eb3c0b, |
| | | 0xb, |
| | | 0xc2404040, |
| | | 0xc2ec3d0b, |
| | | 0xb, |
| | | 0xc2404040, |
| | | 0xc2ed3d0a, |
| | | 0xa, |
| | | 0xc2404040, |
| | | 0xc2ee3d0a, |
| | | 0xa, |
| | | 0xc2404040, |
| | | 0xc2ef3d09, |
| | | 0x9, |
| | | 0xc2404040, |
| | | 0xc2ef3e09, |
| | | 0x9, |
| | | 0xc2404040, |
| | | 0xc2f03e09, |
| | | 0x9, |
| | | 0xc2404040, |
| | | 0xc2f03e08, |
| | | 0x8, |
| | | 0xc2404040, |
| | | 0xc2f13e08, |
| | | 0x8, |
| | | 0xc2404040, |
| | | 0xc2f13e08, |
| | | 0x8, |
| | | 0xc2404040, |
| | | 0xc2f13e08, |
| | | 0x8, |
keil/include/components/algo/src/steering_vector/cmp_svec_hex_ch5.txt
keil/include/components/algo/src/steering_vector/cmp_svec_hex_ch9.txt
keil/include/components/algo/src/steering_vector/cmp_svec_hex_square4ant_ch5.txt
keil/include/components/algo/src/steering_vector/cmp_svec_hex_square4ant_ch9.txt
keil/include/components/app/inc/aoa.h
keil/include/components/app/inc/aoa_task.h
keil/include/components/app/inc/app.h
keil/include/components/app/inc/app_task.h
keil/include/components/app/inc/ranging_ccc.h
keil/include/components/app/inc/ranging_ccc_task.h
keil/include/components/app/inc/ranging_custom.h
keil/include/components/app/inc/ranging_custom_task.h
keil/include/components/app/inc/ranging_fira.h
keil/include/components/app/inc/ranging_fira_task.h
keil/include/components/app/inc/ranging_simple.h
keil/include/components/app/inc/ranging_simple_task.h
keil/include/components/app/inc/ranging_ss_twr.h
keil/include/components/app/inc/ranging_ss_twr_task.h
keil/include/components/app/inc/uci_tl_task.h
keil/include/components/app/inc/ul_tdoa.h
keil/include/components/app/inc/ul_tdoa_task.h
keil/include/components/app/inc/uwb_audio.h
keil/include/components/app/inc/uwb_audio_task.h
keil/include/components/app/inc/uwb_data_transfer.h
keil/include/components/app/inc/uwb_data_transfer_task.h
keil/include/components/app/inc/uwb_radar.h
keil/include/components/app/inc/uwb_radar_task.h
keil/include/components/app/inc/uwb_test.h
keil/include/components/app/inc/uwb_test_task.h
keil/include/components/app/inc/uwb_trx.h
keil/include/components/app/inc/uwb_trx_task.h
keil/include/components/app/src/aoa.c
keil/include/components/app/src/aoa_task.c
keil/include/components/app/src/app.c
keil/include/components/app/src/app_task.c
keil/include/components/app/src/ranging_ccc.c
keil/include/components/app/src/ranging_ccc_task.c
keil/include/components/app/src/ranging_custom.c
keil/include/components/app/src/ranging_custom_task.c
keil/include/components/app/src/ranging_fira.c
keil/include/components/app/src/ranging_fira_task.c
keil/include/components/app/src/ranging_simple.c
keil/include/components/app/src/ranging_simple_task.c
keil/include/components/app/src/ranging_ss_twr.c
keil/include/components/app/src/ranging_ss_twr_task.c
keil/include/components/app/src/uci_tl_task.c
keil/include/components/app/src/ul_tdoa.c
keil/include/components/app/src/ul_tdoa_task.c
keil/include/components/app/src/uwb_audio.c
keil/include/components/app/src/uwb_audio_task.c
keil/include/components/app/src/uwb_data_transfer.c
keil/include/components/app/src/uwb_data_transfer_task.c
keil/include/components/app/src/uwb_radar.c
keil/include/components/app/src/uwb_radar_task.c
keil/include/components/app/src/uwb_test.c
keil/include/components/app/src/uwb_test_task.c
keil/include/components/app/src/uwb_trx.c
keil/include/components/app/src/uwb_trx_task.c
keil/include/components/crc/crc.c
keil/include/components/crc/crc.h
keil/include/components/libc/libc.c
keil/include/components/libc/libc_rom.h
keil/include/components/se/inc/T1.h
keil/include/components/se/inc/phdriver.h
keil/include/components/se/inc/se_api.h
keil/include/components/se/inc/se_common.h
keil/include/components/se/inc/uart_in_spi.h
keil/include/components/se/src/T1.c
keil/include/components/se/src/phdriver.c
keil/include/components/se/src/se_api.c
keil/include/components/se/src/t1_split.c
keil/include/components/se/src/tm_main.c
keil/include/components/se/src/uart_in_spi.c
keil/include/components/uci/inc/uci_tl_comm.h
keil/include/components/uci/src/uci_spi_driver.c
keil/include/components/uci/src/uci_uart_driver.c
keil/include/components/utilities/lzma/7zTypes.h
keil/include/components/utilities/lzma/Compiler.h
keil/include/components/utilities/lzma/CpuArch.c
keil/include/components/utilities/lzma/CpuArch.h
keil/include/components/utilities/lzma/LzFind.c
keil/include/components/utilities/lzma/LzFind.h
keil/include/components/utilities/lzma/LzHash.h
keil/include/components/utilities/lzma/LzmaDec.c
keil/include/components/utilities/lzma/LzmaDec.h
keil/include/components/utilities/lzma/LzmaEnc.c
keil/include/components/utilities/lzma/LzmaEnc.h
keil/include/components/utilities/lzma/Precomp.h
keil/include/components/uwb/inc/lib_ccc.h
keil/include/components/uwb/inc/lib_fira.h
keil/include/components/uwb/inc/uwb_api.h
keil/include/components/uwb/inc/uwb_contention.h
keil/include/components/uwb/inc/uwb_data.h
keil/include/components/uwb/inc/uwb_fira_message.h
keil/include/components/uwb/inc/uwb_hybrid.h
keil/include/components/uwb/inc/uwb_link_layer.h
keil/include/components/uwb/inc/uwb_twr.h
keil/include/components/wsf/include/platform/pal_flash.h
keil/include/components/wsf/include/platform/pal_sys.h
keil/include/components/wsf/include/platform/pal_types.h
keil/include/components/wsf/include/platform/pal_uart.h
keil/include/components/wsf/include/wsf_assert.h
keil/include/components/wsf/include/wsf_buf.h
keil/include/components/wsf/include/wsf_bufio.h
keil/include/components/wsf/include/wsf_cs.h
keil/include/components/wsf/include/wsf_heap.h
keil/include/components/wsf/include/wsf_math.h
keil/include/components/wsf/include/wsf_msg.h
keil/include/components/wsf/include/wsf_nvm.h
keil/include/components/wsf/include/wsf_os.h
keil/include/components/wsf/include/wsf_queue.h
keil/include/components/wsf/include/wsf_timer.h
keil/include/components/wsf/include/wsf_trace.h
keil/include/components/wsf/include/wsf_types.h
keil/include/components/wsf/sources/platform/pal_flash.c
keil/include/components/wsf/sources/platform/pal_sys.c
keil/include/components/wsf/sources/platform/pal_uart.c
keil/include/components/wsf/sources/port/baremetal/wsf_assert.c
keil/include/components/wsf/sources/port/baremetal/wsf_buf.c
keil/include/components/wsf/sources/port/baremetal/wsf_bufio.c
keil/include/components/wsf/sources/port/baremetal/wsf_heap.c
keil/include/components/wsf/sources/port/baremetal/wsf_msg.c
keil/include/components/wsf/sources/port/baremetal/wsf_nvm.c
keil/include/components/wsf/sources/port/baremetal/wsf_os.c
keil/include/components/wsf/sources/port/baremetal/wsf_queue.c
keil/include/components/wsf/sources/port/baremetal/wsf_timer.c
keil/include/components/wsf/sources/port/baremetal/wsf_trace.c
keil/include/devices/MK800X/Include/MK800X.h
keil/include/devices/MK800X/Include/system_MK800X.h
keil/include/devices/MK800X/Source/ARM/MK800X_ac6.sct
keil/include/devices/MK800X/Source/ARM/MK800X_ac6_copy.sct
keil/include/devices/MK800X/Source/GCC/gcc_arm.ld
keil/include/devices/MK800X/Source/IAR/MK800X.icf
keil/include/devices/MK800X/Source/startup_MK800X.c
keil/include/devices/MK800X/Source/system_MK800X.c
keil/include/drivers/Usart.c
keil/include/drivers/Usart.h
keil/include/drivers/Usart1.c
keil/include/drivers/Usart1.h
keil/include/drivers/aes.c
keil/include/drivers/aes.h
keil/include/drivers/global_param.c
keil/include/drivers/global_param.h
keil/include/drivers/menu.c
keil/include/drivers/menu.h
keil/include/drivers/mk_acmp.c
keil/include/drivers/mk_acmp.h
keil/include/drivers/mk_adc.c
keil/include/drivers/mk_adc.h
keil/include/drivers/mk_aes.c
keil/include/drivers/mk_aes.h
keil/include/drivers/mk_calib.c
keil/include/drivers/mk_calib.h
keil/include/drivers/mk_clock.c
keil/include/drivers/mk_clock.h
keil/include/drivers/mk_common.h
keil/include/drivers/mk_dma.c
keil/include/drivers/mk_dma.h
keil/include/drivers/mk_dual_timer.c
keil/include/drivers/mk_dual_timer.h
keil/include/drivers/mk_efuse.c
keil/include/drivers/mk_efuse.h
keil/include/drivers/mk_flash.c
keil/include/drivers/mk_flash.h
keil/include/drivers/mk_gpio.c
keil/include/drivers/mk_gpio.h
keil/include/drivers/mk_i2c.c
keil/include/drivers/mk_i2c.h
keil/include/drivers/mk_io.c
keil/include/drivers/mk_io.h
keil/include/drivers/mk_lsp.h
keil/include/drivers/mk_mac.h
keil/include/drivers/mk_misc.c
keil/include/drivers/mk_misc.h
keil/include/drivers/mk_phy.h
keil/include/drivers/mk_power.c
keil/include/drivers/mk_power.h
keil/include/drivers/mk_pwm.c
keil/include/drivers/mk_pwm.h
keil/include/drivers/mk_radar.c
keil/include/drivers/mk_radar.h
keil/include/drivers/mk_reset.c
keil/include/drivers/mk_reset.h
keil/include/drivers/mk_rtc.c
keil/include/drivers/mk_rtc.h
keil/include/drivers/mk_sbl.c
keil/include/drivers/mk_sbl.h
keil/include/drivers/mk_sleep_timer.c
keil/include/drivers/mk_sleep_timer.h
keil/include/drivers/mk_spi.c
keil/include/drivers/mk_spi.h
keil/include/drivers/mk_timer.c
keil/include/drivers/mk_timer.h
keil/include/drivers/mk_trace.c
keil/include/drivers/mk_trace.h
keil/include/drivers/mk_trng.c
keil/include/drivers/mk_trng.h
keil/include/drivers/mk_uart.c
keil/include/drivers/mk_uart.h
keil/include/drivers/mk_uwb.c
keil/include/drivers/mk_uwb.h
keil/include/drivers/mk_wdt.c
keil/include/drivers/mk_wdt.h
keil/include/drivers/serial_at_cmd_app.c
keil/include/drivers/serial_at_cmd_app.h
keil/include/drivers/ymodem.c
keil/include/drivers/ymodem.h
keil/include/main/main.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init_yuan.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts_yuan.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp_yuan.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts.c
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts_yuan.c
keil/include/src/uwb_examples/uwb_simple_example/simple_rx/simple_rx - yuan.c
keil/include/src/uwb_examples/uwb_simple_example/simple_rx/simple_rx.c
keil/include/src/uwb_examples/uwb_simple_example/simple_tx/simple_tx.c
keil/include/src/uwb_examples/uwb_simple_example/simple_tx/simple_tx_yuan.c
keil/simple_ss_twr_dw_init.c
keil/simple_ss_twr_dw_resp.c
keil/uwb_simple_example.uvguix.xookk
keil/uwb_simple_example.uvmpw
keil/uwb_simple_example.uvmpw.uvgui.xookk
keil/uwb_simple_example.uvoptx
keil/uwb_simple_example.uvprojx
keil/新建 文本文档.txt
pin_config.c
user_config.h |