OS 如何处理外设数据缓冲区?
How does an OS handle a peripheral data buffer?
一个简单的问题:
我正在使用 BLE 并试图了解数据缓冲区如何在 OS 级别工作(OS 的基本知识)。例如。设备(可穿戴设备)将数据发送到手机 phone。
我的研究理解:
- 建立连接,手机告诉设备驱动程序(BLE 模块)发送数据的内存地址(缓冲区)。
- 然后将数据发送到CPU需要时可以访问的地址。
我正在尝试了解该分配的工作原理。更具体地说,phone 如何确保在读取传入 BLE 时没有数据包丢失。
提前致谢。
你问的是流量控制
在 BLE Link 层(用于无线传输),有一个确认机制,确保在前一个数据包被确认之前下一个数据包不会被发送远程设备。这样数据包就不会在其他数据包之间丢失。
在设备和蓝牙堆栈内部,还存在跨不同层的流量控制,其中每一层都确保缓冲区不会在下一层填满。例如在 HCI 层,有许多缓冲区可以填充数据包。满时,发送层现在不能发送任何东西。当远程设备确认数据包时,会通过 HCI 通知,以便发送新数据包。
一个简单的问题:
我正在使用 BLE 并试图了解数据缓冲区如何在 OS 级别工作(OS 的基本知识)。例如。设备(可穿戴设备)将数据发送到手机 phone。
我的研究理解:
- 建立连接,手机告诉设备驱动程序(BLE 模块)发送数据的内存地址(缓冲区)。
- 然后将数据发送到CPU需要时可以访问的地址。
我正在尝试了解该分配的工作原理。更具体地说,phone 如何确保在读取传入 BLE 时没有数据包丢失。
提前致谢。
你问的是流量控制
在 BLE Link 层(用于无线传输),有一个确认机制,确保在前一个数据包被确认之前下一个数据包不会被发送远程设备。这样数据包就不会在其他数据包之间丢失。
在设备和蓝牙堆栈内部,还存在跨不同层的流量控制,其中每一层都确保缓冲区不会在下一层填满。例如在 HCI 层,有许多缓冲区可以填充数据包。满时,发送层现在不能发送任何东西。当远程设备确认数据包时,会通过 HCI 通知,以便发送新数据包。