本文檔介紹 SDIO WIFI 在 iMX6 開發板 QtE 的移植方法,配套資料在網盤資料“iTOP-i.MX6 開發板資料匯總(不含光盤資料)\08_iTOP-i.MX6 開發板 Linux 系統開發資料\16-Qt 系統移植 WiFi-mt6620”目錄下。請注意:移植過程中的部分庫和工具,在源碼或者鏡像中可能已經存在,大家可以使用自己生成的覆蓋即可。提供的文件如下圖所示,分別為三個源碼壓縮包、編譯好的庫位于 lib 文件夾、wpa_supplicant 工具位于 sbin 文件夾、6620_launcher,需要的驅動在 x6MtDirvers 文件夾,以及腳本 make_mt6620.sh。![]() 45.1 6620_launcher 6620_launcher 工具是作為后臺的一個服務程序運行,該服務會配置串口的工作參數,下載固件補丁到 MT6620 中,它位于開發板的“/usr/bin/”目錄下,在系統中內置,用戶可以直接覆蓋。 45.2 移植 wpa_supplicant 在進行編譯之前要先修改編譯器為 4.3.2 版本,如何設置編譯器參見手冊 19.1 章節“Qt4.7 編譯器的安裝”。另外為了避免使用環境變量設置編譯器而可能出現的問題,文檔中大部分編譯是使用編譯器的絕對路徑,用戶也應先找到自己編譯器的絕對路徑待用。下圖是本次編譯使用的編譯器以及編譯器壓縮包。 ![]() 由上圖可知該編譯器的絕對路徑為“/usr/local/arm/4.3.2/bin/ arm-none-linux-gnueabi-gcc”。 用戶需要將提供的源碼壓縮包拷貝到 Ubuntu 的工作目錄,分別解壓 ,如下圖所示。 ![]() 45.2.1 移植 OpenSSL 首先進入目錄 openssl-1.1.0g,內容如下圖所示。 ![]() 執行下面指令,做相應配置。 ./config no-asm shared --prefix=$(pwd)/__install 執行完成后如下圖所示。 ![]() no-asm: 是在交叉編譯過程中不使用匯編代碼代碼加速編譯過程,原因是它的匯編代碼是不支持 arm格式。 shared :生成動態連接庫。 --prefix :指定 make install 后生成目錄的路徑,不修改此項則默認為 OPENSSLDIR 目錄 (/usr/local/ssl)。 使用命令“vim Makefile”打開 Makefile,搜索 CFLAG,定位到下圖中所示位置。 ![]() 刪除上圖中紅框中的“-m64”,完成后 CFLAG 應如下圖所示。 ![]() 執行以下命令,編譯 OpenSSL 庫,注意這里使用的是交叉編譯器的絕對路徑。 make CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi- 編譯完成后如下圖所示。 ![]() 執行下面命令,將編譯好的庫文件拷貝到第一步指定的目錄 make install 如下圖所示在當前目錄下的__install 目錄下生成了頭文件和庫文件: ![]() include 下文件在編譯程序的時候需要指定該 include 的路徑。而 lib 下在程序運行時會用到,需要將 lib 下所有文件包括文件夾拷貝到開發板/lib 文件夾中。 45.2.2 移植 libnl libnl 是為了方便應用程序使用 netlink 接口而開發的一個庫。這個庫為原始 netlink 消息傳遞以及不同的 netlink family 專用接口提供了一個統一的接口。 進入目錄“libnl-1.1.4/”,如下圖所示。 ![]() 執行下面的指令,配置編譯架構。 ./configure --prefix=$(pwd)/__install --enable-shared --enable-static 其中--prefix=$(pwd)/__install 指定了編譯出來的庫存放的路徑,一般將其放在當前目錄下的__install 目錄下,執行結果如下圖所示。 ![]() 執行下面的命令,編譯庫 make CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc完成后如下圖所示。 ![]() 使用命令“make install”, 將編譯好的庫文件拷貝到指定目錄。在當前目錄下的__install 目錄下生成了頭文件和庫文件 ,如下圖所示。 ![]() include 目錄下文件在編譯程序的時候會用到,而 lib 下在程序運行時會用到。故在移植 hostapd 的時候需要指定 include 的路徑,需要將 lib 目錄下所有文件包括文件夾拷貝到開發板中的/lib 文件夾中。 |