WS73 驱动移植的详细教程基于USB协议--WIFi网卡、蓝牙BLE、星闪SLE
- [1. 简单描述](#1. 简单描述)
- [2. 编译sdk相关说明](#2. 编译sdk相关说明)
- [2. 编译SDK](#2. 编译SDK)
- [3. Linux下安装模组驱动(需要将文件copy到开发板)](#3. Linux下安装模组驱动(需要将文件copy到开发板))
- [3. BLE测试](#3. BLE测试)
- [3. WIFI测试](#3. WIFI测试)
1. 简单描述
1、完全基于亿佰特iMX6ULLBTB核心板 ECK20-6Y28C5E8-I开发板及测试资料;
2、正点原子的内核版本比较低、故使用亿佰特,内核版本为5.10。
3、个人学习记录、不会很详细。
4、参考资料连接
2. 编译sdk相关说明
- 因为亿佰特的内核是移植好的、并且用USB不需要配置设备树、修改Linux板子内核配置、以下是修改内核需要用到相关指令。
bash
make mrproper
make distclean
source ./build.sh e
make O=out menuconfig
2. 编译SDK
- SDK相关配置
bash
WSCFG_KERNEL_DIR="/home/guistar/code/ebyte_linux_v1.1/out/"
WSCFG_CROSS_COMPILE="arm-linux-gnueabihf-"
WSCFG_ARCH_NAME="arm"
WSCFG_BUS_USB=y
- 开始编译:
bash
make all
| ko路径 | sdk_root_dir/output/bin |
|---|---|
| bin路径 | /sdk_root_dir/firmware/us |
3. Linux下安装模组驱动(需要将文件copy到开发板)
| 文件 | 存放路径(默认) |
|---|---|
| firmware/tr5330.bin | /etc/tr5330 |
| firmware/wifi_cali.bin | /etc/tr5330 |
| firmware/btc_cali.bin | /etc/tr5330 |
| firmware/wow.bin | /etc/tr5330 |
| output/tr5330_cfg.ini | /etc |
| output/plat_soc.ko | 任意目录,如:/usr/komod |
| output/wifi_soc.ko | 任意目录,如:/usr/komod |
bash
insmod plat_soc.ko
insmod ble_soc.ko
3. BLE测试
- BLE测试工具编译
bash
sudo apt-get update
sudo apt-get install gettext
sudo apt-get install libglib2.0-dev
sudo apt install python-docutils
sudo apt install python3-docutils
sudo apt-get install libtool
sudo apt-get install autoconf
sudo apt install pkg-config
- 下载压缩文件并放至 SDK 相应目录
/sdk_root_dir/open_source
bash
tar -xvf bluez-5.64.tar.xz
tar zxvf expat-2.4.6.tar.gz
tar zxvf libical-1.0.tar.gz
tar zxvf dbus-1.12.20.tar.gz
tar zxvf zlib-1.2.11.tar.gz
tar zxvf libffi-3.3.tar.gz
tar zxvf ncurses-6.3.tar.gz
tar zxvf readline-8.1.tar.gz
tar zxvf pcre-8.45.tar.gz
tar zxvf gettext-0.21.tar.gz
tar -xvf glib-2.40.0.tar.xz
- 添加对 glib 的修改,步骤如下
1、 打开 glib-2.40.0/glib/gdate.c 文件。
2、找到 g_date_strftime 方法定义。
3、 在方法前后增加如下代码:
c
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
gsize
g_date_strftime (gchar *s,
gsize slen,
const gchar *format,
const GDate *d)
#pragma GCC diagnostic pop
4、打开 bluez-5.64/tools/test-runner.c 、修改如下。
bash
#include "lib/bluetooth.h"
#include "lib/hci.h"
#include "lib/hci_lib.h"
#include "tools/hciattach.h"
#ifndef MS_STRICTATIME
#define MS_STRICTATIME (1 << 24)
#endif
#ifndef WAIT_ANY
#define WAIT_ANY (-1)
#endif
- 编译 bluez 依赖库,相关指令如下:
c
export PKG_CONFIG_LIBDIR=/vendor/lib/pkgconfig/
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/usr/include/
- 编译 expat
bash
cd expat-2.4.6/
bash
./configure --prefix=/vendor --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc
bash
CFLAGS="-fPIC -fstack-protector-all" LDFLAGS="-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack"
bash
sudo -i
make
cd xxx
make install
- 编译 libical
bash
cd libical-1.0/
export CC=arm-linux-gnueabihf-gcc
apt install cmake
cmake -DCMAKE_INSTALL_PREFIX=/vendor
make -j8
make install
- 编译 dbus(编译安装dbus的时候,环境上最好不要有后面依赖库的残留,否则在编译的时候会报错 )
bash
cd dbus-1.12.20/
bash
./configure --prefix=/vendor --host=arm-linux-gnueabihf --with-x=no --enable-abstract-sockets CC=arm-linux-gnueabihf-gcc CFLAGS="-I/vendor/include -fstack-protector-all -fPIC -fPIE -pie" LDFLAGS="-L/vendor/lib -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -fstack-protector-all" ac_cv_search_pthread_mutexattr_init= ac_cv_search_pthread_cond_timedwait= ac_cv_search_pthread_mutexattr_settype=
bash
make
make install
- 编译 zlib
c
cd zlib-1.2.11/
CC=arm-linux-gnueabihf prefix=/vendor CFLAGS="-fstack-protector-all -fPIC"
LDFLAGS="-L/vendor/lib -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack" ./configure
make
make install
- 编译 libffi
bash
cd libffi-3.3/
3. WIFI测试
- 将下载压缩包放置SDK根目录
bash
mkdir -p open_source/libnl && tar -xzf libnl-3.5.0.tar.gz -C open_source/libnl/ --strip-component=1
mkdir -p open_source/openssl && tar -xzf openssl-1.1.1n.tar.gz -C open_source/openssl/ --strip-component=1
mkdir -p open_source/wpa_supplicant && tar -xzf wpa_supplicant-2.10.tar.gz -C open_source/wpa_supplicant/ --strip-component=1
mkdir -p open_source/hostapd && tar -xzf hostapd-2.10.tar.gz -C open_source/hostapd/ --strip-component=1
patch -p1 < wpa_supplicant_2_10_linux.patch
make tools
- 将 SDK 中 output/wifi_service 目录下"libnl-3.so.200.26.0"和"libnl-genl-3.so.200.26.0"拷贝至单板的/lib 目录下,并创建软链接。
bash
ln -sf libnl-3.so.200.26.0 libnl-3.so.200
ln -sf libnl-genl-3.so.200.26.0 libnl-genl-3.so.200
- 将 SDK 中 output/wifi_service 目录下"wpa_supplicant""wpa_cli""hostapd"拷贝至单板的/bin 目录下,添加可执行权限。
bash
cp -rf wpa_supplicant wpa_cli hostapd /bin/
chmod a+x wpa_supplicant
chmod a+x wpa_cli
chmod a+x hostapd