1. 设备树配置:

UART2

BT_WAKE_DEV gpio2-15 //

BT_HOST_WAKE gpio2-13 //INPUT 主控唤醒 可不用先


//our bt
pinctrl_blueth: bluethgrp {fsl,pins = <MX6UL_PAD_UART2_RTS_B__UART2_DCE_RTS    0x1b0b1MX6UL_PAD_UART2_CTS_B__UART2_DCE_CTS    0x1b0b1/*MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13        0x17059 input     BT_HOST_WAKE*/MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13  gpio =  32+13 =45MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15        0x17059    /* BT_WAKE_DEV output  gpio  = 32 +15 =47*/MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09    0x17059    /*rst  output gpio = 32+9 = 41*/>;};
&flexcan2 {status = "disabled";
};&uart2 {fsl,uart-has-rtscts;
};
&iomuxc {pinctrl-0 = <&pinctrl_hog_1 &pinctrl_wifi &pinctrl_blueth>;
};

对应驱动位置的Kconfig添加如下

config BT_RTKBTUSB
tristate "RTK HCI USB driver"
depends on USB
help
RTK Bluetooth HCI USB driver

对应位置的Makefile添加如下


obj-$(CONFIG_BT_RTKBTUSB)+= rtk_btusb.o

arm-linux-gnueabihf-gcc 问题


arm-linux-gnueabihf-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.carm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
make: *** [example.o] Error 127
解决方法

关于缺少libstdc++.so.6问题

$ sudo apt-get install libc6-i386

$ sudo apt-get install libstdc++6

$ sudo apt-get install lib32stdc++6


编译zlib

./configure --prefix=/opt/arm/bluez

vi Makefile CC=arm-linux-gnueabihf-gcc LDSHARED=arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map CPP=arm-linux-gnueabihf-gcc -E AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib

make make install


编译libffi-3.0.13

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez PKG_CONFIG_PATH=/opt/arm/bluez/lib/pkgconfig CC="arm-linux-gnueabihf-gcc -L/opt/arm/bluez/lib -I/opt/arm/bluez/lib/include"


编译glib

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ PKG_CONFIG_PATH=/opt/arm/bluez/lib/pkgconfig glib_cv_stack_grows=no glib_cv_uscore=yes ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes make make install


编译expat-2.1.0

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ make make install


编译D-Bus1.9.4

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ --disable-tests./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ --disable-tests make make install


编译libical-1.0

sudo apt-get install cmake sudo apt-get install g++-arm-linux-gnueabi

export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++//arm-linux-gnueabi-g++ cmake -DCMAKE_INSTALL_PREFIX=/opt/arm/bluez make make install


编译ncurses-5.9

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ CXX="arm-linux-gnueabihf-g++"

make make install


编译Readline6.3

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ bash_cv_wcwidth_broken=yes CFLAGS+=-fPIC

vi Makefile CFLAG = -fPIC -g -o make SHLIB_LIBS=-lncurses //必须使用此后缀 make install


编译bluz

./configure --host=arm-linux-gnueabihf --prefix=/opt/arm/bluez/ PKG_CONFIG_PATH=/opt/arm/bluez/lib/pkgconfig CC="arm-linux-gnueabihf-gcc -L/opt/arm/bluez/lib -I/opt/arm/bluez/include" --disable-systemd --disable-udev --disable-cups --disable-obex --enable-library LDFLAGS="-lncurses"

报错

/opt/arm/bluez/lib/libreadline.so: undefined reference to `PC'

解决方法
-L/opt/arm/bluez/lib -lglib-2.0   -lreadline -lncurses

下添加 -l编译选项

在 client_bluetoothctl_LDADD 等XXX_LDADD变量中添加-lncurses(readline 依赖于ncurses) 凡需要 -lreadline 的在client_bluetoothctl_LDADD 等XXX_LDADD变量中面添加如下(注意顺序顺序变化可能编译不通过)

 -L/opt/arm/bluez/lib -lglib-2.0   -lreadline -lncurses

比如:

client_bluetoothctl_LDADD = gdbus/libgdbus-internal.la -L/opt/arm/bluez/lib -lglib-2.0   -L/opt/arm/bluez/lib -ldbus-1   \-lreadline -lncursesattrib_gatttool_LDADD = lib/libbluetooth-internal.la \src/libshared-glib.la -L/opt/arm/bluez/lib -lglib-2.0   -lreadline -L/opt/arm/bluez/lib -ldbus-1   \-lreadline -lncursestools_obex_client_tool_LDADD = lib/libbluetooth-internal.la \-L/opt/arm/bluez/lib -lglib-2.0   -lreadline -lncurses
在hciattach 中添加 rtk_h5选项

make make install DESTDIR=/opt/arm/bluez

添加 bluez-5.25\tools\hciattach_rtk.c

修改:bluez-5.25\tools\hciattach.h

修改:bluez-5.25\tools\hciattach.c

修改:Makefile.tools hciattach_rtk 修改:Makefile.in hciattach_rtk 添加 (同文件下参看其他设置) \bluez-5.25\tools.deps\hciattach_rtk.Po file *

参考https://github.com/22ktv/bluez-hcitools

strip 执行文件

命令 file * 查看文件属性 arm-linux-gnueabi-strip *

移植到开发板

/opt/arm/bluez/opt/arm/bluez/ 为安装环境

将/opt/arm/bluez/opt/arm/bluez/usr/下的文件复制到开发板的/sbin下 (ROOTFS自己指定)

$cp /opt/arm/bluez/opt/arm/bluez/usr/* ROOTFS/sbin

$cp /opt/arm/bluez/opt/arm/bluez/usr/hcitool ROOTFS/bin/

$cp /opt/arm/bluez/opt/arm/bluez/usr/rfcomm ROOTFS/bin/

$cp /opt/arm/bluez/opt/arm/bluez/usr/sdptool ROOTFS/bin/

复制相关的库到开发板的/lib下,不要复制链接文件 可以修改 #cp cp /opt/arm/bluez/opt/arm/bluez/lib/libbluetooth* ROOTFS/lib 复制配置文件到开发板的/etc目录下 #cp -arf /opt/arm/bluez/opt/arm/bluez/etc/bluetooth/ ROOTFS/etc/


链接蓝牙脚本

#!/bin/sh

echo 47 > /sys/class/gpio/export # BT_WAKE echo 41 > /sys/class/gpio/export # BT_RST_N

echo out > /sys/class/gpio/gpio47/direction echo out > /sys/class/gpio/gpio41/direction

echo 0 > /sys/class/gpio/gpio47/value echo 0 > /sys/class/gpio/gpio41/value usleep 500000

echo 1 > /sys/class/gpio/gpio47/value echo 1 > /sys/class/gpio/gpio41/value usleep 500000

echo 47 > /sys/class/gpio/unexport echo 41 > /sys/class/gpio/unexport usleep 500000

#brcm --enable_hci --no2bytes --tosleep 200000 --baudrate 3000000 
#--patchram /lib/firmware/bcm20710a1.hcd /dev/ttymxc1 2> /tmp/brcm_log &

hciattach -n -s 115200 /dev/ttymxc1 rtk_h5 & usleep 500000

注意rts cts rx tx 正反


mx6 CSR8670驱动移植 基于linux3.14.58相关推荐

  1. DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)

    关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...

  2. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

  3. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)_0

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

  4. 基于Linux系统mjpg_streamer流媒体移植(摄像头驱动移植)

    一.mjpg-streamer移植 主机环境 :ubuntu 14.04 编译器:arm-none-linux-gnueabi-gcc 开发板:A9 移植系统:Linux3.14 摄像头:USB摄像头 ...

  5. ARM-9 4412板、linux-3.14内核、usb转串口pl2303驱动的移植相关问题

    - ARM-9 4412板.linux-3.14内核.usb转串口pl2303驱动的移植相关问题 最近在做一个智能仓储的项目,遇到一个问题,当功能采集板Cortex-M0通过USB-UART接口和服务 ...

  6. 基于3.14内核usb摄像头驱动的移植

    一. 移植环境 1.主机: Ubuntu 12.04 64bit 发行版 2.目标机:fs4412(cortex_a9)平台 3.交叉编译器:arm-none-linux-gnueabi 4.内核版本 ...

  7. IMX6基于yocto3.14.28移植声卡wm8960

    项目需求,在基于yocto Linux3.14.28的IMX6平台下移植wm8960声卡.硬件部分如下: 声卡驱动在内核代码的sound/soc/codec,和sound/soc/fsl目录下.原代码 ...

  8. I.MX6 AW-NB177NF WIFI 驱动移植问题

    /********************************************************************************* I.MX6 AW-NB177NF ...

  9. linux3.0-内核自带led驱动移植

    **************************************************************************************************** ...

最新文章

  1. Idiomatic Python手记一: average in FP way
  2. git的团队协作开发
  3. 数据泄漏保护:你的企业的投资是否足够?
  4. Spring OXM-XStream使用别名
  5. 计算机视觉算法——Transformer学习笔记
  6. spring 配置文件模板
  7. 科研“潜规则”了解一下
  8. 研究生新生大数据!一大波00后“涌入”同济,最小博士生20岁
  9. 药盒识别/垃圾分类—高精度AI模型训练及边缘部署分享
  10. php为什么要有非静态方法,php中非静态方法的静态调用【解释】
  11. Unix 文件和目录
  12. 基于FPGA的人脸识别
  13. 声网3D空间音频技术解析:3D空间音效+空气衰减模拟+人声模糊
  14. ukey其他错误_UKEY不能识别解决方法
  15. 开源阅读书源_强力推荐一个开源阅读软件
  16. 基于51单片机智能交通灯电路方案设计
  17. 鸽子的迷信行为(pigeon superstition)
  18. HTML中enter键触发事件
  19. 自由职业接单,大平台,有保障
  20. Nature文章:纠缠不是量子计算的必要条件

热门文章

  1. 开源的调色板软件:焰火十二卷(Rickrack)
  2. 如何修改别人的GHO作品
  3. html网页里如何竖着打字,搜狗输入法怎么设置为竖排显示 怎样把横向打字变成竖向...
  4. 雨巷 喜欢文学 喜欢雨中撑伞的姑娘
  5. 64位操作系统,mysql ODBC 驱动程序和应用程序之间的体系结构不匹配
  6. 计算机网络笔记(收藏版)
  7. 这么简单的抓包神器?15块钱?两块钱就搞定!
  8. 开放式漏洞评估语言(OVAL)概述
  9. 「Activiti精品 悟纤出品」Activiti7数据库表 - 第332篇
  10. 活动回顾|ShardingSphere X openGauss,将会产生怎样的化学反应?