All you need is ... GNU GCC!
Для программирования почти любого контроллера / процессора можно использовать бесплатный комплект GNU GCC.
Для этого надо просто в интернете скачать файл установщик . У нас для windows называется gcc-arm-none-eabi-10-2020-q4-major-win32.exe. Как это приятно узнать , когда у тебя нет лишних 10000 евро....
Не удержался и привожу весь процесс установки .
Запускаем установщик:

GNU Arm Embedded tollchain

GNU GENERAL PUBLIC LICENSE - бери , пользуйся бесплатно...

Далее обратите внимание на один файл gccvar.bat . Он просто добавляет нужные пути к окружению вашей программы в Windows.

Вот содержание gccvar.bat :
@echo off
rem This file is the script to set path for ARM eabi tool chain.
set TL_PATH=%~dp0
set PATH=%TL_PATH%;%PATH%
cmd /K cd %CD%
Тут смысл просто в добавлении пути C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2020-q4-major\bin\; к переменной PATH файлам типа arm-none-eabi-gcc.exe и другим , необходимым для сборки вашей программы под любой процессор.
Далее берем какой-нибудь bare metal проект из интернета для ARM Cortex A7 или A53 и пробуем его собрать.
Обычно в таких проектах есть makefile , в котором прописано что делать компилятору, линковщику с конкретными файлами проекта.
Но в Toolchain нет самой программы , которая запускает сборку по инструкциям в makefile. Эта программа называется make и качается отдельно в составе установочного пакета make3.81.exe (для Windows).
Устанавливаем make3.81.exe , далее , чтобы им пользоваться , вызывая из каталогов ваших проектов - что надо сделать? Правильно - добавить к PATH путь к каталогу с файлом make.exe , у нас это каталог : C:\Program Files (x86)\GnuWin32\bin .
Cortex A53
Настраиваем все тоже самое , но для 64 разрядных процессоров Cortex A53. Тут по-видимому надо скачать уже другой toolchain для 64-разрядных процессоров (aarch64).
компилятор aarch64-elf-gcc
линковщик aarch64-elf-ld
окончательная обработка в bin aarch64-elf-objcopy
Это из набора gcc-linaro-7.5.0-2019.12-i686-mingw32_aarch64-elf.tar.xz. make.exe файл подходит прежний.
Все теперь makefile будет собираться нормально . Содержание примерно его такое :
CFLAGS = -Wall -O2 -ffreestanding
LDFLAGS =-nostdlib -T link.ld
APP = uart
all: $(APP).elf
$(APP).elf: uart.o
aarch64-elf-ld $(LDFLAGS) $(APP).o -o $(APP).elf
aarch64-elf-objcopy -O binary $(APP).elf $(APP).bin
%.o: %.c
aarch64-elf-gcc $(CFLAGS) -c $< -o $@
dump: $(APP).elf
aarch64-elf-objdump -D $(APP).elf
clean:
rm -rf *.o *.elf *.bin