Hi! I want to learn Arm architecture and make projects with it but do not know where to start. I have STM32F401-Nucleo. I really want to learn how arm architecture works and what are the differences between cores etc.
1- Should I start with writing my codes in assembly to learn how everything works? Can Nucleo boards be programmed with assembly?
2- I downloaded Mbed, STMCube and uVision. I liked Mbed, but it uses just C++ and I do not know if it is a good choice.
3- Is there any roadmap or something else you can suggest to me?
>> Can Nucleo boards be programmed with assembly?
Yes, of course. You might want to look at https://github.com/WestfW/Minimal-ARM/wiki/AssemblyDevelopment and the associated code and links. This grew out of a discussion that went like "I can get really cheap ARM development boards - can I actually DO development without having to download several gigabytes worth of Compilers, IDEs, and special Tools?" It didn't really go very far; "several gigabytes" isn't as much of a hardship as it used to be, and most of the "current" thoughts are more along the lines of "can I write bare-metal C code without relying on bloated vendor libraries or something like Arduino. Which is also possible.
>> Should I start with writing my codes in assembly to learn how everything works?
Probably not. Nearly all the documentation, examples, tutorial, discussion, and even the chip datasheets, are written assuming that C will be used. The C compilers are "pretty good", and the assembly language environment ... not so good. (that includes the limitations of the instruction set on smaller CPU, as well as the lack of chip definitions, assembly-oriented IDEs, widely used macro packages, and etc...)