【Linux驱动开发IMX6ULL】WS73 驱动移植的详细教程基于USB协议--WIFi网卡、蓝牙BLE、星闪SLE

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 
相关推荐
.小墨迹6 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
Lsir10110_6 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
Sheffield6 小时前
command和shell模块到底区别在哪?
linux·云计算·ansible
历程里程碑6 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
郝学胜-神的一滴6 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
承渊政道6 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
技术路上的探险家6 小时前
Ubuntu下Docker与NVIDIA Container Toolkit完整安装教程(含国内源适配)
linux·ubuntu·docker
代码AC不AC6 小时前
【Linux】深入理解缓冲区
linux·缓冲区·标准错误
Doro再努力7 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
Lsir10110_7 小时前
【Linux】进程信号(上半)
linux·运维·服务器