Pages: 1 [2]   Go Down
Author Topic: Does Arduino have a future?  (Read 7680 times)
0 Members and 1 Guest are viewing this topic.
IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2312
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

What do you compare :
avr 8bits with STM32 ARM 32 bits
or
DUE ARM 32 bits with STM32 ?

If is the first case I agree  with you, but if is comparing carrots with patatoes.
Logged

Alamos, Sonora, Mexico
Offline Offline
Full Member
***
Karma: 5
Posts: 141
learning never stops.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Quiero una vida simple en Mexico...nada mas.

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1675
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.
Quote
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.
Logged

SF Bay Area (USA)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 6806
Strongly opinionated, but not official!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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. :-(

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. :-(

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. :-(
Logged

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1675
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 http://www.freertos.org/RTOS_ports.html.  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.
Quote
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.
Logged

Alamos, Sonora, Mexico
Offline Offline
Full Member
***
Karma: 5
Posts: 141
learning never stops.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.




Logged

Quiero una vida simple en Mexico...nada mas.

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1675
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This feels like a search for the Holly Grail.
 
Quote
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
Quote
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.

Quote
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.
Quote
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 http://en.wikipedia.org/wiki/Rate-monotonic_scheduling.

There are lots of resources for Cortex M http://en.wikipedia.org/wiki/List_of_ARM_Cortex-M_development_tools  so I can't complain too much.
Logged

SF Bay Area (USA)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 6806
Strongly opinionated, but not official!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

2) 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...)

3) 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.

4) 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.

5) The "target market" isn't really big enough to support development of a custom operating system :-(
Logged

Offline Offline
Full Member
***
Karma: 9
Posts: 229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Please don't PM me asking for help. Ask questions in the forum.

SF Bay Area (USA)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 6806
Strongly opinionated, but not official!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.")
Logged

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1675
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.

Quote
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
Quote
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.
Quote
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.
Quote
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.

Quote
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.
Logged

Alamos, Sonora, Mexico
Offline Offline
Full Member
***
Karma: 5
Posts: 141
learning never stops.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?

Logged

Quiero una vida simple en Mexico...nada mas.

0
Offline Offline
Shannon Member
****
Karma: 223
Posts: 12745
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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".
Logged

[ I won't respond to messages, use the forum please ]

Alamos, Sonora, Mexico
Offline Offline
Full Member
***
Karma: 5
Posts: 141
learning never stops.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Quiero una vida simple en Mexico...nada mas.

SF Bay Area (USA)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 6806
Strongly opinionated, but not official!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: 1 [2]   Go Up
Jump to: