Which ARM development board I should buy?

Hi all,

I have to be pleased to be a member of ARM community, because of ARM popularity.

I am in embedded software development for the last 20 years. Mostly I have done programming for TI TMS320xxx processors C/C++/assembly, and PowerPC C/C++. Now I have to learn programming for embedded software development for ARM processors. So I need to buy an ARM development board to do programming at home. Please tell me which SDK I should buy? Also any good book(s)?

To be a professional in ARM processor programming, do I need to learn ARM assembly language?

Babuddin

Parents
  • To be a professional in ARM processor programming, do I need to learn ARM assembly language?

    Whether ARM assembly is needed is an interesting question.  I'm sure many people would argue it's almost never needed.

    My own experience, especially writing & optimizing audio library code leveraging the Cortex-M4 DSP extensions, is I almost never need to write assembly, but I frequently end up reading the C compiler's generated assembly when optimizing my C code.

    While C compilers have become pretty good, you can still very easily compose complex code that forces the compiler to spill lots of local variables on the stack.  You can also write simple code that processes 1 item per loop iteration, which leaves most of the ARM registers unused and spends nearly all the CPU time on looping overhead, rather than doing the task you intended.  Often the compiler is able to optimize fairly complex code to very efficient use of ARM instructions, but sometimes subtle issues cause the compiler to generate horribly inefficient code even when the C source visually appears to be simple.

    But often such code optimization isn't necessary at all.  Many embedded applications are I/O limited, or limited by worst case interrupt response latency, or other timing issues far removed from the execution speed of the code.  Usually making better use of peripheral features and designing C-only code to avoid blocking I/O functions or disabling interrupts turns out to be far more important than optimizing code.

Reply
  • To be a professional in ARM processor programming, do I need to learn ARM assembly language?

    Whether ARM assembly is needed is an interesting question.  I'm sure many people would argue it's almost never needed.

    My own experience, especially writing & optimizing audio library code leveraging the Cortex-M4 DSP extensions, is I almost never need to write assembly, but I frequently end up reading the C compiler's generated assembly when optimizing my C code.

    While C compilers have become pretty good, you can still very easily compose complex code that forces the compiler to spill lots of local variables on the stack.  You can also write simple code that processes 1 item per loop iteration, which leaves most of the ARM registers unused and spends nearly all the CPU time on looping overhead, rather than doing the task you intended.  Often the compiler is able to optimize fairly complex code to very efficient use of ARM instructions, but sometimes subtle issues cause the compiler to generate horribly inefficient code even when the C source visually appears to be simple.

    But often such code optimization isn't necessary at all.  Many embedded applications are I/O limited, or limited by worst case interrupt response latency, or other timing issues far removed from the execution speed of the code.  Usually making better use of peripheral features and designing C-only code to avoid blocking I/O functions or disabling interrupts turns out to be far more important than optimizing code.

Children
No data