All I wanted to do was an FFT...
So, I got an STM32F469 discovery board, downloaded the Windows drivers for the board, Ada_Drivers_Library, GNAT GPL2016, ran GPS with the demo project, told it to download to the board and...
it sulked.
Somewhere it suggested running st-util first so I did that. Download to the board... OK now that works but an st-util instance has crashed.
Several days later after getting the st-util code, making it run under Visual Studio 2017 (because VS2017 is free for open source development and I have it installed), it no longer sulks and I can download/run the examples. See
https://github.com/orinem/stlink if you want the fixed st-util; hopefully it will be merged back into
https://github.com/texane/stlink soon.
Now I find an Ada FFT implementation... this looks good:
https://rosettacode.org/wiki/Fast_Fourier_transform#Ada - should be really portable from a 'rosetta' named site. Nope. It manages to need Ada.Numerics.Complex_Arrays and Ada.Numerics.Real_Arrays which are not in
any of the the Ada_Drivers_Library embedded run times that I can find. Why not? The generic versions are there. Some digging and I found the relevant ADS files. Copy the contents into my project and remove the Ada.Numerics decorations and we're off. Not so fast. Forget about Ada.Complex_Text_IO. Not happening. So remove it and format the strings by hand and finally, I have something that builds and runs and does an FFT.
Why would I want an FFT? How about to do a waterfall display for one of these radios:
http://www.wb5rvz.org/ The ARM processor should have plenty of power.
Now will someone explain what this actually does? It looks as bad as a C++ template definition to me.
with Ada.Numerics.Generic_Complex_Arrays;
generic
with package Complex_Arrays is
new Ada.Numerics.Generic_Complex_Arrays (<>);
use Complex_Arrays;
function Generic_FFT (X : Complex_Vector) return Complex_Vector;