I'm keen to use this, but for reasons I don't entirely understand, your parameter export won't compile for me:
Edit2: maybe not, I guess params are generated on the host machine, not the MCU.
Edit3: changed gcc to g++ in the Makefile and it's fixed the problem. Not sure why I thought that would work, or why it did work, but it did. gcc is supposed to detect C++ based on file extension, not sure why that isn't happening here.
Code: Select all
charlie@charlie-ThinkPad-T14:~/stm32-sine$ make
CPP obj/stm32_sine.o
CPP obj/hwinit.o
CPP obj/stm32scheduler.o
CPP obj/params.o
CPP obj/terminal.o
CPP obj/terminal_prj.o
CC obj/my_string.o
CPP obj/digio.o
CPP obj/sine_core.o
CC obj/my_fp.o
CPP obj/fu.o
CPP obj/inc_encoder.o
CPP obj/printf.o
CPP obj/anain.o
CPP obj/temp_meas.o
CPP obj/param_save.o
CPP obj/throttle.o
CPP obj/errormessage.o
CPP obj/stm32_can.o
CPP obj/pwmgeneration.o
CPP obj/picontroller.o
CPP obj/terminalcommands.o
CPP obj/vehiclecontrol.o
CPP obj/pwmgeneration-sine.o
LD stm32_sine
OBJCOPY stm32_sine.bin
OBJCOPY stm32_sine.hex
text data bss dec hex filename
45792 4108 992 50892 c6cc stm32_sine
/usr/bin/ld: /tmp/ccHOg4xs.o: warning: relocation against `_ZSt4cout' in read-only section `.text.startup'
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintValue(char const*, char const*, unsigned int)':
genparamdb.cpp:(.text+0x9): undefined reference to `std::cout'
/usr/bin/ld: genparamdb.cpp:(.text+0x37): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x46): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x51): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x60): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x6f): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: /tmp/ccHOg4xs.o:genparamdb.cpp:(.text+0x7a): more undefined references to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' follow
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintValue(char const*, char const*, unsigned int)':
genparamdb.cpp:(.text+0xb1): undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintParam(char const*, char const*, float, float, float, char const*, unsigned int)':
genparamdb.cpp:(.text+0xdb): undefined reference to `std::cout'
/usr/bin/ld: genparamdb.cpp:(.text+0x11d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x12c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x137): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x146): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x155): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: /tmp/ccHOg4xs.o:genparamdb.cpp:(.text+0x167): more undefined references to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' follow
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintParam(char const*, char const*, float, float, float, char const*, unsigned int)':
genparamdb.cpp:(.text+0x192): undefined reference to `std::ostream& std::ostream::_M_insert<double>(double)'
/usr/bin/ld: genparamdb.cpp:(.text+0x19d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1ac): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1ba): undefined reference to `std::ostream& std::ostream::_M_insert<double>(double)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1c5): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1d4): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1e2): undefined reference to `std::ostream& std::ostream::_M_insert<double>(double)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1ed): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x1fc): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x20b): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x216): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text+0x221): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: /tmp/ccHOg4xs.o:genparamdb.cpp:(.text+0x230): more undefined references to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' follow
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintParam(char const*, char const*, float, float, float, char const*, unsigned int)':
genparamdb.cpp:(.text+0x23a): undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintValue(char const*, char const*, unsigned int)':
genparamdb.cpp:(.text+0xc7): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `PrintParam(char const*, char const*, float, float, float, char const*, unsigned int)':
genparamdb.cpp:(.text+0x257): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `main':
genparamdb.cpp:(.text.startup+0x10): undefined reference to `std::cout'
/usr/bin/ld: genparamdb.cpp:(.text.startup+0x48): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text.startup+0x123b): undefined reference to `std::cout'
/usr/bin/ld: genparamdb.cpp:(.text.startup+0x1240): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: genparamdb.cpp:(.text.startup+0x1248): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
/usr/bin/ld: /tmp/ccHOg4xs.o: in function `_GLOBAL__sub_I__Z10PrintValuePKcS0_j':
genparamdb.cpp:(.text.startup+0x126a): undefined reference to `std::ios_base::Init::Init()'
/usr/bin/ld: genparamdb.cpp:(.text.startup+0x1271): undefined reference to `std::ios_base::Init::~Init()'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make: *** [Makefile:100: genparamdb] Error 1