Does Arduino have a future?

I've just received a Tiva C-Series TM4C1294XL evaluation board from Texas Instruments.. $20 usd.. (I wish the evaluation board included the microSD interface for a few more dollars, but oh well...)
I will see if it is better suited for some of the more challenging personal projects I'm working on where I had originally intended to use DUE.

However, for some really simple projects with commercial application that I'm developing.. 8 bit Arduino UNO gave me the skills and confidence to move to Tiny84a for the release project. Even Tiny84a is more powerful than I need, but I'm sure I would not have stumbled upon this little guy, if it weren't for diving into Arduino and the DUE 18 months ago.

I've just received a Tiva C-Series TM4C1294XL evaluation board from Texas Instruments.

Looks like a nice board.

This is great, the major companies are all building boards that can compete with Adruino and are talking to users.

We are looking forward meeting Makers and showcasing the MCU LaunchPad development ecosystem at Maker Faire Bay Area in San Mateo, Calif.

These companies are also working with universities to provide better tools and products for labs.

It's intended for artists, designers, hobbyists and anyone interested in creating interactive objects or environments.

For this market, a product has to be "right-sized." The Duemilanove with m168 was about perfect for a lot of things; the m328 versions added additional memory space "for free", so that was OK too.

The next question is "what else will people pay for?" Arduino MEGA? Networking? Depressingly overpriced in the Arduino arena, IMO. But a lot of those "art" and "design" projects seem to have a weird budget model (compared to "hobbyist" or "commercial" anyway.)

After that, perhaps "how much can be improved at the same price points?" I haven't been inclined to do much with MEGA or Due, but I have some Teensy3 modules, ChipKits, and m1284 boards. They're swell, I think. Arduino Zero might have potential.

Things like the RPi, BeagleBone, ST, NXP, and TI ARM boards have always bothered me. As a hobbyist, they're OK. But my theoretical "goal" is small scale production of custom electronics (say, 100 to 1000 boards?) With a mega328-sized design, I can easily plunk down the "meat" of an arduino on my own board design, assemble them by hand, and be done. For the small pitch parts on the "more powerful" designs, I don't think that there is any way I can duplicate the cost of the sold boards with my own board, by the time I do the 4+ layer PCB and contract assembly. Maybe I shouldn't care, and using vendor-subsidized
modules with questionable product lifetimes and licensing issues is the way to go. :frowning:

I watched with some amusement and horror as linux system administration issues on RPi and BB replace the programming and electronics issues people have with Arduino/etc. :frowning:

I'd like to see an OS that is closer to Bare Metal for BB and RPi. Or an OS for Teensy/NXP/ST/TI that is better than the current bare metal, without sacrificing the "ease of use" of the Arduino libraries. But I don't think that either one exists yet. :frowning:

Small simple projects will continue to use the bare metal approach. An OS makes little sense for under 32 KB of program space. A simple development environment is adequate.

For larger DIY/hobby projects using 32-bit processors there are now many hardware options and the future will bring many more. It would be a shame to be limited to choices made by the Arduino company.

About 30 years ago big science faced a similar situation. From the late 1960s to mid 1980s DEC (Digital Equipment Corp) minicomputers dominates control and data acquisition in large science experiments. DEC supplied the software environment with systems like RSX/M, a real time system, and VMS for larger VAX machines.

Around 1985 single board computers based on the MC68000 and other microprocessors started to be used There was no standard OS for these boards.

Fortunately two of my friends, Jerry Fiddler, and David Wilner, had left the Lab in 1982 and founded Wind River Systems. Wind River developed VxWorks which is a flexible RTOS that can be targeted to a wide variety of processors. VxWorks became very popular in large physics experiments, space experiments like the NASA Clementine moon probe, and the Mars landers. This defacto standardization was really important for big science at that time.

UNIX on SUN and other work stations became the standard OS for operator consoles and other non-real time applications . Linux is now the best choice for boards like Rpi and BB that have Cortex Application processors.

The problem is that there are too many RTOS choices for micro-controllers like Cortex M and PIC32. Many companies are supporting FreeRTOS but it is not technically outstanding.

I like ChibiOS/RT but it only has great HAL support for STM32.

I think Arduino is like Digital Equipment Corp and will fade in the same way. There will are too many other outstanding hardware options and there will be even more in the future.

There is not an obvious software solution for DIY/hobby users. FreeRTOS supports a wide variety of hardware, just look at this list Microcontrollers and compiler tool chains supported by FreeRTOS. FreeRTOS is just not very exciting.

Too bad it is so easy to build a little RTOS kernel, this means there are many half baked RTOS systems instead of a project like UNIX and it's follow on, Linux.

westfw is right, the problem is the proper OS for DIY/hobby users.

Or an OS for Teensy/NXP/ST/TI that is better than the current bare metal, without sacrificing the "ease of use" of the Arduino libraries. But I don't think that either one exists yet.

Kowalski's work with Cosa is a really interesting development for a C++ OO Framework. It's a bare metal approach that will give us some task scheduling that might allow us to do some things that we expect an RTOS to accomplish. He's not included any of the ARM core MCUs. If he expanded it to Cortex-M3.. for DUE.. .Then we'd want him to expand it to Cortex-M0 for ZERO.... then there would be others of us who'd like to see it expanded to Cortex-M4 for TI Tiva C series.

Then there's the IDE. Not very powerful... but hides allot of the ugliness. The Wiring based IDE forked and used by Arduino (for Arduino AVR and Cortex M0 and M3) and Texas Instruments (Energia for TI Tiva C Series) . So although there is fun stuff happening with Visual Studio and Xcode Addins, the Arduino team hiding all of the ugliness with the tool chains and so forth makes a compelling case for just putting up with the weak IDE. It's still very easy to use.

There's the hardware itself. I wish that they could have made use of the native Ethernet and SDIO/MMC capabilities of the ATSAM3X8E and installed a physical RJ45 and microSD slot on the DUE. Instead, DUE ended up being a faster MEGA with lots of library issues to work out. They will give us all of that with the TRE, but all appearances are at increased complexity and costs. Perhaps the Arduino ZERO should have come first.... Maybe we will get a Quattro based on the Cortex-M4 and give us the missing pieces from DUE and Tiva C Series (looking at you SDIO interface... really wanted that included in the TI Launchpad!).

I like the idea of having built in microSD support, Ethernet and getting eeprom back.... but I don't want to have to school myself on Linux to get it.

Whether or not Arduino survives.. I'm not sure... none of us are privy to their financial performance. But they certainly have benefited the Maker crowd and Academia by getting the cost of basic prototyping platforms down to levels we can all afford to use! I think they've gotten the attention of bigger folks (Texas Instruments). Increased competition drives innovation and costs.

Maybe the Italians have a little work to convince us that ZERO, UNO, DUE and TRE are a real complimentary family of products.... instead of radical departures at each turn. We've got CortexM3 with DUE.... then TRE is announced and grabs TI's Sitari (aka BeagelBone) architecture and drags along AVR with it... then we move on to ZERO and we are back in the Atmel fold with the CortexM0.... I've given Arduino lots of cash by purchasing official boards/shields and I've supported 3rd party development through clones/shields/others. But ultimately, for me, it's about a working, well supported product. We know UNO and MEGA are great.... everything else they are developing/doing feels like such a departure that we don't hesitate to look at other architectures, other vendors products. As a user community, we have no idea where Arduino is going....

But maybe that's not that important. Perhaps the Arduino folks aren't either? Looks like TI and Atmel are the big suppliers for Academia and the Maker set now (is it my imagination that PIC is losing out to these guys?). TI even promotes the BeagleBone boards on it's site and makes no bone (pun intended) about the Tiva C series taking advantage of the Arduino and Wiring Frameworks, despite both of them being competitors to their own development boards. Maybe we will see a convergence of technologies, architectures and methodologies... Consider we've got AVR (Atmel 168, 328) Cortex-M3 (Atmel AM3X), Cortex-M0 (Atmel SAMD21), Cortex-M4 (Ti TM4C), Cortex A8 (Ti Sitari) architectures all running on a form of the Wiring Framework with forks of the same IDE developed in Processing. Maybe Arduino IDE 2.0 will really extend the reach? The only questions might be do you want a board that uses Shields, Capes or BoosterPacks? Our skills may just easily transfer across platforms/vendors/products.

Wow, this got long fast.

This feels like a search for the Holly Grail.

He's not included any of the ARM core MCUs. If he expanded it to Cortex-M3.. for DUE.. .Then we'd want him to expand it to Cortex-M0 for ZERO.... then there would be others of us who'd like to see it expanded to Cortex-M4 for TI Tiva C series.

I am mainly interested in Cortex-M processors. There is no hope that one person or even a few people can provide an open source firmware library for these devices.

Here is a project with the goal for providing such a library http://libopencm3.org/wiki/Main_Page

The libopencm3 project (previously known as libopenstm32) aims to create a free/libre/open-source (LGPL v3, or later) firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.

They barely have software to configure the pins on devices. There is no support for SDIO on any device http://libopencm3.org/wiki/Status.

Kowalski's work with Cosa is a really interesting development for a C++ OO Framework. It's a bare metal approach that will give us some task scheduling that might allow us to do some things that we expect an RTOS to accomplish.

Embedded systems are about time and Costa almost ignores problems of concurrency. The importance of preemptive systems has been understood for over 40 years.

Liu, C. L.; Layland, J. (1973), "Scheduling algorithms for multiprogramming in a hard real-time environment", Journal of the ACM 20 (1): 46–61,

Here is a summary of this important theoretical result Rate-monotonic scheduling - Wikipedia.

There are lots of resources for Cortex M List of ARM Cortex-M development tools - Wikipedia so I can't complain too much.

Ive been thinking about this for a bit, and I've had a couple of thoughts:

  1. The original arduino was aimed at incorporating ELECTRONICS in art/design/hobby projects. Because for a couple of decades now, the response to most "I want my thing to do something electronic" desires has been (and should be) "you should throw in a microcontroller to do that." Except that using microcontrollers was difficult and relatively expensive (not counting Basic Stamps, I guess.)

The Arduino abstractions, philosophies, and libraries are more-or-less aimed at that "hardware replacement" function. IMO, they did a pretty good job at defining these. For that application.

  1. That particular "bare-metal" treatment of a microcontroller/board is NOT particularly compatible with layering "on top of" an operating system. Or processors that are much faster than the AVR, for that matter. (Even a 16MHz AVR can push the ability of normal "wire" in a max-rate pin-toggle loop. Fortunately, the form factor used encourages short wires!) (as an example, look at the problems that happened when HardwareSerial transmit became interrupt-based...)

  2. We need a sort of "backward" OS, where the high-level functions (like SD-card file access) are handled in the background, while the user's code runs at approximately bare-metal levels of priority/non-interference/etc.

  3. That's not the way most modern OSes work. Certainly not Linux, which is clearly the natural choice for most of the "big" cpu configurations.

  4. The "target market" isn't really big enough to support development of a custom operating system :frowning:

The architecture of AVR or cortex CPUs is essentially the same as those of 50 years ago, and in that time people have been wrestling with the problem of bare-metal vs OS.

Unfortunately, there is no way to create OS-like functionality without incurring some overhead. The more independence of processing that you want, the more overhead you need. This is an inevitable feature of several processes sharing a single CPU core, memory and peripherals.

Fortunately, the hardware guys keep making faster chips, so we get round the problem that way. The alternative is to have independent cores, e.g. like the Parallax Propeller. But I am pretty sure there is no software trick to get the best of both worlds.

There is a niche at the bottom end for bare metal systems, and I think the basic Arduino will continue to provide an entry level type system for that. It's also clear there is demand for systems with rich environments like Raspberry Pi. The price/performance of those will continue to improve, and the price get closer to that of Arduino, if not already there.

What will probably not change is the middle ground, between bare metal and feature rich OS like Linux. For example, I would like to add TCP/IP, web server, USB host with support for wi-fi dongle to my bare metal project. That's a big chunk of code. There is no obvious off the shelf solution, or "go to" RTOS which supports all that out of the box.

The problem is that there are thousands of RTOS to choose from, but drivers and middleware for them is lacking. I think this is one area where diversity doesn't help, and a single standard would allow people to develop drivers and middleware instead of re-inventing the RTOS.

Perhaps the Japanese had the right idea with ITRON, but a government funded standard seems like anathema to the western way of doings. ITRON is claimed to be the most widely used OS (units shipped), but few people have heard of it.

Ironically, an old version of Unix might be a good real time OS, at least for 32 bit devices. It has a simple clean architecture and is well known.

The gap between 16MHz 8 bit AVR, and a 500MHz 32 bit ARM with 4MB RAM (roughly where Linux becomes runnable) is too big to be bridged with a single RTOS. It should be possible to scale from say 50MHz ARM with 32KB upwards on a single RTOS, but chips with a few kB of RAM will be too resource constrained to run anything more than a very basic RTOS if at all.

So I think Arduino will continue as a cheap and simple way to interface to electronics, systems like Beaglebone will reach the price point of Arduino, and the problem of the middle ground between bare metal and Linux will continue.

Perhaps the answer is dual function boards like Arduino Tre and UDOO, with a fast interface between the low and high level CPUs.

an old version of Unix might be a good real time OS, at least for 32 bit devices.

One of the chipKit (PIC32 Arduino-like board) has had 2.9bsd ported to it. Old time operating systems do not tend to handle "small ram, large flash" configurations very well.

The "big OS-running cpu" and "little bare-metal IO cpu" (ala Yun or those NXP M0/M4 chips) has potential, given suitable communications protocol(s).

A lot of intermediate-sized OS development gets distracted by "real time", which complicates everything and may not be necessary (arguably, Arduino is already NOT "real-time.")

Unfortunately, there is no way to create OS-like functionality without incurring some overhead.

Modern embedded OSes are often more efficient than ad hoc solutions. The algorithms in these systems have been under development for over 40 years. It's like the difference between a bubble sort and quick sort.

A lot of intermediate-sized OS development gets distracted by "real time", which complicates everything and may not be necessary (arguably, Arduino is already NOT "real-time.")

Real-time and RTOS are unfortunate terms for an OS designed for embedded systems. It's not about fast, it's about appropriate features.

Here are some quotes from "Introduction to Embedded Systems" by Lee & Seshia. Download link http://leeseshia.org/download.html

The computers in embedded systems often do not interact directly with humans in the same way that desktop or handheld computers do. As a consequence, the collection of services that they need from an operating system (OS) may be very different. The dominant general-purpose OSs for desktops today, Microsoft Windows, Mac OS X, and Linux, provide services that may or may not be required in an embedded processor.

An OS for embedded systems should have a few additional featues.

These OSs share many features with general-purpose OSs, but typically have specialized the kernel to become a real-time operating system (RTOS). An RTOS provides bounded latency on interrupt servicing as well as a scheduler for processes that takes into account real-time constraints.

A microkernel and modularity is desirable.

The core of any operating system is the kernel, which controls the order in which processes are executed, how memory is used, and how information is communicated to peripheral devices and networks (via device drivers). A microkernel is very small operating system that provides only these services (or even a subset of these services).

I also believe features to support the "Internet of Things" are also important. The OS should make it easy to inter-operate with phones and other modern smart devices.

The problem is that there are thousands of RTOS to choose from, but drivers and middleware for them is lacking. I think this is one area where diversity doesn't help, and a single standard would allow people to develop drivers and middleware instead of re-inventing the RTOS.

I have evaluated RTOSes for many years. If you screen the long list of OSes with a few key requirements such as HAL support or driver support for your chip and a modular micokernel, the list will soon be reduced to a manageable size.

The major chip companies all support an RTOS with FreeRTOS being most popular.

RTOSes are now used in the majority of 32-bit embedded systems. Billions of copies of OSes like VxWorks and FreeRTOS are now in every day products.

I'm curious to see ultimately what direction Arduino is going product wise. They didn't take the DUE far enough, not utilizing the native connectivity of the Cortex-M3 (sic.. Ethernet), the SD interface and others. But I guess they'd rather sell shields.

Do they feel users require a full applications processor (Sitari A8) with a proper OS (Linux) ala the TRE to enable the internet of things?

Or rather are they planning something (QUATTRO, QUA, AWD, 4WD or 4TO) with a just powerful enough microcontroller (Cortex-M4 or newly announced Cortex-M7) with a decent RTOS option to enable the same IoT?

Anyone heard any good rumors?

If you want a better Arduino, design one. You don't have to sit back and wait and then
grumble that its not what you would have done!

If you come up with a good design, evangelize it, kickstarter it, talk to Arduino, see
if its got wings... After that you've earnt the right to grumble methinks.

Rather than fret about such issues, remember the strengths of open sourced designs
that allow anyone to build on the work of others.

[ slight rant over ]

It struck me this thread was too negative and "us and them".

Mark,

Honestly.. to design a 'better' Arduino is way beyond my capabilities. Lightyears. (To use an Arduino? Now I've done that plenty and had some fun.) The Arduino team is far brighter than I. I found some design decisions for a few recent products to be puzzling, but I don't think I was overtly critical.

However, I would reward the Arduino team with my hard earned dollars through purchase of a 'better' Arduino if they designed one. In fact, I've rewarded no less than 3 different manufactures of DUE alternatives who built a better mouse trap. Good stuff.

Thank you for your rant. Perhaps, now that you've expressed your righteous indignation of all of us ingrates, the entire Arduino team can comfortably rest on it's laurels. I'm hoping they don't. I'm looking forward to more excellent products from them... Is it wrong to hope for them to go the extra mile on the next big release?

Peter

The problem is ... in general we don't need a "better arduino." The 16MHz AVR is "just right" for a lot of the things that Arduino should be doing, while maintaining a pleasing simplicity. If you want to spend two or three times as much to build a much more capable system (like an Intel Galileo, for instance), you're suddenly in a space that is more complicated, with a lot more potential solutions.

I think that the success of Arduino up to now is mainly due to the "easy of use" of its IDE and the libraries available.

If the future of Arduino is to release new products , like the DUE, with scarce libraries available despite the long period of time since DUE release, then I fear that the future will not be quite successful.

Fist complete the DUE work, demonstrate that Arduino can deliver complete HW+SW and then go with THREE for minorities.

jma

With DUE, Arduino went the cortex-m3 route; with TRE, they are going the cortex-a8 route; with Galileo, they will go x86 route. Lots of Cores/ISAs to keep straight; whereas UNO and it's derivates stayed the AVR course.

But I like to watch what 3rd part folks are doing. Take Atlas-Scientific for example. They build embedded circuitry for interfacing sensors to microcontrollers. Years ago you could find sample code for mbed and arduino uno and mega.

Fast forward and look at some recent developments: Now we have ARM kind of sorting opening up mbed and announcing development of mbed os v3.0. We have Arduino playing with Cortex-M* ARM architectures. Guess what Atlas-Scientific's response to all of this development has been? You guessed it. Look on their website. No more mbed code samples. Their Arduino code samples are still just for UNO and Mega with no DUE (Cortex-M3) examples. It's still 8bit AVR from this supplier. In fact, they've recently modified and relaunched many of their products (under the EZO name) to include I2C functionality. And guess what? You got it, their code samples are still just Arduino Uno and Mega. They'll leave it up to you to make it work with the other stuff.

UNO/AVR is stable and well understood. That may be what folks are going to continue to use. That's key: solid hardware/software support (ie. libraries, working features and documentation).

These Atlas-Scientific guys have a production facility in Flushing NY (not a cheap location). They sell allot of product. And they are saying to everyone who buys their product, "Hey, here's how you can get this to work easily with Arduino UNO. Here's some good C code that works with that tried and true architecture". That's a real testimony to what Arduino has accomplished with the UNO and it's AVR family.

Arduino will always have a market in the low end of speed requirements for uno and such like I am about to start a new project using an arduino as a high end laser controller because its all I need, I could use Ti boards or what ever but at this stage it will be a wast to use them as the arduino has enough grunt to do the job for know

Very bleak after this latest improved web site which keeps telling me I have unread personal messages belonging to someone else. I did not read them, deleted them and it is still telling me I have them, but there are none in the box.
Since they only care if I post unformatted code snippet nobody will read this anyway.
So why bother speculating on future. It is the present Arduino inc. should be concerned.

The AVR based Arduinos will still be around for quite some time. While the ARM based ones provide more processing power, those more powerful chips are also more power hungry, making it much harder to impossible to use them for anything intended to run for longer time powered by batteries.
And the lower voltage levels make them more susceptible to any kind of burnout and much less flexible in terms of power sources as the quite robust AVR based boards.

Yes, the IDE could use a bit of a 'face-lift', there are a lot of little features that people seemed to have implemented themself which the Arduino folks don't think is worth to pick up and integrate in the mainstream release.
Kind of curious as to what the ways are supposed to be to program the Tre or even more so, the Zero, with its integrated debugger chip. I seriously hope they do not expect people to use Atmel Studio, with the behemoth of Visual Studio core underneath and the loss of cross-platform use of the current Arduino IDE...

Ralf

"Yes, the IDE could use a bit of a 'face-lift', there are a lot of little features that people seemed to have implemented themself which the Arduino folks don't think is worth to pick up and integrate in the mainstream release."

As long as same outfit who done the web site does the job, their future AKA having a job ( to fix things) is safe.
Not sure about the "product".
So far my new Due is working as expected, but the compiler could use some help to speed things up.