General > General Technical Chat
From hardware to firmware development
Berni:
Yep the hardware engineer understands best how to drive the hardware they just built.
So it can be very helpful to have the engineer write some simple test firmware. Sometimes not all the important information makes it over to the programmers that end up on the project, so they might end up using the hardware the wrong way and complain how it doesn't work properly. They are also very happy when they can just take the quick testing code and turn it into a driver without having to read the documentation. Then there are the cases where something doesn't work and fingers are getting pointed at the hardware, for those you can then just load up the test firmware and say "It works with this firmware"
I have a fun story how this can unfold:
The hardware engineer designs a product with a STM32 and a color LCD with a MPU interface. Makes the PCB, assembles a prototype unit..etc and the prototype gets to the desk of a programmer.
Then suddenly the programmer walks in with a upset expression on his face "Why in the world did you spread the LCDs data bus over 3 different GPIO ports? Do you have any idea how much i have to shovel the bits around to drive that display now? The bits aren't even in the right order!"
To that the hardware engineer opens the schematic and points out that the LCDs 16bit data bus bits align 1:1 onto the 16bit data bus of the STM32 external memory controller pins. That way he could just DMA pixels into the LCD display like it is memory. So good thing STM32 spreads the peripheral pins across the GPIO banks in a nonesense way, if that 16bit bus was places sensibly over the 16 pins of a GPIO bank they would have bitbanged that LCD.
VK3DRB:
I do hardware, firmware and systems development for clients across a range of industries. I found being a jack-of-all trades but only a master-of-some leaves me in high demand. It is not 9 to 5 but long hours is the norm because there is so much to learn, research and develop. But variety is the spice of life. For example I am working a LTE-M and cryogenics amongst other domains. I had no experience with LTE-M (LTE Cat-M1). Never worked in cryogenics either, but it is really cool.
Regarding abandoning hardware engineering, it seems there few really good and experienced hardware engineers around (in this country at least). Many hardware guys left to become embedded programmers, or worse still become Windows programmers; because that's was where the work and the money was. It is difficult to get back into hardware if you have been out of it for 10 years. A good hardware engineer in medical devices or RF can change more per hour than a common firmware engineer. But a good firmware engineer in medical devices can usually command a decent salary too.
As a very rough rule of thumb, the hours to develop firmware is double that of hardware. Hardware is easy for OCD people, but with firmware there is more SOUP you have to deal with, like buggy compilers or libraries, and standards like IEC-62304 etc.
One can take over an electronics hardware project that is a mess and clean it up without too much hassle except if there are backwards compatibility issues that cannot be fixed. But taking over a complicated piece of firmware written by an idiot can be soul destroying. Once an engineer quit a company, and a good firmware guy joined to take over the code. In two weeks he quit and told me he'd rather be in prison than take over 50,000 lines of the bug infested dreadful code. I joined the company and it took me 18 months to fix the code up. I now agree I 'd rather be in prison than have to take over crap like that again. The hardware there was also a mess... created by the same idiot who wrote the code, but that was easier to fix.
westfw:
Well, I was an EE major, and ended up with a career that was almost entirely software.
I liked the immediate gratification, and the simplicity of fixing your mistakes, before the job market was a major consideration...
Navigation
[0] Message Index
[*] Previous page
Go to full version