A system designed by embedding hardware and software together for a specific function in a wider area is an embedded system design. Microcontrollers play an important role in the design of embedded systems. The microcontroller is based on the Harvard architecture and is a key component of embedded systems. The external processor, internal memory, and I / O components interface with the microcontroller. It occupies less area, less power consumption. Microcontroller applications are MP3s, washing machines.
Embedded system type
- Standalone embedded system
- Real-time embedded system
- Network appliance
- Mobile device
- Embedded system elements
- Digital signal processor.
A central component of computational tasks
Embedded systems, by our definition, are the central components that perform computational tasks. In most cases, this will be a microcontroller, but it can also be a microprocessor, digital signal processor, or FPGA.
All embedded designers should be completely familiar with the firmware development. (On the other hand, FPGA skills are usually an option. You can guess that less than 5% of embedded systems use FPGAs as their core component.)
Includes the following tasks:
usually, C. Knowledge of assembly language is essential in my opinion. This is because the assembly instructions show how the processor actually works. You don’t have to write code in the assembly, but you need to understand it.
Peripheral device configuration.
Many, and perhaps most, embedded systems incorporate the use of peripherals such as analog-to-digital converters, programmable counter modules, I2C interfaces, or USB controllers. Embedded designers need a complete understanding of these hardware modules. These are how they work, how they are implemented normally, and how they are required, and how they are converted between the bits of the configuration register.
Test the code.
This does not mean turning on the device and monitoring it for 3 minutes to make sure it works. All features should be systematically tested, exposing the device to different operating conditions.
The firmware may always be fully functional at first, but mine is not. Initial testing is primarily a means of determining the modifications and adjustments needed to bring your code into a functional state.
“Debug” is a rather vague term. I’m using it here to illustrate the process of finding and fixing subtle errors in code that are already more or less working. Debugging is an important skill that is difficult to learn from books and articles. Proficiency comes from a wealth of personal experience and the observations of experienced embedded designers.
checking the code.
At this point, do everything you can to prevent the code from performing the required functions correctly and not firing when something unexpected happens elsewhere in your system or in your surroundings.
An example is the “monkey test”.
Give the code continuous random input (as if the monkey was playing with the keyboard) and make sure the device isn’t malfunctioning.