- 积分
- 741
- 最后登录
- 2024-3-27
- 精华
- 0
- 阅读权限
- 40
- 主题
- 93
- UID
- 1039838
- 帖子
- 1253
- PB币
- 57
- 威望
- 40
- 贡献
- 0
- 技术
- 12
- 活跃
- 2273
- UID
- 1039838
- 帖子
- 1253
- PB币
- 57
- 贡献
- 0
- 技术
- 12
- 活跃
- 2273
|
发表于 2019-6-14 12:07:09
IP属地浙江
|显示全部楼层
Macsed 发表于 2019-6-12 22:56
可以详细讲一下实现原理吗,想详细学习一下
我没有专业研究过,以下内容混入了一些自己的猜测(大致是根据 https://github.com/RehabMan/OS-X-BrcmPatchRAM 里面所写):
首先,蓝牙模块里面是有固件的。模块的正常运作依赖于这一固件。Broadcom 为了方便固件的更新,可能在蓝牙模块里面采用了易失性的存储器。同时,把固件包含在了驱动文件里面,每当驱动被加载的时候就同时会把固件写入蓝牙模块使得蓝牙模块得以正常运作。这样的好处是,驱动可以跟蓝牙固件同时更新。
然而 macOS 并不会干这件事情(白苹果可能有另外的处理方式),因此需要 BrcmPatchRAM 来把固件写入蓝牙模块使得其正常运行,文档里面也说了其固件都提取自 Windows 里面对应的驱动。而 BrcmBluetoothInjector 里面并不包含固件写入,只是尝试激活蓝牙模块。因此,冷启动的时候蓝牙模块不会正常运作。而先进 Windows 的话,进入Windows 加载好驱动同时蓝牙固件已经被写入了,此时重启过程中并没有断电,因此被写入的蓝牙固件并没有丢失,再进入 macOS 就可以正常使用蓝牙了。 |
-
2
查看全部评分
-
|