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

Moving from AVR to ARM's

Note: This was originally posted on 6th June 2012 at http://forums.arm.com

So Im a Entry level Firmware Dev., i've been working with Arduino's/AVR's and PICS for a good few years. Im a pretty good C/C++ Programmer and Can understand ASM (At least for AVR) Pretty well. I understand circuits pretty well too (Well....as well as someone would need to working with MC's and such).

At work we use ARM's however, and while I don't directly deal with them...it's something i'd like to do. However Im at a loss at where to start. I know there are ARM Microprocessors and MCU's as well. I've seen a few of the TI boards around work (Mainly http://www.ti.com/tool/ek-lm4f232) the Stellaris Kits.

Where would be a good place to start? Probably something Simple since I know the ARM is prolly not as easy as Dealing with AVR's and PICS haha. But there are SOOO many different ones to choose from....and even more-so on the development kits. It's a bit overwhelming. Along with a bunch of different toolchains (Which im totally not used to).

I realize this question has been asked a million times, and I did search. But New MCU's/MP's come out yearly......and I figure a more up to date question would be worth the slight annoyance haha!.
I've heard the Cortex-M3's are probably the easiest to start with, but that's just what i've heard, not to mention I don't know what Eval Kits/Dev boards would be best.

Bonus Question: For someone Starting in ARM Development, what are the 2 best books you could think of as an accompanying guide.
  • Note: This was originally posted on 6th June 2012 at http://forums.arm.com

    Yea i've taken a look at Rasberry Pi before, but im not sure I want to just jump into a Embedded Linux board (I've still got a LOT to learn) So maybe a more strict eval/dev board would be betetr?
    I've heard of something called Panda Boards? and i've also heard of beagleboard.

    But then again Rasberry Pi might be ideal to start with. But ya any ideas keep them coming! (It sucks that Rasberry Pi's are SOOO friggin hard to get).

    Also any book recommendations?
  • Note: This was originally posted on 6th June 2012 at http://forums.arm.com

    Yea I signed up for the mailing list....hopefully they'll get more in stock soon. Anyways thanks for your info!
    Other recommendations from anyone else of course is always welcome!
  • Note: This was originally posted on 7th June 2012 at http://forums.arm.com

    This is all super helpful Iso.
    I guess since I started out with an Arduino I'd want to get something close to that. More prototyping sorta stuff. (Ya know reading sensor values/driving servos/Some Web/Ethernet things) but nothing too incredibly tasking (Im still not SUPER DUPER experienced with MC's as a whole anyways)
    So the Cortex might be a good place to start with. If thats so then mbed prolly the best thing to start with?

    At work they have Stellaris LM4F232 Eval kits (Which use the ARM Cortex MF4 Based MC's)? Would that be something viable? or should I stick with mbed (Are they the most well known Eval board vendor?)
    I know there is a Cortex M3 Book....so maybe thatd be a good start?

    Maybe once I learned the M3's I could move onto beagleboard (Since I know they seem to be fairly popular, and have many documents/tutorials with them)


    Side Question: I know the difference between a Microcontroller and a Microprocessor...but in terms on ARM and actual Coding.....is the ASM/C code between them THAT much different? or is this one of those cases where Microcontroller and Microprocessor gets "lumped" together. Since the wiki states that they are all microprocessors?

    (Remember Im used to AVR's which as far as I know are all microcontrollers)

    I thank you VERY much for your info ISO.
  • Note: This was originally posted on 7th June 2012 at http://forums.arm.com

    Thanks Iso, all super helpful info.

    You can still write in Assembler on the M3's right? (like with an mbed device?)
    also: Are all the ARM Cores technically Microprocessors or Microcontrollers? The terms always seem to get flipped around depending the company (Sometimes just combining them to mean the same thing).
  • Note: This was originally posted on 8th June 2012 at http://forums.arm.com


    > You can still write in Assembler on the M3's right? (like with an mbed device?)

    Yes, writing assembler for the M3 is no problem. Seems possible using the mbed tools too (http://mbed.org/cook...sembly-Language).

    > Are all the ARM Cores technically Microprocessors or Microcontrollers? The terms always seem to get flipped around depending the company (Sometimes just combining them to mean the same thing).

    I've never seen an official definition. If you ask me a (micro)processor is just the CPU implementation, and a microcontroller is a physical chip which can solder on to something which does plant control type work. A microcontoller therefore contains a microprocessor, but also a load of other goodies to complete a more or less standalone system.


    I see, Makes sense.
    I guess all ARM's would probably be considered MC's then?


  • Note: This was originally posted on 8th June 2012 at http://forums.arm.com

    Hi,

    I think to start with ARM, ARM cortex-M3 with NO OS will be a good option. It is simple and you can easily learn the architecture as well. Directly working on higher versions of ARM over Linux might trouble you with lots of complexities.
  • Note: This was originally posted on 6th June 2012 at http://forums.arm.com


    So Im a Entry level Firmware Dev., i've been working with Arduino's/AVR's and PICS for a good few years. Im a pretty good C/C++ Programmer and Can understand ASM (At least for AVR) Pretty well. I understand circuits pretty well too (Well....as well as someone would need to working with MC's and such).

    At work we use ARM's however, and while I don't directly deal with them...it's something i'd like to do. However Im at a loss at where to start. I know there are ARM Microprocessors and MCU's as well. I've seen a few of the TI boards around work (Mainly http://www.ti.com/tool/ek-lm4f232) the Stellaris Kits.

    Where would be a good place to start? Probably something Simple since I know the ARM is prolly not as easy as Dealing with AVR's and PICS haha. But there are SOOO many different ones to choose from....and even more-so on the development kits. It's a bit overwhelming. Along with a bunch of different toolchains (Which im totally not used to).

    I realize this question has been asked a million times, and I did search. But New MCU's/MP's come out yearly......and I figure a more up to date question would be worth the slight annoyance haha!.
    I've heard the Cortex-M3's are probably the easiest to start with, but that's just what i've heard, not to mention I don't know what Eval Kits/Dev boards would be best.

    Bonus Question: For someone Starting in ARM Development, what are the 2 best books you could think of as an accompanying guide.


    As a homer, perhaps http://www.raspberrypi.org/ might be a start? 25 pounds or so, full Debian Linux, gcc and gdb will get you started with C or asm on the 1176 processor?
    HTH  Dave
  • Note: This was originally posted on 6th June 2012 at http://forums.arm.com


    Yea i've taken a look at Rasberry Pi before, but im not sure I want to just jump into a Embedded Linux board (I've still got a LOT to learn) So maybe a more strict eval/dev board would be betetr?
    I've heard of something called Panda Boards? and i've also heard of beagleboard.

    But then again Rasberry Pi might be ideal to start with. But ya any ideas keep them coming! (It sucks that Rasberry Pi's are SOOO friggin hard to get).

    Also any book recommendations?


    Not sure embedded is the right description. Just a variant on a 'normal' motherboard?
    Plus it is cheap enough to experiment?

    Sorry, never seen any books on the ARM assy language.

    Dave
  • Note: This was originally posted on 7th June 2012 at http://forums.arm.com


    It's going to depend on what you are wanting to do at the end of the day - as you say the range of possibilities is large, so it makes sense to start "in the right area". ARM SoC designs range from small microcontrollers to multi-core smartphone chips with half a dozen CPUs, a GPU, and some kind of modem. In the middle you have the more traditional embedded system which is more powerful than a simply micro, but more cut down than a high end smartphone SoC.


    Starting at the "simple" end of things you have the Cortex-M family of microcontrollers; these are simple ARM cores which are designed for small code size and ease of development for low level software. Because they are design for controlling physical things they also tend to have a good range of low level physical interfaces (I2C, CAN, GPIO, ADC/DAC, PWM, etc) but this varies from vendor to vendor. You also find a number of older ARM7 and ARM9 devices in this range, but I'd recommend starting off with the Cortex-M devices. You can find some simple prototyping boards on http://mbed.org/ which are programmble over USB and which have bread-board friendly pinout, so great for prototyping.

    In the middle you have things the the Raspberry Pi; an ARM11 based design, so quite simple to get to grips with at the bare metal level, but also capable of running a "big OS" such as Linux. Cortex-R cores tend to be fitting in to this segment, but at they are quite specialized SoCs the boards are not often widely available.

    At the higher end you have various boards based on Cortex-A family; BeagleBoard, PandaBoard, Snowball, to name but a few. These tend to be geared towards "big OS" - Linux, Android, etc - so fast processors (multi-core in some cases), with PC-like connectivity (Ethernet, USB, HDMI, etc). However, less useful for controlling things, and they tend to be more expensive devices.

    HTH,
    Iso



    Best overview I've heard of the ARM range! Thanks Iso.

    The op asked about books? Are there any? Do you know of any useful ones? Or is it just the array of ARM docs?

    Dave
  • Note: This was originally posted on 8th June 2012 at http://forums.arm.com


    Thanks for the comment :rolleyes: . Actually there is a 2nd edition.
    http://www.amazon.co.uk/The-Definitive-Guide-ARM-Cortex-M3/dp/185617963X/ (paperback)
    http://www.amazon.co.uk/The-Definitive-Guide-Cortex-M3-ebook/dp/B003XT5ST8/ (kindle)

    and also a Cortex-M0 book
    http://www.amazon.co.uk/The-Definitive-Guide-ARM-Cortex-M0/dp/0123854776/ (paperback)
    http://www.amazon.co.uk/The-Definitive-Guide-Cortex-ebook/dp/B005DXMVLA/ (kindle)

    regards,
    Joseph


    Pushing it a bit? £22 for a kindle edition? Any reviews? Is it worth the money?

    Dave
  • Note: This was originally posted on 6th June 2012 at http://forums.arm.com

    It's going to depend on what you are wanting to do at the end of the day - as you say the range of possibilities is large, so it makes sense to start "in the right area". ARM SoC designs range from small microcontrollers to multi-core smartphone chips with half a dozen CPUs, a GPU, and some kind of modem. In the middle you have the more traditional embedded system which is more powerful than a simply micro, but more cut down than a high end smartphone SoC.


    Starting at the "simple" end of things you have the Cortex-M family of microcontrollers; these are simple ARM cores which are designed for small code size and ease of development for low level software. Because they are design for controlling physical things they also tend to have a good range of low level physical interfaces (I2C, CAN, GPIO, ADC/DAC, PWM, etc) but this varies from vendor to vendor. You also find a number of older ARM7 and ARM9 devices in this range, but I'd recommend starting off with the Cortex-M devices. You can find some simple prototyping boards on http://mbed.org/ which are programmble over USB and which have bread-board friendly pinout, so great for prototyping.

    In the middle you have things the the Raspberry Pi; an ARM11 based design, so quite simple to get to grips with at the bare metal level, but also capable of running a "big OS" such as Linux. Cortex-R cores tend to be fitting in to this segment, but at they are quite specialized SoCs the boards are not often widely available.

    At the higher end you have various boards based on Cortex-A family; BeagleBoard, PandaBoard, Snowball, to name but a few. These tend to be geared towards "big OS" - Linux, Android, etc - so fast processors (multi-core in some cases), with PC-like connectivity (Ethernet, USB, HDMI, etc). However, less useful for controlling things, and they tend to be more expensive devices.

    HTH,
    Iso
  • Note: This was originally posted on 7th June 2012 at http://forums.arm.com

    If you want to do sensors valves and servos then I'd start off with something like the Cortex-M3 with an mbed type device (if only because it means you can avoid the soldering and just use breadboard until you have an idea you want to make permanent). The instruction set is different to the Cortex-A and R ARM cores, and they have a simplified exception model for interrupt handling, but this is mainly because the core is designed so you can avoid assembler (you can even write the interrupt handlers in plain old C).

    You won't have some of the "higher level" functionality such as ethernet out of the box with mbed I don't think, but there are a number of example projects on the mbed website which have hooked up to Twitter via some additional hardware, so it must be possible =)

    In terms of books I have a couple on my shelf:

    For the Cortex-M series I'd highly recommend:
    http://www.amazon.co.uk/Definitive-Guide-Cortex-M3-Embedded-Technology/dp/0750685344

    While now slightly dated (it is mostly ARM7 and ARM9, so a couple of generations behind, but covers the essential "Big OS" principles such as caches and MMUs from the ground up) the ARM System Developer Guide covers the bigger cores:
    http://www.amazon.co.uk/ARM-System-Developers-Guide-Architecture/dp/1558608745

    You can also register on the ARM website for the Cortex-A Series Programmer Guide, which is a good update to the newer cores. http://infocenter.arm.com/help/topic/com.arm.doc.den0013b/index.html

    Cheers,
    Iso
  • Note: This was originally posted on 7th June 2012 at http://forums.arm.com

    [color=#222222][size=2]> You can still write in Assembler on the M3's right? (like with an mbed device?)[/size][/color]

    Yes, writing assembler for the M3 is no problem. Seems possible using the mbed tools too (http://mbed.org/cookbook/Assembly-Language).

    [color=#222222][size=2]> Are all the ARM Cores technically Microprocessors or Microcontrollers? The terms always seem to get flipped around depending the company (Sometimes just combining them to mean the same thing).[/size][/color][color=#222222][size=2] [/size][/color]
    [color=#222222][size=2]
    [/size][/color]
    [size=2]I've never seen an official definition. If you ask me a (micro)processor is just the CPU implementation, and a microcontroller is a physical chip which can solder on to something which does plant control type work. A microcontoller therefore contains a microprocessor, but also a load of other goodies to complete a more or less standalone system.[/size]
  • Note: This was originally posted on 9th June 2012 at http://forums.arm.com


    Pushing it a bit? £22 for a kindle edition? Any reviews? Is it worth the money?

    Dave


    Hi Dave,
    The pricing is set by Elsevier ... but then many recent microcontroller programming books (including Kindle editions) are around the this price range.

    If you buy it from the Elsevier direct web site, the Elsevier marketing manager Becky gave us a discount code (ARM30) a while ago on a post in LinkedIn
    http://www.linkedin.com/groups/ARM-CortexA-Programmers-Guide-Official-85447.S.54439024?qid=a7815462-0be4-40c5-b7c6-517deccd49c4
    I don't know how long this discount code is valid for, and I don't think it cover Kindle edition.

    There is also a TI edition (on CD-ROM), which is basically the PDF of the book with some extra TI marketing materials:
    https://estore.ti.com/EKB-CM3-CD-The-Definitive-Guide-to-the-ARM-Cortex-M3-Second-Edition-by-Joseph-Yiu-Book-on-CD-P2058.aspx
    It is slightly cheaper ($30 USD) but I don't know if they will charge you postage cost.
     
    regards,
    Joseph
  • Note: This was originally posted on 8th June 2012 at http://forums.arm.com



    In terms of books I have a couple on my shelf:

    For the Cortex-M series I'd highly recommend:
    http://www.amazon.co...y/dp/0750685344



    Thanks for the comment :rolleyes: . Actually there is a 2nd edition.
    http://www.amazon.co.uk/The-Definitive-Guide-ARM-Cortex-M3/dp/185617963X/ (paperback)
    http://www.amazon.co.uk/The-Definitive-Guide-Cortex-M3-ebook/dp/B003XT5ST8/ (kindle)

    and also a Cortex-M0 book
    http://www.amazon.co.uk/The-Definitive-Guide-ARM-Cortex-M0/dp/0123854776/ (paperback)
    http://www.amazon.co.uk/The-Definitive-Guide-Cortex-ebook/dp/B005DXMVLA/ (kindle)

    regards,
    Joseph