基于嵌入式Linux开发板的bluez的移植

《题外话》:刚开始第一次接触bluez,完全没用过,也没搞过,开局一脸懵逼。刚好项目需要用到,只能硬着头皮上,淦淦淦,干他丫的,先上来一顿百度。。。本人耗时两个星期搞完bluez的通信,实现蓝牙广播自定义服务,并和小程序通信,进行wifi配网和传输数据。好了,开始发车,坐好了,车速有点快,但是不是开去幼儿园的车,淡定。。。

1.硬件电路

在这里插入图片描述
说明:这里说一下硬件方面的问题,本人使用了wifi和蓝牙一体模块,而且通信方式都是使用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)工具链配置请参考:链接: link https://blog.csdn.net/qq_39721016/article/details/123876398?spm=1001.2014.3001.5501
3.2)配置bluez
Target packages —>
Networking applications —>

在这里插入图片描述
4)内核配置
开启蓝牙相关配置,主要为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)首先需要加载wifi驱动,并起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)这里只说编译成模块的方式

//------------------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通信相关的内容,整个通信流程,power on 、discover on、advertise on,这部分为移植源码,直接代码操作蓝牙,不使用bluetoothct命令行的方式控制蓝牙,因为项目中开发不方便。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嵌入式 Linux 开发板是一种微型计算机,它可以在物理设备中嵌入,并通过 Linux 操作系统与其他设备进行通信。这些设备通常是非常小巧,可以在各种应用场景中使用,如工业控制、家庭自动化、智能家居等。 嵌入式 Linux 开发板通常具有以下特点: 1. 小巧:它们通常很小,可以方便地安装在物理设备中。 2. 可编程:它们可以通过编程语言(如 C、Python 等)进行开发。 3. 多功能:它们可以支持多种功能,如网络通信、存储数据、显示图像等。 4. 可扩展:它们可以通过外部设备扩展功能,如接入传感器、摄像头等。 如果您对嵌入式 Linux 开发板感兴趣,可以考虑使用 Raspberry Pi、BeagleBone Black 等流行的开发板。 ### 回答2: 嵌入式Linux开发板是指搭载嵌入式Linux操作系统的开发板,通常采用ARM架构的处理器。它可以为嵌入式系统提供完整的Linux环境,包括Linux内核、文件系统以及常用的Linux工具,方便开发人员进行应用程序的开发。 嵌入式Linux开发板具有以下特点: 一、低功耗和高性能:嵌入式Linux开发板使用ARM架构的处理器,具有低功耗和高性能的特点,满足低功耗和高性能的应用需求。 二、丰富的接口和扩展性:嵌入式Linux开发板具有丰富的接口和扩展性,可通过外置扩展板或接口扩展模块满足不同应用场景下的需求。 三、可裁剪性:嵌入式Linux开发板可以根据实际需求进行裁剪,去除不必要的组件和功能,从而减少系统资源的占用,提高系统运行效率。 四、稳定可靠:由于使用Linux操作系统,嵌入式Linux开发板具有非常稳定可靠的特点,可保证系统长时间稳定运行。 嵌入式Linux开发板广泛应用于智能家居、智能医疗、智慧交通、物联 网等领域,成为嵌入式系统开发的主流选择。但是,嵌入式Linux开发板也具有一定的开发门槛,需要开发人员掌握一定的Linux操作系统和嵌入式系统开发经验,才能更好地发挥其功能和优势。 ### 回答3: 嵌入式Linux开发板是一种集成了Linux操作系统和硬件平台的开发板。这种开发板通常是由嵌入式系统厂商或者开发者自行设计的,其主要用途是针对特定的应用场景进行开发和调试,比如智能家居、工业控制、医疗设备等。嵌入式Linux开发板具有以下特点: 1. 硬件平台:嵌入式Linux开发板通常是采用一款微处理器为核心,搭配一些外设如存储器、网络、输入输出接口等组成的系统。硬件平台的选择通常需要根据应用场景的需求、想要实现的功能以及成本等因素进行权衡。 2. Linux系统:嵌入式Linux开发板搭载的是简化版本的Linux操作系统,由于资源受限,会使用一些轻量级的系统,如busybox等。这些系统通常会定制化,去掉一些不必要的部分,从而减小系统运行所需的资源开销,并且加快系统启动、响应等速度。 3. 开发环境:嵌入式Linux开发板的开发环境也是非常重要的一部分。通常有两种方式,一种是通过交叉编译的方式,在主机上编译运行嵌入式系统程序;另一种是通过板载编译方式,直接在开发板上编译运行程序。一般来说,板载编译的方式速度较慢,但对于嵌入式开发板的测试和调试非常方便。 总之,嵌入式Linux开发板嵌入式系统开发的一种重要方式,通过这种方式可以快速构建出自己所需的某种特定应用系统。当然,开发过程中也要考虑到硬件和系统控制等相关方面的问题,以使用更加安全稳定的系统运行设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值