У нас есть положительный опыт разработки микроконтроллеров ARM на STM32 Cortex M3/M4 под Atollic True Studio. Все удобно программируется и отлаживается - просто одно удовольствие , через программатор JLink и т.д. С проектами можно ознакомится на соседней ветке сайта. Там мы поработали со всеми протоколами - I2C, UART, SPI и т.д. и вроде бы границы открыты - программируй на здоровье и наслаждайся...
Но мир идет дальше и что мы видим - переход от микроконтроллеров (MCU) к процессорам (MPU). В чем основное отличие? В MPU несколько ядер - это первое. Во вторых памяти RAM обычно на порядок выше. Но и как наверное следствие на эти процессора кладут операционную систему Линакс . Вроде ядро Линакс открыто, но там уже в последней версии несколько миллионов строчек кода.
И возникает сначала вопрос - а можно ли обойтись без линакс , то есть программировать как обычный контроллер? Это называется программирование bare-metal (то есть чистое железо). И вот тут выясняется главная проблема - отсутствие открытой информации по ARM MPU типа Cortex A7 и т.д. Все производители одноплатников типа Orange, Ruspberry, Banana и т.д. не очень-то открывают инфу по управлению их процессорами. Они предлагают установить linux ядро (собранное ими под из типовую плату) и не парится на уровне bare-metal.
Кстати к фруктовому набору Orange, Ruspberry, Banana не надо относится недооценивающе , ка будто это игрушки, так как если посмотреть развитие ядра linux , то вы обнаружите наряду с самыми известными брендами записи , что ядро линакс теперь поддерживает Orange, Ruspberry, Banana и т.д. А это значит , что это очень серьезные на сегодняшний день производители, готовые завалить рынок дешевыми устройствами под ОС линакс. И конечно все эти новые производители из Китая...
Наша задача найти много ядерный процессор , бесплатную открытую среду разработки под него, документацию под этот процессор на уровне bare-metal. И поскольку по большей части все это теперь из Китая и частично из другого мира - мы имеем очень длинный путь впереди и неизвестно удастся ли нам его пройти.
Как всегда сначала тупо собираем первоначальную информацию :
SoC - System On Chip
Популярные процессора
Raspberry pi2 процессор Broadcom BCM2836 - это похоже первопроходцы по одноплатникам (это Британцы)
Raspberry pi3 процессор Broadcom BCM2837 www.raspberrypi.org
Broadcom Hurricane 2
Orange pi AllWinner (A33,R40) www.sunxi.org - а это уже китайцы
Rockchip 3399
CubieBoard 6
STMMPU - это с приличным опозданием европейцы
FreeScale Duckbill i/MX28
Motorola Droid4
Nvidea Tegra 186
Banana pi m2 Allwinner
Fairphone 2
Amlogick
Zync Xilinx. ide Vivado , Vitis
Hygon Dhyans
C-Cky
Qualcom процессор Snapdragon
Среды разработки (IDE) - все о чем попалось упоминание в интернете :
cross-toolchain
Eclipde CDT
Visual Studio Code for Linux
Netbeans
toolchaine Linaro www.arm.com
DS 5 платный софт
Qualcom Snapdragon software QPST
Orange Pi DMX www.orangepi-dmx.org
Загрузчики
uBoot загрузчик для SoC
Отладка
openOCD отладчик
EmbeddedICE начиная с ARMv7
Дополнительно , нас интересуют например WIFI чипы :
Realteck rtl8189ftv на Orange Allwinner A5
Далее как всегда мониторим , что в больших количествах продается на рынках , находим Orange Pi . По теме orange PI bare metal сразу находится прилично примеров программирования.
Интересно , что именно в поисках инфы по программированию под orange pi случайно или не случайно выходишь на самого Линуса Торвальдса на git hub-е . Человек спокойненько собирает ядра линакс (бесплатно , открыто) и выкладывает их на github.com . От его исходников и делают так называемый fork (адаптируют под свои нужны) апельсиновцы. Внимательно просмотрите http://www.orangepi.org - там очень много информации. Все разработки по orang pi от компании Shenzhen Xunlong Software CO.,Limited.
И еще нам в помощь ресурс www.arm.com . Это и есть тот самый сайт , где разрабатывают ARM архитектуры и устанавливают правила игры.
Также интересна ветка своих линуксовых вариантов ОС от armbian.com .
А что нам предложит Keil ? Legacy support for Arm7, Arm9 & Cortex-R devices . Это на http://www2.keil.com/mdk5/legacy . Тут конечно без ограничения кода не обойтись , но для первоначального изучения подходит.