首页 > 其他分享 >基于MX6ULL的蓝牙协议栈bluez移植

基于MX6ULL的蓝牙协议栈bluez移植

时间:2025-01-17 11:31:18浏览次数:3  
标签:-- dbus 蓝牙 us 6ull bluez install home MX6ULL

文章目录


前言

开发板集成了 wifi&bt 模块(AP6275S),测试该模块的 bluetooth 蓝牙功能。


原理图wifi&bt模块
在这里插入图片描述
软件平台:Ubuntu 20.04.4 LTS
硬件平台: NXP 公司的 i.MX6ULL

一、bluez5.47编译

编译之前需要交叉编译工具链,及环境配置,路径根据自己环境配置

#!/bin/sh
 export PKG_CONFIG_PATH=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/pkgconfig:$PKG_CONFIG_PATH
 export PATH=/home/cyzhangep/workspace/6ull_41/toolchain/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin:$PATH

1.相关库编译

1.编译zlib

cd zlib-1.2.8
mkdir install_us
host=arm-linux prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/zlib-1.2.8/install_us CC=arm-linux-gnueabihf-gcc ./configure --shared
make
make install

2.编译libffi

cd libffi-3.2.1
mkdir install_us
./configure --host=arm-linux  --prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/libffi-3.2.1/install_us CC=arm-linux-gnueabihf-gcc
make
make install
cd ..

3.编译glib

cd glib-2.45.3
mkdir install_us
echo ac_cv_type_long_long=yes>arm-linux.cache
echo glib_cv_stack_grows=no>>arm-linux.cache
echo glib_cv_uscore=no>>arm-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
echo ac_cv_func_posix_getgrgid_r=yes>>arm-linux.cache

./configure  --host=arm-linux  --prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/glib-2.45.3/install_us CC=arm-linux-gnueabihf-gcc LIBFFI_CFLAGS="-I/home/cyzhangep/workspace/6ull_41/dbus_zzy1/libffi-3.2.1/install_us/lib/libffi-3.2.1/include" LIBFFI_LIBS="-lffi -L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/libffi-3.2.1/install_us/lib" ZLIB_CFLAGS="-I/home/cyzhangep/workspace/6ull_41/dbus_zzy1/zlib-1.2.8/install_us/include" ZLIB_LIBS="-lz -L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/zlib-1.2.8/install_us/lib" --cache-file=arm-linux.cache --disable-selinux --disable-xattr --disable-libelf --disable-fam

make
make install
cd ..

4.编译expat

cd expat-2.2.7
mkdir install_us
make clean
./configure  --prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/expat-2.2.7/install_us --host=arm-linux CC=arm-linux-gnueabihf-gcc --enable-shared
make
make install
cd ..

5.编译dbus

cd dbus-1.6.16
mkdir install_us
# echo ac_cv_have_abstract_sockets=yes>arm-linux.cache
./configure --prefix= --host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++   --with-xml=expat --without-x LDFLAGS="-L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/expat-2.2.7/install_us/lib"   CFLAGS="-fPIE -I/home/cyzhangep/workspace/6ull_41/dbus_zzy1/expat-2.2.7/install_us/include/" enable_selinux="no" --disable-tests #--cache-file=arm-linux.cache
 
make
make install DESTDIR=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/dbus-1.6.16/install_us
cd ..

6.编译ncurses

cd ncurses-5.9
mkdir install_us
export CPPFLAGS="-P"
./configure --prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/ncurses-5.9/install_us --host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ CFLAGS="-fPIC"

make
make install
unset CPPFLAGS
cd ..

7.编译readline

cd readline-6.0
mkdir install_us
make clean
./configure  --host=arm-linux  CC=arm-linux-gnueabihf-gcc --prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/readline-6.0/install_us bash_cv_wcwidth_broken=yes CFLAGS="-fPIC"  LDFLAGS="-L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/ncurses-5.9/install_us/lib"
make SHLIB_LIBS=-lncurses
# make 
make install
cd ..
ldconfig

8.编译libical

cd libical-0.43
mkdir install_us
./configure --prefix=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/libical-0.43/install_us --host=arm-linux  CC=arm-linux-gnueabihf-gcc

make
make install
cd ..

9.编译bluez

mkdir pkgconfig
cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/dbus-1.6.16/install_us/lib/pkgconfig/dbus-1.pc ./pkgconfig
cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/expat-2.2.7/install_us/lib/pkgconfig/expat.pc ./pkgconfig
cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/glib-2.45.3/install_us/lib/pkgconfig/*        ./pkgconfig
cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/libffi-3.2.1/install_us/lib/pkgconfig/libffi.pc ./pkgconfig
# cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/readline-8.0/install_us/lib/pkgconfig/readline.pc ./pkgconfig
cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/zlib-1.2.8/install_us/lib/pkgconfig/*          ./pkgconfig
cp -r /home/cyzhangep/workspace/6ull_41/dbus_zzy1/libical-0.43/install_us/lib/pkgconfig/libical.pc ./pkgconfig
cd bluez-5.47
make clean
./configure --prefix= --sysconfdir=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/bluez-5.47/install_us/etc --localstatedir=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/bluez-5.47/install_us/var --enable-experimental --with-systemdsystemunitdir=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/bluez-5.47/install_us/ll_lib/systemd/system --with-systemduserunitdir=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/bluez-5.47/install_us/ll_usr/lib/systemd --enable-tools  --enable-debug --enable-test --disable-udev --host=arm-linux CC=arm-linux-gnueabihf-gcc  CFLAGS="-I/home/cyzhangep/workspace/6ull_41/dbus_zzy1/readline-6.0/install_us/include -I/home/cyzhangep/workspace/6ull_41/dbus_zzy1/dbus-1.6.16/install_us/include/dbus-1.0/  -I/home/cyzhangep/workspace/6ull_41/dbus_zzy1/libical-0.43/install_us/include/"  LDFLAGS="-L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/readline-6.0/install_us/lib -L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/ncurses-5.9/install_us/lib -L/home/cyzhangep/workspace/6ull_41/dbus_zzy1/dbus-1.6.16/install_us/lib" --enable-library  --enable-shared=yes --enable-network --enable-health  --enable-cups  --enable-threads --enable-pie --enable-deprecated --enable-client #--disable-client 

make LIBS=-lncurses
make install DESTDIR=/home/cyzhangep/workspace/6ull_41/dbus_zzy1/bluez-5.47/install_us

编译结束,工具及库在相应的install_us目录下,拷贝到板卡

二、使用步骤

1.测试脚本

如下:

#!/bin/sh
echo "statr config bt......"

export PATH=/sbin/:$PATH
export DBUS_SESSION_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket
brcm_patchram_plus -d --enable_hci --no2bytes --tosleep 115200 --baudrate 115200 --patchram /lib/firmware/BCM4362A2_001.003.006.1100.1189.hcd --bd_addr 11:22:33:44:55:66 /dev/ttymxc2 &

groupadd -g 3065 messagebus -p x
useradd  -d '/var/lib/dbus/' -g messagebus  -s /bin/false messagebus -p x
groupadd lp -p x
useradd  -d '/var/spool/lpd' -g lp  -s /bin/sh lp -p x
dbus-uuidgen --ensure
dbus-daemon --system --print-pid --print-address
mkdir -p  /home/
# eval dbus-launch --sh-syntax
export $(dbus-launch)
/libexec/bluetooth/bluetoothd -n -d &

2.bluetoothctl工具

bluetoothctl  //打开 bluez 蓝牙工具

power on  //启动蓝牙设备

pairable on //设置为配对模式

discoverable on  //设置为可发现模式

agent on  //启动代理

default-agent  //设置当前代理为默认
//打开手机配对

参考:
https://blog.csdn.net/weixin_43982460/article/details/116014460
https://blog.csdn.net/gatieme/article/details/48751743
https://blog.csdn.net/lee_jimmy/article/details/96739656


总结

移植的过程中,遇到很多很多的问题,主要是搜索,请教同事,结束后将我的经验分享出来,互相学习,也当作记录。

移植过程遇到的错误
地址:https://download.csdn.net/download/joy_dsp/90277540
当时写了个bluez错误问题记录,里面有相关库下载路径,错误情况以及解决方法,没有整理比较乱建议,搜索查看。

标签:--,dbus,蓝牙,us,6ull,bluez,install,home,MX6ULL
From: https://blog.csdn.net/joy_dsp/article/details/145189983

相关文章

  • 基于STM32单片机自动售货机扫码支付无人超市语音播报无线蓝牙APP/WIFI-APP控制/WIFI视
    STM32-S147语音播报+二维码付+4种商品+4路电机出货+选货+手付+库存+缺货+找零+声光+按键+TFT屏+(无线方式选择)产品功能描述:本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、(无线蓝牙/无线WIFI/无线视频监控模块-可选)、步进电机控制电路、语音播报模块接口、蜂鸣器报警电......
  • Windows 蓝牙驱动开发-BLE低功耗
    蓝牙的版本为1.0~5.2版本,蓝牙1.0~3.0都是经典蓝牙(rfcomm)。而蓝牙4.0开始就是包括蓝牙BLE了。蓝牙4.0的蓝牙芯片都是双模的,既包括经典蓝牙也包括低能耗蓝牙。经典蓝牙和蓝牙BLE完全是两个东西,只是它们在底层上有一些相似的地方。蓝牙BLE相比于经典蓝牙的优点是搜索、连接的速......
  • Windows 蓝牙驱动开发-安装蓝牙设备
    蓝牙配置文件驱动程序有两种安装类型:客户端安装,在此类安装中,远程设备播发其服务,并且计算机与之连接。示例包括:鼠标、键盘和打印机;服务器端安装,在此类安装中,计算机播发服务,并且远程设备可以连接到计算机以使用这些服务;例如,供应商可以创作服务器端安装,使移动设备能够打印到附......
  • 蓝牙6.0新特性浅析
    蓝牙6.0新特性浅析|DD'Notes蓝牙6.0新特性浅析蓝牙6.0的核心规范包含了许多新特性和改进,以下是一些主要的新特性:14.1NewfeaturesSeveralnewfeaturesareintroducedinv6.0.Themajorareasofimprovementare:•ChannelSounding,includingChannelSoundingHCI......
  • 蓝牙相关命令
    记录一些蓝牙需要用到的命令,以防忘记,hcitool 用于连接断开设备;hciattach初始化(串口/波特率)和绑定tty设备;hciconfig查看蓝牙设备的属性,设置蓝牙设备的操作;hcidump读取发送和接受蓝牙设备的原始hci数据(该设备可以通过-I参数指定,默认当前第一个有效的连接设备),并按照人可以......
  • 微信小程序实现对蓝牙设备的控制
    微信小程序的便利性,让我们很多时候,希望能通过微信小程序实现对蓝牙设备的控制,下面我们介绍一下如何实现这一功能。该项目是通过微信小程序来控制雾化器的工作模式及工作时间,希望能对大家提供一点帮助。先看界面:1、要访问并控制蓝牙设备首先要搜索并连接上设备,代码如下:Cr......
  • windows7老爷机安装蓝牙适配器遇到的坑
    连续买了3个蓝牙接收器,都无法在我的win7电脑上使用,最后询问小二、加上自己上网查询,最终解决。首先,安装蓝牙驱动,重启电脑。然后,说明书上说,右下角的系统托盘理应有个蓝牙图标,但是我这里不显示,所以,要另寻它法。右键点击网络图标,【打开网络和共享中心】看到蓝牙了,右键》属性 ......
  • 低功耗蓝牙芯片CH57x,CH58x,CH59x回读codeflash及dataflash数据
    一、读取Codeflash数据芯片内部程序是有加密的,不支持外部工具直接读取,因此只能通过内部接口读取,而ISP烧录器工具在烧录时,默认会擦除8k的数据,因此只能读到8k以后的codeflash部分:方式:烧录一份不超过8k的程序,烧录器烧录时不能勾选清空codeflash,保留8k以后的原固件数据,程序主体可......
  • Java Bluetooth 蓝牙通讯 BlueCove 扫描附近的蓝牙设备
    目录BlueCove项目概述BlueCoveAPI架构API的设计原则和实现方式关键类和方法的功能描述测试代码获取本机(PC)蓝牙扫描蓝牙BlueCove项目概述BlueCove是一个开源的蓝牙协议栈实现,旨在为Java开发者提供一个全面的、易于使用的API,从而在应用程序中实现蓝牙功能。该项目支持多种操作......
  • ESP32 的蓝牙协议栈
    ESP32的蓝牙协议栈一、蓝牙协议栈BLUEDROID架构在ESP-IDF中,使⽤经过⼤量修改后的BLUEDROID作为蓝⽛主机(ClassicBT+ BluetoothLE)。BLUEDROID拥有较为完善的功能,⽀持常⽤的规范和架构设计,同时也较为复杂。经过⼤量修改后,BLUEDROID保留了⼤多数BTA层以下......