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 ;
（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 ;