mirror of https://github.com/g4klx/MMDVM.git
Move and delete files in readiness.
This commit is contained in:
parent
c3246dbcb7
commit
9e7f1040f8
|
@ -1,6 +0,0 @@
|
||||||
[submodule "STM32F4XX_Lib"]
|
|
||||||
path = STM32F4XX_Lib
|
|
||||||
url = https://github.com/juribeparada/STM32F4XX_Lib.git
|
|
||||||
[submodule "STM32F7XX_Lib"]
|
|
||||||
path = STM32F7XX_Lib
|
|
||||||
url = https://github.com/juribeparada/STM32F7XX_Lib.git
|
|
125
BUILD.txt
125
BUILD.txt
|
@ -1,125 +0,0 @@
|
||||||
In order to build MMDVM, you need to tell the Arduino GUI to link with the
|
|
||||||
CMSIS DSP library, which is doesn't do by default.
|
|
||||||
|
|
||||||
My development is on Windows and so I can vouch for the following instructions.
|
|
||||||
|
|
||||||
For Arduino 1.6.3 with SAM 1.6.4
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
1. Go to the where the platform.txt file is located. On my Windows machine it's
|
|
||||||
in:
|
|
||||||
|
|
||||||
C:\Users\Jonathan\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4
|
|
||||||
|
|
||||||
On Mac OS X it's located in:
|
|
||||||
|
|
||||||
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam
|
|
||||||
Or
|
|
||||||
~/Library/Arduino15/packages/arduino/hardware/sam/1.6.6
|
|
||||||
|
|
||||||
2. You'll need to open the file in a text editor and find the line:
|
|
||||||
|
|
||||||
## Combine gc-sections, archives, and objects
|
|
||||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
In my version it's line 73.
|
|
||||||
|
|
||||||
3. Modify it to read as follows:
|
|
||||||
|
|
||||||
## Combine gc-sections, archives, and objects
|
|
||||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
The change is near the end, and is the addition of:
|
|
||||||
|
|
||||||
"{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib"
|
|
||||||
|
|
||||||
Which is the CMSIS AMR3 DSP library for little-endian operation.
|
|
||||||
|
|
||||||
4. Save the file and start up the Arduino GUI and build MMDVM.
|
|
||||||
|
|
||||||
I would like to get instructions for doing the same on a Linux platform. As a
|
|
||||||
starter find the relevent platform.txt and try adding:
|
|
||||||
|
|
||||||
"{build.system.path}/CMSIS/CMSIS/Lib/ARM/libarm_cortexM3l_math.a"
|
|
||||||
|
|
||||||
or maybe:
|
|
||||||
|
|
||||||
"{build.variant.path}/libarm_cortexM3l_math.a"
|
|
||||||
|
|
||||||
Likely on Linux
|
|
||||||
|
|
||||||
"{build.system.path}/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a"
|
|
||||||
|
|
||||||
As with Arduino 1.6.7 with SAM 1.6.6, see below.
|
|
||||||
|
|
||||||
|
|
||||||
For Arduino 1.6.7 with SAM 1.6.6
|
|
||||||
--------------------------------
|
|
||||||
(checked OK on Arduino 1.6.11 and SAM 1.6.9)
|
|
||||||
|
|
||||||
1. Go to the where the platform.txt file is located. On my Windows machine it's
|
|
||||||
in:
|
|
||||||
|
|
||||||
C:\Users\Jonathan\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.6
|
|
||||||
|
|
||||||
On Mac OS X it's located in:
|
|
||||||
|
|
||||||
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam
|
|
||||||
|
|
||||||
On Linux, it's located in my home directory, downloaded and extracted from Arduino website, but must be installed.
|
|
||||||
|
|
||||||
/home/m1geo/arduino-1.6.7/hardware/arduino/sam
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
/home/m1geo/.arduino15/packages/arduino/hardware/sam/1.6.9 (if you let the board/library manager install SAM)
|
|
||||||
|
|
||||||
|
|
||||||
I (M1GEO) found it was necessary to download SAM-1.6.6 outside of the Arduino IDE, and manually extract the files.
|
|
||||||
The Board Manager didn't seem to install the SAM files correctly. Here's how I did it:
|
|
||||||
|
|
||||||
a) wget http://downloads.arduino.cc/cores/sam-1.6.6.tar.bz2 -O /tmp/sam-1.6.6.tar.bz2 (download and save in /tmp)
|
|
||||||
b) cd arduino-1.6.7/hardware/arduino/ (Arduino root, here, in my home directory)
|
|
||||||
c) tar xvfj /tmp/sam-1.6.6.tar.bz2
|
|
||||||
|
|
||||||
2. You'll need to open the file (platform.txt) in a text editor and find the line:
|
|
||||||
|
|
||||||
## Combine gc-sections, archives, and objects
|
|
||||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group "{build.path}/core/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
In my version it's line 73.
|
|
||||||
|
|
||||||
3. Modify it to read as follows:
|
|
||||||
|
|
||||||
## Combine gc-sections, archives, and objects
|
|
||||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group "{build.path}/core/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
The change is near the end, and is the addition of:
|
|
||||||
|
|
||||||
"{build.system.path}/CMSIS/CMSIS/Lib/ARM/arm_cortexM3l_math.lib"
|
|
||||||
|
|
||||||
On Linux, the path was found to differ slightly (GCC instead of ARM):
|
|
||||||
|
|
||||||
"{build.system.path}/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a"
|
|
||||||
|
|
||||||
Which is the CMSIS AMR3 DSP library for little-endian operation.
|
|
||||||
|
|
||||||
4. Save the file and start up the Arduino GUI and build MMDVM.
|
|
||||||
|
|
||||||
For Arduino 1.6.9 with SAM 1.6.8
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
1. Locate platform.txt. On Ubuntu 14.04 LTS x86_64 OS it is in:
|
|
||||||
|
|
||||||
/home/$user/.arduino15/packages/arduino/hardware/sam/1.6.8/
|
|
||||||
|
|
||||||
2. Open the file in a text editor and change the line:
|
|
||||||
|
|
||||||
## Combine gc-sections, archives, and objects
|
|
||||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group {compiler.combine.flags} {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
to
|
|
||||||
|
|
||||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mcpu={build.mcu} -mthumb {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group {compiler.combine.flags} {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.system.path}/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a" "{build.path}/{archive_file}" -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
3. Save the file, open the Arduino IDE and build MMDVM
|
|
207
MMDVM.ino
207
MMDVM.ino
|
@ -1,207 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015,2016,2017,2018,2020,2021 by Jonathan Naylor G4KLX
|
|
||||||
* Copyright (C) 2016 by Colin Durbridge G4EML
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "Config.h"
|
|
||||||
#include "Globals.h"
|
|
||||||
|
|
||||||
// Global variables
|
|
||||||
MMDVM_STATE m_modemState = STATE_IDLE;
|
|
||||||
|
|
||||||
bool m_dstarEnable = true;
|
|
||||||
bool m_dmrEnable = true;
|
|
||||||
bool m_ysfEnable = true;
|
|
||||||
bool m_p25Enable = true;
|
|
||||||
bool m_nxdnEnable = true;
|
|
||||||
bool m_m17Enable = true;
|
|
||||||
bool m_pocsagEnable = true;
|
|
||||||
bool m_fmEnable = true;
|
|
||||||
bool m_ax25Enable = true;
|
|
||||||
|
|
||||||
bool m_duplex = true;
|
|
||||||
|
|
||||||
bool m_tx = false;
|
|
||||||
bool m_dcd = false;
|
|
||||||
|
|
||||||
#if defined(MODE_DSTAR)
|
|
||||||
CDStarRX dstarRX;
|
|
||||||
CDStarTX dstarTX;
|
|
||||||
|
|
||||||
CCalDStarRX calDStarRX;
|
|
||||||
CCalDStarTX calDStarTX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_DMR)
|
|
||||||
CDMRIdleRX dmrIdleRX;
|
|
||||||
CDMRRX dmrRX;
|
|
||||||
CDMRTX dmrTX;
|
|
||||||
|
|
||||||
CDMRDMORX dmrDMORX;
|
|
||||||
CDMRDMOTX dmrDMOTX;
|
|
||||||
|
|
||||||
CCalDMR calDMR;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_YSF)
|
|
||||||
CYSFRX ysfRX;
|
|
||||||
CYSFTX ysfTX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_P25)
|
|
||||||
CP25RX p25RX;
|
|
||||||
CP25TX p25TX;
|
|
||||||
|
|
||||||
CCalP25 calP25;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_NXDN)
|
|
||||||
CNXDNRX nxdnRX;
|
|
||||||
CNXDNTX nxdnTX;
|
|
||||||
|
|
||||||
CCalNXDN calNXDN;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_M17)
|
|
||||||
CM17RX m17RX;
|
|
||||||
CM17TX m17TX;
|
|
||||||
|
|
||||||
CCalM17 calM17;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
|
||||||
CPOCSAGTX pocsagTX;
|
|
||||||
CCalPOCSAG calPOCSAG;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_FM)
|
|
||||||
CFM fm;
|
|
||||||
CCalFM calFM;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_AX25)
|
|
||||||
CAX25RX ax25RX;
|
|
||||||
CAX25TX ax25TX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CCalRSSI calRSSI;
|
|
||||||
|
|
||||||
CCWIdTX cwIdTX;
|
|
||||||
|
|
||||||
CSerialPort serial;
|
|
||||||
CIO io;
|
|
||||||
|
|
||||||
void setup()
|
|
||||||
{
|
|
||||||
serial.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop()
|
|
||||||
{
|
|
||||||
serial.process();
|
|
||||||
|
|
||||||
io.process();
|
|
||||||
|
|
||||||
// The following is for transmitting
|
|
||||||
#if defined(MODE_DSTAR)
|
|
||||||
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
|
||||||
dstarTX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_DMR)
|
|
||||||
if (m_dmrEnable && m_modemState == STATE_DMR) {
|
|
||||||
if (m_duplex)
|
|
||||||
dmrTX.process();
|
|
||||||
else
|
|
||||||
dmrDMOTX.process();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_YSF)
|
|
||||||
if (m_ysfEnable && m_modemState == STATE_YSF)
|
|
||||||
ysfTX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_P25)
|
|
||||||
if (m_p25Enable && m_modemState == STATE_P25)
|
|
||||||
p25TX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_NXDN)
|
|
||||||
if (m_nxdnEnable && m_modemState == STATE_NXDN)
|
|
||||||
nxdnTX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_M17)
|
|
||||||
if (m_m17Enable && m_modemState == STATE_M17)
|
|
||||||
m17TX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
|
||||||
if (m_pocsagEnable && (m_modemState == STATE_POCSAG || pocsagTX.busy()))
|
|
||||||
pocsagTX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_AX25)
|
|
||||||
if (m_ax25Enable && (m_modemState == STATE_IDLE || m_modemState == STATE_FM))
|
|
||||||
ax25TX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_FM)
|
|
||||||
if (m_fmEnable && m_modemState == STATE_FM)
|
|
||||||
fm.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_DSTAR)
|
|
||||||
if (m_modemState == STATE_DSTARCAL)
|
|
||||||
calDStarTX.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_DMR)
|
|
||||||
if (m_modemState == STATE_DMRCAL || m_modemState == STATE_LFCAL || m_modemState == STATE_DMRCAL1K || m_modemState == STATE_DMRDMO1K)
|
|
||||||
calDMR.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_FM)
|
|
||||||
if (m_modemState == STATE_FMCAL10K || m_modemState == STATE_FMCAL12K || m_modemState == STATE_FMCAL15K || m_modemState == STATE_FMCAL20K || m_modemState == STATE_FMCAL25K || m_modemState == STATE_FMCAL30K)
|
|
||||||
calFM.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_P25)
|
|
||||||
if (m_modemState == STATE_P25CAL1K)
|
|
||||||
calP25.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_NXDN)
|
|
||||||
if (m_modemState == STATE_NXDNCAL1K)
|
|
||||||
calNXDN.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_M17)
|
|
||||||
if (m_modemState == STATE_M17CAL)
|
|
||||||
calM17.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MODE_POCSAG)
|
|
||||||
if (m_modemState == STATE_POCSAGCAL)
|
|
||||||
calPOCSAG.process();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_modemState == STATE_IDLE)
|
|
||||||
cwIdTX.process();
|
|
||||||
}
|
|
||||||
|
|
413
Makefile
413
Makefile
|
@ -1,413 +0,0 @@
|
||||||
# Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU
|
|
||||||
# Copyright (C) 2016 by Jim McLaughlin KI6ZUM
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
# MMDVM source files
|
|
||||||
MMDVM_PATH=.
|
|
||||||
|
|
||||||
# STM32 library paths
|
|
||||||
F4_LIB_PATH=./STM32F4XX_Lib
|
|
||||||
F7_LIB_PATH=./STM32F7XX_Lib
|
|
||||||
|
|
||||||
# MCU external clock frequency (Hz)
|
|
||||||
CLK_MMDVM_PI=12000000
|
|
||||||
CLK_NUCLEO=8000000
|
|
||||||
CLK_12MHZ=12000000
|
|
||||||
|
|
||||||
# Directory Structure
|
|
||||||
BINDIR=bin
|
|
||||||
OBJDIR_F4=obj_f4
|
|
||||||
OBJDIR_F7=obj_f7
|
|
||||||
|
|
||||||
# Output files
|
|
||||||
BINELF_F4=mmdvm_f4.elf
|
|
||||||
BINHEX_F4=mmdvm_f4.hex
|
|
||||||
BINBIN_F4=mmdvm_f4.bin
|
|
||||||
BINELF_F7=mmdvm_f7.elf
|
|
||||||
BINHEX_F7=mmdvm_f7.hex
|
|
||||||
BINBIN_F7=mmdvm_f7.bin
|
|
||||||
|
|
||||||
# Header directories
|
|
||||||
INC_F4= . $(F4_LIB_PATH)/CMSIS/Include/ $(F4_LIB_PATH)/Device/ $(F4_LIB_PATH)/STM32F4xx_StdPeriph_Driver/include/
|
|
||||||
INCLUDES_F4=$(INC_F4:%=-I%)
|
|
||||||
INC_F7= . $(F7_LIB_PATH)/CMSIS/Include/ $(F7_LIB_PATH)/Device/ $(F7_LIB_PATH)/STM32F7xx_StdPeriph_Driver/inc/
|
|
||||||
INCLUDES_F7=$(INC_F7:%=-I%)
|
|
||||||
|
|
||||||
# CMSIS libraries
|
|
||||||
INCLUDES_LIBS_F4=$(F4_LIB_PATH)/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a
|
|
||||||
INCLUDES_LIBS_F7=$(F7_LIB_PATH)/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a
|
|
||||||
|
|
||||||
# STM32F4 Standard Peripheral Libraries source path
|
|
||||||
STD_LIB_F4=$(F4_LIB_PATH)/STM32F4xx_StdPeriph_Driver/source
|
|
||||||
|
|
||||||
# STM32F7 Standard Peripheral Libraries source path
|
|
||||||
STD_LIB_F7=$(F7_LIB_PATH)/STM32F7xx_StdPeriph_Driver/src
|
|
||||||
|
|
||||||
# STM32F4 system source path
|
|
||||||
SYS_DIR_F4=$(F4_LIB_PATH)/Device
|
|
||||||
STARTUP_DIR_F4=$(F4_LIB_PATH)/Device/startup
|
|
||||||
|
|
||||||
# STM32F7 system source path
|
|
||||||
SYS_DIR_F7=$(F7_LIB_PATH)/Device
|
|
||||||
STARTUP_DIR_F7=$(F7_LIB_PATH)/Device/startup
|
|
||||||
|
|
||||||
# GNU ARM Embedded Toolchain
|
|
||||||
CC=arm-none-eabi-gcc
|
|
||||||
CXX=arm-none-eabi-g++
|
|
||||||
LD=arm-none-eabi-ld
|
|
||||||
AR=arm-none-eabi-ar
|
|
||||||
AS=arm-none-eabi-as
|
|
||||||
CP=arm-none-eabi-objcopy
|
|
||||||
OD=arm-none-eabi-objdump
|
|
||||||
NM=arm-none-eabi-nm
|
|
||||||
SIZE=arm-none-eabi-size
|
|
||||||
A2L=arm-none-eabi-addr2line
|
|
||||||
|
|
||||||
# "SystemRoot" is only defined in Windows
|
|
||||||
ifdef SYSTEMROOT
|
|
||||||
CLEANCMD=del /S *.o *.hex *.bin *.elf GitVersion.h
|
|
||||||
MDDIRS=md $@
|
|
||||||
else ifdef SystemRoot
|
|
||||||
CLEANCMD=del /S *.o *.hex *.bin *.elf GitVersion.h
|
|
||||||
MDDIRS=md $@
|
|
||||||
else
|
|
||||||
CLEANCMD=rm -f $(OBJ_F4) $(OBJ_F7) $(BINDIR)/*.hex $(BINDIR)/*.bin $(BINDIR)/*.elf GitVersion.h
|
|
||||||
MDDIRS=mkdir $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Default reference oscillator frequencies
|
|
||||||
ifndef $(OSC)
|
|
||||||
ifeq ($(MAKECMDGOALS),pi)
|
|
||||||
OSC=$(CLK_MMDVM_PI)
|
|
||||||
else ifeq ($(MAKECMDGOALS),pi-f722)
|
|
||||||
OSC=$(CLK_MMDVM_PI)
|
|
||||||
else ifeq ($(MAKECMDGOALS),drcc_nqf)
|
|
||||||
OSC=$(CLK_12MHZ)
|
|
||||||
else
|
|
||||||
OSC=$(CLK_NUCLEO)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Build object lists
|
|
||||||
CXXSRC=$(wildcard $(MMDVM_PATH)/*.cpp)
|
|
||||||
CSRC_STD_F4=$(wildcard $(STD_LIB_F4)/*.c)
|
|
||||||
SYS_F4=$(wildcard $(SYS_DIR_F4)/*.c)
|
|
||||||
STARTUP_F4=$(wildcard $(STARTUP_DIR_F4)/*.c)
|
|
||||||
CSRC_STD_F7=$(wildcard $(STD_LIB_F7)/*.c)
|
|
||||||
SYS_F7=$(wildcard $(SYS_DIR_F7)/*.c)
|
|
||||||
STARTUP_F7=$(wildcard $(STARTUP_DIR_F7)/*.c)
|
|
||||||
OBJ_F4=$(CXXSRC:$(MMDVM_PATH)/%.cpp=$(OBJDIR_F4)/%.o) $(CSRC_STD_F4:$(STD_LIB_F4)/%.c=$(OBJDIR_F4)/%.o) $(SYS_F4:$(SYS_DIR_F4)/%.c=$(OBJDIR_F4)/%.o) $(STARTUP_F4:$(STARTUP_DIR_F4)/%.c=$(OBJDIR_F4)/%.o)
|
|
||||||
OBJ_F7=$(CXXSRC:$(MMDVM_PATH)/%.cpp=$(OBJDIR_F7)/%.o) $(CSRC_STD_F7:$(STD_LIB_F7)/%.c=$(OBJDIR_F7)/%.o) $(SYS_F7:$(SYS_DIR_F7)/%.c=$(OBJDIR_F7)/%.o) $(STARTUP_F7:$(STARTUP_DIR_F7)/%.c=$(OBJDIR_F7)/%.o)
|
|
||||||
|
|
||||||
# MCU flags
|
|
||||||
MCFLAGS_F4=-mcpu=cortex-m4 -mthumb -mlittle-endian -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb-interwork
|
|
||||||
MCFLAGS_F7=-mcpu=cortex-m7 -mthumb -mlittle-endian -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb-interwork
|
|
||||||
|
|
||||||
# Compile flags
|
|
||||||
# STM32F4 Discovery board:
|
|
||||||
DEFS_DIS=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F40_41xxx -DSTM32F4_DISCOVERY -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# MMDVM-Pi board:
|
|
||||||
DEFS_PI=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_PI -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# MMDVM-F4M F0DEI board:
|
|
||||||
DEFS_F4M=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_F4M -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# STM32F4 Nucleo-64 F446RE board:
|
|
||||||
DEFS_NUCLEO=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_NUCLEO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# STM32F7 Nucleo-144 F767ZI board:
|
|
||||||
DEFS_NUCLEO_F767=-DUSE_HAL_DRIVER -DSTM32F767xx -DSTM32F7XX -DSTM32F7_NUCLEO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# MMDVM-Pi F722 board:
|
|
||||||
DEFS_PI_F722=-DUSE_HAL_DRIVER -DSTM32F722xx -DSTM32F7XX -DSTM32F722_PI -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# MMDVM-F7M F0DEI board:
|
|
||||||
DEFS_F7M=-DUSE_HAL_DRIVER -DSTM32F722xx -DSTM32F7XX -DSTM32F722_F7M -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# MMDVM_RPT_Hat F0DEI, DB9MAT, DF2ET board:
|
|
||||||
DEFS_RPT_HAT=-DUSE_HAL_DRIVER -DSTM32F722xx -DSTM32F7XX -DSTM32F722_RPT_HAT -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# RB STM32F4_DVM board:
|
|
||||||
DEFS_DVM=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_DVM -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# RB STM32F7 DVM board:
|
|
||||||
DEFS_DVM722=-DUSE_HAL_DRIVER -DSTM32F722xx -DSTM32F7XX -DSTM32F7_DVM -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# MMDVM_RPT_Hat BG4TGO, BG5HHP board:
|
|
||||||
DEFS_RPT_HAT_TGO=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F40_41xxx -DSTM32F4_RPT_HAT_TGO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# DRCC_DVM BG7NQF board:
|
|
||||||
DEFS_DRCC_DVM=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DDRCC_DVM -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# WA0EDA F405 MTR2K, MASTR3 board:
|
|
||||||
DEFS_EDA_405=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F40_41xxx -DSTM32F4_EDA_405 -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
# WA0EDA F446 MTR2K, MASTR3 board:
|
|
||||||
DEFS_EDA_446=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_EDA_446 -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
|
|
||||||
|
|
||||||
|
|
||||||
# Build compiler flags
|
|
||||||
CFLAGS_F4=-c $(MCFLAGS_F4) $(INCLUDES_F4)
|
|
||||||
CXXFLAGS_F4=-c $(MCFLAGS_F4) $(INCLUDES_F4)
|
|
||||||
CFLAGS_F7=-c $(MCFLAGS_F7) $(INCLUDES_F7)
|
|
||||||
CXXFLAGS_F7=-c $(MCFLAGS_F7) $(INCLUDES_F7)
|
|
||||||
|
|
||||||
# Linker flags
|
|
||||||
LDFLAGS_F4 =-T stm32f4xx_link.ld $(MCFLAGS_F4) --specs=nosys.specs $(INCLUDES_LIBS_F4)
|
|
||||||
LDFLAGS_F767 =-T stm32f767_link.ld $(MCFLAGS_F7) --specs=nosys.specs $(INCLUDES_LIBS_F7)
|
|
||||||
LDFLAGS_F722 =-T stm32f722_link.ld $(MCFLAGS_F7) --specs=nosys.specs $(INCLUDES_LIBS_F7)
|
|
||||||
|
|
||||||
# Common flags
|
|
||||||
CFLAGS=-Os -ffunction-sections -fdata-sections -fno-builtin -Wno-implicit -DCUSTOM_NEW -DNO_EXCEPTIONS
|
|
||||||
CXXFLAGS=-Os -fno-exceptions -ffunction-sections -fdata-sections -fno-builtin -fno-rtti -DCUSTOM_NEW -DNO_EXCEPTIONS
|
|
||||||
LDFLAGS=-Os --specs=nano.specs -Wl,-Map=bin/mmdvm.map
|
|
||||||
|
|
||||||
# Build Rules
|
|
||||||
.PHONY: all release dis pi pi-f722 f4m nucleo f767 dvm drcc_nqf clean
|
|
||||||
|
|
||||||
# Default target: Nucleo-64 F446RE board
|
|
||||||
all: nucleo
|
|
||||||
|
|
||||||
pi: GitVersion.h
|
|
||||||
pi: CFLAGS+=$(CFLAGS_F4) $(DEFS_PI)
|
|
||||||
pi: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_PI)
|
|
||||||
pi: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
pi: release_f4
|
|
||||||
|
|
||||||
pi-f722: GitVersion.h
|
|
||||||
pi-f722: CFLAGS+=$(CFLAGS_F7) $(DEFS_PI_F722)
|
|
||||||
pi-f722: CXXFLAGS+=$(CXXFLAGS_F7) $(DEFS_PI_F722)
|
|
||||||
pi-f722: LDFLAGS+=$(LDFLAGS_F722)
|
|
||||||
pi-f722: release_f7
|
|
||||||
|
|
||||||
f4m: GitVersion.h
|
|
||||||
f4m: CFLAGS+=$(CFLAGS_F4) $(DEFS_F4M)
|
|
||||||
f4m: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_F4M)
|
|
||||||
f4m: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
f4m: release_f4
|
|
||||||
|
|
||||||
f7m: GitVersion.h
|
|
||||||
f7m: CFLAGS+=$(CFLAGS_F7) $(DEFS_F7M)
|
|
||||||
f7m: CXXFLAGS+=$(CXXFLAGS_F7) $(DEFS_F7M)
|
|
||||||
f7m: LDFLAGS+=$(LDFLAGS_F722)
|
|
||||||
f7m: release_f7
|
|
||||||
|
|
||||||
rpt_hat: GitVersion.h
|
|
||||||
rpt_hat: CFLAGS+=$(CFLAGS_F7) $(DEFS_RPT_HAT)
|
|
||||||
rpt_hat: CXXFLAGS+=$(CXXFLAGS_F7) $(DEFS_RPT_HAT)
|
|
||||||
rpt_hat: LDFLAGS+=$(LDFLAGS_F722)
|
|
||||||
rpt_hat: release_f7
|
|
||||||
|
|
||||||
rpt_hat_tgo: GitVersion.h
|
|
||||||
rpt_hat_tgo: CFLAGS+=$(CFLAGS_F4) $(DEFS_RPT_HAT_TGO)
|
|
||||||
rpt_hat_tgo: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_RPT_HAT_TGO)
|
|
||||||
rpt_hat_tgo: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
rpt_hat_tgo: release_f4
|
|
||||||
|
|
||||||
nucleo: GitVersion.h
|
|
||||||
nucleo: CFLAGS+=$(CFLAGS_F4) $(DEFS_NUCLEO)
|
|
||||||
nucleo: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_NUCLEO)
|
|
||||||
nucleo: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
nucleo: release_f4
|
|
||||||
|
|
||||||
dis: GitVersion.h
|
|
||||||
dis: CFLAGS+=$(CFLAGS_F4) $(DEFS_DIS)
|
|
||||||
dis: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_DIS)
|
|
||||||
dis: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
dis: release_f4
|
|
||||||
|
|
||||||
f767: GitVersion.h
|
|
||||||
f767: CFLAGS+=$(CFLAGS_F7) $(DEFS_NUCLEO_F767)
|
|
||||||
f767: CXXFLAGS+=$(CXXFLAGS_F7) $(DEFS_NUCLEO_F767)
|
|
||||||
f767: LDFLAGS+=$(LDFLAGS_F767)
|
|
||||||
f767: release_f7
|
|
||||||
|
|
||||||
dvm: GitVersion.h
|
|
||||||
dvm: CFLAGS+=$(CFLAGS_F4) $(DEFS_DVM) -DDRCC_DVM_446
|
|
||||||
dvm: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_DVM) -DDRCC_DVM_446
|
|
||||||
dvm: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
dvm: release_f4
|
|
||||||
|
|
||||||
dvm722: GitVersion.h
|
|
||||||
dvm722: CFLAGS+=$(CFLAGS_F7) $(DEFS_DVM722) -DDRCC_DVM_722
|
|
||||||
dvm722: CXXFLAGS+=$(CXXFLAGS_F7) $(DEFS_DVM722) -DDRCC_DVM_722
|
|
||||||
dvm722: LDFLAGS+=$(LDFLAGS_F722)
|
|
||||||
dvm722: release_f7
|
|
||||||
|
|
||||||
drcc_nqf: GitVersion.h
|
|
||||||
drcc_nqf: CFLAGS+=$(CFLAGS_F4) $(DEFS_DRCC_DVM) -DDRCC_DVM_NQF
|
|
||||||
drcc_nqf: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_DRCC_DVM) -DDRCC_DVM_NQF
|
|
||||||
drcc_nqf: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
drcc_nqf: release_f4
|
|
||||||
|
|
||||||
hhp446: GitVersion.h
|
|
||||||
hhp446: CFLAGS+=$(CFLAGS_F4) $(DEFS_DRCC_DVM) -DDRCC_DVM_HHP446
|
|
||||||
hhp446: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_DRCC_DVM) -DDRCC_DVM_HHP446
|
|
||||||
hhp446: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
hhp446: release_f4
|
|
||||||
|
|
||||||
eda405: GitVersion.h
|
|
||||||
eda405: CFLAGS+=$(CFLAGS_F4) $(DEFS_EDA_405)
|
|
||||||
eda405: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_EDA_405)
|
|
||||||
eda405: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
eda405: release_f4
|
|
||||||
|
|
||||||
eda446: GitVersion.h
|
|
||||||
eda446: CFLAGS+=$(CFLAGS_F4) $(DEFS_EDA_446)
|
|
||||||
eda446: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_EDA_446)
|
|
||||||
eda446: LDFLAGS+=$(LDFLAGS_F4)
|
|
||||||
eda446: release_f4
|
|
||||||
|
|
||||||
release_f4: $(BINDIR)
|
|
||||||
release_f4: $(OBJDIR_F4)
|
|
||||||
release_f4: $(BINDIR)/$(BINHEX_F4)
|
|
||||||
release_f4: $(BINDIR)/$(BINBIN_F4)
|
|
||||||
|
|
||||||
release_f7: $(BINDIR)
|
|
||||||
release_f7: $(OBJDIR_F7)
|
|
||||||
release_f7: $(BINDIR)/$(BINHEX_F7)
|
|
||||||
release_f7: $(BINDIR)/$(BINBIN_F7)
|
|
||||||
|
|
||||||
$(BINDIR):
|
|
||||||
$(MDDIRS)
|
|
||||||
|
|
||||||
$(OBJDIR_F4):
|
|
||||||
$(MDDIRS)
|
|
||||||
|
|
||||||
$(OBJDIR_F7):
|
|
||||||
$(MDDIRS)
|
|
||||||
|
|
||||||
$(BINDIR)/$(BINHEX_F4): $(BINDIR)/$(BINELF_F4)
|
|
||||||
$(CP) -O ihex $< $@
|
|
||||||
@echo "Objcopy from ELF to IHEX complete!\n"
|
|
||||||
|
|
||||||
$(BINDIR)/$(BINBIN_F4): $(BINDIR)/$(BINELF_F4)
|
|
||||||
$(CP) -O binary $< $@
|
|
||||||
@echo "Objcopy from ELF to BINARY complete!\n"
|
|
||||||
|
|
||||||
$(BINDIR)/$(BINELF_F4): $(OBJ_F4)
|
|
||||||
$(CXX) $(OBJ_F4) $(LDFLAGS) -o $@
|
|
||||||
@echo "Linking complete!\n"
|
|
||||||
$(SIZE) $(BINDIR)/$(BINELF_F4)
|
|
||||||
|
|
||||||
$(BINDIR)/$(BINHEX_F7): $(BINDIR)/$(BINELF_F7)
|
|
||||||
$(CP) -O ihex $< $@
|
|
||||||
@echo "Objcopy from ELF to IHEX complete!\n"
|
|
||||||
|
|
||||||
$(BINDIR)/$(BINBIN_F7): $(BINDIR)/$(BINELF_F7)
|
|
||||||
$(CP) -O binary $< $@
|
|
||||||
@echo "Objcopy from ELF to BINARY complete!\n"
|
|
||||||
|
|
||||||
$(BINDIR)/$(BINELF_F7): $(OBJ_F7)
|
|
||||||
$(CXX) $(OBJ_F7) $(LDFLAGS) -o $@
|
|
||||||
@echo "Linking complete!\n"
|
|
||||||
$(SIZE) $(BINDIR)/$(BINELF_F7)
|
|
||||||
|
|
||||||
$(OBJDIR_F4)/%.o: $(MMDVM_PATH)/%.cpp
|
|
||||||
$(CXX) $(CXXFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F7)/%.o: $(MMDVM_PATH)/%.cpp
|
|
||||||
$(CXX) $(CXXFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F4)/%.o: $(STD_LIB_F4)/%.c
|
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F7)/%.o: $(STD_LIB_F7)/%.c
|
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F4)/%.o: $(SYS_DIR_F4)/%.c
|
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F4)/%.o: $(STARTUP_DIR_F4)/%.c
|
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F7)/%.o: $(SYS_DIR_F7)/%.c
|
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
$(OBJDIR_F7)/%.o: $(STARTUP_DIR_F7)/%.c
|
|
||||||
$(CC) $(CFLAGS) $< -o $@
|
|
||||||
@echo "Compiled "$<"!\n"
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(CLEANCMD)
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
ifneq ($(wildcard /usr/bin/openocd),)
|
|
||||||
/usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f4x.cfg -c "program bin/$(BINELF_F4) verify reset exit"
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(wildcard /usr/local/bin/openocd),)
|
|
||||||
/usr/local/bin/openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg -c "program bin/$(BINELF_F4) verify reset exit"
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(wildcard /opt/openocd/bin/openocd),)
|
|
||||||
/opt/openocd/bin/openocd -f /opt/openocd/share/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f4x.cfg -c "program bin/$(BINELF_F4) verify reset exit"
|
|
||||||
endif
|
|
||||||
|
|
||||||
deploy-f7:
|
|
||||||
ifneq ($(wildcard /usr/bin/openocd),)
|
|
||||||
/usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f7x.cfg -c "program bin/$(BINELF_F7) verify reset exit"
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(wildcard /usr/local/bin/openocd),)
|
|
||||||
/usr/local/bin/openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/local/share/openocd/scripts/target/stm32f7x.cfg -c "program bin/$(BINELF_F7) verify reset exit"
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(wildcard /opt/openocd/bin/openocd),)
|
|
||||||
/opt/openocd/bin/openocd -f /opt/openocd/share/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f7x.cfg -c "program bin/$(BINELF_F7) verify reset exit"
|
|
||||||
endif
|
|
||||||
|
|
||||||
deploy-pi:
|
|
||||||
ifneq ($(wildcard /usr/local/bin/stm32flash),)
|
|
||||||
-/usr/local/bin/stm32flash -i 20,-21,21:-20,21 /dev/ttyAMA0
|
|
||||||
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F4) -g 0x0 -R /dev/ttyAMA0
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(wildcard /usr/bin/stm32flash),)
|
|
||||||
-/usr/bin/stm32flash -i 20,-21,21:-20,21 /dev/ttyAMA0
|
|
||||||
/usr/bin/stm32flash -v -w bin/$(BINBIN_F4) -g 0x0 -R /dev/ttyAMA0
|
|
||||||
endif
|
|
||||||
|
|
||||||
deploy-f4m: deploy-pi
|
|
||||||
deploy-dvm: deploy-pi
|
|
||||||
deploy-eda405: deploy-pi
|
|
||||||
deploy-eda446: deploy-pi
|
|
||||||
|
|
||||||
deploy-pi-f7:
|
|
||||||
ifneq ($(wildcard /usr/local/bin/stm32flash),)
|
|
||||||
-/usr/local/bin/stm32flash -i 20,-21,21:-20,21 /dev/ttyAMA0
|
|
||||||
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F7) -g 0x0 -R /dev/ttyAMA0
|
|
||||||
|
|
||||||
else ifneq ($(wildcard /usr/bin/stm32flash),)
|
|
||||||
-/usr/bin/stm32flash -i 20,-21,21:-20,21 /dev/ttyAMA0
|
|
||||||
/usr/bin/stm32flash -v -w bin/$(BINBIN_F7) -g 0x0 -R /dev/ttyAMA0
|
|
||||||
endif
|
|
||||||
|
|
||||||
deploy-f7m: deploy-pi-f7
|
|
||||||
deploy-rpt_hat: deploy-pi-f7
|
|
||||||
|
|
||||||
# Export the current git version if the index file exists, else 000...
|
|
||||||
GitVersion.h:
|
|
||||||
ifdef SYSTEMROOT
|
|
||||||
echo #define GITVERSION "0000000" > $@
|
|
||||||
else ifdef SystemRoot
|
|
||||||
echo #define GITVERSION "0000000" > $@
|
|
||||||
else
|
|
||||||
ifneq ("$(wildcard .git/index)","")
|
|
||||||
echo "#define GITVERSION \"$(shell git rev-parse --short HEAD)\"" > $@
|
|
||||||
else
|
|
||||||
echo "#define GITVERSION \"0000000\"" > $@
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
flash_f4:
|
|
||||||
@echo "flashing firmware..."
|
|
||||||
st-flash write bin/$(BINBIN_F4) 0x8000000
|
|
189
Makefile.Arduino
189
Makefile.Arduino
|
@ -1,189 +0,0 @@
|
||||||
#!/usr/bin/make
|
|
||||||
# makefile for the arduino due (works with arduino IDE 1.6.12)
|
|
||||||
#
|
|
||||||
# The original file can be found at https://github.com/pauldreik/arduino-due-makefile
|
|
||||||
#
|
|
||||||
# USAGE: put this file in the same dir as your .ino file is.
|
|
||||||
# configure the PORT variable and ADIR at the top of the file
|
|
||||||
# to match your local configuration.
|
|
||||||
# Type make upload to compile and upload.
|
|
||||||
#
|
|
||||||
|
|
||||||
#user specific settings:
|
|
||||||
#where to find the IDE
|
|
||||||
ADIR:=$(HOME)/.arduino15
|
|
||||||
#which serial port to use (add a file with SUBSYSTEMS=="usb",
|
|
||||||
#ATTRS{product}=="Arduino Due Prog. Port", ATTRS{idProduct}=="003d",
|
|
||||||
#ATTRS{idVendor}=="2341", SYMLINK+="arduino_due" in /etc/udev/rules.d/
|
|
||||||
#to get this working). Do not prefix the port with /dev/, just take
|
|
||||||
#the basename.
|
|
||||||
PORT:=ttyACM0
|
|
||||||
#if you want to verify the bossac upload, define this to -v
|
|
||||||
VERIFY:=-v
|
|
||||||
|
|
||||||
|
|
||||||
#end of user configuration.
|
|
||||||
|
|
||||||
|
|
||||||
#then some general settings. They should not be necessary to modify.
|
|
||||||
#CXX:=$(ADIR)/tools/g++_arm_none_eabi/bin/arm-none-eabi-g++
|
|
||||||
CXX:=$(ADIR)/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++
|
|
||||||
#CC:=$(ADIR)/tools/g++_arm_none_eabi/bin/arm-none-eabi-gcc
|
|
||||||
CC:=$(ADIR)/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gcc
|
|
||||||
OBJCOPY:=$(ADIR)/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-objcopy
|
|
||||||
|
|
||||||
C:=$(CC)
|
|
||||||
#SAM:=arduino/sam/
|
|
||||||
SAM:=$(ADIR)/packages/arduino/hardware/sam/1.6.12
|
|
||||||
#CMSIS:=arduino/sam/system/CMSIS/
|
|
||||||
#LIBSAM:=arduino/sam/system/libsam
|
|
||||||
TMPDIR:=$(PWD)/build
|
|
||||||
AR:=$(ADIR)/tools/g++_arm_none_eabi/bin/arm-none-eabi-ar
|
|
||||||
AR:=$(ADIR)/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-ar
|
|
||||||
|
|
||||||
|
|
||||||
#all these values are hard coded and should maybe be configured somehow else,
|
|
||||||
#like olikraus does in his makefile.
|
|
||||||
DEFINES:=-Dprintf=iprintf -DF_CPU=84000000 -DARDUINO=10611 -D__SAM3X8E__ -DUSB_PID=0x003e -DUSB_VID=0x2341 -DUSBCON \
|
|
||||||
-DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' \
|
|
||||||
-DMADEBYMAKEFILE
|
|
||||||
|
|
||||||
INCLUDES:=-I$(SAM)/system/libsam -I$(SAM)/system/CMSIS/CMSIS/Include/ \
|
|
||||||
-I$(SAM)/system/CMSIS/Device/ATMEL/ -I$(SAM)/cores/arduino \
|
|
||||||
-I$(SAM)/variants/arduino_due_x
|
|
||||||
|
|
||||||
#also include the current dir for convenience
|
|
||||||
INCLUDES += -I.
|
|
||||||
|
|
||||||
#compilation flags common to both c and c++
|
|
||||||
COMMON_FLAGS:=-g -Os -w -ffunction-sections -fdata-sections -nostdlib \
|
|
||||||
--param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb \
|
|
||||||
-fno-threadsafe-statics
|
|
||||||
#for compiling c (do not warn, this is not our code)
|
|
||||||
CFLAGS:=$(COMMON_FLAGS) -std=gnu11
|
|
||||||
#for compiling c++
|
|
||||||
CXXFLAGS:=$(COMMON_FLAGS) -fno-rtti -fno-exceptions -std=gnu++11 -Wall -Wextra
|
|
||||||
|
|
||||||
#let the results be named after the project
|
|
||||||
PROJNAME:=$(shell basename *.ino .ino)
|
|
||||||
|
|
||||||
#we will make a new mainfile from the ino file.
|
|
||||||
NEWMAINFILE:=$(TMPDIR)/$(PROJNAME).ino.cpp
|
|
||||||
|
|
||||||
#our own sourcefiles is the (converted) ino file and any local cpp files
|
|
||||||
MYSRCFILES:=$(NEWMAINFILE) $(shell ls *.cpp 2>/dev/null)
|
|
||||||
MYOBJFILES:=$(addsuffix .o,$(addprefix $(TMPDIR)/,$(notdir $(MYSRCFILES))))
|
|
||||||
|
|
||||||
#These source files are the ones forming core.a
|
|
||||||
CORESRCXX:=$(shell ls ${SAM}/cores/arduino/*.cpp ${SAM}/cores/arduino/USB/*.cpp ${SAM}/variants/arduino_due_x/variant.cpp)
|
|
||||||
CORESRC:=$(shell ls ${SAM}/cores/arduino/*.c)
|
|
||||||
|
|
||||||
#hey this one is needed too: $(SAM)/cores/arduino/wiring_pulse_asm.S" add -x assembler-with-cpp
|
|
||||||
#and this one: /1.6.11/cores/arduino/avr/dtostrf.c but it seems to work
|
|
||||||
#anyway, probably because I do not use that functionality.
|
|
||||||
|
|
||||||
#convert the core source files to object files. assume no clashes.
|
|
||||||
COREOBJSXX:=$(addprefix $(TMPDIR)/core/,$(notdir $(CORESRCXX)) )
|
|
||||||
COREOBJSXX:=$(addsuffix .o,$(COREOBJSXX))
|
|
||||||
COREOBJS:=$(addprefix $(TMPDIR)/core/,$(notdir $(CORESRC)) )
|
|
||||||
COREOBJS:=$(addsuffix .o,$(COREOBJS))
|
|
||||||
|
|
||||||
default:
|
|
||||||
@echo default rule, does nothing. Try make compile or make upload.
|
|
||||||
|
|
||||||
#This rule is good to just make sure stuff compiles, without having to wait
|
|
||||||
#for bossac.
|
|
||||||
compile: GitVersion.h $(TMPDIR)/$(PROJNAME).elf $(TMPDIR)/$(PROJNAME).bin
|
|
||||||
|
|
||||||
#This is a make rule template to create object files from the source files.
|
|
||||||
# arg 1=src file
|
|
||||||
# arg 2=object file
|
|
||||||
# arg 3= XX if c++, empty if c
|
|
||||||
define OBJ_template
|
|
||||||
$(2): $(1)
|
|
||||||
$(C$(3)) -MD -c $(C$(3)FLAGS) $(DEFINES) $(INCLUDES) $(1) -o $(2)
|
|
||||||
endef
|
|
||||||
#now invoke the template both for c++ sources
|
|
||||||
$(foreach src,$(CORESRCXX), $(eval $(call OBJ_template,$(src),$(addsuffix .o,$(addprefix $(TMPDIR)/core/,$(notdir $(src)))),XX) ) )
|
|
||||||
#...and for c sources:
|
|
||||||
$(foreach src,$(CORESRC), $(eval $(call OBJ_template,$(src),$(addsuffix .o,$(addprefix $(TMPDIR)/core/,$(notdir $(src)))),) ) )
|
|
||||||
|
|
||||||
#and our own c++ sources
|
|
||||||
$(foreach src,$(MYSRCFILES), $(eval $(call OBJ_template,$(src),$(addsuffix .o,$(addprefix $(TMPDIR)/,$(notdir $(src)))),XX) ) )
|
|
||||||
|
|
||||||
|
|
||||||
clean:
|
|
||||||
test ! -d $(TMPDIR) || rm -rf $(TMPDIR)
|
|
||||||
$(RM) GitVersion.h
|
|
||||||
|
|
||||||
.PHONY: .FORCE upload default
|
|
||||||
|
|
||||||
$(TMPDIR):
|
|
||||||
mkdir -p $(TMPDIR)
|
|
||||||
|
|
||||||
$(TMPDIR)/core:
|
|
||||||
mkdir -p $(TMPDIR)/core
|
|
||||||
|
|
||||||
#creates the cpp file from the .ino file
|
|
||||||
$(NEWMAINFILE): $(PROJNAME).ino
|
|
||||||
cat $(SAM)/cores/arduino/main.cpp > $(NEWMAINFILE)
|
|
||||||
cat $(PROJNAME).ino >> $(NEWMAINFILE)
|
|
||||||
echo 'extern "C" void __cxa_pure_virtual() {while (true);}' >> $(NEWMAINFILE)
|
|
||||||
|
|
||||||
#include the dependencies for our own files
|
|
||||||
-include $(MYOBJFILES:.o=.d)
|
|
||||||
|
|
||||||
#create the core library from the core objects. Do this EXACTLY as the
|
|
||||||
#arduino IDE does it, seems *really* picky about this.
|
|
||||||
#Sorry for the hard coding.
|
|
||||||
$(TMPDIR)/core.a: $(TMPDIR)/core $(COREOBJS) $(COREOBJSXX)
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/wiring_shift.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/wiring_analog.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/itoa.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/cortex_handlers.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/hooks.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/wiring.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/WInterrupts.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/syscalls_sam3.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/iar_calls_sam3.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/wiring_digital.c.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/Print.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/USARTClass.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/WString.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/PluggableUSB.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/USBCore.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/CDC.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/wiring_pulse.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/UARTClass.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/main.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/new.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/watchdog.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/Stream.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/RingBuffer.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/IPAddress.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/Reset.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/WMath.cpp.o
|
|
||||||
$(AR) rcs $(TMPDIR)/core.a $(TMPDIR)/core/variant.cpp.o
|
|
||||||
|
|
||||||
#link our own object files with core to form the elf file
|
|
||||||
$(TMPDIR)/$(PROJNAME).elf: $(TMPDIR)/core.a $(TMPDIR)/core/syscalls_sam3.c.o $(MYOBJFILES)
|
|
||||||
$(CC) -mcpu=cortex-m3 -mthumb -Os -Wl,--gc-sections -T$(SAM)/variants/arduino_due_x/linker_scripts/gcc/flash.ld -Wl,-Map,$(NEWMAINFILE).map -o $@ -L$(TMPDIR) -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid $(MYOBJFILES) $(TMPDIR)/core/variant.cpp.o $(SAM)/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a $(SAM)/system/CMSIS/CMSIS/Lib/GCC/libarm_cortexM3l_math.a $(TMPDIR)/core.a -Wl,--end-group -lm -gcc
|
|
||||||
|
|
||||||
#copy from the hex to our bin file (why?)
|
|
||||||
$(TMPDIR)/$(PROJNAME).bin: $(TMPDIR)/$(PROJNAME).elf
|
|
||||||
$(OBJCOPY) -O binary $< $@
|
|
||||||
|
|
||||||
#upload to the arduino by first resetting it (stty) and the running bossac
|
|
||||||
upload: compile
|
|
||||||
stty -F /dev/$(PORT) cs8 1200 hupcl
|
|
||||||
$(ADIR)/packages/arduino/tools/bossac/1.6.1-arduino/bossac -i --port=$(PORT) -U false -e -w $(VERIFY) -b $(TMPDIR)/$(PROJNAME).bin -R
|
|
||||||
|
|
||||||
# Export the current git version if the index file exists, else 000...
|
|
||||||
GitVersion.h: .FORCE
|
|
||||||
ifneq ("$(wildcard .git/index)","")
|
|
||||||
echo "#define GITVERSION \"$(shell git rev-parse --short HEAD)\"" > $@
|
|
||||||
else
|
|
||||||
echo "#define GITVERSION \"0000000\"" > $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
.FORCE:
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 18aeb6ea3a236088fc9f376077c651098e3a495e
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 6241f7c05eeb6cf1ecd16ca0274bf310efee853f
|
|
|
@ -1,46 +0,0 @@
|
||||||
# based on https://github.com/berndporr/iir_fixed_point/blob/master/gen_coeff.py
|
|
||||||
|
|
||||||
import numpy as np
|
|
||||||
import scipy.signal as signal
|
|
||||||
import pylab as pl
|
|
||||||
|
|
||||||
# Calculate the coefficients for a pure fixed point
|
|
||||||
# integer filter
|
|
||||||
|
|
||||||
# sampling rate
|
|
||||||
fs = 24000
|
|
||||||
|
|
||||||
# cutoffs
|
|
||||||
f1 = 300
|
|
||||||
f2 = 2700
|
|
||||||
# ripple
|
|
||||||
rp = 0.2
|
|
||||||
|
|
||||||
# scaling factor in bits, do not change !
|
|
||||||
q = 15
|
|
||||||
# scaling factor as facor...
|
|
||||||
scaling_factor = 2**q
|
|
||||||
|
|
||||||
# let's generate a sequence of 2nd order IIR filters
|
|
||||||
sos = signal.cheby1(3,rp,[f1, f2],'bandpass', output='sos', fs=fs)
|
|
||||||
#os = signal.cheby1(4, rp, f2, 'lowpass', output='sos', fs=fs) #deemphasis filter
|
|
||||||
#sos = signal.cheby1(1, rp, 2122, 'highpass', output='sos', fs=fs) #deemphasis filter
|
|
||||||
|
|
||||||
sosrounded = np.round((sos) * scaling_factor)
|
|
||||||
|
|
||||||
# print coefficients
|
|
||||||
for biquad in sosrounded:
|
|
||||||
for coeff in biquad:
|
|
||||||
print(int(coeff),",",sep="",end="")
|
|
||||||
#print((coeff),",",sep="",end="")
|
|
||||||
print("")
|
|
||||||
|
|
||||||
# plot the frequency response
|
|
||||||
b,a = signal.sos2tf(sos)
|
|
||||||
w,h = signal.freqz(b,a, worN=2048)
|
|
||||||
pl.plot(w/np.pi/2*fs,20*np.log(np.abs(h)))
|
|
||||||
pl.xlabel('frequency/Hz');
|
|
||||||
pl.ylabel('gain/dB');
|
|
||||||
pl.ylim(top=1,bottom=-30);
|
|
||||||
pl.xlim(left=250, right=12000);
|
|
||||||
pl.show()
|
|
|
@ -1,58 +0,0 @@
|
||||||
% GNU Octave script to generate pre and deemphasis filters
|
|
||||||
% https://dsp.stackexchange.com/questions/34605/biquad-cookbook-formula-for-broadcast-fm-de-emphasis
|
|
||||||
% PACKAGES
|
|
||||||
|
|
||||||
pkg load control
|
|
||||||
pkg load signal
|
|
||||||
|
|
||||||
clear all;
|
|
||||||
clc;
|
|
||||||
|
|
||||||
fs = 24000;
|
|
||||||
samplingtime = 1/fs;
|
|
||||||
|
|
||||||
% analog prototype
|
|
||||||
A2 = [1];
|
|
||||||
B2 = [0.000075 1];
|
|
||||||
|
|
||||||
% Pre
|
|
||||||
Ds = tf(B2, A2);
|
|
||||||
% De
|
|
||||||
% Ds = tf(A2, B2);
|
|
||||||
|
|
||||||
Ds = Ds/dcgain(Ds);
|
|
||||||
|
|
||||||
% MZT
|
|
||||||
T1 = 0.000075; % 75us
|
|
||||||
z1 = -exp(-1.0/(fs*T1));
|
|
||||||
p1 = 1+z1;
|
|
||||||
|
|
||||||
a0 = 1.0;
|
|
||||||
a1 = p1;
|
|
||||||
a2 = 0;
|
|
||||||
|
|
||||||
b0 = 1.0;
|
|
||||||
b1 = z1;
|
|
||||||
b2 = 0;
|
|
||||||
|
|
||||||
% swap between a1, b1 to select pre- or de-emphasis
|
|
||||||
|
|
||||||
# Pre
|
|
||||||
Bmzt = [b0 a1 b2]
|
|
||||||
Amzt = [a0 b1 a2]
|
|
||||||
% De
|
|
||||||
% Bmzt = [b0 b1 b2]
|
|
||||||
% Amzt = [a0 a1 a2]
|
|
||||||
|
|
||||||
DzMZT = tf(Amzt, Bmzt, samplingtime);
|
|
||||||
DzMZT = DzMZT/dcgain(DzMZT);
|
|
||||||
|
|
||||||
%% Plot
|
|
||||||
wmin = 2 * pi * 20.0; % 20Hz
|
|
||||||
wmax = 2 * pi * ((fs/2.0) - (fs/2 - 20000)); %20kHz
|
|
||||||
|
|
||||||
figure(1);
|
|
||||||
bode(Ds, 'b', DzMZT, 'c', {wmin, wmax});
|
|
||||||
legend('Analog prototype', 'MZT 2nd order','location', 'northwest');
|
|
||||||
grid on;
|
|
||||||
pause();
|
|
|
@ -1,2 +0,0 @@
|
||||||
source [find interface/stlink-v2.cfg]
|
|
||||||
source [find target/stm32f1x.cfg]
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue