最近偶然在网上看到韦东山老师的课程——7天物联网智能家居实战训练,常常在关于Linux学习或者嵌入式学习的文章中看到韦东山老师的名字,但是还从来没有实际听过,因为大家都说要先从51,再过渡到STM32,最后再学习Linux,才不会那么吃力,正好在寒假的时候将郭天祥老师的单片机教程学得七七八了,也正好这次韦老师的课是关于STM32的,所以就直接买下了,正好借此入门STM32。这个专栏的文章主要用于记录自己的一些笔记,用于我日后查阅,不是用于讲解知识,当然,如果别人能在此学习到一些知识也是我的荣幸。

注:韦东山老师的课程可以在百问网上找到。

一、什么是嵌入式

我们常见的电脑,不属于嵌入式,电脑属于通用计算机,一台电脑可以实现多种功能。电脑属于同一个硬件设备满足不同的应用场景。

那么,什么是嵌入式呢?

与上面的电脑通用性相反。例如洗衣机,专门用于洗衣服;冰箱,专门用于冷藏食物。为了实现不同的功能,硬件也是不同的。

嵌入式设备还有一个特点是:智能控制核心。例如普通的插线板就不是嵌入式设备,而带有远程控制开关,定时开关的插线板就是嵌入式设备。另外还有一个特点是裁剪

特点如下:

其实,嵌入式设备和其他设备的界限越来越模糊,随着科技的发展,很多硬件设备也可以实现多种功能,例如树莓派。

因此,我们可以简单这么理解,除了电脑以外的智能产品,我们都认为是嵌入式设备。

二、学习参考路线

大学生时期:作为最基本的知识,电路、数电模电,以及C语言,是需要先打好基础的。

入门期:入门期就可以从软件或者硬件方面划分了,根据自己的情况。(半年到一年)

硬件:主要是学会画PCB板,能够设计一个单片机最小系统板出来,重点在能够掌握单片机的外围电路;

  软件:主要是单片机编程,买一个开发板,根据开发板的硬件电路,做一些小项目。或者用这次课程的F103MINI板,根据学习手册,将利用的配套实验做个百分之七八十即可。

成长期:这时候就更是细分方向了。根据你所设计的内容简单或者复杂,需要用到怎样的设计,例如简单的冰箱控制,用单片机裸机即可,到无人机的层面,就需要用RTOS了。还有一些就需要用到Linux/Android驱动、应用,然后就是一些。

     单片机裸机:不涉及操作系统,一般项目比较简单,直接软件编程控制,难度不大,岗位也很多,待遇差。

    RTOS:使用实时性操作系统,项目要求多,程序复杂,例如无人机,相比上面,学习的内容更多一点。

 Linux/Android 分为底层应用

     底层:编写驱动比较多,这部分需要有单片机基础,要理解Linux的驱动框架,以及Linux的机制

应用:编写程序

  其他(DSP、FPGA):用于特定产品,能力要求高,这个根据公司需求学习即可,不建议只学DSP或者FPGA。

一点建议:在招聘网站上搜索嵌入式的相关职位,可以看到不少岗位都要求Linux,所以学完单片机后,我们可以深入学习操作系统,无论是单片机的实时性操作系统,还是Linux操作系统,都可以。

学习的基础内功:

这部分内容需要先练扎实,只有会这些基础知识,我们才可以往深的做,而且越扎实,我们越能学得更深。

三、基础概念

这里是一些嵌入式学习中常会遇到的概念。

1.ARM

对于ARM,通常有两个含义:

一是公司,ARM公司是一家设计处理器架构的公司。注意,只是设计,不是生产制造。

二是采用ARM公司提供方案设计的处理器芯片统称。ARM公司提供方案给其他一些公司,例如高通,华为等,它们根据自己的需求,添加外设等,设计出来的自己的芯片。例如华为的麒麟,苹果的A系列。

这里的ARM英文全称如下:

RISC:精简指令集。

同理还有复杂指令集,如电脑中用到的,我们写的程序、代码最终都要转化为指令,给CPU去运行执行。

ARM架构的分类:

A系列处理器可以提供虚拟内存之类的实现多进程多线程的功能,可以跑操作系统。

R系列用于一些高实时性的应用,例如电脑硬盘的控制器,汽车的安全气囊等,见得较少。

M系列运用于低功耗,对成本敏感的产品,例如小型家电,物联网设备,无人机设备等。

基于ARM的STM32处理器

这里就涉及下面要提到的MCU、MPU了。

2.MCU

MCU是微控制器的意思,特点是把CPU、内存还有存储集中在一个芯片上面,就是我们常说的单片机。是一个完整的微型计算机,只要供电,并且加上极少的外围电路就可以正常工作,常见的有:8051、STM32等。

MCU上运行的是裸机或者实时性操作系统,用于中低端的产品,例如小家电、工业控制等。

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

3.MPU

MPU是微处理器,主要负责处理和计算,类似于电脑,需要外加内存、存储。

MPU上运行的常是Linux、Android这种非实时性的操作系统,用于高端市场,如智能手机、路由器、智能消费电子市场。

MCU和MPU两者的区别是应用场景不同,MCU用于控制,简单,不需要去运算太多的内容,例如小家电。MPU注重于强大的运算和处理,例如手机。其实随着科技的发展,这两者的界限也逐渐变得模糊,例如单片机有时候也会外接内存。

4.DSP:

DSP也是两种概念。数字信号处理技术和芯片。

芯片用于数字调制解调、加密、图形处理、数字滤波等计算比较密集的场景,有广泛的应用场景。专门用于数字处理

5.FPGA

FPGA也是一种芯片,这种芯片可以通过编程改变芯片内部的结构、修改硬件。例如添加硬件接口,串口。

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    

总结:

四、开发流程

单片机的开发不同于电脑。电脑直接在电脑上开发即可。而单片机因为设备、功能的局限性,需要在电脑上开发之后下载到开发板上,不能直接在开发板上开发,这称为交叉开发

1.电脑

在电脑上所要做的内容如下:

注:图中的GUN写错了,实际是GNU。

集成开发环境

常见的如keil,是针对ARM架构的,因为我们所用的很多芯片都是ARM架构的,所以选用keil作为主要开发环境,其他的还有STM32CubeIDE,只能针对STM32型号的单片机,还有IAR等。

2.调试/下载器

调试:控制开发板的芯片(MCU)一步一步的执行代码,而不是全速运行所有代码。ARM系的芯片,在ARM设计的时候设计了一个JTAG的接口,所以的ARM芯片都可以用JTAG接口进行调试。调试需要工具,称烧写器或者调试器,常见的如J-Link(适合所有ARM芯片)、ST-Link(适合ST的芯片),本次使用的开发板MINI也可以通过烧写固件来作为一个ST-Link。

​​​​​​​        ​​​​​​​        ​​​​​​​          ​​​​​​​             

下载:这部分是由芯片产家设计决定的,例如JTAG接口也支持下载,有的芯片则会扩展下载方式,例如STM32支持串口下载,有一些则支持USB下载,MINI开发板的一键下载功能就是基于串口下载。

3.开发板

开发板不像电脑,很多时候出错了我们并不知道是哪里的问题,有一个办法是通过调试单步执行代码,但是实际上调试器的价格很高,所以我们可以采用别的方法,就是打印显示

在开发板上利用串口模块,我们可以编写程序,让程序运行到某一步时,通过串口向电脑发送数据,再通过一些方法在电脑上显示出来,这样我们就可以大致的看到哪些步骤运行了哪些还没有。

这里需要注意的是,单片机的串口模块用的是TTL电平,并不能直接连到电脑上,需要进行USB-TTL转换将开发板的串口信号转换成USB信号传到电脑,转换常用的是特定的芯片,如本次用到的CH340。还有就是,将串口信号在电脑上显示出来需要用到特定的软件,串口助手,常见的如MobaXterm或者SecureCRT等。如果用的是STC型号的单片机,还可以直接利用STC-ISP中的串口助手功能。

总结:

五、单板介绍

这里是介绍课程使用的开发板,具体信息可以在开发板的对应资料里找到。

本次课程使用的开发板是STM32F103_MINI开发板

板载资源如下:

①USB:用于供电、下载、串口打印、USB通讯;

④切换开关:串口打印(OFF)、USB通讯(ON);

⑤扩展接口

①①EEPROM接口:存储数据,特性:掉电不丢失,属于I2C接口

①②自恢复保险丝

①③USB转串口芯片:CH340

①④外部FLASH:存储大型文件,是SPI接口,存放脱机烧录的程序

对应的应用功能:

​​​​​​​        ​​​​​​​        ​​​​​​​        

脱机烧录:软件自动烧写一个特殊的固件在开发板(该开发板要符合DAP协议)里,然后选择一个bin或者hex文件(即我们写的程序最后的二进制或者十六进制文件)烧写保存在这个开发板的FLASH里,可用于离线烧写到其他的开发板,这个功能在实际生产中,对芯片的功能升级较为方便,不需要带个电脑去现场下载程序,只需要带一个小小的开发板即可。

​​​​​​​

最后,我想说的是,正如黄老师在第一节课里说的,我们在学习过程中要多做笔记,写博客等,并不是为了去做教学什么的,主要是我们在学习过程中会遇到很多知识点,很多技术,可能在当时我们学会了,但是后面没有经常用到就忘记了,这时候如果我们去看别人的资料,除了要辨别真假之外,学习也相对吃力,这时候,如果我们有自己写的笔记,就不需要去考虑正确性了,并且自己写的是按自己的思路,可以很容易回忆起当时的学习内容。

第一节:基础概念介绍(黄老师)相关推荐

  1. 【gitlab+jenkins+docker】第一节 基础环境介绍与准备

    [gitlab+jenkins+docker]手把手教你搭建基于gitlab+jenkins+docker的项目的自动化部署流程 架构 环境介绍 docker安装 docker-compose安装(二 ...

  2. 自己动手实现蓝牙MESH应用系列 | 第一篇:蓝牙MESH基础概念介绍

    文章目录 1. 前言 2. 概述 2.1. 蓝牙风格(Flavors) 2.2. mesh网络的动机 2.3. mesh网络中的消息传输方式 2.3.1. 以消息为中心的通信 - 发布/订阅(publ ...

  3. 区块链教程(二):基础概念介绍

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 本系列重点在于以太坊基础知识.以太坊客户端以及以太坊solidity编程,因此博客重点在于以太坊核心知识点的掌握,区块链部分的基础知识可以作为补充 ...

  4. 设计的萌芽阶段_第一章 设计的萌芽阶段 第一节 设计概念的产生

    第一节 设计概念的产生 在设计概念的产生过程中,劳动起着决定性的作用.劳动创造了人,而人类为了自身的生存就必须与自然界做斗争.人类最初只会用天然的石块或棍棒作为工具,以后渐渐学会了拣选石块.打制石器, ...

  5. 物流仓储管理系统(wms)基础概念介绍[临沂艾思app开发]

    物流仓储管理系统(wms)基础概念介绍: 物流仓储管理系统(wms)是一套基于追溯系统成品的多级渠道仓库管理流程,能完成从工厂到终端的多级仓库物流的管理及产品全生命周期流通的追溯管理,并以产品追溯码为 ...

  6. Angular学习笔记第一节 基本概念

    1.Let do it! ####1.ng的基础概念 在学习ng之前,我们只需要掌握HTML.CSS.JS即可. 简称ng.名字不错,吊! 重要的特性 有了ng,我们就可以轻松的构建SPA应用,而且n ...

  7. SEO究竟是什么?SEO的相关基础概念介绍

    可能对于刚接触优化的新手来说,要明白SEO是什么,只有了解之后才能有进一步的学习以及提升.在互联网搜索引擎中,已经有了大量的相关资料以及定义.不同的人会用不同的语言来解释SEO是什么,但是最终的结果是 ...

  8. 【Python基础知识-pycharm版】第一节-基础

    python第一节 特点 Python 解释器 python开发环境 交互模式 IDLE开发环境使用入门 程序基本格式 图形化程序设计 python程序的构成 python程序的对象 python的引 ...

  9. Tekton基础概念介绍

    本文来介绍下Tekton基础概念 文章目录 概述 概述

最新文章

  1. CVPR坐实华人主场:包揽全部奖项,四成作者来自中国,清华商汤领衔,专门设奖致敬黄煦涛...
  2. ubuntu pdf转jpg或txt
  3. 安卓学习 之 概述(一)
  4. js语句连接mysql数据库_js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池...
  5. 中文乱码在java中URLEncoder.encode方法要调用两次解决
  6. 程序员之道——编程也是一门艺术
  7. 学会这招,轻松实现批量PDF转jpg,快来码住
  8. Python解法华为OJ机试-迷宫问题
  9. python 打包exe_python打包exe能运行但是没有结果解决方案
  10. ANSYS下载安装+使用学习过程
  11. 3GPP 3GPP2等协议文档下载网址汇总
  12. 那些年,我们关注过的放大电路设计要点
  13. 三分钟搭建开源的工单系统ferry
  14. Android studio 微信界面设计
  15. 多级弹出菜单jQuery插件ZoneMenu
  16. 弹性云服务器的规格系列,弹性云服务器的规格系列
  17. python爬取证券数据并存入数据库
  18. Idea导包自动去除Import xxx.*里的星号
  19. 20220512之脑壳疼
  20. 2.5 linux存储的基本管理

热门文章

  1. unity 动态图集
  2. 科技PRO实力测评:高端按摩椅市场综合PK,究竟谁才配得上机皇?
  3. HTTPS —— HTTPS的加密方式
  4. ROS学习——rotors仿真下载与运行
  5. FQDN是什么?DNS又是什么?NNTP又是什么
  6. 网络应用程序的通信视角
  7. 为远程群晖NAS配置固定的公网URL地址 1/2
  8. 样本总体方差有偏估计和无偏估计的理解
  9. 从零开始搭建本地mongodb环境
  10. Fiddler 微信小程序抓包