PowerPC平臺移植RTL8822BU-創(chuàng)新互聯(lián)

目錄
  • 編譯驅(qū)動文件
    • 修改Makefile
    • 修改代碼
  • 安裝前置工具
  • 編譯openssl
  • 編譯libnl
    • 解決報錯
  • 編譯wpa_supplicant
    • 解決報錯
  • 編譯hostapd
  • 移植入嵌入式

創(chuàng)新互聯(lián)專注于立山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供立山營銷型網(wǎng)站建設(shè),立山網(wǎng)站制作、立山網(wǎng)頁設(shè)計、立山網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造立山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供立山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。編譯驅(qū)動文件 修改Makefile

在這里插入圖片描述

修改代碼

由于我這邊kernel用的是比較老的,有些接口不支持,所以需要做一些處理

  1. 關(guān)于isDirReadable接口
    os_dep\osdep_service.c代碼中屏蔽掉下面函數(shù)
int rtw_is_dir_readable(const char *path)
  1. 關(guān)于IPV6支持
    由于我這邊嵌入式中不需要IPV6 故關(guān)閉IPV6選項/kernel中開啟IPV6
    關(guān)閉IPV6:include\rtw_br_ext.h代碼中對CL_IPV6_PASS宏進行屏蔽
//#define CL_IPV6_PASS	1
  1. 修改ieee80211頭結(jié)構(gòu)體信息
    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頭結(jié)構(gòu)體信息,需要修改部分代碼中的對于該結(jié)構(gòu)體成員的引用
    core\crypto\ccmp.c、core\crypto\gcmp.c中所有frame_control改為frame_ctl
  2. 關(guān)閉P2P
    關(guān)閉P2P可以釋放較大驅(qū)動空間
    include\autoconf.h中屏蔽CONFIG_P2P
//#define CONFIG_P2P	1
  1. 大小端問題
    hal\hal_com.c代碼中某接口入?yún)⑴c函數(shù)原型的制定數(shù)據(jù)類型長度不一致,導(dǎo)致了大小端異常
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_DEBUG
	if (hal_data->efuse_file_status == EFUSE_FILE_LOADED)
		RTW_MAP_DUMP_SEL(RTW_DBGDUMP, "EFUSE FILE", hal_data->efuse_eeprom_data, mapsize);
	else
		RTW_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 flex
	sudo 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

異常,出現(xiàn)錯誤:PTHREAD_MUTEX_RECURSIVE未聲明

vim Makefile

CNF_CPPFLAGS=-DNDEBUG -D_GNU_SOURCE
編譯libnl
wget http://www.infradead.org/~tgr/libnl/files/libnl-3.2.0.tar.gz

tar 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/lib


make
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一下,發(fā)現(xiàn)該宏控位于include/libnl3/netlink/netlink-kernel.h文件中,但是該文件被預(yù)處理屏蔽了,打開屏蔽,
    并前往…/src/drivers/driver_nl80211.c添加該頭文件的引用
#include
  1. 解決結(jié)構(gòu)體重定義
/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代碼中的這三個結(jié)構(gòu)體刪除

  1. 拷貝kernel源碼中的頭文件信息到編譯鏈頭文件路徑

    抱歉,由于距離我做這個任務(wù)時間有些長,我不記得我將那些文件拷貝過去了,這里主要是編譯過程中缺少某個結(jié)構(gòu)體定義,那就去kernel源碼/libnl輸出路徑中搜索哪個文件包含這個變量,將之復(fù)制到編譯鏈的頭文件中,該目錄位于

/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 .config

CONFIG_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 -lcrypto

make
移植入嵌入式

需要拷貝過去的文件如下

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

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章名稱:PowerPC平臺移植RTL8822BU-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://bm7419.com/article14/dsdige.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站營銷企業(yè)網(wǎng)站制作、企業(yè)建站、網(wǎng)站導(dǎo)航用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)