bugfix
This commit is contained in:
7
local.mk.example
Normal file
7
local.mk.example
Normal file
@ -0,0 +1,7 @@
|
||||
# Local Blackfin toolchain override for this project.
|
||||
#
|
||||
# Option 1: point to the toolchain root that contains bin/bfin-elf-gcc
|
||||
# BFIN_TOOLCHAIN := /opt/analog/bfin-elf
|
||||
#
|
||||
# Option 2: provide the full compiler prefix directly
|
||||
# CROSS_COMPILE := /opt/analog/bfin-elf/bin/bfin-elf-
|
||||
66
makefile
66
makefile
@ -2,6 +2,8 @@ BUILDDIR = build
|
||||
|
||||
CONFIG ?= release
|
||||
|
||||
-include local.mk
|
||||
|
||||
CONFIGDIR = $(BUILDDIR)/$(CONFIG)
|
||||
|
||||
OBJDIR = $(CONFIGDIR)/objs
|
||||
@ -11,12 +13,47 @@ LSTDIR = $(CONFIGDIR)/lst
|
||||
DEPDIR = $(CONFIGDIR)/.dep
|
||||
|
||||
|
||||
BFIN_TOOLCHAIN ?=
|
||||
CROSS_COMPILE ?=
|
||||
|
||||
ifeq ($(strip $(CROSS_COMPILE)),)
|
||||
ifneq ($(strip $(BFIN_TOOLCHAIN)),)
|
||||
ifneq ($(wildcard $(BFIN_TOOLCHAIN)/bin/bfin-elf-gcc),)
|
||||
TRGT = $(BFIN_TOOLCHAIN)/bin/bfin-elf-
|
||||
else ifneq ($(wildcard $(BFIN_TOOLCHAIN)/bfin-elf-gcc),)
|
||||
TRGT = $(BFIN_TOOLCHAIN)/bfin-elf-
|
||||
else
|
||||
TRGT = $(BFIN_TOOLCHAIN)/bin/bfin-elf-
|
||||
endif
|
||||
else
|
||||
TRGT = bfin-elf-
|
||||
endif
|
||||
else
|
||||
TRGT = $(CROSS_COMPILE)
|
||||
endif
|
||||
|
||||
CC = $(TRGT)gcc
|
||||
CP = $(TRGT)objcopy
|
||||
AS = $(TRGT)gcc -x assembler-with-cpp
|
||||
LDR = $(TRGT)ldr
|
||||
|
||||
TOOLCHAIN_SKIP_CHECK_GOALS = clean help print-toolchain
|
||||
TOOLCHAIN_CHECK = 1
|
||||
ifneq ($(strip $(MAKECMDGOALS)),)
|
||||
ifeq ($(strip $(filter-out $(TOOLCHAIN_SKIP_CHECK_GOALS),$(MAKECMDGOALS))),)
|
||||
TOOLCHAIN_CHECK = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(TOOLCHAIN_CHECK),1)
|
||||
ifeq ($(strip $(shell command -v $(CC) 2>/dev/null)),)
|
||||
$(error Blackfin GCC toolchain not found: '$(CC)'. Set BFIN_TOOLCHAIN=/abs/path/to/bfin-elf or CROSS_COMPILE=/abs/path/to/bin/bfin-elf-)
|
||||
endif
|
||||
ifeq ($(strip $(shell command -v $(LDR) 2>/dev/null)),)
|
||||
$(error Blackfin loader tool not found: '$(LDR)'. Set BFIN_TOOLCHAIN=/abs/path/to/bfin-elf or CROSS_COMPILE=/abs/path/to/bin/bfin-elf-)
|
||||
endif
|
||||
endif
|
||||
|
||||
LDRFLAGS = -T BF527
|
||||
|
||||
|
||||
@ -131,11 +168,26 @@ CPFLAGS += -MD -MP -MF $(DEPDIR)/$(@F).d
|
||||
|
||||
#bfin-elf-gcc $(CPFLAGS) -I . $(INCDIR) $(LDFLAGS) $(SRC) -o bf-test.elf
|
||||
|
||||
.PHONY: all clean prj dirs
|
||||
.PHONY: all clean prj dirs help print-toolchain
|
||||
.SECONDEXPANSION:
|
||||
|
||||
all: dirs $(RESULT_FILES)
|
||||
|
||||
help:
|
||||
@echo "Blackfin firmware build"
|
||||
@echo " make"
|
||||
@echo " make CONFIG=debug"
|
||||
@echo " make BFIN_TOOLCHAIN=/abs/path/to/bfin-elf"
|
||||
@echo " make CROSS_COMPILE=/abs/path/to/bin/bfin-elf-"
|
||||
@echo " make print-toolchain"
|
||||
|
||||
print-toolchain:
|
||||
@echo "TRGT=$(TRGT)"
|
||||
@echo "CC=$(CC)"
|
||||
@echo "AS=$(AS)"
|
||||
@echo "CP=$(CP)"
|
||||
@echo "LDR=$(LDR)"
|
||||
|
||||
|
||||
$(OBJS) : $$(filter %/$$(basename $$(notdir $$@)).c, $$(SRC)) ##$$(patsubst %.o,%.c, $$@)
|
||||
$(CC) -c $(CPFLAGS) -I . $(INCDIR) $< -o $@
|
||||
@ -154,22 +206,22 @@ dirs: $(BUILDDIR) $(CONFIGDIR) $(DEPDIR) $(OBJDIR) $(LSTDIR) $(BINDIR)
|
||||
|
||||
|
||||
$(BINDIR):
|
||||
mkdir $(BINDIR)
|
||||
mkdir -p $(BINDIR)
|
||||
|
||||
$(LSTDIR):
|
||||
mkdir $(LSTDIR)
|
||||
mkdir -p $(LSTDIR)
|
||||
|
||||
$(OBJDIR):
|
||||
mkdir $(OBJDIR)
|
||||
mkdir -p $(OBJDIR)
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir $(BUILDDIR)
|
||||
mkdir -p $(BUILDDIR)
|
||||
|
||||
$(CONFIGDIR):
|
||||
mkdir $(CONFIGDIR)
|
||||
mkdir -p $(CONFIGDIR)
|
||||
|
||||
$(DEPDIR):
|
||||
mkdir $(DEPDIR)
|
||||
mkdir -p $(DEPDIR)
|
||||
|
||||
clean:
|
||||
-rm -fR $(CONFIGDIR)
|
||||
|
||||
20
src/l502_fft_config.h
Normal file
20
src/l502_fft_config.h
Normal file
@ -0,0 +1,20 @@
|
||||
#ifndef L502_FFT_CONFIG_H_
|
||||
#define L502_FFT_CONFIG_H_
|
||||
|
||||
#ifndef FP_acc
|
||||
#define FP_acc 1000
|
||||
#endif
|
||||
|
||||
#ifndef FFT_INP_DATA_L
|
||||
#define FFT_INP_DATA_L (1 << 9)
|
||||
#endif
|
||||
|
||||
#ifndef DATA_L
|
||||
#define DATA_L FFT_INP_DATA_L
|
||||
#endif
|
||||
|
||||
#ifndef TWIDDLE_L
|
||||
#define TWIDDLE_L (DATA_L / 2)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -48,7 +48,7 @@ volatile uint32_t TX_buff_shadow[TX_BUFF_SIZE] __attribute__((section(".sdram_no
|
||||
//volatile uint32_t RAW_data_buff[RAW_DATA_BUFF_SIZE] __attribute__((section(".sdram_noinit")));
|
||||
volatile uint32_t AVG_buff[AVG_BUFF_SIZE] __attribute__((section(".sdram_noinit")));
|
||||
//volatile uint32_t AVG_buff_B[AVG_BUFF_SIZE] __attribute__((section(".sdram_noinit")));
|
||||
volatile uint64_t FFT_buff[FFT_BUFF_SIZE] __attribute__((section(".sdram_noinit")));
|
||||
volatile int64_t FFT_buff[FFT_BUFF_SIZE] __attribute__((section(".sdram_noinit")));
|
||||
|
||||
|
||||
|
||||
|
||||
@ -87,10 +87,10 @@ extern volatile uint32_t TX_buff_shadow[]; //size: TX_BUFF_SIZE
|
||||
//extern volatile uint32_t RAW_data_buff[]; //size: RAW_DATA_BUFF_SIZE
|
||||
extern volatile uint32_t AVG_buff[]; //size: AVG_BUFF_SIZE
|
||||
//extern volatile uint32_t AVG_buff_B[]; //size: AVG_BUFF_SIZE
|
||||
extern volatile uint64_t FFT_buff[]; //size: FFT_BUFF_SIZE
|
||||
extern volatile int64_t FFT_buff[]; //size: FFT_BUFF_SIZE
|
||||
|
||||
extern volatile int64_t twiddle_re[]; //size: TWIDDLE_L
|
||||
extern volatile int64_t twiddle_im[]; //size: TWIDDLE_L
|
||||
extern int64_t twiddle_re[]; //size: TWIDDLE_L
|
||||
extern int64_t twiddle_im[]; //size: TWIDDLE_L
|
||||
|
||||
|
||||
volatile uint32_t TX_marker[10] = {0xFE00000F,0xFE0000F0, 0xFE000F00, 0xFE00F000, 0xFE0F0000,0xFEF00000, 0xFE0F0000,0xFE00F000, 0xFE000F00, 0xFE0000F0};
|
||||
@ -173,7 +173,7 @@ static int64_t isqrt64(int64_t x) {
|
||||
|
||||
|
||||
|
||||
uint32_t dataprocessor(uint32_t* AVG_buff, uint32_t AVG_buff_I_max, uint64_t* FFT_buff, uint8_t mode){
|
||||
uint32_t dataprocessor(uint32_t* AVG_buff, uint32_t AVG_buff_I_max, int64_t* FFT_buff, uint8_t mode){
|
||||
uint32_t FFT_buff_I = 0;
|
||||
if (mode == TRANSPARENT){
|
||||
uint32_t i = 0;
|
||||
@ -182,7 +182,7 @@ uint32_t dataprocessor(uint32_t* AVG_buff, uint32_t AVG_buff_I_max, uint64_t* FF
|
||||
}
|
||||
}else if (mode == FFT){
|
||||
//uint32_t i = 0;
|
||||
//void FFT_fp(int64_t* inp, uint32_t inp_L, int64_t* buf)
|
||||
//void FFT_fp(const uint32_t* inp, uint32_t inp_L, int64_t* buf)
|
||||
//for (uint32_t i = 0; i < FFT_INP_DATA_L; ++i){
|
||||
//AVG_buff[i] = FP_acc;
|
||||
//}
|
||||
|
||||
@ -10,23 +10,14 @@
|
||||
пользовательских команд.
|
||||
******************************************************************************/
|
||||
#include "l502_cmd.h"
|
||||
#include "l502_fft_config.h"
|
||||
#ifndef L502_USER_PROCESS_H_
|
||||
|
||||
#define FP_acc 1000
|
||||
#define L502_USER_PROCESS_H_
|
||||
|
||||
#ifndef FFT_FP_EXTERNAL_TWIDDLES
|
||||
#define FFT_FP_EXTERNAL_TWIDDLES 1
|
||||
#endif
|
||||
#ifndef FFT_INP_DATA_L
|
||||
#define FFT_INP_DATA_L (1 << 9)
|
||||
#endif
|
||||
#ifndef DATA_L
|
||||
#define DATA_L FFT_INP_DATA_L
|
||||
#endif
|
||||
#ifndef TWIDDLE_L
|
||||
#define TWIDDLE_L (DATA_L / 2)
|
||||
#endif
|
||||
|
||||
/* остальной код заголовка */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user