Help needed in making career in embedded system
Pritam Pun wrote 11/02/2020 at 05:36 • 3 pointsI am currently studying bachelor in electronics and communications and I am thinking of making embedded system as my careers. What extra knowledge should I learn along side my course ??
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
https://dogsandcatslove.com/can-dogs-eat-cheetos-is-it-harmful-for-dogs/
Are you sure? yes | no
I don't know if my problem is irrelevant to this thread. I'm working on an application for android and I got stuck in some problem. I just need experts' suggestions. My blog app link and the title are: https://solonetworth.com/corey-benjamin-net-worth/
Are you sure? yes | no
Just go do it, you'll have better job prospects as it touches software a lot more thoroughly than say power, where you'll just be drawings lines in etap and doing hard maths (there's more to it that than, but tops out at $120-150k, software just keeps going)
Are you sure? yes | no
thank you all for these great suggestions :)
Are you sure? yes | no
All of the suggestions here are great.
Consider an internship. You'll want practical experience from a system and product level.
Working as an embedded developer, you'll want to know how to choose components for a project that will go into production, how to design for field upgradability, how to choose between bare metal and OS, and which SDK / BSP to use, and most importantly how to work with others on all of the above. An internship will give you experience with some of these and hopefully set you up with a mentor.
Are you sure? yes | no
+1 Several places I have worked had internship programs. The Interns got some good experience and usually got job offers when the graduated.
Are you sure? yes | no
yeah I am planning to do one as soon as this corona shit goes away
Are you sure? yes | no
If it is available, a course in FPGA usage would also be good.
Are you sure? yes | no
Currently I am taking basic FPGA with VHDL course, what should I do after that go to advance FPGA with VHDL or go for FPGA with VERILOG ??
Are you sure? yes | no
I would say to take the advanced FPGA class. More depth seems like a better choice to me.
Use of VHDL compared to Verilog kind of depends on what region and what industry you want to work in. In the US, Verilog is more common for IC design work and the FPGA verification of those designs. Pure FPGA work where the product will always be an FPGA is split between Verilog and VHDL. In Europe, VHDL is used a lot more in FPGA work. I don't know about the IC design work done in Europe. The US based semiconductor companies that I have worked for that had design centers or contractors in India used Verilog. I don't know about internal choices in India.
Use of System Verilog is rapidly growing in the US for verification work.
On a slightly different topic, the C language is still widely used in embedded system work and is good to know.
Are you sure? yes | no
To add to Bharbour, I would go so far as to say that C++ should be the language used for embedded systems.
On very RAM-Constrained systems, dynamic memory allocation is simply disabled, and on most more modern cores (M0 and above), it's no problem. C++ also adds a lot of organizatory features such as Namespaces, as well as much better containers for data, and I've found it to generate little to no overhead compared to raw C, with the added benefit of less likelihood to mess up memory management (i.e. by having a std::map rather than using C-equivalents to manage complex data structures, using references instead of pointers, having destructors in classes etc.)
Are you sure? yes | no
Embedded systems will need good interfacing with some larger system, i.e. a phone or computer, so it does help knowing how to abstract data and how to share it between the embedded system and what it's communicating with.
Also think of learning/improving your programming style. Being so close to hardware means you will often have to interface with the raw, low-level registers, and being able to abstract them away behind interface functions or classes is incredibly useful, makes your code much easier to maintain and reuse!
Also look into FreeRTOS and other schedulers. Even the smallest embedded systems can have some form of scheduler running, and utilizing them well can improve the flexibility and stability of your code a lot!
You will definitely want to go through advanced digital design like Bharbour suggested, since it's nice to be able to route a four-layer PCB to make things more compact while retaining full functionality.
Are you sure? yes | no
For FreeRTOS and schedulers from where I should start.
and does learning assembly language will help ??
Are you sure? yes | no
Get yourself an ESP32 dev kit.
Their programming environment is very well documented, has good examples for every component (WiFi setup, HTTP communication all the way to the GPIOs etc.), it comes with FreeRTOS properly set up and fully functional (whereas things like the STM32CubeIDE have a broken FreeRTOS memory setup).
You can do a LOT with the ESP32 series chips, they're cheap and one of my favorite go-tos, so I think they are a good learning step.
You can even use them with the Arduino IDE if you want it a bit simpler!
IMO assembly is extremely niche. Modern compilers are incredibly good at optimization, better than any human, and writing assembly is only necessary if you need very specific timing constraints or other very precise controls.
It's good to know how to read the disassembly of your project if you are debugging, but writing it... Not really.
Are you sure? yes | no
Take a few courses in hardware topics like digital design and maybe signals and communications topics. Embedded systems work is normally much closer to the hardware than traditional IT stuff. Physics has been another useful thing, as it gives a working knowlege of how things move and interact.
Are you sure? yes | no