hardware engineer
Hardware engineers need to be familiar with commonly used EDA development tools and be able to wire multilayer boards; Familiar with hardware board debugging steps, and can independently write hardware test programs; Ability to conduct electromagnetic compatibility/electromagnetic interference tests; At board level or system level; Able to program CPLD; Ability to develop drivers under LINUX.
Software engineer
Software engineers need to be familiar with C language and assembly language, and be able to read and understand English technical materials skillfully; Able to develop embedded software, familiar with MCU, DSP or other processors; Understand analog and digital circuits, have a certain hardware foundation, master the use of EDA software, and understand the schematic diagram and PCB diagram.
salary
The salary is almost the same! Mainly software is easy to find a job. Hardware requires too much work experience.
Learning suggestion
As for how to learn, I recommend you to learn about the curriculum of general training institutions. I have a very detailed introduction on the website of Xi 'an Xiqiao Education Center. Let's see if it is free.