This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Questions about learning the ARM architecture ?

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?

Parents
  • >  1- Should I start with writing my codes in assembly to learn how everything works? Can Nucleo boards be programmed with assembly?

    By default, if you use the correct tool chain to compile/link the assembly code, the boards including Nucleo can execute assembly well.

    > 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.

    If you can build C/C++ code, usually you can also build assembly code and execute it.  The modern Integrated Development Environment (IDE) may help the developers a lot but may also hide much details.  Please read Arm compiler documents to understand the difference between C/C++ and assembly compiling.

     

    > 3- Is there any roadmap or something else you can suggest to me?

    We recommend you to read Arm Learn the Architecture pages first.

    There are three types of Architecture: A, R, M.  It seems that STM32F401-Nucleo is for Cortex-M architecture? Anyway, it is good start for Cortex-M if it is.

    One Architecture covers many aspects, such as Instruction Set (ISA), interrupt handling, memory model, memory management, security extension, debug and trace.

    Writing assembly code is very helpful to understand ISA and low level processor behaviors, while C code is acceptable to understand some high level architecture behavior like memory management, debug and trace.

Reply
  • >  1- Should I start with writing my codes in assembly to learn how everything works? Can Nucleo boards be programmed with assembly?

    By default, if you use the correct tool chain to compile/link the assembly code, the boards including Nucleo can execute assembly well.

    > 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.

    If you can build C/C++ code, usually you can also build assembly code and execute it.  The modern Integrated Development Environment (IDE) may help the developers a lot but may also hide much details.  Please read Arm compiler documents to understand the difference between C/C++ and assembly compiling.

     

    > 3- Is there any roadmap or something else you can suggest to me?

    We recommend you to read Arm Learn the Architecture pages first.

    There are three types of Architecture: A, R, M.  It seems that STM32F401-Nucleo is for Cortex-M architecture? Anyway, it is good start for Cortex-M if it is.

    One Architecture covers many aspects, such as Instruction Set (ISA), interrupt handling, memory model, memory management, security extension, debug and trace.

    Writing assembly code is very helpful to understand ISA and low level processor behaviors, while C code is acceptable to understand some high level architecture behavior like memory management, debug and trace.

Children
No data