相关信息
这一部分突出了等时通信的关键方面。有关更多信息,建议参阅 Nick Hunn 撰写的《介绍蓝牙LE音频》一书。该书以电子形式免费提供下载,链接为https://www.bluetooth.com/bluetooth-resources/leaudio-book/ 。蓝牙核心规范包含了详细的信息。
相关信息
这一部分突出了等时通信的关键方面。有关更多信息,建议参阅 Nick Hunn 撰写的《介绍蓝牙LE音频》一书。该书以电子形式免费提供下载,链接为https://www.bluetooth.com/bluetooth-resources/leaudio-book/ 。蓝牙核心规范包含了详细的信息。
在这个插曲中,我们讨论 UNIX 系统中的内存分配接口。所提供的接口非常简单,因此本章简短而言之。我们要解决的主要问题是:
如何分配和管理内存
在UNIX/C程序中,了解如何分配和管理内存对于构建健壮可靠的软件至关重要。通常使用哪些接口?应该避免哪些错误?
本文主要参考 《数据结构——C语言版》严蔚敏版(第二版)
链式存储结构
问题1:
链式存储结构的特点:
用一组任意的存储单元存储线性表的数据元素。
两个域
数据域:存储数据元素的信息。
指针域:存储后继结点的存储位置(即地址)。
栈 仅限定在表尾进行插入或删除操作的线性表,是一种后进先出的数据结构
在早期,因为用户的期望并不高, 所以构建计算机系统是件轻松的事。正是那些该死的用户,他们对“易用性”、“高性能”、“可靠性”等的期望,真的导致了所有这些头疼的问题。下次你遇到其中一个计算机用户时,感谢他们引发的所有问题吧。
从内存的角度来看,早期的计算机并没有为用户提供太多的抽象。基本上,机器的物理内存看起来有点像你在图 13.2 中看到的那样。
操作系统是一组例程(实际上是一个库),位于内存中(在这个例子中从物理地址 0 开始),并且会有一个正在运行的程序(一个进程)当前位于物理内存中(在这个例子中从物理地址 64k 开始),并使用其余的内存。这里几乎没有什么幻想,用户对操作系统的期望也不高。在那些日子里,操作系统开发者的生活确实很轻松,不是吗?
ADV 广播逻辑传输(参见第三节 ADVB - 低功耗广播)发送的广播包传输在时序上包含一定程度的随机性。在广播事件的调度中,故意插入了 0 到 10 毫秒之间的随机延迟,以避免持续的数据包冲突。在执行传统广播时,这是广播工作的唯一方式。
周期性广播涉及按确定性调度传输数据包,并提供一种机制,允许其他设备根据广播设备的调度调整它们的扫描活动,以与广播设备设定的时间保持一致。这种同步确保了参与设备之间的有效通信和互动。周期性广播始终是不可扫描和不可连接的。周期性广播可以通过为观察设备提供更省电的扫描方式来提高效率,是 LE 音频广播解决方案中的关键组成部分。
LE 广播(或简称广播)提供了一种无连接的通信模式。它可用于传输数据或指示外围设备的可连接性。通常,广播数据包旨在被范围内的任何扫描设备接收,因此广播可以用于同时向多个扫描设备传输数据,形成一对多的拓扑结构。然而,还定义了一种称为定向广播的特殊形式,允许从一个广播设备无连接地向一个特定的扫描设备传输数据,该设备由其蓝牙设备地址标识。
广播本身仅支持单向数据通信,从广播设备到扫描设备,但这些设备可以通过 PDU 回复广播数据包,请求进一步的信息或建立连接。当扫描设备通过回复来获取更多信息时,称为主动扫描。当不回复时,称为被动扫描。
广播通常被称为一种不可靠的传输,因为接收方不会发送确认。
当两个 BLE 设备连接时,它们使用异步面向连接逻辑传输(LE-ACL 或简称 ACL)。LE-ACL 是最常用的 BLE 逻辑传输类型之一,支持面向连接的数据通信。实际上,ACL 连接通常简称为连接。
设备可以通过响应接收到的广播数据包,并携带一个请求连接的 PDU 来与广播设备建立连接。请求中指定了多个参数,其中包括接入地址、连接间隔、外围设备延迟、监管超时和信道映射。
连接间隔参数定义了在多少毫秒内,无线电可以用于为此连接提供服务。每当连接间隔到期时,就会开始一个连接事件,在此时,连接中的中央设备可以传输一个数据包。每个连接事件都有一个16位的标识符,这是一个计数值,每有一个连接事件就递增一。在每个连接事件开始时,使用适用的信道选择算法选择要使用的射频信道。
BLE 物理层定义了进行数据传输和接收时,如何使用无线电发射器/接收器对数据进行编码和解码。并且还包括其它适用于无线电相关的参数和属性。
BLE 的工作频段是从 2400 MHz 到 2483.5 MHz 之间的 2.4 GHz 无许可频段。BLE 的工作频段被划分为 40 个信道,每一个信道的带宽为 2 MHz。链路层和数据传输架构定义了信道的使用方式。