2
votes

Id like to use Ada with Stm32F103 uc, but here is the problem - there is no build-in runtime system within GNAT 2016. There is another cortex-m3 uc by TI RTS included - zfp-lm3s, but seems like it needs some global updates, simple change of memory size/origin doesn't work.

So, there is some questions:

  1. Does some body have RTS for stm32f103?

  2. Is there any good books about low-level staff of cortex-m3 or other arm uc?

PS. Using zfp-lm3s rises this error, when i try to run program via GPS:

Loading section .text, size 0x140 lma 0x0 Load failed

2
have you tried with just --RTS=zfp ? - Jean-François Fabre
@Jean-François Fabre, i don't have zfp, only zfp-lm3s, and some zfp for cortex-m4. So --RTS=zfp doesn't work. - Jamshoot

2 Answers

5
votes

The STM32F series is from STMicroelectronics, not TI, so the stm32f4 might seem to be a better starting point.

In particular, the clock code in bsp/setup_pll.adb should need only minor tweaking; use STM’s STM32CubeMX tool (written in Java) to find the magic numbers to set up the clock properly.

You will also find that the assembler code used in bsp/start*.S needs simplifying/porting to the Cortex-M3 part.

My Cortex GNAT Run Time Systems project includes an Arduino Due version (also Cortex-M3), which has startup code written entirely in Ada. I don’t suppose the rest of the code would help a lot, being based on FreeRTOS - you’d have to be very very careful about memory usage.

0
votes

I stumbled upon this question while looking for a zfp runtime specific to the stm32l0xx boards. It doesn't look like one exists from what I can see, but I did stumble upon this guide to creating a new runtime from AdaCore, which might help anyone stuck with the same issue:

https://blog.adacore.com/porting-the-ada-runtime-to-a-new-arm-board