关于嵌入式开发工程师的那些事(持续更新)
发布日期:2021-07-19 12:30:20 浏览次数:21 分类:技术文章

本文共 5704 字,大约阅读时间需要 19 分钟。

蓝牙最小广播间隔 20ms

蓝牙最大广播间隔 10.24s
蓝牙最小连接间隔
蓝牙最大连接间隔 40ms
蓝牙最小扫描间隔 2.5ms
蓝牙最大扫描间隔 10.24s
蓝牙最小扫描窗口 2.5ms
蓝牙最大扫描窗口 10.24s

蓝牙信道问题

(1)蓝牙3.0和蓝牙4.0都是采用2.4GHz频段;

(2)蓝牙3.0有79个信道,每个信道1MHz;蓝牙4.0有40个信道,每个信道2MHz;
(3)蓝牙传输的技术为跳频技术,就是将数据分成若干个数据包,通过79个指定的蓝牙频道进行传输数据包;
(4)根据香农定律,在一定的传输速率下,可以增加信道带宽从而来降低对信噪比的要求,即对发送功率要求降低了,所以蓝牙4.0更加低功耗;

蓝牙4.0与蓝牙5.0的区别

(1)带宽(传输速率)不同,蓝牙5.0相比蓝牙4.2,传输速率理论上提高了一倍,从1Mbps提高到2Mbps,实际可能为1.7倍;

(2)传输距离增加,蓝牙5.0有效传输距离为300米,蓝牙4只有100米;
(3)抗干扰能力;蓝牙5.0采用新技术可以减少因2.4GHz频段干扰而造成的传输效率损失;
(4)蓝牙5.0可以提高室内定位的精确度,可以优化导航的功能,配合WIFI可以时间精度接近1米的蓝牙室内定位功能;

进程与线程有什么区别?

进程是并发执行的程序在执行过程中分配和管理资源的基本单位;

线程是进程中的一个执行单元,是比进程还要小的独立运行的基本单元;
一个程序至少有一个进程,一个进程至少有一个线程;
(1)进程是资源分配的最小单位;
(2)线程是程序执行的最小单位,也是调度器调度的基本单位,但进程不是,两者均可并发执行;
(3)进程有自己的独立地址空间,每启动一个进程,系统会为它分配地址空间,建立数据表来维护代码段,

进程与线程的优缺点

线程执行开销小,但不利于资源的管理和保护;

线程适合在SMP机器(双CPU系统)上运行
进程执行开销大,但能够很好的进行资源管理和保护,可以跨机器迁移;

如何选择线程还是进程

死锁的四个必要条件:

(1)互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能在防卫,直到该进程访问结束;

(2)占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源;
(3)不可抢占:别人已经占有了某项资源,你不能因为自己需要该资源,就把别人的资源抢占过来;
(4)循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源;

当以上四种条件均满足,必然造成死锁,发生死锁的进程无法进行下去,他们所持有的资源也无法释放。这样会导致CPU的拓土量下降。

如何预防死锁

(1)资源一次性分配;

(2)可剥夺资源;
(3)资源分配有序法

程序的局部变量,全局变量和动态分配数据存储位置

局部变量存储于栈中
全局标量存储于静态存储区
动态分配数据存储于堆中

堆(heap)和栈(stack)的区别

1、存储

栈:变量、对象的引用
堆:实例对象
2、速度
栈:存取速度快
堆:存取速度慢
3、线程访问
栈:每个线程都有一个栈区
堆:所有线程共享一个堆区
4、垃圾回收
栈:比较频繁
堆:不频繁

引用与指针有什么区别?

(1)引用必须被初始化,指针不必;

(2)引用初始化以后不能被改变,指针可以改变所指的对象;
(3)不存在指向空值的引用,但是存在指向空值的指针

static全局变量与普通的全部变量有什么区别?static函数与普通函数有什么区别?

全部变量为静态存储方式,静态全局变量也是静态存储方式。这两者在存储方式上并无不同;

网络编程

OSI参考模型

(1)物理层:该成并非指的是网络硬件或传输媒介,它只存在于抽象结构中,是负责数据流传输的最底层功能模块;

(2)数据链路层:将数据流打包成数据帧,并交给物理层进行传递;
(3)网络层:用于设备间建立路由,处理数据帧中的地址信息;
(4)传输层:以数据包和网段为对象的数据处理层,对数据的完整性负责,重发机制;
(5)会话层:用于建立两个网络终端间的联系,用于决定通信的模式,以及基本的握手协议;
(6)表示层:用于处理不同计算机的数据编码方式,负责对数据编码进行转换;
(7)应用层:为OSI参考模型提供接口;

TCP/IP协议

TCP/IP的概念

TCP/IP协议分成了两个不同的协议:

.用来检测网络传输中差错的传输控制协议TCP
.专门负责对不同网络进行互联的互联网协议IP

TCP/IP协议名称

传输控制/网际协议(Transfer Control Protocol/Internet Protocol) 又称作网络通讯协议。

(1)应用层:为用户提供一些常用的应用层层,如电子邮件;另外,包括了所有的高层协议,主要有:网络终端协议TELNET,用于实现互联网中远程登录功能;文件传输协议FTP用于实现互联网中的交互式文件传输功能;简单电子邮件协议SMTP实现互联网中电子邮件发送功能;域名服务DNS用于实现网络设别名称到IP地址映射的网络服务;网络文件系统NFS,用于网络中不同的主机间的文件系统共享;

(2)传输层:主要负责端到端通信。传输层定义了两种协议:传输控制协议TCP与用户数据包协议UDP。TCP协议是一种可靠的面向连接的协议,主要功能是保证信息无差错地传输到目的主机;UDP协议是一种不可靠的无连接协议,它与TCP协议不同的是它不进行分组数据的检查和差错控制;
(3)网络层:又称IP层,负责处理互联网中计算机之间的通信;
(4)物理链路层:接收IP层的IP数据包,通过网络向外发送,或接收处理从网络上传送来的物理帧。

TCP与UDP的概念

1.TCP(即传输控制协议:Transfer Control Protocol)

是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)

2.TCP使用情况

适合于对传输质量要求较高,以及传输大量数据的通信。 传输文件:迅雷,飞秋
在需要可靠数据传输的场合,通常使用TCP协议 网银MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议 QQ、微信、LOL等

3.UDP(User Datagram Protocol)用户数据报协议

是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

4.UDP适用情况:

适合于广播/组播式通信中。 //电子教室、视频直播、安防监控

MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议 //文字聊天、音视频传输流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输//优酷、乐视、腾讯视频

在网络视频的一个帧率是30fps,超过24FPS ,人眼是注意不到的,在udp就算出现丢帧的现象也很难发现。

但对早期的高动态电子游戏,尤其是射击游戏或竞速游戏来说,帧率少于每秒30帧的话,

游戏就会显得不连贯,这是因为电脑会准确地显示瞬时的画面(像是一台快门速度无限大的相机),

没有动态模糊使流畅度降低。

5.网络编程预备知识

1.Socket

A.简介

Socket
是一个编程接口
是一种特殊的文件描述符
(everything in Unix is a file)
并不仅限于TCP/IP协议
面向连接
(Transmission Control Protocol - TCP/IP)
无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)

B.类型

1)流式套接字(SOCK_STREAM)

提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制

2)数据报套接字(SOCK_DGRAM)

提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。

3)原始套接字(SOCK_RAW)

可以对较低层次协议如IP、ICMP直接访问。

2.IP地址

A.简介

IP地址是Internet中主机的标识。
Internet中的主机要与别的机器通信必须具有一个IP地址,而且是不能相同,若相同,就出现IP地址冲突。
IP地址为32位(IPv4)或者128位(IPv6)
每个数据包都必须携带目的IP地址和源IP地址
目的IP:对方的IP地址
源IP:自己的IP地址

B.表达方式

常用点分形式:192.168.1.3 ------->转换为32位无符号整型数据
C.分类
分为四类:A类、B类、C类、D类(组播/多播地址)。
1)A类地址
0开头,只用第一个字节的后7位表示网络,后3个字节表示主机。
0.0.0.1~127.255.255.254
2)B类地址
10开头,只用14位表示网络,后2个字节表示主机
128.0.0.0~191.255.255.254
3)C类地址
110开头,用21位表示网络,1个字节表示主机
192.0.0.0~223.255.255.254
4)D类地址
1110开头,用28位组播地址
224.0.0.0~239.255.255.254
5)特殊地址
0.0.0.0 默认指本网络,可以接收单播、组播、广播的网络数据。
127.0.0.1 默认作为本地环路地址(测试),不需要对方主机,做一个自发自收的实验。
主机值为255 默认向所有主机(电脑)发送数据
3.端口号
不同的端口用于不同的服务程序。
HTTP——80
FTP——21
TELNET——23
SMTP ——25
DNS——53
TFTP——69
SNMP——161
RIP——520

众所周知端口:11023(1255之间为众所周知端口,256~1023端口通常由UNIX系统占用)

注册端口:1024~49150

动态或私有端口:49151~65535

TCP程序编写

流式套接字的工作原理
服务器:socket()----->bind()------>listen()----->accept()----->read()----->write()------>close()
客户机:socket()------>connect()----->wirte()---->read()------>close()

数据套接字的工作原理

服务器:socket()----->bind()----->readfrom()----->sendto()----->close()
客户机:socket()------->bind()------->sendto()----readfrom()----->close()

问题一:什么是网络协议?

所谓网络协议,就是两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样。一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通。两台电脑之间进行通讯所共同遵守的规则,就是网络协议。

问题二:谁来制定这个网络协议以及为何网络要进行层次上的划分?

国际标准化组织(ISO)定义了网络协议的基本框架,被称为OSI模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时是否需要B电脑进行反馈,A电脑传送给B电脑的数据的格式又是怎样的?内容太多太杂,所以OSI模型将这些通讯标准进行层次划分,每一层次解决一个类别的问题,这样就使得标准的制定没那么复杂。OSI模型制定的七层标准模型,分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。

问题三:TCP/IP协议和OSI模型有何区别?

虽然国际标准化组织制定了这样一个网络协议的模型,但是实际上互联网通讯使用的网络协议是TCP/IP网络协议。

TCP/IP 是一个协议族,也是按照层次划分。共四层:应用层,传输层,互连网络层,网络接口层。 那么TCP/IP协议和OSI模型有什么区别呢?OSI网络协议模型,是一个参考模型,而TCP/IP协议是事实上的标准。TCP/IP协议参考了OSI模型,但是并没有严格按照OSI规定的七层去划分标准,而只划分了四层,个人觉得这样会更简单点,当划分太多层次时,你很难区分某个协议是属于哪个层次的。TCP/IP协议和OSI模型也并不冲突,TCP/IP协议中的应用层协议,就对应于OSI中的应用层,表示层,会话层。就像以前有工业部和信息产业部,现在实行大部制后只有工业和信息化部一个部门,但是这个部门还是要做以前两个部门一样多的事情,本质上没有多大的差别。TCP/IP中有两个重要的协议,传输层的TCP协议和互连网络层的IP协议,因此就拿这两个协议做代表,来命名整个协议族了,在说TCP/IP协议时,是指整个协议族。

问题四:TCP和UDP的区别和联系?

传输层最主要的协议就是TCP和UDP协议。两则的区别在于TCP协议需要接收方反馈,UDP协议不需要接收方反馈。TCP就像挂号信,A电脑发信息给B电脑后,需要得到B电脑的反馈,这样A电脑就能知道B电脑是否已经收到信息。UDP就像平信,A电脑发信息给B电脑后,B电脑并不给A电脑发聩,A电脑发送信息出去后并不知道B电脑是否已经收到。 因此,TCP传输比UDP传送更可靠,但是TCP传输的效率就不如UDP了。至于,在传送过程中具体选择哪种传送方式,需要具体问题具体分析。在不可靠的网络传送过程中一般选择TCP传送方式。在讲求效率,或者不在乎传送失误的情况下可以选择UDP方式来提高传输速率。

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

转载地址:https://blog.csdn.net/jdsnpgxj/article/details/108539525 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Ubuntu无法切换中文输入法的解决方法
下一篇:Linux串口应用编程

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月19日 11时39分21秒