PowerPC平台移植RTL8822BU
创始人
2024-04-11 03:22:32

目录

  • 编译驱动文件
    • 修改Makefile
    • 修改代码
  • 安装前置工具
  • 编译openssl
  • 编译libnl
    • 解决报错
  • 编译wpa_supplicant
    • 解决报错
  • 编译hostapd
  • 移植入嵌入式

编译驱动文件

修改Makefile

在这里插入图片描述

修改代码

由于我这边kernel用的是比较老的,有些接口不支持,所以需要做一些处理

  1. 关于isDirReadable接口
    os_dep\osdep_service.c代码中屏蔽掉下面函数
int rtw_is_dir_readable(const char *path)
  1. 关于IPV6支持
    由于我这边嵌入式中不需要IPV6 故关闭IPV6选项/kernel中开启IPV6
    关闭IPV6:include\rtw_br_ext.h代码中对CL_IPV6_PASS 宏进行屏蔽
//#define CL_IPV6_PASS	1
  1. 修改ieee80211头结构体信息
    include\ieee80211.h代码中
struct rtw_ieee80211_hdr {u16 frame_ctl;u16 duration_id;u8 addr1[ETH_ALEN];u8 addr2[ETH_ALEN];u8 addr3[ETH_ALEN];u16 seq_ctrl;u8 addr4[ETH_ALEN];
} __attribute__((packed));struct ieee80211_hdr {u16 frame_ctl;u16 duration_id;u8 addr1[ETH_ALEN];u8 addr2[ETH_ALEN];u8 addr3[ETH_ALEN];u16 seq_ctrl;u8 addr4[ETH_ALEN];
} __attribute__((packed));
  1. 由于修改ieee80211头结构体信息,需要修改部分代码中的对于该结构体成员的引用
    core\crypto\ccmp.c、core\crypto\gcmp.c中所有frame_control改为frame_ctl
  2. 关闭P2P
    关闭P2P可以释放较大驱动空间
    include\autoconf.h中屏蔽CONFIG_P2P
//#define CONFIG_P2P	1
  1. 大小端问题
    hal\hal_com.c代码中某接口入参与函数原型的制定数据类型长度不一致,导致了大小端异常
void rtw_dump_cur_efuse(PADAPTER padapter)
{//原来是  int mapsize =0;u16 mapsize =0;HAL_DATA_TYPE *hal_data = GET_HAL_DATA(padapter);EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN , (void *)&mapsize, _FALSE);if (mapsize <= 0 || mapsize > EEPROM_MAX_SIZE) {RTW_ERR("wrong map size %d\n", mapsize);return;}#ifdef CONFIG_RTW_DEBUGif (hal_data->efuse_file_status == EFUSE_FILE_LOADED)RTW_MAP_DUMP_SEL(RTW_DBGDUMP, "EFUSE FILE", hal_data->efuse_eeprom_data, mapsize);elseRTW_MAP_DUMP_SEL(RTW_DBGDUMP, "HW EFUSE", hal_data->efuse_eeprom_data, mapsize);
#endif
}
  1. 增加IW_ENCODE_ALG_AES_CMAC定义
    os_dep\linux\ioctl_linux.c
#define IW_ENCODE_ALG_AES_CMAC		5

代码修改完毕后

安装前置工具

	sudo apt-get -y install flexsudo apt-get -y install bison

编译openssl

下载openssl-1.1.1a

./Configure linux-ppc shared no-asm --prefix=/home/lsy/work/tools/openssl CROSS_COMPILE=powerpc-e300c3-linux-
make

异常,出现错误:PTHREAD_MUTEX_RECURSIVE未声明

vim MakefileCNF_CPPFLAGS=-DNDEBUG -D_GNU_SOURCE

编译libnl

wget http://www.infradead.org/~tgr/libnl/files/libnl-3.2.0.tar.gztar xvf libnl-3.2.0.tar.gz
cd libnl-3.2.0
./configure --host=powerpc-e300c3-linux --prefix=/home/lisuyang/work/tools/libnl CFLAGS=-I/home/lisuyang/work/code/kz_linux-2.6.20/include
make
make install

解决报错

  1. error: linux/tc_ematch/tc_em_text.h: No such file or directory
cp ../kz_linux-2.6.20/include/linux/tc_ematch/tc_em_text.h include/linux/tc_ematch/

编译wpa_supplicant

export PKG_CONFIG_PATH=/home/lisuyang/work/tools/libnl/lib/pkgconfig
tar xvf wpa_supplicant-2.7.tar.gz
cd wpa_supplicant-2.7/wpa_supplicant
cp deconfig .config
vim .config
CC = powerpc-e300c3-linux-gcc
#openssl 库和头文件路径
CFLAGS += -I/home/lsy/work/tools/openssl/include
LIBS += -L/home/lsy/work/tools/openssl/lib -lssl -lcrypto
#libnl 库和头文件路径
CFLAGS += -I/home/lsy/work/tools/libnl/libnl3
LIBS += -L/home/lsy/work/tools/libnl/libmake
make install

解决报错

  1. libnl3/netlink/netlink.h中缺少linux/netfilter/nfnetlink.h
    到kernel源码下面拷贝一份过来
    然后改下netlink.h中nfnetlink.h的引用路径
cp linux-2.6.20/include/linux/netfilter/nfnetlink.h /home/lsy/work/tools/libnl/include/libnl3/netlink/netfilter/
vim /home/lsy/work/tools/libnl/include/libnl3/netlink/netlink.h
//#include 
#include 
  1. …/src/drivers/driver_nl80211.c:缺少NLMSG_HDRLEN宏控
    到libnl目录下grep一下,发现该宏控位于include/libnl3/netlink/netlink-kernel.h文件中,但是该文件被预处理屏蔽了,打开屏蔽,
    并前往…/src/drivers/driver_nl80211.c添加该头文件的引用
#include 
  1. 解决结构体重定义
/home/lsy/work/tools/libnl/include/libnl3/netlink/netlink-kernel.h:18: error: redefinition of 'struct sockaddr_nl'
/home/lsy/work/tools/libnl/include/libnl3/netlink/netlink-kernel.h:42: error: redefinition of 'struct nlmsghdr'
/home/lsy/work/tools/libnl/include/libnl3/netlink/netlink-kernel.h:182: error: redefinition of 'struct nlmsgerr'

将netlink-kernel.h代码中的这三个结构体删除

  1. 拷贝kernel源码中的头文件信息到编译链头文件路径

    抱歉,由于距离我做这个任务时间有些长,我不记得我将那些文件拷贝过去了,这里主要是编译过程中缺少某个结构体定义,那就去kernel源码/libnl输出路径中搜索哪个文件包含这个变量,将之复制到编译链的头文件中,该目录位于

/opt/freescale/usr/local/gcc-4.0.2-glibc-2.3.6-nptl-2/powerpc-e300c3-linux/powerpc-e300c3-linux/sys-include

编译hostapd

我这边下载的是hostapd-0.6.9

export PKG_CONFIG_PATH=/home/lisuyang/work/tools/libnl/lib/pkgconfig
tar xvf hostapd-0.6.9.tar.gz
cd hostapd-0.6.9/hostapd
cp deconfig .config
vim .configCONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_NL80211=y
CFLAGS += -I/home/lsy/work/tools/libnl/include/libnl3
LIBS += -L/home/lsy/work/tools/libnl/lib
CONFIG_LIBNL20=y
CC = powerpc-e300c3-linux-gcc
CONFIG_TLS = internal
CONFIG_INTERNAL_LIBTOMMATH = y
CFLAGS += -I/home/lsy/work/tools/openssl/include
LIBS += -L/home/lsy/work/tools/openssl/lib -lssl -lcryptomake 

移植入嵌入式

需要拷贝过去的文件如下

hostapd
wpa_supplicant
libnl/lib/.so
openssl/
.so

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...