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

how should a FPGA engineer learn ARM based micro processors?

Dear all,

I am an engineer who is doing signal processing on xilinx FPGAs. I am familiar with C/VHDL/MATLAB. However I want to learn ARM based micro-processors. I know very little about processors and their architecture. Absolutely no practical experience of working on them.

Kindly suggest me a path (books etc) which leads me through ARM processors.

I have decided to go through this book first ;

Computer Organization and Design, Fifth Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) 5th Edition

Will this be a good book to start with ?

Please give your suggestions.

Parents
  • Hi vp9 and welcome to the community and welcome to the ARM world.

    There are a few different ARM "sub-architectures". If the ARM architecture you're interested in is a Cortex-M, I might be able to help you a little.

    I mainly work with Cortex-M, because it's easy, and getting started with it cost less than $10 (yes, that's right; it includes a complete development board and a USB programmer interface. The compiler + debugger toolchain can be downloaded for free; see GNU ARM Eclipse).

    As for the development boards, you can sometimes win a full board here on the ARM Community Site, so keep your eyes open.

    -Alternatively, you can find a lot of good low-cost boards and programmer adapters on eBay.

    (I mention this, because hands-on experience is a great way to get acquainted with the ARM Cortex-M architecture; even if you're a vendor).

    As for the instruction set, common to all architectures are the need for reading a value from memory (ROM / RAM), modifying the value and writing it back (RAM).

    Here's a quick overview of a few instruction types:

    For the ARM architecture, which is RISC based, we use the LDR instruction (or one of its variants like LDRB, LDRH, LDRD or LDM) to read values from RAM / ROM / hardware registers.

    We can use one of the data processing instructions (ADD, SUB, MUL, DIV, AND, ORR, EOR, LSL, LSR, ASR, etc.) to modify the data.

    The data processing instructions are always operating on all 32-bits of a register.

    For writing to RAM or hardware registers, the STR instruction (or one of its variants, for instance STRB, STRH, STRD, STM) can be used.

    Here's a good overview of the ARM Cortex-M3 instruction set.

    More details about the operation of each instruction can be found in the ARM Cortex-M3 Devices Generic User Guide.

Reply
  • Hi vp9 and welcome to the community and welcome to the ARM world.

    There are a few different ARM "sub-architectures". If the ARM architecture you're interested in is a Cortex-M, I might be able to help you a little.

    I mainly work with Cortex-M, because it's easy, and getting started with it cost less than $10 (yes, that's right; it includes a complete development board and a USB programmer interface. The compiler + debugger toolchain can be downloaded for free; see GNU ARM Eclipse).

    As for the development boards, you can sometimes win a full board here on the ARM Community Site, so keep your eyes open.

    -Alternatively, you can find a lot of good low-cost boards and programmer adapters on eBay.

    (I mention this, because hands-on experience is a great way to get acquainted with the ARM Cortex-M architecture; even if you're a vendor).

    As for the instruction set, common to all architectures are the need for reading a value from memory (ROM / RAM), modifying the value and writing it back (RAM).

    Here's a quick overview of a few instruction types:

    For the ARM architecture, which is RISC based, we use the LDR instruction (or one of its variants like LDRB, LDRH, LDRD or LDM) to read values from RAM / ROM / hardware registers.

    We can use one of the data processing instructions (ADD, SUB, MUL, DIV, AND, ORR, EOR, LSL, LSR, ASR, etc.) to modify the data.

    The data processing instructions are always operating on all 32-bits of a register.

    For writing to RAM or hardware registers, the STR instruction (or one of its variants, for instance STRB, STRH, STRD, STM) can be used.

    Here's a good overview of the ARM Cortex-M3 instruction set.

    More details about the operation of each instruction can be found in the ARM Cortex-M3 Devices Generic User Guide.

Children
No data