By upgrading the LLVM compiler, we solved the problem when neither LLVM nor the GCC could create the correct Position Independent Code for Cortex M controllers, with the code running in Flash memory rather than in RAM. Now the binary image of the program can be flashed to an arbitrary address and run from it, without being moved to another place.
In 2018 we took up our first major contract on developing a software devkit for a neural processing unit. Back in those times, I knew the AI market was rapidly growing and contained hundreds of companies. But I could never imagine that by 2021 another hundred or two chipmakers who developed AI accelerators would emerge, or that we would become Arm AI-partner, or that our projects with neuro-chipmakers would evolve into a separate field. This article is an attempt to formalize the knowledge that we gained from several projects and about a hundred dialogs with chipmakers. At the same time, I would be happy if this article could be helpful to someone.