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