Transplantation von Bluez basierend auf einem eingebetteten Linux-Entwicklungsboard

„Off topic“: Ich bin gerade zum ersten Mal mit Bluez in Kontakt gekommen. Ich hatte es noch nie zuvor benutzt oder damit gespielt, daher war ich am Anfang verwirrt. Es kam vor, dass das Projekt es brauchte, also musste ich in den sauren Apfel beißen, Gan Gan Gan, tun, was er tat, und mit Baidu beginnen. . . Ich brauchte zwei Wochen, um die bluez-Kommunikation abzuschließen, den benutzerdefinierten Bluetooth-Broadcast-Dienst zu implementieren und mit dem Applet für die WLAN-Netzwerkkonfiguration und Datenübertragung zu kommunizieren. Okay, lass uns den Zug starten und uns hinsetzen. Die Geschwindigkeit ist etwas hoch, aber es ist kein Auto, das in den Kindergarten fährt. Beruhige dich. . .

1. Hardware-Schaltung

Fügen Sie hier eine Bildbeschreibung ein
Hinweis: Lassen Sie uns hier über Hardwareprobleme sprechen. Ich verwende ein integriertes WLAN- und Bluetooth-Modul und die Kommunikationsmethode ist SDIO-Kommunikation. Tatsächlich ist es dasselbe, wenn ich andere Chips verwende, es ist nichts anderes als Sdio- oder UART-Kommunikation. Es stellt kein großes Problem dar und beeinträchtigt Ihre Leistung nicht.

2. Softwarevorbereitung

2.1. Quellkonfiguration

1) Zuerst benötigen wir ein Buildroot. Ich habe hier buildroot-2021.05.3 verwendet. Bitte ändern Sie es entsprechend in Ihr eigenes Buildroot.
2) Konfigurieren Sie die Konfigurationsdatei: defconfig xxx_xxx_spinor (dies ist Ihre Konfigurationsdatei)

defconfig xxx_defconfig  (不同的芯片可能这里操作不太一样,也可能是make xxx_defconfig)

3) Öffnen Sie die Konfigurationsdatei „menuconfig“. Konfigurieren Sie die Toolkette und wählen Sie bluez-bezogene Inhalte aus.
3.1) Informationen zur Tool-Chain-Konfiguration finden Sie unter: Link: Link https://blog.csdn.net/qq_39721016/article/details/123876398?spm=1001.2014.3001.5501
3.2) Bluez
Target-Pakete konfigurieren —>
Netzwerkanwendungen —>

Fügen Sie hier eine Bildbeschreibung ein
4) Kernel-Konfiguration:
Aktivieren Sie Bluetooth-bezogene Konfigurationen, hauptsächlich hci_uart-Treiber und andere Konfigurationen
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2.2 Kompilieren Sie den Quellcode

make 

1) Nach dem Kompilieren von Buildroot sehen wir den Ordner bluez5_utils-5.58 in outpur/build/, der einige Tools enthält, die wir verwenden müssen, wie z. B. Bluetoothd, Bluetoothctl, Btmon und andere Tools, die für das anschließende Debuggen von Bluez verwendet werden . Werkzeug.

2) Beschreibung der Debugging-Tools

bluetoothd 		bluetoothd进程,用于和蓝牙通信
bluetoothctl	bluetoothctl相当于wpa_cli,通过命令的方式进行蓝牙的操作
btmon			该工具用于监控蓝牙数据

3. Debugging-Prozess

3.1. Laden Sie den Treiber

1) Zuerst müssen Sie den WLAN-Treiber laden und waln0 starten

//------------------ssv6158模块-----------------
insmod ssv6x5x.ko
//以下可不启动
ifconfig wlan0 up 
wpa_supplicant -B -i wlan0 -c /mnt/system/ssv6158/wpa_supplicant.conf
udhcpc -i wlan0
//----------------------------------------------

//-----------------rtl8723ds模块----------------
insmod 8723ds.ko
//以下可不启动
ifconfig wlan0 up
wpa_supplicant -B -i wlan0 -c /mnt/system/ssv6158/wpa_supplicant.conf
udhcpc -i wlan0
//----------------------------------------------

3.2. Laden Sie den hci_uart-Treiber

1) Hier gibt es zwei Situationen: die in den Kernel kompilierte Treibermethode und die in ein Modul kompilierte Methode.
2) Hier sprechen wir nur über die in ein Modul kompilierte Methode.

//------------------ssv6158模块-----------------
//启动dbus相关服务
/etc/init.d/dbus start	(如果以启动可忽略)
insmod hci_uart.ko		(加载hci_uart驱动)
//注意,这里有些芯片需要控制蓝牙的使能管脚,记得使能。
./rtk_hciattach -n -s 115200 ttyS3 rtk_h5 &			(运行hciattch)
./bluetoothd -C &		(运行bluetoothd进程,以后台方式运行)
./bluetoothctl			(运行bluetoothctl控制端)
	power on			(开启电源)
    discoverable on		(打开蓝牙可发现)
    menu adv			(进入adv菜单)
		name bluez_123	(修改蓝牙名字)		
		back			(退出)
    menu gatt			(进入gatt菜单)
		register-service 0x00EE						(注册服务)
		register-characteristic 0xEE01 read,write	(读、写事件)
		register-characteristic 0xEE02 notify		(通知事件)
		register-application						
	back
    advertise on		(开启广播)									

//然后手机端使用nrf connect工具或者其他蓝牙助手所搜即可
//----------------------------------------------

//-----------------rtl8723ds模块----------------
/etc/init.d/dbus start	(如果以启动可忽略)
//上面说的有些芯片需要控制蓝牙的使能管脚,当前的模块就需要使能,如下
echo 380 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio380/direction
echo 1 > /sys/class/gpio/gpio380/value				(具体的使能方式请参考不同soc的控制方式即可)


insmod hci_uart.ko		(加载hci_uart驱动)
./rtk_hciattach -n -s 115200 ttyS3 rtk_h5 &			(运行hciattch)

./bluetoothd -C &		(运行bluetoothd进程,以后台方式运行)
./bluetoothctl			(运行bluetoothctl控制端)
	power on			(开启电源)
    discoverable on		(打开蓝牙可发现)
    menu adv			(进入adv菜单)
		name bluez_123	(修改蓝牙名字)		
		back			(退出)
    menu gatt			(进入gatt菜单)
		register-service 0x00EE						(注册服务)
		register-characteristic 0xEE01 read,write	(读、写事件)
		register-characteristic 0xEE02 notify		(通知事件)
		register-application						
	back
    advertise on		(开启广播)									

//然后手机端使用nrf connect工具或者其他蓝牙助手所搜即可
//----------------------------------------------

Das Obige ist der allgemeine Vorgang zum Debuggen des Bluez-Prozesses.

4. Bitte warten

Inhalte im Zusammenhang mit der Dbus-Kommunikation werden in Zukunft hinzugefügt. Der gesamte Kommunikationsprozess, Einschalten, Erkennen, Ankündigen, dieser Teil ist der transplantierte Quellcode, direkter Code zum Betreiben von Bluetooth, und es wird nicht die Bluetoothct-Befehlszeile zur Steuerung verwendet Bluetooth, da die Entwicklung im Projekt unpraktisch ist.

Acho que você gosta

Origin blog.csdn.net/qq_39721016/article/details/129142734
Recomendado
Clasificación