組み込み Linux 開発ボードに基づく Bluez の移植

「余談」: 私は初めて bluez に触れたのですが、それまで使ったことも遊んだこともなかったので、最初は戸惑いました。たまたまプロジェクトにそれが必要だったので、私は思い切って、ガンガンガン、彼がやったことをやって、Baidu から始めなければなりませんでした。Bluez 通信を完了し、Bluetooth ブロードキャスト カスタム サービスを実装し、Wi-Fi ネットワーク構成とデータ送信のためにアプレットと通信するまでに 2 週間かかりました。よし、電車を発車させて座ろう、ちょっとスピードは速いけど、幼稚園に行く車じゃないから落ち着け。

1. ハードウェア回路

ここに画像の説明を挿入
注: ここでハードウェアの問題について話しましょう。私は Wi-Fi と Bluetooth 統合モジュールを使用しており、通信方式は SDIO 通信です。実際、他のチップを使用する場合も同様で、SDIO または UART 通信にすぎません。これは大きな問題ではなく、パフォーマンスには影響しません。

2. ソフトウェアの準備

2.1. ソース構成

1) まず、buildroot が必要です。ここでは buildroot-2021.05.3 を使用しました。独自の buildroot に応じて変更してください。
2) 構成ファイルを構成します: defconfig xxx_xxx_spinor (これが構成ファイルです)

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

3) menuconfig 設定ファイルを開きます。ツールチェーンを設定し、bluez 関連のコンテンツを選択します。
3.1) ツール チェーンの構成については、リンク:リンクhttps://blog.csdn.net/qq_39721016/article/details/123876398?spm=1001.2014.3001.5501を参照してください
。 3.2) bluez ターゲット パッケージの構成
—>
ネットワーク アプリケーション —>

ここに画像の説明を挿入
4) カーネル構成:
Bluetooth 関連の構成、主に hci_uart ドライバーおよびその他の構成を有効にします。
ここに画像の説明を挿入
ここに画像の説明を挿入

2.2 ソースコードをコンパイルする

make 

1) buildroot をコンパイルすると、outpur/build/ に bluez5_utils-5.58 フォルダーが表示されます。このフォルダーには、bluetoothd、bluetoothctl、btmon、およびその後の bluez のデバッグに使用されるその他のツールなど、使用する必要のあるいくつかのツールが含まれています。 .ツール。

2) デバッグツールの説明

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

3. デバッグプロセス

3.1. ドライバーのロード

1) まず、Wi-Fi ドライバーをロードし、waln0 を起動する必要があります。

//------------------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. hci_uart ドライバーのロード

1) ここには、カーネルにコンパイルされるドライバー メソッドとモジュールにコンパイルされるメソッドの 2 つの状況があります。2
) ここでは、モジュールにコンパイルされるメソッドについてのみ説明します。

//------------------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工具或者其他蓝牙助手所搜即可
//----------------------------------------------

上記は、bluez プロセスをデバッグする一般的な操作です。

4.お待ちください

dbus通信に関するコンテンツは今後追加予定です通信プロセス全体、電源オン、ディスカバーオン、アドバタイズオン、この部分は移植されたソースコードであり、Bluetoothを動作させる直接コードであり、制御にBluetoothctコマンドラインは使用しませんBluetooth はプロジェクトで開発するのに不便なので。

おすすめ

転載: blog.csdn.net/qq_39721016/article/details/129142734