Начало пути

У нас есть положительный опыт разработки микроконтроллеров 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 . Тут конечно без ограничения кода не обойтись , но для первоначального изучения подходит.