I've never shipped anything to real customers in the wild before, so let me tell you how insanely stressed I was to open the firmware and find a 10k lines of C contained entirely within a single switch statement. I think they used some no-code tool to graphically design a state machine then plopped the generated code straight into the device.
Just convincing them that their problem boiled down to a single incorrect bit was difficult enough but then having to, in a day, build and successfully operate a test harness to prove the fix worked was the real stress.
I do not miss embedded engineering.
Generally firmware can't be updated by the end user because there is physically no way to do so without returning the hardware. (Unless an update mechanism is specifically implemented in hardware, obv)
Pucker factor goes way up because if you ship a bug, there's no way back. If you aren't careful, you can break physical devices which can have consequences anywhere from thousands of RMAs to burning down a user's house depending on the hardware and how bad you fucked up.
The deployment process itself is about the same. Tests and more tests, including testing on prototype and/or pre-production units. Hardware testing can get wild depending on application, but I don't think any SWE would find it too surprising. Then you email a binary to your manufacturer and pray