首先结合项目从整体上去把握这部分:
蓝牙模块中一个比较核心的文件是bluetooth.c, 在我们上电的时候, 会调用这个文件中bt_enable()这个函数, 在这个函数里面先调用set_bluetooth_power()上电,然后调用property_set("ctl.start", "hciattach"), 去启动hciattach这个服务,从而运行brcm_patchram_plus这个进程。这个服务会加载我们firmware等一些工作。这部分工作做完后, 我们会调用property_set("ctl.start","bluetoothd"),这个服务是启动我们的bluz进程。如果以上成功的话,蓝牙芯片将会开始工作。
蓝牙需要正常工作,简而言之,需要做三部分工作:
i) 给芯片上电。
ii) hciattach服务启动,从而加载固件,设置波特率等一系列的操作。(硬)
iii 启动bluetooth的协议,从而让蓝牙去正常工作。 (软)
其次来分析下具体的工作流程:
a) BT管脚介绍
BT_REG_ON 和BT_RESET打开蓝牙时拉高, 关闭蓝牙时候拉低。 平时不需要控制。一般放在RF-KILL里面,可以在命令行里面操作。
UART可以一直配置为UART(TX/