mx6 CSR8670驱动移植 基于linux3.14.58
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相关推荐
- DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)
关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...
- SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)
由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...
- SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)_0
由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...
- 基于Linux系统mjpg_streamer流媒体移植(摄像头驱动移植)
一.mjpg-streamer移植 主机环境 :ubuntu 14.04 编译器:arm-none-linux-gnueabi-gcc 开发板:A9 移植系统:Linux3.14 摄像头:USB摄像头 ...
- ARM-9 4412板、linux-3.14内核、usb转串口pl2303驱动的移植相关问题
- ARM-9 4412板.linux-3.14内核.usb转串口pl2303驱动的移植相关问题 最近在做一个智能仓储的项目,遇到一个问题,当功能采集板Cortex-M0通过USB-UART接口和服务 ...
- 基于3.14内核usb摄像头驱动的移植
一. 移植环境 1.主机: Ubuntu 12.04 64bit 发行版 2.目标机:fs4412(cortex_a9)平台 3.交叉编译器:arm-none-linux-gnueabi 4.内核版本 ...
- IMX6基于yocto3.14.28移植声卡wm8960
项目需求,在基于yocto Linux3.14.28的IMX6平台下移植wm8960声卡.硬件部分如下: 声卡驱动在内核代码的sound/soc/codec,和sound/soc/fsl目录下.原代码 ...
- I.MX6 AW-NB177NF WIFI 驱动移植问题
/********************************************************************************* I.MX6 AW-NB177NF ...
- linux3.0-内核自带led驱动移植
**************************************************************************************************** ...
最新文章
- Idiomatic Python手记一: average in FP way
- git的团队协作开发
- 数据泄漏保护:你的企业的投资是否足够?
- Spring OXM-XStream使用别名
- 计算机视觉算法——Transformer学习笔记
- spring 配置文件模板
- 科研“潜规则”了解一下
- 研究生新生大数据!一大波00后“涌入”同济,最小博士生20岁
- 药盒识别/垃圾分类—高精度AI模型训练及边缘部署分享
- php为什么要有非静态方法,php中非静态方法的静态调用【解释】
- Unix 文件和目录
- 基于FPGA的人脸识别
- 声网3D空间音频技术解析:3D空间音效+空气衰减模拟+人声模糊
- ukey其他错误_UKEY不能识别解决方法
- 开源阅读书源_强力推荐一个开源阅读软件
- 基于51单片机智能交通灯电路方案设计
- 鸽子的迷信行为(pigeon superstition)
- HTML中enter键触发事件
- 自由职业接单,大平台,有保障
- Nature文章:纠缠不是量子计算的必要条件
热门文章
- 开源的调色板软件:焰火十二卷(Rickrack)
- 如何修改别人的GHO作品
- html网页里如何竖着打字,搜狗输入法怎么设置为竖排显示 怎样把横向打字变成竖向...
- 雨巷 喜欢文学 喜欢雨中撑伞的姑娘
- 64位操作系统,mysql ODBC 驱动程序和应用程序之间的体系结构不匹配
- 计算机网络笔记(收藏版)
- 这么简单的抓包神器?15块钱?两块钱就搞定!
- 开放式漏洞评估语言(OVAL)概述
- 「Activiti精品 悟纤出品」Activiti7数据库表 - 第332篇
- 活动回顾|ShardingSphere X openGauss,将会产生怎样的化学反应?