altos: Move from newlib-nano to picolibc Use picolibc.ld, which involved some .ld file hacking, including: 1) Defining ao_boot RAM address in the .ld file and declaring it 'extern' 2) Changing how m0 interrupt vector got moved to ram 3) Using -Taltos.ld instead of -Wl,-Taltos.ld so picolibc.specs wouldn't add picolibc.ld 4) Placing romconfig vars in '.init.1' and '.init.2' sections instead of '.romconfig' 5) Place code needing to run out of RAM in section .srodata instead of .ramtext Signed-off-by: Keith Packard <keithp@keithp.com>
stm: Use common flash wait loop instead of inlining Signed-off-by: Keith Packard <keithp@keithp.com>
Switch from GPLv2 to GPLv2+ Signed-off-by: Keith Packard <keithp@keithp.com>
altos/stm: Block interrupts while reprogramming flash Wouldn't work well to get interrupted... Signed-off-by: Keith Packard <keithp@keithp.com>
altos/stm: arm-none-eabi-binutils now puts 'main' into .text.startup Change name of .text.ram to .ramtext, then load .text* into flash and .ramtext into ram. This ensures that 'main' and anything else in a random .text.* segment will get loaded into flash as appropriate. Signed-off-by: Keith Packard <keithp@keithp.com>
altos/stm: Create per-product flash loaders Split the flash loader prototype into pieces so that each product can build a custom flash loader with very little code. Signed-off-by: Keith Packard <keithp@keithp.com>
altos: Fix STM flash programming Wait for flash to go non-busy after writing or erasing a page and before jumping back out of the RAM code. Export a separate 'erase' operation for testing. Re-lock flash after every operation. Signed-off-by: Keith Packard <keithp@keithp.com>
altos: Add program flash function And get it loaded to RAM so it can execute correctly. Nothing calls it yet... Signed-off-by: Keith Packard <keithp@keithp.com>