大四青岛实训-一名普通二本的物联网专业学生

大四青岛实训-一名普通二本的物联网专业学生

​ 不考研,毕业就准备就业,因此再加固一下,重新学习一下相关专业知识,也就是嵌入式方向。

1.什么是嵌入式?有哪些方向?(第一天)

#1.前言

​ 首先嵌入式是基于软件和硬件为基础的一门专业,在网上参考了很多博主的博客,虽然学了三年嵌入式了,说实话,没有真正明白嵌入式的真正的内涵,曾经也参加过,一些小小的比赛,比如:蓝桥杯-电子赛(单片机)、山东省软件设计大赛、RHCSA、RHCE(正在考取中)等,经验还是太少了,现在在青岛实训,所以我想利用这半年,再认真的去认识一下嵌入式,毕业以后也只能专心在嵌入式上进行耕耘了,在此我每天会更新我的嵌入式学习进程,把之前落下的知识点,再吃透,争取做一名合格的嵌入式开发者,或系统运维者。

#2.什么是嵌入式?

​ 首先,学习嵌入式,我们必须先对本专业进行一个了解,要知道它能够干什么?我学的什么是重点,我们以后要就哪一个方向的业?

先上简介:
嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统;国内普遍认同的嵌入式系统定义是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统;从应用对象上加以定义来说,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统作为装置或设备的一部分,它是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
嵌入式大致分为4个阶段:

在这里插入图片描述

#3.嵌入式系统组成

嵌入式系统是由硬件和软件组成:

​ (1).硬件包括 处理器、存储器、通用设备接口和I/O接口。

​ (2).软件包括 中间层(硬件抽象层)、系统层、软件层。

​ 具体关系如下:
在这里插入图片描述

​ 嵌入式系统与传统的计算机一样是一种由硬件和软件组成的计算机系统。硬件包括了嵌入式微控制器和微处理器,以及一些外围元器件和外部设备。软件包括嵌入式操作系统和应用软件。

在这里插入图片描述

1.硬件层

在这里插入图片描述

​ 在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。也就是我们所说的单片机,*其中操作系统和应用程序都可以固化在ROM中。*

(1).嵌入式微处理器:硬件层的核心

嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU(例如51单片机)许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。这里可以理解为STM32单片机和51单片机的不同。
​ 嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;

​ (1).冯诺依曼体系结构:也称普林斯顿结构,是一种将程序指令存储器和数据存储器 合并在一起 的存储器结构。取指令和取操作数都在同一总线上,通过分时复用的方式进行;缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。.
在这里插入图片描述

​ 指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计变得更为简单。嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,全世界嵌入式微处理器已经超过1000多种,**体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。**但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。

(2).存储器:嵌入式系统需要存储器来存放和执行代码。

​ 嵌入式系统的存储器包含Cache、主存和辅助存储器。

1、Cache

Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取操作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的数据传输速率。Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。

2、主存

主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为256KB~1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。常用作主存的存储器有:ROM类:NOR Flash、EPROM和PROM等。RAM类:SRAM、DRAM和SDRAM等。其中NOR Flash 凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。

3、辅助存储器

辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息。嵌入式系统中常用的外存有:硬盘、NAND Flash、CF卡、MMC和SD卡等。

(3)通用设备接口和I/O接口

嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。
每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。

嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。

2.中间层

硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。

该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
BSP具有以下两个特点:
1.硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软 件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。
2.操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。

3.系统软件层

由实时多任务操作系统(Real-timeOperation System , RTOS)、文件系统、图形用户界面接口(Graphic User Interface , GUI)、网络系统及通用组件模块组成。

#嵌入式开发难吗?

​ 嵌入式与互联网软件开发来说,会更难一些理由如下:

​ 软件开发,前端开发主要研究的是用户态的东西,而嵌入式很多的东西是从用户态深入到内核态,所以难度是提升一级的,比如:

​ 第一:嵌入式偏底层,软硬件都要有所了解,对能力的要求比软件类提升了不少。

​ 第二:嵌入式的开发的学习门槛也要偏高一些,如linux平台下的开发流程,常见的命令,交叉编译的使用,导致很对人不习惯,不熟悉。

​ 第三:嵌入式是一个长期的工程,正向反馈可能比较慢,尤其在前期学习阶段,学的东西多,也杂,比较枯燥无味,导致很多人坚持不下来,往往半途转行。

​ 但是话说回来,做IT的就是这样,越往底层对人能力的锻炼就越高,所以对于能力来说是在升维,所以反过来,如果嵌入式做得好的,我觉得来做互联网问题也不大,到时候就属于降维打击了。

​ 加油慢慢来,一定会有所突破。

#总体学习思路

​ 1.首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。

​ 2.其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。以常见的ARM+Linux平台为例,需要掌握从内存管理到多任务编程、文件I/O、网络编程,甚至图形化界面编程等几个大的方面。

​ 3.最后就是深入嵌入式底层开发阶段,最常见的就是内核开发和驱动开发,这些统属于内核态开发范畴,所以需要对操作系统内部机制有所涉猎和理解,在此基础上需要掌握从系统移植到内核开发、驱动开发的各个细节,这是成神之路。

在这里插入图片描述

​ 以上文章是我对嵌入式的了解,有许多地方看了很多大神的博客总结到位的,不足之处还望各位大神指点。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值