"The ability to write code for embedded systems using interpreted languages is a major development. These cheap processors are only as useful as the software that runs them"
^ While true in a sense, I think its incredibly important not to downplay the difficulty of engineering this hardware in the first place. This type of sentence stinks of programmer elitism.
Otherwise, I'd agree that perhaps the biggest obstacle to using these embedded systems is circuit building education. Running linux or some bit of code on these systems is cool, but only to a point. I've always found this type of work to be most interesting when you can make the system interact with the world.
Ahh I totally see how that could be taken that way.
Don't get me wrong, the Raspberry Pi, Parallella, etc. are all incredibly feats of engineering (I couldn't even dream of building the processors or chips behind them). What I meant was the processors are only as useful to hackers as the software that they create for them. Hopefully that sounds a bit less elitist!
>I think its incredibly important not to downplay the difficulty of engineering this hardware in the first place.
Yeah, nobody is ever going to be able to make a SoC in their garage. But I think the OP is trying to illustrate the fact that engineering efforts like RPi/Arduino are becoming easier now due to the internet and open source tools. That, combined with the market forces driving down the cost of the ICs, is making it possible to engineer a platform as complicated as a fully functional computer by a group other than a large, well-funded corporation.
The barrier to entry, while still high, is lower now than it's ever been.
nobody is ever going to be able to make a SoC in their garage.
That sounds like a challenge!
Hah, I kid. It's probably possible, but expensive as always. You would have to work in an antique process node, and relax your idea of what is supposed to be on an SoC.
> It's probably possible, but expensive as always.
Frankly, I doubt anyone but a rich eccentric would have the money to get into SoC design in their garage. My university acquired the resources to run a semiconductor class in the form of some antique (70s vintage) silicon lab equipment from Micron. Even though this stuff was brand new before I was born, Micron charged them in the neighborhood of $200k for each device. That's six machines for a total of $1.2 million. And that doesn't even encompass the whole cost of what you'd need to get a proper semiconductor development environment - you'd still need a cleanroom, electrical and gas hookups, chemical certification (you need all sorts of nasty stuff to make semiconductors - HF in particular is quite common in fabrication, and has horrifying effects on exposed skin when mishandled), etc.
Yeah, sorry - with all respect, I don't think anyone's gonna be starting a semiconductor company in their garage any time soon.
While low-cost SoC computers are great, as are tutorials about wiring up sensors and motors to your Arduino board, I think this article misses the point about the "hardware reovlution". At one point, he says:
> have the correct tools (most of which are not free)
One of the reasons the free software movement is so exciting is because it put professional quality software development tools into the hands of ... well, everyone, and let them unleash their creativity. This is why Stallman started with emacs, gcc, gdb, and the unix tools. A whole generation of programmers grew up using tools that a generation earlier would have been prohibitively expensive or inaccessible. The frameworks, tools and libraries the OP is so excited about are the continued product of that movement. They are free (as in beer) and, more importantly, free as in speech.
However, this hasn't happened to hardware development tools yet, except for a few exceptions. It might be starting. (I have my pessimistic days and my optimistic ones.) There are two classes of tools: software design tools (and firmware for hardware tools) and hardware tools themselves. Of course, we can't expect hardware tools to be free as in beer, but we can aspire to make them free as in speech. Kicad (a free PCB design tool) is light years behind the industry standard Altium. Free versions of tools for high-speed design, signal integrity analysis, etc. are basically unheard of. The on exception might be Spice, the circuit simulator. There are free designs for primitive hardware tools (e.g., power supplies, precision DMMs, oscilloscopes, logic analyzers), but they are nowhere near entry-level professional offerings, and many, even tho they call themselves "open", don't make design files available.
Forget about RF-level stuff like RF signal generators and signal analyzers. I've never seen a high speed memory bus designed with open tools, for example, and I don't see how you'd ever debug it.
This is where I think the action is. A suit of open tools (software and hardware) that benefited from community improvement would truely be transformative. It would create an enormous amount of social value. I can see why it hasn't been done yet. Building open versions of these tools would require a huge amount of work, and they are incredibly valuable, so whoever does it would have to forgo a huge amount of value.
I'm finishing up something else in the short term, but I've been thinking about this a lot. I'd love to work on this problem, but it isn't at all clear to me how to fund it.
I've never used Altium, but my opinion of most EE CAD software is pretty low. Unintuitive, proprietary, a pain in the ass to configure, and capping it all, usually ugly. (I primarily use Cadence, however, so there might be something great out there I don't know about.) I think now's a time for a radical re-imagining of EE CAD software. I just don't know how you would do it. :D
Cadence is a fine example of how horrible it can be. Its even worse going back in time to when I had to use it on a Sun Ultra 1 with Motif UI. Everything is better now.
Check out fritzing it is open source and geared toward the beginner arduino crowd with some polish it could be top notch. It seems to have a lot of traction with the adafruit/sparkfun crowd.
Eagle CadSoft is also popular with that demographic.
I like Fritzing, I felt I picked it up quickly enough not to bother me. But It needs someone to update it with the latest sensors releases, or it's a case of just going through the time consuming motions of creating your own instances over and over. Anyway, I like it. I think it can be improved.
Well, I'm not thinking about a startup, but open source projects. You could have said the same thing about any of the commercial unix vendors in the early 90s -- they had a 15 year head start, hundreds of programmers, etc. And look where we are now. What could things look like in 20 years?
One of the big challenges as I see it with EDA tools- the target moves quickly. In silicon development, for example, suddenly all your customers want double-patterning support in your tools as they move to today's tiny process nodes. [0] Or, perhaps, your customers now need layer-aware optimization, again for recent processes. [1] You have to accommodate this very quickly. An ASIC program runs for a year or three, so your EDA tools need to add & mature these new features in a very short timeframe. (Well, the feature doesn't have to be mature right away, but it does have to work) This means it's a hard environment to compete in. You could develop an open-source offering to compete, but without very significant resources your tools will always be missing support for modern processes.
On a completely separate angle, compiling & optimization is basically the biggest Packing Problem you've ever faced, with several dimensions of "packing". You need some very smart people to hope to produce good results. But I've written enough for now.
I agree that's true for chip design tools, but I was mostly thinking board-level design and above. Although I think there is opportunity in chip design for higher level tools not tied to chip design. To things spring to mind. After the Pentium fdiv bug, Intel hired the author of the HOL Light theorem prover. He formalized the FPU of a later chip. I'm also thinking of high-level synthesis tools like Arvind's Bluespec.
The problem with EDA software is that, to a first approximation, the number of users of EDA software is zero.
This is why EDA software sucks so badly. The bug discovery rate is abysmal. Couple this with the fact that the number of EDA programmers is even closer to zero, and you have a recipe for a horrible industry.
Its a babystep compared to whats needed, but we're trying to rethink EDA at upverter.com. Its a full editor thats also collaborative with lots of community features. It might be what you're looking for.
In response to cushychicken, The CE software isn't much better. Half the time, I can't figure out why companies pay for the licenses. The other half, I marvel at just how much the software does for you.
But the tools aside, without a low cost foundry and with a low barrier to entry for new developers (i.e. not requiring a lengthy approval process), the open source tools are just a first step. It would be amazing to one day have the resources for a hobbyist to build an ASIC. Once we've reached the limits Moore's law, that may be the only way to keep the IC industry interesting.
I wasn't even thinking about silicon-level design, just board-level design. You could get pretty far with great board design tools and medium-sized FPGAs.
This fellow[0] designed a DDR2 interface, but I don't think he ever reported back whether or not it worked. Apparently he did it by hand in Eagle!
To address your point about tools, I think you're right about the value aspect -- good tools cost money. But then again, does the average hobbyist need those kinds of tools? How much demand is there for, say, a 100 MHz open 'scope that costs a bit more than a Rigol? Ham enthusiasts would probably rather trade around old HP/Tek equipment.
I do agree in principle that there should be something like the Global Village Construction Set, for electronics. But it would be a monumental undertaking.
Yeah, I've seen that. I guessed he didn't report back because it didn't work, but who knows.
Good question. I agree, that's probably the first step: a more expensive inferior product, but I'm trying to look beyond that. If the open tools compete in features, and the manufacturers don't have to recoup design investment, shouldn't the open tools be cheaper? I want to live in a world where people have access to tools at the marginal cost of manufacturer. Once the open tools can compete on features, presumably volume would increase, making them competitive.
Rigol, like the bigger test equipment manufactures, sell heavily software limited equipment and charge handsomely for upgrades. Dave on the EEVBlog recently did a teardown of the newly released Tek MDO3000 6-in-1 scope. The entry level box costs ~$3,000. It costs about $15K for all the features enabled. Same hardware. Dave estimated the signal analyzer front end costs $40 in raw parts but $2,500 to enable. What's the real costs of the box? I'm not saying open is necessarily cheaper, but I'm not yet convinced it couldn't be.
The tessel looks pretty cool but $99 is a lot for a development board.
For $35 you can get a Raspberry Pi with much more power, network access out of the box, and the ability to run node. I don't see how the tessel can compete with that.
As someone who recently jumped into using hardware to make industrial design prototypes, I can say the biggest hurdle I've faced is the programming aspect of it. Currently there doesn't seem to be a quick way of making a GUI that controls hardware. I would love to do this through HTML, but without knowing Python, I'm basically SOL. Adafruit and Sparkfun tutorials can only take you so far, but when you need to make an interface for your hardware, the options are much more limited for the non-programmer.
But these tools, although largely available to the masses now, are still highly sophisticated pieces of hardware that are meant to be used by experienced[1] programmers.
[1] Okay the RPi can be used a starting point even for kids. But the Parallela I don't think so.
I've been working on some tools which I'll open-source in a few months, to make it easier for developing the hardware component. I hadn't thought about the interface as being an area that needed help.
You say you could do this through HTML, would using Angular Modules work for you? I'm just thinking of how I can add some pretty easy features to do basic interactions with angular.
I think the future of this hardware revolution will be python on a microcontroller.It could solve the complexity this article describes while keeping prices realistic for a product:
Micropython[1] is being in development right now,Currently working on a $6 mcu, with a potential for running on a $3/84mhz/3mm*3mm/49-pin mcu with varied peripherals (or maybe even something cheaper).
And as or complexity, this video shows an easy wifi interface[2].
And since it has a C-FFI, developing a first generation of a product in python and optimizing to c in next generations according to market and technical need is a good possibility.
I very much disagree, in the general case. The complexity of embedded systems design can't be significantly reduced by using python and I often do not think while developing that I higher level language would help, in fact I often think that C maps very well to the problem. It was designed as a system programming language and is good as one.
The complexity of embedded code does not lie in the code itself but in the hardware and you have sacraficed a few orders of magnitude in speed for very little or no gain. The code itself is usually fairly simple but you would not be able to tell anything from looking at it, you need to refer to datasheets.
Not only this but by using an more expensive ECU to begin with you really limit the scalability of your design and add to recurring costs.
I use a more powerful microcontroller at work and we still constantly have to drop down to assembly, albeit in limited controlled ways.
That said, there will be areas where this is a viable option, but not many. You have to analyze your problem and decide if is viable; for an embedded webserver it is, for a DCDC converter where speed is of a concern it is not. For a smoke alarm where cost is primarily a factor and your margins are tiny it is not.
The way to reduce the complexity of the hardware is mostly by using good libraries like arduino or mbed(or maybe goot rtos's with plenty of drivers, if there's such a thing). Do you use them ?
And as my example vs the OP's article with arduino, it seems that micro python offers a much better interface to said libraries. Not sure it's only the language, could be also the library implementation.
With regards to performance penalty : micro python has some unique compile mode which brings the speed to maybe 8x of c.
Assuming you're willing to waste some memory and speed(say a first version kickstarter product, or a low/mid volume commercial product) , you also get rid of pointers(which are the source of great complexity and bugs in c) and gets access to much better testing tools via python.
The biggest hurdle for most of the hardware I've been working on over the last few years, is the touchscreen.
It's very hard to get good quality (IPS panel, capacitive) 7-10" touchscreens in low quantities for reasonable prices (I know of 1 company who sells them for under $200, but they constantly run out of stock).
I've found it's cheaper to buy cheap android tablets for ~$100 and use them as thin clients, but then you have to deal with all of the restrictions google puts in place (mainly the lack of a kiosk mode).
You can create your own ROM to get past the restrictions, but 2 months later the tablet you were using is at end of life, and you're back at square one.
Someone could make a killing creating low cost android backed thin clients to use as interfaces for this "hardware revolution".
The direction many hardware startups have gone is to write networking code instead--if your customer demographic are people that are likely to have smartphones--, to have the interface on the phone instead of on the hardware device itself.
Screens and cameras are two of the worst offenders for hobbyist/small-scale dev efforts. They're obviously everywhere, and obviously could be affordable, but either you can't find documentation for them without an NDA or they're way too expensive. Clearly somebody benefits from this secrecy.
Any factory in China cranking out millions of 7" LCDs for the appliance and tablet markets isn't going to bother with support and service for a group that wants 100. That's why they're expensive and that's why you can't get datasheets for them.
If you're a serious customer and you can convince a local distributor of a manufacturer like Okaya, Sharp, or Ampire that you're serious (translation: you represent $$$), they'll give you all the stuff you want. Usually for free.
But that's exactly the problem I'm getting at: they make so many of these things, and while you can find them on eBay as replacement parts, there's no documentation on using them from scratch.
I don't even care about support. Does Atmel provide support to Arduino end-users? They just need to sell it to me with good enough instructions to make it work.
I'm a software engineer and I'm clawing my way through to founding a startup one day. The only thing is that I can't see myself doing is starting software company no matter what I do. I think that deep inside I just think that software is abundant and people still appreciate something that is physical, which is why I'm seriously considering "breaking bad" into home automation.
39 comments
[ 0.30 ms ] story [ 85.6 ms ] thread^ While true in a sense, I think its incredibly important not to downplay the difficulty of engineering this hardware in the first place. This type of sentence stinks of programmer elitism.
Otherwise, I'd agree that perhaps the biggest obstacle to using these embedded systems is circuit building education. Running linux or some bit of code on these systems is cool, but only to a point. I've always found this type of work to be most interesting when you can make the system interact with the world.
Don't get me wrong, the Raspberry Pi, Parallella, etc. are all incredibly feats of engineering (I couldn't even dream of building the processors or chips behind them). What I meant was the processors are only as useful to hackers as the software that they create for them. Hopefully that sounds a bit less elitist!
Yeah, nobody is ever going to be able to make a SoC in their garage. But I think the OP is trying to illustrate the fact that engineering efforts like RPi/Arduino are becoming easier now due to the internet and open source tools. That, combined with the market forces driving down the cost of the ICs, is making it possible to engineer a platform as complicated as a fully functional computer by a group other than a large, well-funded corporation.
The barrier to entry, while still high, is lower now than it's ever been.
That sounds like a challenge!
Hah, I kid. It's probably possible, but expensive as always. You would have to work in an antique process node, and relax your idea of what is supposed to be on an SoC.
Frankly, I doubt anyone but a rich eccentric would have the money to get into SoC design in their garage. My university acquired the resources to run a semiconductor class in the form of some antique (70s vintage) silicon lab equipment from Micron. Even though this stuff was brand new before I was born, Micron charged them in the neighborhood of $200k for each device. That's six machines for a total of $1.2 million. And that doesn't even encompass the whole cost of what you'd need to get a proper semiconductor development environment - you'd still need a cleanroom, electrical and gas hookups, chemical certification (you need all sorts of nasty stuff to make semiconductors - HF in particular is quite common in fabrication, and has horrifying effects on exposed skin when mishandled), etc.
Yeah, sorry - with all respect, I don't think anyone's gonna be starting a semiconductor company in their garage any time soon.
While prototyping is faster, development into something saleable goes much deeper (and into C).
> have the correct tools (most of which are not free)
One of the reasons the free software movement is so exciting is because it put professional quality software development tools into the hands of ... well, everyone, and let them unleash their creativity. This is why Stallman started with emacs, gcc, gdb, and the unix tools. A whole generation of programmers grew up using tools that a generation earlier would have been prohibitively expensive or inaccessible. The frameworks, tools and libraries the OP is so excited about are the continued product of that movement. They are free (as in beer) and, more importantly, free as in speech.
However, this hasn't happened to hardware development tools yet, except for a few exceptions. It might be starting. (I have my pessimistic days and my optimistic ones.) There are two classes of tools: software design tools (and firmware for hardware tools) and hardware tools themselves. Of course, we can't expect hardware tools to be free as in beer, but we can aspire to make them free as in speech. Kicad (a free PCB design tool) is light years behind the industry standard Altium. Free versions of tools for high-speed design, signal integrity analysis, etc. are basically unheard of. The on exception might be Spice, the circuit simulator. There are free designs for primitive hardware tools (e.g., power supplies, precision DMMs, oscilloscopes, logic analyzers), but they are nowhere near entry-level professional offerings, and many, even tho they call themselves "open", don't make design files available.
http://www.phenoptix.com/blogs/news/12550621-testing-the-ten...
Forget about RF-level stuff like RF signal generators and signal analyzers. I've never seen a high speed memory bus designed with open tools, for example, and I don't see how you'd ever debug it.
This is where I think the action is. A suit of open tools (software and hardware) that benefited from community improvement would truely be transformative. It would create an enormous amount of social value. I can see why it hasn't been done yet. Building open versions of these tools would require a huge amount of work, and they are incredibly valuable, so whoever does it would have to forgo a huge amount of value.
I'm finishing up something else in the short term, but I've been thinking about this a lot. I'd love to work on this problem, but it isn't at all clear to me how to fund it.
Eagle CadSoft is also popular with that demographic.
It is a fantastic software package - worth every penny, and easily affordable to small-to-medium businesses.
I'll bet they have 100+ programmers constantly improving their product. Every version is more powerful and easier to use.
No way for a small startup to compete with that without charging a similar amount. And even then, Altium has a 20 year head-start.
[0]: http://www.techdesignforums.com/practice/guides/double-patte...
[1]: http://www.eetimes.com/document.asp?doc_id=1279842
On a completely separate angle, compiling & optimization is basically the biggest Packing Problem you've ever faced, with several dimensions of "packing". You need some very smart people to hope to produce good results. But I've written enough for now.
This is why EDA software sucks so badly. The bug discovery rate is abysmal. Couple this with the fact that the number of EDA programmers is even closer to zero, and you have a recipe for a horrible industry.
But the tools aside, without a low cost foundry and with a low barrier to entry for new developers (i.e. not requiring a lengthy approval process), the open source tools are just a first step. It would be amazing to one day have the resources for a hobbyist to build an ASIC. Once we've reached the limits Moore's law, that may be the only way to keep the IC industry interesting.
To address your point about tools, I think you're right about the value aspect -- good tools cost money. But then again, does the average hobbyist need those kinds of tools? How much demand is there for, say, a 100 MHz open 'scope that costs a bit more than a Rigol? Ham enthusiasts would probably rather trade around old HP/Tek equipment.
I do agree in principle that there should be something like the Global Village Construction Set, for electronics. But it would be a monumental undertaking.
[0]: http://danstrother.com/2011/01/16/spartan-6-bga-test-board/
Good question. I agree, that's probably the first step: a more expensive inferior product, but I'm trying to look beyond that. If the open tools compete in features, and the manufacturers don't have to recoup design investment, shouldn't the open tools be cheaper? I want to live in a world where people have access to tools at the marginal cost of manufacturer. Once the open tools can compete on features, presumably volume would increase, making them competitive.
Rigol, like the bigger test equipment manufactures, sell heavily software limited equipment and charge handsomely for upgrades. Dave on the EEVBlog recently did a teardown of the newly released Tek MDO3000 6-in-1 scope. The entry level box costs ~$3,000. It costs about $15K for all the features enabled. Same hardware. Dave estimated the signal analyzer front end costs $40 in raw parts but $2,500 to enable. What's the real costs of the box? I'm not saying open is necessarily cheaper, but I'm not yet convinced it couldn't be.
https://tessel.io/
For $35 you can get a Raspberry Pi with much more power, network access out of the box, and the ability to run node. I don't see how the tessel can compete with that.
[1] Okay the RPi can be used a starting point even for kids. But the Parallela I don't think so.
You say you could do this through HTML, would using Angular Modules work for you? I'm just thinking of how I can add some pretty easy features to do basic interactions with angular.
Micropython[1] is being in development right now,Currently working on a $6 mcu, with a potential for running on a $3/84mhz/3mm*3mm/49-pin mcu with varied peripherals (or maybe even something cheaper).
And as or complexity, this video shows an easy wifi interface[2].
And since it has a C-FFI, developing a first generation of a product in python and optimizing to c in next generations according to market and technical need is a good possibility.
[1]https://github.com/micropython/micropython
[2]https://www.kickstarter.com/projects/214379695/micro-python-...
The complexity of embedded code does not lie in the code itself but in the hardware and you have sacraficed a few orders of magnitude in speed for very little or no gain. The code itself is usually fairly simple but you would not be able to tell anything from looking at it, you need to refer to datasheets.
Not only this but by using an more expensive ECU to begin with you really limit the scalability of your design and add to recurring costs.
I use a more powerful microcontroller at work and we still constantly have to drop down to assembly, albeit in limited controlled ways.
That said, there will be areas where this is a viable option, but not many. You have to analyze your problem and decide if is viable; for an embedded webserver it is, for a DCDC converter where speed is of a concern it is not. For a smoke alarm where cost is primarily a factor and your margins are tiny it is not.
And as my example vs the OP's article with arduino, it seems that micro python offers a much better interface to said libraries. Not sure it's only the language, could be also the library implementation.
With regards to performance penalty : micro python has some unique compile mode which brings the speed to maybe 8x of c.
Assuming you're willing to waste some memory and speed(say a first version kickstarter product, or a low/mid volume commercial product) , you also get rid of pointers(which are the source of great complexity and bugs in c) and gets access to much better testing tools via python.
It's very hard to get good quality (IPS panel, capacitive) 7-10" touchscreens in low quantities for reasonable prices (I know of 1 company who sells them for under $200, but they constantly run out of stock).
I've found it's cheaper to buy cheap android tablets for ~$100 and use them as thin clients, but then you have to deal with all of the restrictions google puts in place (mainly the lack of a kiosk mode).
You can create your own ROM to get past the restrictions, but 2 months later the tablet you were using is at end of life, and you're back at square one.
Someone could make a killing creating low cost android backed thin clients to use as interfaces for this "hardware revolution".
Any factory in China cranking out millions of 7" LCDs for the appliance and tablet markets isn't going to bother with support and service for a group that wants 100. That's why they're expensive and that's why you can't get datasheets for them.
If you're a serious customer and you can convince a local distributor of a manufacturer like Okaya, Sharp, or Ampire that you're serious (translation: you represent $$$), they'll give you all the stuff you want. Usually for free.
I don't even care about support. Does Atmel provide support to Arduino end-users? They just need to sell it to me with good enough instructions to make it work.