【嵌入式系统复习】嵌入式网络与协议栈

目录

  • 开放式系统互连模型
  • 总线通信的报文组形式以及传递方式
    • 报文组形式
    • 报文传递方式
  • 网络分配与调度
  • 嵌入式TCP/IP
  • 蓝牙技术
    • 蓝牙的节能状态
    • 纠错方案
    • 蓝牙协议栈

开放式系统互连模型

在这里插入图片描述

ISO/OSI七层模型展示了网络结构与各层的功能。
应用层:
提供了终端用户程序和网络之间的应用程序接口
表示层:
规定了数据交换的格式并为应用程序提供有效的转换工具
会话层:
提供了一种控制网络上终端用户交互的机制,例如,数据分组和检测点
传输层:
定义了面向连接的服务,可以保证数据按照一定的顺序无差错地在多条链路上传送,同时会对网络资源的利用做一些优化
网络层:
定义了基本的点到点数据传输服务,在多转发网络中特别重要
数据链路层:
主要作用:错误检测和控制一条单个链路,如果网络需要多个数据链路实现多转发,那么数据链路层将不再保证转发的数据的完整性。
物理层:
规定了系统间基本的接口特性,如物理连接、电气特征、电子部件、物理部件的基本功能、位交换的基本功能。

总线通信的报文组形式以及传递方式

报文组形式

网络允许多个设备相互连接,所以总线是链路形式,连接到总线的所有网络设备都必须有自己的唯一地址。

在这里插入图片描述

总线上的通信以报文组的形式进行每一个分组报文包含目的地址被传送的数据检错和纠错信息
总线上的信息交互不是通过共享内存实现的,而是在总线上通过传递报文来实现的。

报文传递方式

报文传递方式有请求/应答方式推移方式
1、请求/应答方式
以中断方式为例。
发送方设计一个发送队列,需要发送的报文先放在发送队列中,发送中断服务程序从发送队列中读取报文并进行发送。
接收方也以中断的方式进行接收。中断控制器接收到一个报文时会产生一个中断,然后执行中断服务程序,把报文交给中断任务,由中断任务来完成报文的处理。(报文一般较长,如果利用中断服务程序处理报文,则会耽误下一个报文的接收。)
在这里插入图片描述
2、推移方式
数据的发送方在不需要等待请求的情况下主动发送数据。适用于数据发送方周期性产生数据的系统,如:
传感器节点不断向主机发送数据的连续过程控制系统、CAN总线网络系统、现场总线网络的过程数据的通信机制。
这种方式省掉了发送请求的通信量,可以减少网络流量。

网络分配与调度

嵌入式系统分为I/O密集型系统和计算密集型系统,所以有必要使用不同的策略。
1、对于I/O密集型系统:
入手点:I/O设备以及关联的处理
1、编制I/O设备的清单
2、根据预算,确定哪个任务需要具有很短的进程期限,并判断网络传输是否能满足需求
3、确定哪些任务处理元素或网络接口
4、分析通信时间,确定关键性通信是否可能相互影响,确定为了达到通信的实现要求,是否需要使用复杂的网络或多个网络
5、为I/O设备分配所需要的最小数量的处理设备。
2、对于计算密集型系统:
入手点:进程
1、从具有最短进程期限的任务开始,任务的进程期限越短,越有可能单独需要一个或多个处理设备。
如果一个高优先级任务与低优先级任务共享处理设备,那么不仅需要更昂贵的处理设备,而且会非线性地增加调度开销
2、分析通信时间,确定关键性通信是否可能相互影响。
3、尽可能把低优先级任务分配到共享的处理设备上

嵌入式TCP/IP

TCP/IP通常被认为是一个4层协议系统:应用层,传输层,网络层,网络接口层
应用层:处理特定应用程序;把数据按照传输层的格式要求组织好,向下一层传输;
传输层(TCP/UDP):提供应用程序之间的通信服务(端到端通信);管理信息流动,提供可靠地传输服务,确保数据到达;
网络层(IP):处理主机之间地通信问题;接受传输层请求,传输具有目的地址信息地分组,将分组封装到IP数据包中,填入数据包头部,把它交给适当地网络接口传输。
网络接口层:负责接受IP数据包,把数据包通过选定的网络发送出去。
TCP与UDP区别:
TCP是一种可靠的数据流传输服务协议。进行通信的双方,在传输数据之前必须先建立连接。数据传输完毕,任何一方都可以断开连接。
由于IP数据包可能丢失、接受顺序与发送顺序不一致,所以TCP要能够实现差错恢复、排序等功能。
TCP使用滑动窗口机制实现差错控制
UDP是一种不可靠、五连接数据包交付服务协议。它只把分组从一台主机发送到另一台主机,不保证该数据是否能达到另一端,可靠性由应用程序提供,它适用于一些自身提供面向连接功能的应用,如网络监控数据交换。

蓝牙技术

蓝牙的节能状态

蓝牙的节能状态:呼吸(Sniff)、保持(Hold)、停用(Park)三种状态。
节能效率(从高到低):停用->保持->呼吸
呼吸状态:从节点降低从网络收听消息的速率。
保持状态:节点停止传送数据,一旦激活,数据传输立即重新开始。
停用状态:节点被赋予停用节点地址,并以一定间隔监听主节点的消息。
主节点的消息包括:询问该节点是否愿意成为活动节点、询问任何停等节点是否愿意成为活动节点、广播消息。

纠错方案

纠错方案包括:1/3前向纠错、2/3前向纠错、自动重传
前向纠错一般应用于噪声干扰较大的信道。
SCO链路:使用1/3前向纠错。
ACL链路:使用2/3前向纠错。
自动重传要求传送的数据在下一个时隙得到确认,而确认消息的产生要求数据必须通过报头错误检测和循环冗余校验。

蓝牙协议栈

在这里插入图片描述
硬件模块:
射频RF:实现数据位流的过滤和传输
基带层BB:负责跳频和蓝牙数据及信息帧的传输
链路管理层LM:负责连接的建立和拆除以及链路的安全和控制
软件模块:
L2CAP属于数据链路层一部分:负责向上层提供面向连接和无连接的数据服务(协议复用、分组的分割和重组、组提取)
SDP:定义蓝牙服务类型和属性发现服务的方法,提供服务浏览的方法
射频通信协议RFCOMM:仿真串行电缆接口协议,通过RFCOMM,蓝牙可以在无线环境下实现对高层协议(TCP/IP)的支持。
支持AT指令集,从而实现移动电话、传真机与Modem之间的无线连接。
TCS协议:定义了蓝牙设备之间建立语音和数据呼叫的控制信号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Phone 7 自定义事件

在Windows Phone的应用开发里面,对于事件这种东西我们可以随处可见,系统本来就已经封装好了各种各样的事件机制,如按钮的单击事件等等的。在实际的开发中,我们需要自己去给相关的类自定义一些事件来满足业务的要求,特别…

十四、数据库的导出和导入的两种方法

一、以SQL脚本格式导出(推荐) 导出 右击需要导出的数据库,任务—>生成脚本 下一步 选择要导出的数据库,下一步 内容根据需求修改,没啥需求直接下一步 勾选 表 勾选需要导出的数据库中的表 选择脚本保存的路…

【C++grammar】文件I/O流的基本用法

目录1、输入输出类介绍1.C/C文件操作对比2.什么是流?3.C I/O流类层次4.带缓冲的输入输出5.gcc编译器cin.in_avail()2、向文件写入数据1.写文件小练习2.如何将信息同时输出到文件和屏幕?3、从文件读数据1.检测文件是否成功打开2.检测是否已到文件末尾3.读…

作业2 分支循环结构

书本第39页 习题2 1.输入2个整数num1和num2.计算并输出它们的和&#xff0c;差&#xff0c;积&#xff0c;商&#xff0c;余数。 //输入2个整数num1和num2.计算并输出它们的和&#xff0c;差&#xff0c;积&#xff0c;商&#xff0c;余数。//#include<stdio.h> int main…

十三、系统优化

系统整体框架图 程序运行进入纺织面料库存管理系统主页面 用户子系统功能演示&#xff1a; 1&#xff0c;点击用户登录进入用户登录页面&#xff0c;可以注册和找回密码 2&#xff0c;注册新用户&#xff0c;账号、密码、性别、手机号均有限制&#xff0c;用户注册需要按指定…

时间工具类[DateUtil]

View Code 1 package com.ly.util;2 3 import java.text.DateFormat;4 import java.text.ParseException;5 import java.text.SimpleDateFormat;6 import java.util.Calendar;7 import java.util.Date;8 9 /**10 * 11 * 功能描述12 * 13 * authorAdministrator14 * Date Jul 19…

leetcode 45. 跳跃游戏 II 思考分析

题目 给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 …

一、爬虫基本概念

一、爬虫根据使用场景分类 爬虫&#xff1a; 通过编写程序&#xff0c;模拟浏览器上网&#xff0c;让其去互联网上抓取数据的过程。 ① 通用爬虫&#xff1a;抓取系统重要的组成部分&#xff0c;抓取的是一整张页面的数据 ② 聚焦爬虫&#xff1a;建立在通用爬虫的基础之上&am…

经营你的iOS应用日志(二):异常日志

如果你去4S店修车&#xff0c;给小工说你的车哪天怎么样怎么样了&#xff0c;小工有可能会立即搬出一台电脑&#xff0c;插上行车电脑把日志打出来&#xff0c;然后告诉你你的车发生过什么故障。汽车尚且如此&#xff0c;何况移动互联网应用呢。 本文第一篇&#xff1a;经营你的…

Discuz 升级X3问题汇总整理

最近一段时间公司的社区垃圾帖数量陡然上涨&#xff0c;以至于社区首页的推荐版块满满都是垃圾帖的身影&#xff0c;为了进一步解决垃圾帖问题我们整整花了1天时间删垃圾贴&#xff0c;清除不良用户&#xff0c;删的手都酸了&#xff0c;可见垃圾帖的数量之多&#xff01;可耻的…

【C++grammar】格式化输出与I/O流函数

目录1、格式化输出1. setw manipulator(“设置域宽”控制符)2. setprecision manipulator(“设置浮点精度”控制符)3. setfill manipulator(“设置填充字符”控制符)4. Formatting Output in File Operation(在文件操作中格式化输入/输出)5.小练习2、用于输入/输出流的函数1. g…

三、实战---爬取百度指定词条所对应的结果页面(一个简单的页面采集器)

在第一篇博文中也提及到User-Agent&#xff0c;表示请求载体的身份&#xff0c;也就是说明通过什么浏览器进行访问服务器的&#xff0c;这一点很重要。 ① UA检测 门户网站服务器会检测请求载体的身份。如果检测到载体的身份表示为某一款浏览器的请求&#xff0c;则说明这是一…

硕士毕业后去国外读法学博士_法学硕士的完整形式是什么?

硕士毕业后去国外读法学博士法学硕士&#xff1a;豆科大法师(拉丁)/法学硕士 (LLM: Legum Magister (Latin)/ Master of Law) LLM is an abbreviation of Legum Magister. It is in term of Latin which states the masters degree of Law. In the majority, LLM is generally …

android:layout_weight属性的简单使用

效果&#xff1a; style.xml <style name"etStyle2"><item name"android:layout_width">match_parent</item><item name"android:layout_height">wrap_content</item><item name"android:background"…

一、环境配置安装

一、Anaconda Ⅰ下载 最新版的anaconda可能会需要各种各样的问题&#xff0c;python3.6版本比较稳定&#xff0c;建议使用。 老铁们可以通过&#xff0c;Anaconda以前版本所自带Python版本&#xff0c;查看Anaconda所带的python版本 我用的是这个&#xff0c;Anaconda3-5.2.0…

二、PyTorch加载数据

一、常用的两个函数 dir()函数可以理解为打开某个包&#xff0c;help()可以理解为返回如何使用某个具体的方法 例如&#xff1a;若一个A钱包里面有a&#xff0c;b&#xff0c;c&#xff0c;d四个小包&#xff0c;则可通过dir(A)&#xff0c;打开该A钱包&#xff0c;返回a&…

leetcode 1005. K 次取反后最大化的数组和 思考分析

题目 给定一个整数数组 A&#xff0c;我们只能用以下方法修改该数组&#xff1a;我们选择某个索引 i 并将 A[i] 替换为 -A[i]&#xff0c;然后总共重复这个过程 K 次。&#xff08;我们可以多次选择同一个索引 i。&#xff09; 以这种方式修改数组后&#xff0c;返回数组可能…

三、TensorBoard

一、安装TensorBoard 管理员身份运行Anaconda Prompt&#xff0c;进入自己的环境环境 conda activate y_pytorch&#xff0c;pip install tensorboard 进行下载&#xff0c;也可以通过conda install tensorboard进行下载。其实通俗点&#xff0c;pip相当于菜市场&#xff0c;c…

详细讲解设计跳表的三个步骤(查找、插入、删除)

目录写在前面跳表概要查找步骤插入步骤删除步骤完整代码写在前面 关于跳表的一些知识可以参考这篇文章,最好是先看完这篇文章再看详细的思路->代码的复现步骤: Redis内部数据结构详解(6)——skiplist 关于跳表的插入、删除基本操作其实也就是链表的插入和删除&#xff0c;所…

php 类静态变量 和 常量消耗内存及时间对比

在对类执行100w次循环后&#xff0c; 常量最快&#xff0c;变量其次&#xff0c;静态变量消耗时间最高 其中&#xff1a; 常量消耗&#xff1a;101.1739毫秒 变量消耗&#xff1a;2039.7689毫秒 静态变量消耗&#xff1a;4084.8911毫秒 测试代码&#xff1a; class Timer_profi…