Embedded systems - Professional development

Aircrafts …Automobiles … the washing machine at home and virtually everything in between these use embedded processors … 8 bit or the ARM beasts or some other variants.

As a regular user of the Arduino IDE and the popular Uno / Nano / Mega2560 / Teensy3.5, I was wondering what kind of tools the professional embedded coding teams generally use to code and debug thier code ?

The question is pretty broad in nature and so I will limit it to systems using maybe a Cortex M4 processor ?

Not that i am going to immediatley go out there and buy them …!! For the kind of projects that i normally do, the Arduino is itself too much !!

Just curious. Thanks

Here is one:
http://www.microchip.com/mplab/avr-support/atmel-studio-7

6v6gt:
Here is one:
http://www.microchip.com/mplab/avr-support/atmel-studio-7

Thanks. I see a note there: Studio 7 can also seamlessly import your Arduino sketches as C++ projects, providing a simple transition path from Makerspace to Marketplace.

Does this mean that i can fully develop a sketch in Arduino and export it to Studio 7, recompile it and then using a regular programmer burn the code into a AVR chip ?

I know I have oversimplified the process … possibly there is a involved configuration step involved to tell Studio do this ??

space and parts cost money. the smallest space, the lowest parts costs are often the driving factor.
if the bloated program requires a large chip, but a sleek program can use a smaller chip, then use the sleek program.

if your Arduino IDE produces code that works. and you use parts that in the desired price range. you are good,

the only need to switch to a different software is to get some result that cannot be achieved with the current software.

functions, space and cost are usually the motivating factors.

if you never need to use an analog input, save a few pennies and get a micro that costs less but does not have that
if you need to use CAN (WiFi, etc) bus, the cost for a micro that has that is compared to using additional parts, taking more space, and it may or may not cost less.

I will offer that since you have no clue what software is used in your toaster, your coffee maker, alarm clock or toothbrush would mean that the user does not care.

but you mentioned debugging.
that is a whole different animal. not every chip supports debugging on separate pins and as you know, not every software offers it either.

but as in the first concept, no one but the designer really cares. And then it boils down to application.
what application are you having problems with that you need a separate debugger ?

what is your application that cannot work on An Arduino ?

you mentioned the Coretex M4,
often the parts selection is the lowest possible device.
the Cortex M4 is a bit more like a Ferrari to the Arduino 328 chip.

as a note, ATMEL is but one chip maker, their software is designed for use with their chips.
other makers offer different processors with different abilities, memory, pin count, etc.
does your application require a faster, larger memory chip, or are you ultimately looking for the lowest cost chip that can get the job done ?

Ardubit:
Does this mean that i can fully develop a sketch in Arduino and export it to Studio 7, recompile it and then using a regular programmer burn the code into a AVR chip ?

I know I have oversimplified the process ... possibly there is a involved configuration step involved to tell Studio do this ??

There is a little setup involved, but you do not need to spend any money on a programmer.
Atmel Studio 7 - Programming the Arduino Uno via the bootloader without programmer.

If you also add Visual Micro it will add in all the usual stuff the arduino IDE normally does for you and you can write sketches just like in the arduino IDE.
But with a lot of very nice extra features.

.

I consider a professional programming environment one which supports a team of programmers working on various aspects of a project. Most big projects use a RTOS, so the job is split into many 'tasks' or 'processes' which communicate via messages through the RTOS.This permits both independent development and testing . These processes may live on different machines - the transport of messages between them is handled transparently to the individual programmer ( unless he/she is designing/coding that bit). Formal use of the ISO 7-layer model is often employed.

For this you need a system like SVCS or a modern equivalent which keeps a central core of the project, allowing only one modifier of a particular part at a time ( it's 'signed out' to them) and means that changes are propagated to all those that use them - a sort of clever 'make'. Plus version control and archiving of releases. A team librarian's job is to handle all this.

Many suppliers will sell you such environments, but they're not cheap. Keil, AVR etc. Or there are very good open source tools. And many supplied by chipmakers, at various cost levels.

In the bad old days of mainframes, people like DEC would supply an enormously complex access control environment, partly because many of their clients were military and insisted on this feature. To administer this often required a separate dedicated team member!

If you're a single programmer knocking up a little job, well over the top.

The arduino IDE is adequate for many small jobs, easy to use and FREE!

Allan

One of the biggest headaches will be version control of the software.

Paul

That's what git is for.

allanhurst:
Keil, AVR etc.

I think you meant IAR, instead of AVR, right?

I see the "Keil MDK Professional" is 3800/year. IAR Embedded Workbench for ARM is "request a quote".

Sorry - you’re right, of course. There are others who support many platforms.

A big team of 50+ programmers on a project for a year or two is a long way from a few days clever hack on an arduino by a single programmer. And the coding is a relatively small part of the job.

Different ballgame.

Allan

@allanhurst
summed it rather well : A big team of 50+ programmers on a project for a year or two is a long way from a few days clever hack on an arduino by a single programmer

Yes for the kind of small projects that individuals do, the steep learning curve and associated tool costs are too much of a burden. Of course if the end product is going to be produced in thousands then ever single line of code becomes important and without an effective version control its a total mess.

Even todate i cannot but admire the OTA updates that our cell phones do .. download / verify / install on thier own and then kick back to life with a new avatar. Indeed huge human intelligence and effort goes behind this.

I come from a 8051 era when there was no Arduino and most code i have done is in assembly not even C !! And Silabs used to have a lovely affordable JTAG debugger . The MCU registers were known by heart - something which i miss with the Arduino abstraction. The accumulator ... is it still there ?? Ha ha.

I really dont know if there are any economical JTAG debugger like the ones Silabs offered with thier Development Kits.

Thanks to all those who responded ... been an interesting interaction.

I started out with 8085's, and remember scouring hex dumps for 'return' calls ( 9D?)

.. Things have moved on.

Allan