4 ms·
>>Hardware is different. You never hear about a new team successfully making a high-performance microprocessor. May be not a microprocessor. Building something
by kamaal 13y ago
>>Hardware is different. You never hear about a new team successfully making a high-performance microprocessor.
May be not a microprocessor. Building something like that requires moderately deep pockets.
But hardware start ups happen all the time. They don't have any where near the kind of press coverage we do. I am working on a couple of embedded projects on the side. And I can tell you the barrier to entry there is pretty high. Web companies for all their scalability problems are still by and large low hanging fruits, compared to any hard ware start up. There is also little VC activity there, and you won't get slots for pitches at conferences.
One of things that I see while working with embedded developers(I am currently working with some very good ones). C is literally the bread and butter, so you have no language wars. The highest priority is Stability(Read, Quality in general), followed by efficient code, and then maintainable code. Your survival largely depends on your ability to RTFM properly, you have to internalize and thoroughly understand specs, the hardware interfaces you are trying to program and the way C lets you program them in a interplay with best practices there.
Internet isn't always of much help as the platforms you are trying to target aren't too famous. And there are no hipsters who crazy blog every little development in that area.
Of the many things that I've learned(and enjoyed doing it), is to go to great extents to workout things on paper. Mind maps, diagrams, graphs, doodles, checklist etc. To first prove a degree of correctness on paper and begin to program. It has greatly increased my ability to divide things and look at them with clarity. In turn I am able to write stable, and quality code.
According to me every one should work a embedded project. Even if its not a serious project. And please work with plain C without an OS.
Additionally, writing a python program on linux, running on something like rasberry pi is not hardware hacking, or low level programming.
- hershel 13y ago>> The highest priority is Stability(Read, Quality in general) After reading the transcripts about the code in the toyota car that had an accident it doesn't seem so. Maybe electrical engineers honestly try , but they don't seem to have the education(software engineering), the tools(languages that prevent errors,high quality libraries,test tools) and the processes(TDD) to get there.
- sounds 13y agoWithout commenting on the Toyota situation, yes, it is common to find embedded code written by an electrical engineer who does not seem to have the necessary skills. However, the key word there is "seem." My anecdotal experiences with electrical engineers makes me think otherwise. One engineer I worked closely with was given the assignment to produce the embedded code in a single day. She completed the task including learning the platform and the buggy vendor compiler. Another engineer didn't care and couldn't be bothered to learn it. When he did code, he hammered it out only until it appeared to work and then signed off on it. Most engineers (any type) would never sign their name to a project finished like that. The same thing happens all the time with software, but software or hardware, the people I've worked with definitely have the ability and can easily produce great work as long as management is doing their job. I think firmware (like Toyota's) gets neglected precisely because nobody can see it or improve on it later. I am hopeful that more open hardware initiatives will indirectly result in open-sourced firmware becoming more common, resulting in better code quality. I realize I'm blaming management here. Effectively managing engineers is hard, and it's a topic I enjoy when it comes up on HN.
- kyzyl 13y ago> go to great extents to workout things on paper Yeah, seriously. The explanation I always give to software people is to look at how much complex high level systems programming relies on debuggers, IDEs, frameworks, compiler warnings, etc. Now tear all that away (yes, there are JTAG debuggers and whatnot, but it's a different ball game). If you just dive in and start coding you will get lost, especially in cases where your system involves significant interplay between fields. For example, you are writing C code on an SoC hard core, which is talking to IP blocks and custom logic on the accompanying FPGA, which is talking over various interfaces to some high speed PCB you've made, which is talking to some proprietary PCB you didn't make. Okay, now where is the bug? Print statements ain't gonna cut it. You have to have a very clear idea of the principles at play: signal integrity, digital systems, E&M, communication protocols, HDL synthesis, and more. That's why hardware is hard.
- shubhamjain 13y agoCan you advice on how can one get started in embedded programming? What are the barriers, talking the cost and hardware to begin. I can't think of much of a real project that I would be fond of making but even a set of blinking lights would be an achievement for me.
- stackcollision 13y agoI've also just started learning hardware development in my spare time. It's a very different challenge than software, and I'm already having a ton of fun with it. To get started, I'd recommend taking a look at this tutorial: http://www.newbiehack.com/MicrocontrollerTutorial.aspx http://www.newbiehack.com/MicrocontrollerTutorial.aspx I also work with a guy who has been hacking hardware since the vacuum tube days, and has built his own computer literally from the ground up. He's an amazing resource, so I got really lucky. As for barriers, I got started for less than $60. I bought an MCU, breadboard, programmer, iron, some LEDs and other components and started messing around. I haven't put together a PCB yet, because I want to make sure I've got everything right. Like the article says, the real world is unforgiving. I don't want to dump $50 on having a board etched and then find out I messed up the design.
- kamaal 13y agoI don't think you will need to go the PCB level work right now. You can do a good deal of work on the bread board. And for things which are a little complicated, building reusable modules and learning how to solder a little quickly, works most of the times.
- snom380 13y agoAn Arduino kit is a good starting point. You can get some starter kits with excellent tutorials for $50 or less. Arduino gets you quickly up and running, without spending days fiddling with compilers and settings just to get something working.
- kamaal 13y agoJust checked your profile, nice to know you are from Jaipur. The easiest way is to start with a Arduino, the other ones are PIC or MSP430. With MSP430 you have a launch pad board, And as far as I know your local electronics market will for dead sure have PIC starter boards. They should not cost anything more than 800 rupees. If you are going with PIC, you will get a free IDE from Microchip(MPLABX) and tons on free examples online. So on that end you won't have much problems. So using PIC should be the easiest way to get you started. If you are in Bangalore, there are two shops at the end of SP road(nsk electronics and sri lakshmi electronics) which stock eval boards for PIC and MSP430. They will also have every thing you need to get started and to move to an intermediate level as they primary stock parts which students use for college projects. You will also need some resistors, led's, and probably a USB to serial converter cable. Take time to study the PIC tutorial online. The best place to start is this. http://embedded-lab.com/ http://embedded-lab.com/ Tutorials at : http://embedded-lab.com/blog/?page_id=26 http://embedded-lab.com/blog/?page_id=26 You can work through the hard ware and software examples. It will require both patience and a bit of 'persistence' to get through them. But with time you will only get better. As for the cost the net will not be more than say 1500 rupees. Which is pretty cheap for what you will learn. As with these things, going with a little research helps, spend 3-4 days going through tutorial to what parts and in what quantities you need to buy so that you don't have to go there again and again.