Study notes 1 :
Embedded system course learning reserve knowledge :C language + singlechip ( How the hardware works )
1, What is embedded technology ?
The difference between embedded software and non embedded software ?
The difference between embedded development and MCU development ?
Advantages and disadvantages of embedded development ?

Embedded technology is application centered , System technology based on computer technology , Burn the software directly into the hardware , Instead of being installed on an external storage medium . That is to transplant the operating system to the existing hardware , Let operating system manage software and hardware resources , Reduce the coupling between hardware and software , On top of the operating system to do upper application development , Do the underlying development under the operating system .

SCM development is a traditional development , The development process is to look at the schematic diagram first , Then write the code , Finally, download the code to the development board , It is composed of software and hardware , Be familiar with the working principle of hardware, then write software , Burn the written software into the hardware , The hardware is controlled by software ( Software as code , The bottom development board is the hardware ). Its disadvantages : First of all, the coupling degree of software and hardware is high , Software portability is poor ( Poor adaptation platform capability ), Low operation efficiency , High power consumption . secondly , In terms of the ability requirements of developers, traditional development engineers should give consideration to both hardware and software , Relative to teamwork , Its development efficiency is low , Engineers have limited energy , It's hard to look at the big picture , Reduced user experience .

Embedded system is transplanted into the operating system between software and hardware . The operating system can manage software resources and hardware resources , It's like a housekeeper in life ( We asked him to do it ), Realize the isolation between software and hardware , For example, you want to run a camera in your hardware , As for making the software issue corresponding instructions to the operating system , The hardware is controlled by the operating system , The hardware returns the data to the operating system , The operating system returns the data to the software , In this way, we do not need to understand the working principle and structure of hardware when developing software , As long as the operating system doesn't change , The change of hardware will not affect the software . Therefore, the software transplantation is good ( Strong adaptation platform capability ), Clearer division of developer capabilities , The operating system implements multi task mechanism , Provides a wealth of network protocols , Open source software and libraries are provided . The disadvantage is that the cost of upgrading hardware will increase .

Embedded makes products more intelligent , Run more software . Embedded software is developed with operating system , Instead of embedded software, it is bare metal development ( No operating system ). Judge whether it is an embedded product or not , See if there is an operating system in the product , There are different types of operating systems in all walks of life , It is widely used , But its function is to isolate hardware and software .
2, Direction and requirement of embedded development
1), Development of embedded upper application software :
Master a language ;
Familiar with an operating system ( I can read the manual );
data structure / algorithm ;
2), Software development of embedded underlying system :
master C language ( All operating system kernels have C+ Development of assembly );
Understand the implementation of operating system ( Can use , Will add / Modification function );
Familiar with the working principle of hardware (CPU:stm32+64 position ,SPI,IIC, Bluetooth ,wifi Internet of things , camera );
Familiar with assembly ;
notes :
(1), Why C language ?C The characteristics of language ?C Language can directly access the hardware , Good portability , High operation efficiency
(2), Why? C Language can directly access the hardware ? because C Languages have pointer data types , The pointer can operate on the address
(3), When to choose assembly , When do you choose to use it C language ? Assembly for hardware initialization , Do complicated exercises C
3), Embedded System Engineer : direction :BSP( Firmware engineer ), Kernel development ;