
The Hardware Revolution - stevenleeg
http://stevegattuso.me/2014/03/09/hardware-revolution.html
======
noobiemcfoob
"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.

~~~
cushychicken
>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.

~~~
sliverstorm
_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.

~~~
cushychicken
> 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.

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

~~~
iamwil
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.

~~~
sliverstorm
Yup, the smartphone-as-UI paradigm makes a lot of sense, as much as it
irritates me sometimes.

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

[1][https://github.com/micropython/micropython](https://github.com/micropython/micropython)

[2][https://www.kickstarter.com/projects/214379695/micro-
python-...](https://www.kickstarter.com/projects/214379695/micro-python-
python-for-microcontrollers/posts/681998)

~~~
anon24892
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.

~~~
hershel
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.

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

[http://www.phenoptix.com/blogs/news/12550621-testing-the-
ten...](http://www.phenoptix.com/blogs/news/12550621-testing-the-ten-minute-
open-source-test-with-kickstarters)

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.

~~~
cushychicken
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

~~~
swamp40
I use Altium every day for board layouts and schematics.

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.

~~~
cottonseed
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?

~~~
sliverstorm
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.

[0]: [http://www.techdesignforums.com/practice/guides/double-
patte...](http://www.techdesignforums.com/practice/guides/double-patterning/)

[1]:
[http://www.eetimes.com/document.asp?doc_id=1279842](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.

~~~
cottonseed
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.

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

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

~~~
pedalpete
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.

------
Qworg
Margin seeking in manufacture would immediately try to drop a $60 computer in
the product for work a $1 chip could do.

While prototyping is faster, development into something saleable goes much
deeper (and into C).

------
bkurtz13
I'm personally excited for Tessel.

[https://tessel.io/](https://tessel.io/)

~~~
stevenleeg
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.

