From hardware to firmware development - Page 1
Forum section: electronics / general

author: mrburnzie
author_rank: Regular Contributor
timestamp: May 16, 2023, 12:22:14 pm
content: Hi!I'm interested if there is anyone reading this that started with hardware and switched to firmware development (C/C++/Rust or something else).What was the reason behind it?I'm asking this, because I'm looking at the job market as a hardware engineer (with experience with firmware, almost parallel), and just can't look away from the fact that there is more opportunity when it comes to firmware, but also it is much more flexible, especially talking remote.

author: RoGeorge
author_rank: Super Contributor
timestamp: May 16, 2023, 12:28:16 pm
content: You know the saying, any new design needs 1 analog engineer, 10 digital engineers and 100 software engineers.

author: dobsonr741
author_rank: Frequent Contributor
timestamp: May 16, 2023, 01:53:37 pm
content: IMO an EE should have all the analog/RTL/software engineering flavors in education, and try out all in practice. I like firmware b/c it’s gets to what I want the fastest. Not to mention software pays the most, and you can move around much more easily than in hardware.

author: hans
author_rank: Super Contributor
timestamp: May 16, 2023, 02:53:58 pm
content: I first learned to code in PHP/JS to build websites with my brother, back when I was a kid. I dove into C#/Python during secondary school. Was fascinated by electronics, so completed bachelor in EE. Worked few years as electrical design engineer where I also wrote my own firmware and software in C#. In a small firm, those other skills were very appreciated. However, it also made me realize what I want in a job.I love doing HW. But not so much as a day job. I like design and tinkering (which I still have whilst doing a PhD), but I don't like design for manufacturing. Production jigs. Quality assurance. EMC/CE certification. Explaining to my boss how I think I will fix those 'whoopsies' that appear in HW due to inexperience/ignorance. (OR worse, how much effort a recall is going to cost.) Ugh.Maybe it's better in a bigger firm where you'll have test engineers, etc. But in a small firm, it was tiring. Not implying I made a ton of 'whoopsies' or whatever; but I found it mostly a grind. I found FW far more fun/suitable for me. Sure FW has arguably more invisible ways of going wrong (atleast EE is a hard discipline), there are also ways of doing it 'properly'. I feel FW suits my background profile much more, as someone that self-taught SW and did EE in education.Now, from this point on in my reasoning, I may use "HW" and "FW" in perhaps some gray area. When I think of "HW": I think of precision/audio analog circuit design, RF circuits, power supplies, or high-speed digital board designs. I would not consider hooking up an ESP32 to some sensors as HW. Sure, it includes electronics and soldering. But 95% of the magic work is done in firmware. And if it needs to be low power; then I also think that's mostly software work nowadays. Well, unless you picked the wrong sensors/chips that don't support a good low power state ;-)With that, I come to a 2nd problem I've with doing HW for the sake of HW design, which is the approachability from a single person with limited budgets. It becomes prohibitively expensive to work with the shiniest toys or chips. The shiniest FPGAs and MCUs will require high layer count (>4) boards with small pitch BGAs and high-speed memory buses. The last board I did was with a STM32H7 (still in QFP), dual HyperRAM memories and high-speed USB. Very pleased it all worked first-go. That project was not that expensive. The components were 40-50EUR/board and 4L PCBs are cheap nowadays.But what's the next step? try a design with a 400+ball FPGA and some DDR3 buses? Sure; sounds fun.. until you get to costs and reworking options. A first run can cost hundreds of euros, hours of tinkering till you'll know for certain if the hardware is OK, and if its not, need to spend hundreds of eurosagainto fix it. It could be nice to put down as experience, but I don't see it being worth my time as of right now. So HW for the sake of HW has lost my interest a bit..In FW, I don't feel these problems really exist. You can write the neatest code with splendid structure and speed/codesize for a 8-bit AVR or Cortex-m0 with 2KB of RAM, if you want. If you get into FPGAs, you get a taste of designing your own MCU and adding custom instructions or peripherals. Need to change something? It will be running on the target device in minutes. The devboards needed to get some decent mileage are not that expensive.In my work/study, I'm doing all-digital radio (think SDR with some RF stuff)/DSP/ultra low power/embedded systems and I think thesystemsdesign aspects is what I like most. And with everything getting converted to digital ASAP (MCU or FPGA), I feel that's mostly FW work. In my PhD work I probably do 25% LaTeX, 70% code and 5% solder/CAD.

author: Berni
author_rank: Super Contributor
timestamp: May 16, 2023, 05:35:34 pm
content: It is a broad field out there. Being a HW engineer could go in a lot of directions. It could have to do with high speed analog, precision analog, digital logic, high speed digital stuff like computing, could be RF in various ways, perhaps power electronics, could be just PCB design of very advanced and dense boards, could even be someone who just integrated existing modules together into a system (more like an automation engineer)But i general as said above, Typical projects these days need way more man hours of work on the software side, so they need to hire more programmers than engineers.You however have a valuable combination of skillsets of knowing both. Most programmers have no clue what so ever about electronics, like not even what a pullup is. This can cause a lot of issues in low level firmware development where the software is very much intimately in touch with the hardware. At the same time the software is not as complicated in that area, so as long as you know your way about plain old C (not even C++) you will do great.But the question really should be what YOU want to be doing as a job. If you don't think you would enjoy writing code for 8 hours per day, then stick to electronics. Sure you might have to cast a bit of a wider net when looking for jobs, but once you find an opening you will easily land the job as long as you have experience. Since experienced electronics engineers are very hard to find.

author: mrburnzie
author_rank: Regular Contributor
timestamp: May 17, 2023, 07:50:26 am
content: I totally feel your story.The biggest impact when working in hardware is that it is just expensive, and 'whoopsies' can be expensive as well.I just designed an automotive HUB board, because I got the comment from more-senior designers that I have to work on my high-speed design.And now what? "Hey boss, I designed a board, because you told me that I have to work on my highs speed, 6 layer, automotive, it will cost you around $200 just the parts, for one board... order it, right?"So yeah, I love tinkering as well, but I'm currently in a company where hardware is "just a keychain" and not the primary focus.Will see how it goes if there will be projects to do, if not, switching to firmware.

author: mrburnzie
author_rank: Regular Contributor
timestamp: May 17, 2023, 07:52:29 am
content: I have been doing hardware and firmware in parallel for a couple of years and at my current job I'm focusing only on hardware (for about a year now)Honestly, I can take the "writing software 8 hours" part, and I totally agree that I'm "a bit ahead" with the dual knowledge of electronics and firmware.Will see how it goes and if there will be projects.

author: rstofer
author_rank: Super Contributor
timestamp: May 17, 2023, 03:06:04 pm
content: It has always seemed to me that the engineer designing the hardware better be able to prove it functions by writing some/most of the firmware. This leaves application code to others but at least the hardware is proven. There always seems to be finger pointing when hardware and firmware are done by separate people.

author: mrburnzie
author_rank: Regular Contributor
timestamp: May 17, 2023, 03:07:25 pm
content: That is exactly why I did firmware and hardware parallel. So that I could write a firmware that will test everything and be a foundation for a driver in the application stage.

author: SiliconWizard
author_rank: Super Contributor
timestamp: May 17, 2023, 10:20:31 pm
content: Quote from: rstofer on May 17, 2023, 03:06:04 pmYep, the same happens for pretty much everything though.EEs will blame MEs, MEs will blame EEs as well when integration doesn't go well.

author: Berni
author_rank: Super Contributor
timestamp: May 18, 2023, 05:20:41 am
content: 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.

author: VK3DRB
author_rank: Super Contributor
timestamp: May 23, 2023, 12:03:10 pm
content: 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.

author: westfw
author_rank: Super Contributor
timestamp: May 23, 2023, 06:28:51 pm
content: 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...