嵌入式系列第一章-嵌入式概览

文章目录

  • 前言
  • 一、嵌入式领域概览
  • 二、嵌入式芯片门类
    • 1.MCU
    • 2.MPU
    • 3.DSP
    • 4.FPGA
  • 三、单片机开发概览
    • 1.选芯片
    • 2.IDE创建工程
    • 2.ROTS引入
    • 2.ROTS概览:
  • 总结


前言

在百问网学习单片机和RTOS,了解到很多没碰过的东西,在此分享。


一、嵌入式领域概览

以前总以为嵌入式就是STM32,现在才知道其范围有多大。所有为了实现某种功能,由通用计算机经过裁剪而来的只能电子设备均称为嵌入式设备。由嵌入式设备做出来的产品均成为嵌入式产品。包括特别复杂的手机、航空航天领域的通讯计算等。单片机属于嵌入式的一个门类,属于包含关系。很多公司连这些都不清楚,面试时可以怼怼HR。

二、嵌入式芯片门类

1.MCU

微控制器,包括我们所说的单片机、PLC等,主要掌握控制,对信息处理要求不高,和硬件直接相关。目前ARM公司占巨头,几乎所有MCU芯片都基于Cortex-M系列的ARM内核设计的。
在ARM-V7系列之前命名比较混乱,不太好直接看出彼此性能差异,也不好选择。自v7之后全采用Cortex命名。分为高中低(A、R、M)三档,最低档为MCU内核。性能较低,功耗最低,稳定性极高。
ARM系列按V7、V8、V9等命名,M后面的数字越大,性能越高。同时MCU又把falsh、RAM等集成在芯片内部。容量虽小但样样齐全,加上电源时钟等少量电路即可工作,一块芯片就是一块完整的计算机。

2.MPU

微处理器,硬件条件比MCU高得多,能运行大型操作系统,处理庞大复杂的数据量,实现各种硬件资源消耗高的复杂算法。前沿领域的高端智能产品都是mpu,但由于万物互联万物智能的时代到来,电子化智能化的设备越来越多,性能越来越高。很多高端嵌入式产品由通用计算机开发实现。通用计算机和嵌入式的界限越来越模糊。
MPU均由Cortex-A系列内核设计而来。
命名与MCU类似,V7、V8、V9等命名,A后面的数字越大,性能越高。但由于注重性能,所以RAM、falsh均由外部接入,芯片内部没有集成,可以扩大容量,提高硬件性能。电路设计更复杂,功能实现也更复杂。

3.DSP

数字信号处理器,和MCP、MPU不同,它采用哈佛架构,指令与数据分开。硬件为主,可以用最低的性能处理最庞大最复杂的数据。多用于数据量较大的场合。有些mcu会集成DSP,但性能远不及独立的DSP处理器。在微控制器领域足够满足复杂的数据计算要求。

4.FPGA

可编程逻辑门阵列。内部电路不确定,由编程实现。与上述相比,FPGA更接近硬件,编程也属于数字集成电路,都是逻辑门、晶体管的复杂组合。用verilogHDL等硬件描述语言,和以上三种都不同。高性能FPGA能实现以上三种芯片的功能,但由于电路需要自行搭建,所以开发周期非常长。普通的GPIO口控制都需要好几个星期或一个月。
所以FPGA的灵活性最高,通常用于设计独一无二的硬件逻辑、接口协议等,常用于军工等保密领域。或者用于SOC开发前期的硬件仿真。

三、单片机开发概览

1.选芯片

根据手头项目上的需求去对应单片机公司选择符合要求的微控制器。主要看数据处理量、是否需要外接falsh、内存卡、USB、显示屏等。找外设齐全且精度能满足项目要求的单片机。
如果尺寸允许、供电允许,还有很多不确定要实现的功能,选择芯片就越强大越好。如果对功耗和成本限制严重,则选择能实现要求的单片机即可。
目前手里是百问网的stm32f103c8t6,属于cortex-m3系列。功耗较低、引脚较少、尺寸较小,在以上条件相同的单片机里,它主频偏高。对应外设也更齐全,精度更高。

2.IDE创建工程

MDK是单片机领域绝对的王者,就目前而言,仅有IAR与之抗衡。单片机程序几乎是MDK开发出来的。STM32也不例外。但ST公司为自家单片机推出了Cubemx开发软件,并配套了HAL库,能一键配置外设,初始化项目,极大地缩短了开发周期。对于新手而言,学习单片机或RTOS最好选择cubemx。自建工程较为抽象,也需要对HAL库非常了解才行。
由各个模块的C文件、h文件、s文件(启动文件)综合生成hex文件、bin文件。最终烧写至单片机内部falsh。其中包含了c、h文件杂糅、汇编等一系列操作,初学者及单片机项目开发者无需关心内部实现细节。仅需记住hex、bin就是可执行可下载的文件即可。

2.ROTS引入

ROTS为实时操作系统,与常见的linux、windows、Android系统都不一样,它是在IDE里用C语言参与工程开发,和FATFS文件系统、HAL库、标准库等使用方式类似。
当单片机的外设用的多了,处理函数也多了,彼此之间关联性较强,一套while大循环用时过长,则调节各个外设及相关函数之间的优先级关系、标志位关系、时钟关系等等非常复杂。开发起来很不方便。尤其是对于M4内核以上级别的高端单片机,几十个外设,上百个函数和标志位,十几个时钟,还得兼顾内存、flash容量、功耗等,有时做着此任务,但另外的任务突发又紧急,优先级有限,任务耗时太长等。非常麻烦。此时,RTOS的引入就方便多了。
while大循环被分成多个小循环,每个循环都在一个单独任务内。每个任务彼此优先级不同,用时可调,优先级可随时变化。相当于一个大程序被分为多个小程序,且彼此之间的用时可互不干扰。能用最短的时间,完成更多的任务。

2.ROTS概览:

目前熟知的RTOS系统有freeROTS、RT-thread、U-cos。在物联网生态方面RT-thread占绝对主力,在其余方面freeROTS应用人数最多,范围最广。可根据自己所在领域单独学习,若不清楚的话,先学freeROTS。

总结

第一天课程对RTOS和嵌入式做了初步的了解,具体细节涉及不多。但非常全面,学习目标也更清晰。课程为主,开发板为辅,见识的更广阔的一些,学习内容的轻重缓急也更清晰。
对于单片机重在理解与实践。先从HAL库开始,能做出项目,能理解内容后再看标准库。
学习常用的几个外设即可,根据项目需求学习,无需全部学习。RTOS是重点,实际项目中包含的任务非常多,仅靠裸机无法完成。

你可能感兴趣的:(单片机,stm32,arm)