nxp的bluetooth驱动调试

本文详细记录了调试NXP AP6256蓝牙模块驱动的过程,包括设备树配置、固件加载以及解决蓝牙串口打开失败的问题。主要步骤涉及配置蓝牙节点、设置固件路径、指定串口路径,并针对rfkill节点缺失导致的BUG进行了分析和修复。

最近在调试nxp的ap6256蓝牙模块驱动,写个笔记记录下心得。

一、设备树配置

设备树配置的东西就三点,节点配置。还有就是驱动要编译。

1)把驱动匹配进去

    bt_rfkill: bt_rfkill {
   
   
        compatible = "fsl,mxc_bt_rfkill";
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_bt>;
	    	bt-power-gpios = <&gpio4 24 GPIO_ACTIVE_HIGH>;
        status ="okay";
    };

驱动文件就大家自己去弄了
2)bt_rst的拉高

    pinctrl_bt: wlangrp {
   
   
		fsl,pins = <
			MX8MP_IOMUXC_SAI2_TXFS__GPIO4_IO24		0x41 		 /* BT_RST */
            MX8MP_IOMUXC_NAND_DATA00__GPIO3_IO06	0x16  /* BT_WAKE_HOST */
		>;
	};

3)对应的串口配置
蓝牙一般用串口通讯。


&uart3 {
   
   
	/* BT */
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	fsl,uart-has-rtscts;
	status = "okay";
};


	pinctrl_uart3: uart3grp {
   
   
			fsl,pins = <
				MX8MP_IOMUXC_SD1_DATA6__UART3_DCE_TX		0x140
				MX8MP_IOMUXC_SD1_DATA7__UART3_DCE_RX		0x140
				MX8MP_IOMUXC_SD1_RESET_B__UART3_DCE_RTS		0x140
				MX8MP_IOMUXC_SD1_STROBE__UART3_DCE_CTS		0x140
			>;
	};

同时需要去看有没有管角复用这些。
这样的话就可以在串口里面看到相关打印信息。

    $> dmesg | grep -i Bluetooth
    Bluetooth: Core ver 2.18
    Bluetooth: HCI device and connection manager initialized
    Bluetooth: HCI socket layer initialized
    Bluetooth: L2CAP socket layer initialized
    Bluetooth: SCO socket layer initialized
    Bluetooth: HCI UART driver ver 2.2
    Bluetooth: HCI H4 protocol initialized
    Bluetooth: HCI BCSP protocol initialized
    Bluetooth: HCIATH3K protocol initialized
    Bluetooth: RFCOMM TTY layer initialized
    Bluetooth: RFCOMM socket layer initialized
    Bluetooth: RFCOMM ver 1.11
    Bluetooth: BNEP (Ethernet Emulation) ver 1.3
    Bluetooth: BNEP filters: protocol multicast
    Bluetooth: BNEP socket layer initialized
    Bluetooth: HIDP (Human Interface Emulation) ver 1.2
    Bluetooth: HIDP socket layer initialized

如果是底层驱动,那么就可以用底层工具hci相关工具查看

    $> hciconfig hci0 up
    $> hciconfig
    hci0:   Type: BR/EDR  Bus: UART
            BD Address: 64:A3:CB:5B:69:F0  ACL MTU: 1021:8  SCO MTU: 64:1
            UP RUNNING PSCAN
            RX bytes:1772 acl:0 sco:0 events:69 errors:0
            TX bytes:1152 acl:0 sco:0 commands:65 errors:0

如果这里面没有设备出来

  $> hciconfig hci0 up
  no device ***

这个就是关于蓝牙的固件没有加载进板子里面(我的这个是这样的,不敢说全部)。

二、固件加载

BCM4345C5.hcd
固件名字是这个
底层可以直接通过网口或者adb弄到板子上去,然后执行对应的命令就可以
安卓驱动需要指定对应的路径。
1)device/nxp/imx8m/evk_8mp/BoardConfig.mk

/*通过FILES把pc端文件传到板子上的指定目录*/
PRODUCT_COPY_FILES +=    \
device/nxp/imx8m/evk_8mp/firmware/bcm_ap6256/BT/BCM4345C5.hcd:vendor/etc/firmware/bcm/BCM4345C5.hcd

# -------@block_bluetooth-------
# AP6256  BT

2)可以在板子上查看是否有对应的固件,如果没有则不行,先把这个固件弄到板子上。如果有,那么可以先尝试去打开连接蓝牙。
查看对应的log,如果没问题,那么就ok。如果有问题则查看log寻找对应的问题。

12-24 02:32:48.128  2210  2211 I bt_vendor: init
12-24 02:32:48.128  2210  2211 I bt_vnd_conf: Attempt to load conf from /etc/bluetooth/bt_vendor.conf
12-24 02:32:48.128  2210  2211 I bt_vnd_conf: vnd_load_conf file >/etc/bluetooth/bt_vendor.conf< not found
12-24 02:32:48.129  2210  2211 E bt_upio : init_rfkill : open(/sys/class/rfkill/rfkill0/type) failed: No such file or directory (2)
12-24 02:32
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值