hisi3559的usb無線網卡驅動(rtl8192cu)(一條龍服務:內核編譯、驅動編譯、iw等工具編譯)

来源:https://www.cnblogs.com/LuoboGan/archive/2019/02/21/10411837.html
-Advertisement-
Play Games

usb無線網卡驅動(rtl8192cu) 內核編譯、驅動編譯、iw等工具編譯 環境 板卡:hi3559av100(arm64) 交叉編譯鏈:aarch64-himix100-linux- usb無線網卡:rtl8192cu(ID 0bda:8178) 1、內核編譯 在內核中,不僅要包含相應無線驅動、 ...


usb無線網卡驅動(rtl8192cu)

內核編譯、驅動編譯、iw等工具編譯

  環境 板卡:hi3559av100(arm64) 交叉編譯鏈:aarch64-himix100-linux- usb無線網卡:rtl8192cu(ID 0bda:8178)   1、內核編譯 在內核中,不僅要包含相應無線驅動、還有包含其他一些項,否則iw等等工具無法使用; 進入內核配置:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig ① 搜索:rtl8192cu(註意依賴項); ② RNDIS的API驅動和gadget driver(https://blog.csdn.net/zhenglie110/article/details/80223167): Device Drivers —>      [*] USB support —>        <*> USB Gadget Support —>               Ethernet Gadget (with CDC Ethernet support)              [*] RNDIS support 如下圖:   ③ 內核關於wireless部分80211部分:cfg80211 wireless extension(https://blog.csdn.net/faihung/article/details/82497378) Networking support ------> Wireless-----------------> cfg80211 wireless extensions compatibility   ④ 這個不太清楚是做啥的,只是看到網上寫著(https://wenku.baidu.com/view/f2d2d7ea0975f46527d3e14b.html) Device Drivers ---------> Network device support----------- > Wireless LAN---------------------> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)   2、驅動編譯 一開始在內核中沒有加③和④,以為是驅動的問題,所以找到了無線驅動源碼交叉編譯,在這個編譯過程中經歷比較痛苦,中間出了好多錯誤,但都是一開始不規範導致;除了需要驅動源代碼,還需要板卡對應內核源代碼,並且源代碼內核中一定不可以包含該驅動,否則驅動不會進行編譯; ①內核准備 .config要準備好,並且放入內核目錄下(可以看板卡對應文檔);  make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- prepare   make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- scripts 如果不按照這三步走,在內核編譯時可能會有以下提示錯誤:
  • asm/types.h不存在;
  • 提示警告:Module.symvers不存在;
②驅動源代碼 makefile: 增加CONFIG_PLATFORM_HISI3559 = y,改CONFIG_PLATFORM_I386_PC = n 增加: ifeq ($(CONFIG_PLATFORM_HISI3559), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm64 CROSS_COMPILE :=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux- KVER := 4.9.37 #內核版本 KSRC ?= /home/deepglint/linux-4.9.37 #內核位置(該位置不要太過複雜,最好複製出來) endif 編譯:make 提示錯誤:implicit declaration of function ‘csum_ipv6_magic’ 處理:在提示該錯誤的文件中增加相應的頭文件,頭文件位置通過命令在內核中:find /home/deepglint/linux-4.9.37 -name "*" | xargs grep "csum_ipv6_magic" >> 1.txt,在1.txt中搜索頭文件,net/ip6_checksum.h,增加出現錯誤的完呢建在增加 include<net/ip6_checksum.h>   ③載入驅動: 將生成的rtl8192cu.ko複製到板卡中,使用命令:insmod rtl8192cu.ko載入;如果出現錯誤:wiless_send_event未定義錯誤,則為內核中③沒有配置;   3、iw等工具交叉編譯 主要編譯內容包含:iw、iwlist、iwconfig、dhcpd ①dhcpd 用於無線網卡連接後分配IP;(來源:https://www.cnblogs.com/helloworldtoyou/p/5457504.html)
  • 下載:ftp://roy.marples.name/pub/dhcpcd(我下載的版本是:dhcpcd-6.9.4.tar.xz)
  • 配置:./configure
  • 編譯:make CC=aarch64-himix100-linux-gcc
  • 生成:直接複製dhcpd即可使用(./dhcpd wlan0)
  ②wireless_tool(包含iwlist、iwconfig)(https://blog.csdn.net/weixin_42432281/article/details/86524808)
  • 用於掃描、連接;
  • 下載:https://hewlettpackard.github.io/wireless-tools/Tools.html,如下圖(或者:https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz)
  • 編譯:Makefile ,修改:CC = aarch64-himix100-linux-gcc AR = aarch64-himix100-linux-ar RANLIB = aarch64-himix100-linux-ranlib
  • make;
  • 將生成的命令複製過去就可以直接使用;
  ③ iw(https://blog.csdn.net/lidroid/article/details/46725675) 需要提前安裝好libnl libnl:
  • 下載:http://www.infradead.org/~tgr/libnl/files/ 我這裡選擇的是libnl-3.2.25.tar.gz
  • 配置編譯:./configure --host=aarch64-himix100-linux --prefix=$PWD/tmp 
make( 如果出現錯誤:  sudo apt-get install bison sudo apt-get install flex) make install
  • 生成:最終文件在當前目錄下的TMP;
  iw:
  • 下載:https://www.kernel.org/pub/software/network/iw/(註意下載4.0版本,其他版本沒有編譯通過)
  • export PKG_CONFIG_PATH=/home/deepglint/Hi3559AV100R001C02SPC010/iw/libnl-3.2.25/TMP/lib/pkgconfig:$PKG_CONFIG_PATH
  • 修改:NL3xFOUND := Y
  • make 便可生成iw;
  openssl(https://blog.csdn.net/shunrenwang/article/details/80440647)
  • 下載 https://www.openssl.org/(openssl-1.0.2h)
  • ./config no-asm shared --prefix=$(pwd)/__install
  • make depend
  • 修改Makefile:
將下麵 CC= gcc AR= ar $(ARFLAGS) r NM= nm 修改為 CC= aarch64-himix100-linux-gcc AR= aarch64-himix100-linux-ar $(ARFLAGS) r NM= aarch64-himix100-linux-nm   刪除-m64
  •  make clean
  •  make
  •  make install
  libnl(為編譯wpa_supplicant.conf https://blog.csdn.net/shunrenwang/article/details/80439876)
  • 下載: http://www.infradead.org/~tgr/libnl/(libnl-3.2.25.tar.gz )
  • ./configure CC=aarch64-himix100-linux-gcc --host=aarch64-himix100-linux --enable-static --enable-shared LIBS=-lpthread --prefix=$(pwd)/__install
  •  make clean
  •  make
  •  make install
    wpa_supplicant(https://blog.csdn.net/shunrenwang/article/details/80448959)
  • 下載http://w1.fi/wpa_supplicant/(wpa_supplicant-2.5.tar.gz )
  • cd wpa_supplicant-2.5/wpa_supplicant/
  • cp defconfig .config
  • 修改.config
將#CONFIG_LIBNL32=y 修改為 CONFIG_LIBNL32=y
  • 修改Makefile
增加下麵幾行(地址需要根據實際編譯的地址改變) #openssl  CFLAGS += -I/home/deepglint/8192cu/wpa_supplication/openssl-1.0.2h/__install/include/ LIBS += -L/home/deepglint/8192cu/wpa_supplication/openssl-1.0.2h/__install/lib LIBS_p += -L/home/deepglint/8192cu/wpa_supplication/openssl-1.0.2h/__install/lib #libnl CFLAGS += -I/home/deepglint/Hi3559AV100R001C02SPC010/iw/libnl-3.2.25/TMP/include/libnl3/ CFLAGS += -I/home/deepglint/Hi3559AV100R001C02SPC010/iw/libnl-3.2.25/TMP/include/ LIBS += -L/home/deepglint/Hi3559AV100R001C02SPC010/iw/libnl-3.2.25/TMP/lib/  
  •  make clean
  •  make CC=aarch64-himix100-linux-gcc(有些列印 No package 'libnl-3.0' found,可以忽略)
  wpa_supplicant使用配置: 設置配置文件:vi /etc/wpa_supplicant.conf 內容(ctrl_interface為文件夾,update_config表示wpa_cli可以更新該配置文件): update_config=1 ctrl_interface=/etc/wpa_supplicant network={     ssid="DG"     proto=WPA RSN     key_mgmt=WPA-PSK WPA-EAP     pairwise=CCMP     group=CCMP     psk="On1shiuva4" } 運行: wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d &  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、curl -X POST “http://XXXXXXX”這種請求方式參數直接寫在URL裡面的,而不是body ...
  • 本周,運維告知部署的服務被掃描發現漏洞,涉及的軟體分別為 ,`ZooKeeper Elasticsearch`. 因為最近任務繁重,人力資源緊張,因此無法抽出更多時間調整代碼,添加許可權認證. 與軟體部署人員確認,上述三個軟體均為內網訪問,因此採用以下方式進行處理: (1) 設置訪問 地址,即僅允許同 ...
  • wc wc命令用於報告文本文件的一些統計計數,例如行數、單詞數、位元組數等。 語法如下。 --files0-from=F:這個選項幾乎沒見過有人使用,我也看不懂,因此就忽略掉了。 預設情況下顯示3個計數,從左往右分別是行數、單詞數和位元組數。 如果被統計的文件數大於1,那麼還會顯示一行總計。 可以通過選 ...
  • 內核版本:Linux 4.19 操作系統通過系統調用為運行於其上的進程提供服務。 那麼,在應用程式內,調用一個系統調用的流程是怎樣的呢? 我們以一個假設的系統調用 xyz() 為例,介紹一次系統調用的所有環節。 如上圖所示,系統調用執行的流程如下: ~~~ 1. 應用程式代碼調用 xyz(),該函數 ...
  • 一、Linux操作系統版本 二、背景:在項目中當我們配置好JDK環境變數、Tomcat環境變數,通過 使環境變數生效時,發現會報錯,如圖 三、解決 個人尚不知出現原因,只知道註釋掉下麵這兩行後即可使環境生效 ...
  • 一、LCD顯示圖像的過程如下: 其中,VSYNC和HSYNC是有寬度的,加上後如下: 參數解釋: HBP(Horizontal Back Porch)水平後沿:在每行或每列的象素數據開始輸出時要插入的象 素時鐘周期數 HFP(Horizontal Front Porch )水平前沿:在每行或每列的象 ...
  • mysql配置文件 mysql的配置文件為/etc/my.cnf 配置文件查找次序:若在多個配置文件中均有設定,則最後找到的最終生效 mysql常用配置文件參數: 參數 |說明 : |: port = 3306 | 設置監聽埠 socket = /tmp/mysql.sock | 指定套接字文件位 ...
  • 摘要 通過前面的基礎學習,本章進入最為激動的機器人自主導航的學習。在前面的學習鋪墊後,終於迎來了最大樂趣的時刻,就是賦予我們的miiboo機器人能自由行走的生命。本章將圍繞機器人SLAM建圖、導航避障、巡航、監控等內容展開。本章內容: 1.在機器人上使用感測器 2.google-cartograph ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...