蓝牙最小广播间隔 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是应用层协议,主要解决如何包装数据。

关于嵌入式开发工程师的那些事(持续更新)相关推荐

  1. 成为一名优秀的嵌入式开发工程师有哪些要求?

    成为一名优秀的嵌入式开发工程师有哪些要求? 随着国内嵌入式行业的迅速崛起,嵌入式人才严重紧缺,企业对嵌入式人才更是求贤若渴.尽管是在就业难的今天,但是各大人才招聘网站上,高薪招聘嵌入式开发工程师的信息 ...

  2. 与一线Linux嵌入式开发工程师的对话

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:与一线Linux嵌入式开发工程师的对话 作者:kjpioo kjpioo的说明:这篇文章转载自陈莉君老师的博客,文章 ...

  3. 职位介绍 之 嵌入式开发工程师

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...

  4. 嵌入式开发工程师进阶之路

    嵌入式开发工程师进阶之路 一.从微控制器开始 从微控制器的最小系统入手,以其为核心,选择相应电子元件加上最小系统在面包板或洞洞板上搭建硬件电路,并在嵌入式开发工具下使用C语言编写.编译.连接.链接.调 ...

  5. 2010-2011年中国嵌入式开发工程师现状调查报告(完整版)

    1.来自华清远见2010-2011年度的行业调查数据显示,目前从事嵌入式开发"不到1年"和"1-2年"的工程师所占的比例依然是最大的,分别是35%和20%,占总 ...

  6. 2020 年,嵌入式开发工程师的两大必知必会!

    [CSDN 编者按]2020年,在嵌入式系统及硬件领域里有哪些新趋势呢?本文作者从软硬件两大点出发,详细介绍其中的新技术发展趋势,对于嵌入式系统工程师的你绝不可错过的干货知识. 作者 | Christ ...

  7. 华清远见嵌入式开发工程师2022

    这个确实很不错的,讲解的知识点很清晰,我之前是在共众号 <码农充电堂> 领取的,省了很多钱,你也可以去看看. 时间:2022年5月26号!这几年嵌入式开发的发展前景可以说是非常的香!从工资 ...

  8. 大疆 嵌入式开发工程师 校招面经(已offer)

    分享数字IC相关面经,内容来源于 SSP面试笔记 网站: 分享一个完整的嵌入式开发面试经验,一共两轮,目前已经收到了offer,希望对大家有帮助. 一面 1.自我介绍 2.聊项目,问的很细 3.sta ...

  9. 硬石YS-F1Pro开发板HAL库例程持续更新\2. 软件设计之高级裸机例程(HAL库版本)\YSF1_HAL-121. MH-Z14A二氧化碳传感器模块

    /**   ******************************************************************************   *             ...

最新文章

  1. junit mockito_从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范
  2. 数据的gzip压缩解压缩_使用GZIP和压缩数据
  3. .Net开发人员应该下载的十种必备工具(三)
  4. 12月25晚-12月29日做的两个网页
  5. 华为手机8.0.0怎么找到云相册_华为G9怎么找到云相册_失而复得 华为“查找手机”功能有多强大?快来了解一下......
  6. 关于Mybatis的几个问题
  7. linux下c 指针变量大小,C语言sizeof关键字
  8. jdialog 数据量大加载出现白板_王者荣耀:队友真的有人机?白板熟练进排位,资料面都是假的...
  9. python zipfile压缩_python:用 zipfile 模块压缩文件-压缩文件格式
  10. Qt入门学习之Qt全局定义
  11. Python安装教程_Python运行环境的搭建
  12. VOC格式xml标签与YOLO格式txt标签相互转换
  13. 摄影测量实习-解析空中三角测量-C#代码
  14. 《童虎学习笔记》20分钟实战ProxySQL MGR高可用及读写分离架构
  15. JMeter发送数据到Kafka
  16. 【专题3:电子工程师 之 上位机】 之 【47.使用QT Opengl显示YUV图像】
  17. PD快充磁吸移动电源方案
  18. [论文阅读](不确定性系列)
  19. 轻松自动化---selenium-webdriver(python) (八)
  20. python 手部识别与位置跟踪

热门文章

  1. 安装 Zotero Word插件
  2. mybatis上的报错处理,分页查询、批量处理
  3. xsi:schemaLocation详解 1
  4. 原生php实现,图层合并,通过文字生成图片,
  5. html文本框禁止汉字,html 文本框屏蔽非法字符
  6. 三,容器类型及其函数(列表,元组,字典,集合)
  7. R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
  8. 软件项目管理 7.2.传统历时估算
  9. 汉得笔试题oracle,【汉得java开发笔试回忆总结】
  10. 兰州有没有招聘关于计算机专业的,2016年兰州市直招聘事业单位人员岗位表