10 ms·
A Dozen Microcomputers
I have a dozen microcomputers, microcontrollers, FPGA boards, etc. If it is out there I've probably bought it.
I've been learning how to program each one.
One major source of frustration is that they all seem to have their own way of doing things. For example, I have the Arduino which likes the arduino IDE. I have a DE1 which requires Quartus. The DE10-nano requires a blaster cable. (Surprisingly in my "box of a thousand cables" I didn't have one).
It is painfully time consuming to get the BLINK program (the "hello world" of hardware) running on each one.
It is bad enough having to learn how to set the dozen random registers just to generate a quadrature waveform. But that's due to hardware design tradeoffs. It would be much better if there were open source VERILOG submodules that were considered "standard".
The software IDE layer ought to provide a common API (e.g. timers, AD/DA conversion, I2C, USB programmability, etc.)
Learning all of this takes time and I'm willing to crawl over the intellectual broken glass to do it but I think it is really holding back the industry.
Perhaps it is time for some industry standards applied at the IDE level.
- ansible 6y ago> Perhaps it is time for some industry standards applied at the IDE level. There are some efforts underway for that. It seems like you are making it hard for yourself. What's stopping you from really learning one or two particular systems?
- daly 6y agoThe field of software is exploding in many directions (e.g. machine learning, quantum programming, program proofs, dependent types, category theory, etc). At the hardware level it is also exploding. There are a dozen new computer architectures and instruction sets. It is now possible to design your own cpu (yes, I am) and build it in an FPGA at the cost of a few dollars. That forces you to learn VERILOG and processor design. It also forces you to learn electronics in order to breadboard your ideas. The field is also converging. Intel now has a cpu that also has an fpga. (This is only available to the FAANG players it seems, which is a source of frustration for me. Why, Intel, Why?). Imaging being able to build your own instructions "on the fly". I want to implement Gustafson's UNUM arithmetic (see "The End of Error" https://www.amazon.com/End-Error-Computing-Chapman-Computational/dp/1482239868 https://www.amazon.com/End-Error-Computing-Chapman-Computati...) It's not clear what the long-term shakeout will be but it is fun to try to learn what the leading edge is doing. Like the Red Queen from Alice in Wonderland said 'Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!' I'm doing all the running I can to ride the leading edge. What could be more fun?
- ansible 6y agoFor me, learning the thousand and one little quirks and details of a particular platform are more annoying at this point. I know what I want to do, the details on how to get it done on yet another platform aren't interesting to me. I'd rather attain further mastery of one platform.
- giantg2 6y agoIt would be nice for some standards. I think part of it is that there is the expectation (perhaps misguided) that these are going to be highly modified/configured for custom applications, so they don't need common standards as they won't be interchangeable.
- ecesena 6y agoHow about PlatformIO + VSCode? https://platformio.org https://platformio.org
- the__alchemist 5y agoAddressing this is the general idea behind Hardware Abstraction Layers (HAL). In practice, HALs only work on a limited range of microcontrollers, but you could design a HAL that performs the most general functions (like GPIO setting and reading) that works across a diverse range of devices.