1.嵌入式系统
1.定义与特点
定义:嵌入式系统是以应用为中心、以现代计算机技术为基础,能够根据用户需求灵活裁剪软硬件模块的专用计算机系统。它通常由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。
实时性:许多嵌入式系统对实时性有较高要求,需要在规定的时间内完成特定任务。
可靠性:由于嵌入式系统往往应用于关键领域,因此其可靠性要求极高。
低功耗:嵌入式系统通常设计为低功耗,以适应各种应用场景。
小型化:嵌入式系统集成度高,体积小巧,便于嵌入到各种设备中。
2.嵌入式系统与通用计算机的区别
嵌入就是把软件嵌入(写入)到硬件里去了,你不能很方便地去更改里面的软件,比如电视机、空调遥控器,你很难去更改按钮的逻辑,比如按关机键改为换频道,更重要的是更改它没有必要。
通用计算机:通用处理器、标准总线和外设。软件和硬件相对独立;开发平台和运行平台都是通用计算机;应用程序可重新编制。
嵌入式系统:面向应用的嵌入式微处理器,总线和外部接口多集成在处理器内部。软件与硬件是紧密集成在一起的;采用交叉开发方式,开发平台一般是通用计算机,运行平台是嵌入式系统;一般不能再编程。
3.嵌入式处理器分类
如果根据用途分类,一般分为:
嵌入式微控制器MCU
嵌入式微处理器MPU
嵌入式数字信号处理器DSP
嵌入式片上系统SOC
1)嵌入式微控制器MCU
嵌入式微控制器MCU的典型代表是单片机,其片上外设资源比较丰富,适合于控制。MCU芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、110、串行口、脉宽调制输出、A/D、DIA、FIaSh RAM、EEPROM等 各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高,其片上外设资源一般较丰富,适合于控制,是嵌入式系统工业的主流。
领域:遥控器、汽车音响、车载电脑、空调、微波炉油烟机、电磁炉、电饭煲、电风扇、计算器、智能充电器、POS机、收银机、显示器、打印机、扫描仪、无人机、电控门、考勤机等等等
(2)嵌入式微处理器MPU
嵌入式微处理器MPU 由通用计算机中的CPU演变而来。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中只保留和嵌入式应用紧密相关的功能硬件,去除其他的兄余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。目前常见的有ARM、MIPS、POWER PC等。
应用领域 汽车电子(33%)工控医疗(25%)、计算机网络(23%)消费电子(11%,含智能家居、物联网) 计算机CPU(50%,含PC、服务器、平板电脑)、手机应用处理器(30%)、嵌入式微处理器(20%,含智能家居、物联网),可运行完整操作系统,如Linux、Android、
(3)嵌入式数字信号处理器DSP
嵌入式数字信号处理器DSP 是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的CPU还快10-50倍。在数字滤波、FFT、光谱分析等各种仪器上DSP获得了大规模的应用。
通信领域:DSP广泛应用于调制解调、信道编解码、信道均衡、自适应滤波等方面。例如,GSM、CDMA、LTE等通信系统都使用DSP技术
音频领域:DSP应用于音频编解码、声音增强、降噪、回声抑制、语音识别等方面。例如,现代音频系统、手机、耳机等都使用DSP技术
图像处理领域:DSP应用于图像压缩、图像滤波、图像增强、边缘检测、图像分割等方面。例如,数字相机、手机摄像头、安防监控、医疗图像等都使用DSP技术。
雷达和信号处理领域:DSP应用于雷达信号处理、目标跟踪、信号分析、故障检测等方面。例如,航空、军事、汽车、火车等领域都使用DSP技术。
控制领域:DSP应用于控制系统、机器人、航天飞行器、汽车控制等方面。例如,自适应控制、PID控制、预测控制等都使用DSP技术。
生物医学领域:DSP应用于心电信号处理、医学影像处理、脑电信号处理、医学数据分析等方面。例如,心电图机、脑电图机、CT、MRI等医疗设备都使用DSP技术。
(4)嵌入式片上系统SOC
族入式片上系统SOC,是追求产品系统最大包容的集成器件。SoC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。(集成了软件系统)
领域:高端SoC芯片主要集中于手机、平板电脑服务器市场等,次高端SoC芯片多应用于安防、智能音频、物联网等领域,专用型SoC芯片多应用于TWS耳机和智能手表等。
4.学习方法
嵌入式系统学习方法主要包括以下几个方面:
基础学习阶段:
通用编程基础:掌握C语言是嵌入式开发的基础,因为C语言接近硬件,可以直接操作内存和寄存器等底层资源。同时,了解数据结构(如链表、栈、队列等)以及算法(如查找和排序算法)也很重要,这有助于提高程序的运行效率和可读性。
硬件基础:学习模拟电路和数字电路的基础知识,理解电子元件的原理和电路的工作原理。对于单片机的学习,可以从51单片机开始,它适合初学者,对硬件知识要求不高。
嵌入式应用编程阶段:
操作系统原理与实践:熟悉Linux操作系统的基本操作和命令行使用,因为Linux是嵌入式开发中常用的操作系统。学习在Linux环境下进行文件管理、进程控制、多线程编程以及网络编程等系统编程内容。
嵌入式平台开发:选择一个特定的嵌入式平台(如ARM+Linux平台),学习该平台上的编程方法和流程。例如,掌握从内存管理到多任务编程、文件I/O、网络编程等技能。对于ARM架构的处理器,可以深入学习STM32单片机,它是目前市场上非常流行且广泛应用的32位微控制器之一。
深入嵌入式底层开发阶段:
内核与驱动开发:如果对底层开发感兴趣,可以深入学习嵌入式Linux内核的工作原理和机制,研究内核源码,掌握从系统移植到内核开发、驱动开发的各个细节。驱动开发需要对硬件和内核都有深入的理解,是嵌入式开发中的高级技能。
实践操作与项目经验积累:
动手实践:嵌入式开发强调实践操作,在学习理论知识的同时,要多动手写代码,进行实际的项目开发。可以从简单的小项目开始,逐渐增加项目的复杂度和难度。例如,制作一个简单的学生管理系统来巩固C语言知识,或者在开发板上实现一些基本的硬件控制功能。
参与开源项目:加入一些开源的嵌入式项目,与其他开发者合作,可以提高自己的技术水平和团队协作能力。
持续学习与跟进技术发展:
关注行业动态:嵌入式技术不断发展和更新,要保持持续学习的态度,关注行业的最新动态和技术趋势。可以通过阅读技术博客、参加技术论坛、参加行业会议等方式,了解新的技术和工具。
学习新技术:随着物联网、人工智能等技术的发展,嵌入式系统的应用领域不断拓展。学习相关的新技术,如物联网通信协议、传感器技术、人工智能算法等,可以为自己在嵌入式领域的职业发展增加更多的竞争力。
无论是嵌入式硬件还是软件编程,要用模块化的思维去学习。
很多同学就是跟着那些 STM32 单片机教程完整看下来的,而大多数都会忘记之前讲的代码,比如I2C通讯应该怎么初始化、怎么使用,然后又要回头去看。学完单片机这类教程的课事实上并不能让你真正学会,因为它们并不是每个项目都需要的,嵌入式系统是讲究“专用”的。
正确的学习方法是以项目为导向的学习方法,要用什么就学什么,在遇到问题解决问题当中积累经验。
2.嵌入式微控制器MCU(单片机)
嵌入式微控制器(MCU,Microcontroller Unit)是一种集成了处理器核心、内存、输入/输出端口和其他功能模块的微型计算机系统。
起源:MCU的概念最早出现在20世纪70年代中期,当时Intel公司推出了世界上第一款商用MCU - Intel 4004。此后,MCU技术不断发展,经历了从4位、8位到16位、32位甚至64位的演进过程。
TODO