Need Help Please!

26 Sep 2016

Hello guys and gals,

First of all, it is important I mention that I am currently studying Computer Systems Eng Tech. Hopefully, I will be graduating on Fall 2017. I was told I should start to talk to my adviser or tutor about my Senior Project which will be presenting by Fall 2017 or Spring 2018. For my senior project I was thinking to use an ARM system. However, one of the classes I am taking this semester requires me to make a project based on any ARM. My experience with ARM is zero.

A lot of friends have used Arduino, and they recommend I use the same. However, the professor who assigned the project recommended I research more about mbed and read "Fast and Effective Embedded System Design: Applying the ARM Mbed." I am stressed because time is passing, and I am not being able to decide which ARM I should use.

P.S.: I have some experience using C/C++ languages. However, not a professional levels.

The questions I have are the following:

1. What is the difference between Arduino and mbed?

2. Is the book I was recommended to read useful for a beginner to the ARM world? If not, is there any other book you guys and gals recommend?

3. What would you recommend I choose, if I tell you I want to create something right now (the project is due December) that can be useful for my Senior Project?\

4. I have heard that the community of Arduino is bigger than mbed when it comes to find projects and libraries. Is it going to be hard to find libraries and templates with mbed? Is that rumor true?

I will really appreciate any kind of help you guys and gals can give me!! I am struggling a lot.

Thank you very much.

27 Sep 2016

I have only a passing familiarity with Ardunio so apologies for any errors below, I'm sure others will correct any significant mistakes.

1) Ardunio is a standard software wrapper and environment for a number of ARM, AVR and a couple of other types of microcontroller. It uses it's own c-like programming language to abstract the hardware and make it more beginner friendly.

Mbed is ARM only and uses standard c++ although user programs can effectively be plain c. There is a standard library which abstracts the hardware to give a common interface across a number of different ARM CPUs.

While there is some overlap in CPU performance the parts supported by mbed are generally faster and with larger memory.

In many ways they are very similar, they both offer a simple way to avoid all of the low level board specific CPU and hardware initialization that has always been the really steep part of the learning curve in embedded software.

All serious real world embedded software is written in c/c++ and that alone seems like a good reason why a computer science student should use it over ardunio.

2) To be honest there is nothing ARM specific in mbed. All of the ARM specific stuff is handled either by the mbed library or the compiler. It's basically just c programming. If you want to you can pick up the CPU user manual and start playing with the underlying CPU registers but the whole point of mbed is that unless you need every ounce of performance or hit a weird problem you don't need to worry about that sort of thing. Nothing puts off a learner more than a 300 page document full of acronyms.

That said embedded programming is very different to desktop applications, you have to be a lot more performance and memory aware and a basic understanding of what the underlying hardware is doing is a big plus.

3) It depends. If you want to learn something that you could use in a job in the computer industry use mbed. If you want to learn something used in hobbyist projects use Arduino.

4) Yes. There is a larger Arduino community. That is mainly because it has been around longer and is far more widely used for home projects. However there is a reasonable lever of support for most things for mbed too. The cure functionality is there for both, depending on your project you shouldn't need much more. It's not much of a project if all you do is bolt together a load of libraries that other people have written.

24 Oct 2016

I am a bit late here, but I like the question.

As you will soon be a professional engineer I think mbed is going to serve you much better. You will want to get an offline toolchain working as well so you have access to the full mbed-os source code and have debug capabilities so you can step through code.

I would look into an ST part. ST's System Workbench is a free IDE, their STLink V2 debugger is super cheap, and they have their ST Link Utility to Flash micros if you need to or to read SWO debug messages if you want to use that feature. You can build projects without mbed as well using ST's Cube Configurator.

However, given your timeframe, and it kills me to say this, Arduino may be better. There is not much time between now and December and Mbed is going to be much more challenging than Arduino, especially offline. No doubt about it. With mbed, you will learn more, and it will be a marketable skill.

This is a one-off project, so pick a nice big micro. No need to risk running out of room.

Books. Read the micro datasheet. ST's Nucleo boards has a getting started guide. ARM's website has a nice reference on the cortex devices:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/index.html

The good news is you don't really have to know that many details down at the hardware level to use the micro. So skim that stuff but you don't have to memorize it.

Graham

17 Nov 2016

Definitely use mbed over arduino...

use nucleo board for $20, excellent with mbed online...

fast and easy to program

and very fast execution on the processor.

I sugest that you can look at the STM32F072 as the best value for money solution or for more power I suggest the 411 as midrange pricing or the most powerful and still affordable like the STM32F767 use the nucleo solutions for any of these chips..

although the high end STM32F series processors have an LCD output on board, it slows the processor down and it is difficult to design a PCB,

However, to use an LCD, it is best served by a SPI port.