1. 程式人生 > >MT7628 7688 SDK編譯中的坑以及增加wifi驅動

MT7628 7688 SDK編譯中的坑以及增加wifi驅動

最開始,第一步我們先拿最純淨的MediaTek_ApSoC_SDK_4300_20140916.tar開刀,不增加無線驅動。
1、按照sdk裡的知道文件來說,先編譯安裝幾個工具包的,編譯mksquash_lzma-3.2的時候出現瞭如下問題:

  1. /home/test/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o):在函式‘sqlzma_un’中:  
  2. uncomp.c:(.text+0x67):對‘inflateReset’未定義的引用  
  3. uncomp.c:(.text+0xa7):對‘inflate’未定義的引用  
  4. uncomp.c:(.text+0x1b2):對‘zError’未定義的引用  
  5. /home/test/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o):在函式‘sqlzma_init’中:  
  6. uncomp.c:(.text+0x3f0):對‘inflateInit_’未定義的引用  
  7. collect2: 錯誤: ld 返回 1  
  8. make[1]: *** [unsquashfs] 錯誤 1  

首先,需要確保安裝了zlib庫。zlib1g,zlib1g-dbg,zlib1g-dev

其次,開啟安裝目錄下的squashfs3.2-r2/squashfs-tools,找到Makefile檔案,找到

  1. LDLIBS += -lz -L${LzmaAlone} -L${LzmaC}  
把 -lz 去掉,成:
  1. LDLIBS += -L${LzmaAlone} -L${LzmaC}  

然後在找到包含LDLIBS的兩行,後邊添上 -lz 即可

  1. mksquashfs: LDLIBS += -lpthread -lunlzma_r -llzma_r -lstdc++ -lz  
  2. unsquashfs: LDLIBS += -lunlzma -lz  

./configure

make

make install

編譯成功!

2、在編譯 squashfs4.2時候編譯出現以下錯誤:

gzip_wrapper.c:23:18: fatal error: zlib.h: No such file or directory compilation terminated.

make: *** [gzip_wrapper.o] Error 1

出現此錯誤需要安裝一個軟體:

sudo apt-get install zlib1g-dev

如果編譯仍然出現
fatal error: lzma.h: No such file or directory錯誤,

需要安裝一下“:

liblzma-dev
可以從 sudo apt-cache search "liblzma"
找到軟體包後
sudo apt-get install liblzma-dev
安裝完成後就可以編譯通過
3、此時可以順利編譯通過SDK了,可以生成二進位制image,下載到7628板子後,發現、竟然發現lzma他大爺校驗的錯誤?有木有?什麼意思嘛!!!
"lzma error 1 -must reset board to recover" 
後來用度娘一搜,manfeel大神碰到過這個問題,問題源自於lzma版本錯誤,再次感謝manfeel!

進入source/vendors/Ralink/MT7628,檢視Makefile

發現這個該死的Makefile呼叫的居然是系統預設的lzma檔案,Ubuntu12.04的lzma版本是:

xz (XZ Utils) 5.1.0alpha         liblzma 5.1.0alpha

果斷修改,將4.32.7版本的lzma拷貝到source目錄,修改Makefile如下:

#manfeel, do NOT use the system default lzma(5.1.0alpha), just use the 4.32.7
image: mkimage
    $(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S $(ROOTDIR)/$(LINUXDIR)/vmlinux  $(KERNELZ)
    cd $(IMAGEDIR) ; rm -f $(KERNELZ).*; ../$(COMP) -v -9 -f -S .$(COMP) $(KERNELZ)

讀者需自行蒐羅 lzma-4.32.7.tar並編譯,得到的lzma可執行檔案放在上邊的source目錄即可。
[email protected]:~/RT288x_SDK/source$ ls
autoconf.h   config.in  lib             linux-2.6.36MT.x  lzma       romfs     uClibc-0.9.33.2
config       History    linux-2.4.x     linux-2.6.36.x    Makefile   tools     user
config.arch  images     linux-2.6.21.x  linux-3.10.14.x   PatchList  uClibc++  vendors
[email protected]:~/RT288x_SDK/source$ ./lzma --version
LZMA command line tool 4.32.7
LZMA SDK 4.32
[email protected]:~/RT288x_SDK/source$ 

到這之後,可算能跑了

4、接下來,將無線驅動MT7688_LinuxAP_V4.0.1.0-Alpha_DPA_20140811.tar解壓,會解壓處mt_wifi和mt_wifi_ap兩個資料夾,將這兩個資料夾拷貝到RT288x_SDK/source/linux-2.6.36.x/drivers/net/wireless$下。接下來,我犯了一個巨大的錯誤,我錯誤的認為將wireless下的Kconfig改一下,也就是在該檔案中增加source “mt_wifi_ap/Kconfig”就可以了,接著就這麼做下去,發現一下問題:
a.MT_TX_COUNTER錯誤
後來想了半天,原始碼是不會有錯的,而且環境也配置的差不多了,應該也沒錯。後來又是一頓搜,發現source頂層目錄有一個ralink目錄,心想“該目錄會不會有詐?一般很少有人將程式碼放到核心原始碼的頂層,這麼做很不科學的”。
開啟這個目錄下的Kconfig,發現已經有了如下幾行,只不過註釋掉了。

原來貓膩就在這,他source的是embedded下的Kconfig,而該Kconfig裡又引入了mt_wifi_ap/Kconfig。
將最後那句source註釋掉。至此,Kconfig修改完畢,接下來配置核心。

頂層source目錄make menuconfig,勾選Default all settings,Customize kernel Setting。最後yes,會自動進入Linux Kernel Configuration。

Ralink Module->WiFi Driver Support:


進入Option下,去掉WAPI支援(如果有WAPI會編譯錯誤,先去掉再說):


好了,一路推出儲存,再make dep,make

最後編譯出個mango_uImage,燒入板子即可啟動。

最後,會搜到一個MT7628_AP的無線,可以連上把玩一番。
編譯過後,其實只是一個開始,以後還要移植到openwrt上,繼續加油吧。

相關推薦

MT7628 7688 SDK編譯以及增加wifi驅動

最開始,第一步我們先拿最純淨的MediaTek_ApSoC_SDK_4300_20140916.tar開刀,不增加無線驅動。 1、按照sdk裡的知道文件來說,先編譯安裝幾個工具包的,編譯mksquash_lzma-3.2的時候出現瞭如下問題: /home/test/RT

DirectShow SDK編譯易出現的問題

由於需要進行視訊採集,昨天開始搜尋資料,發現現在流行的是DirectShow來進行開發,昨天下載安裝了個DirectX 9.0 SDK,於是痛苦的配置旅程開始了。現在我們來重溫一下這個痛苦的歷程吧。先介紹下我的配置吧: Microsoft DirectX 9.0 SDK

Filezilla配置FTP以及辦法

我們 ont www. 老板 open 靠譜 不出 鏈接 network 做本科生助教,老板讓配置一個FTP傳資料交作業,找了一臺Windows服務器搗鼓,開始按網上教程自己配置特別麻煩,何西西說用Filezilla比較方便,就去Filezilla官網下載了Filezill

總結部署fabirc以及除錯go sdk 遇到的

最近在聯調fabirc網路遇到了很多坑,主要是對fabric不夠熟悉,所以解決問題的時候即使看到了錯誤資訊,也不能很快的確定具體是那裡出現了問題,而且問題確實谷歌不到,所以簡單記錄一下。 坑1: CA Certificate is not valid, (SN: 23

(MySql的亂碼解決)關於相同sql指令在eclipse查詢不到結果,在mysql卻能查詢到結果,以及增加資料時列表顯示“?”解決方案

在最初使用jdbc連線資料庫時,大家一定經常遇到一下兩個問題: 1、相同sql指令在eclipse中查詢不到結果,在mysql中卻能查詢到正確結果。 2、在增加列表資料時,雖然能夠增加成功,但增加的資料中文全部變成了“?” 下面將為大家解決這兩個問題。 這兩個問題其實都是編碼不同導致

小專案踩以及專案過程的注意點(第一篇)

批量整合後臺頁面 1、修改批量檔案的字尾名,下面將字尾.html改為.php 方法:開啟命令提示符,切換到我們要操作的目錄,用ren *.html *.php   就可以將.html文件改成.php文件 2、sublime中ctrl+shift+F可以對文件中的內

關於相同sql指令在eclipse查詢不到結果,在mysql卻能查詢到結果,以及增加資料時列表顯示“?”解決方案

在最初使用jdbc連線資料庫時,大家一定經常遇到一下兩個問題: 1、相同sql指令在eclipse中查詢不到結果,在mysql中卻能查詢到正確結果。 2、在增加列表資料時,雖然能夠增加成功,但增加的資料中文全部變成了“?” 下面將為大家解決這兩個問題。 這兩個問題其實

微博分享sdk4.0 遇到的以及解決辦法彙總

最近剛轉正,公司真的很忙,上一個月加班成常態,關鍵還是12點以後,打破我工作以來加班最晚記錄:凌晨2點。當然越忙對於我們來說也是有益處的,可以多學到很多東西。 公司專案用的微博的sdk 還是挺老的,大家都知道,早版本的微博sdk 存在一個問題就是使用了隱式的i

NavigationView,動態增加item以及menu

大家好。雖然叫大家,但是一般我的部落格只有我自己會看,只是為了怕自己忘了。但如果能幫到大家也算是不錯的了。 如果要動態新增menu中的item,直接在onCreateOptionsMenu方法中新增item即可: @Override public boolean onCre

mac環境下編譯Opencv4.0 以及在Processing使用opencv4.0舉例

一、環境 Mac OS Sierra 10.12.6 Processing 3.4  https://processing.org/download/ Opencv 4.0.0  https://opencv.org/releases.html

Android打arr包並在專案引用以及遇到的

最近專案總想要實現人臉識別功能,之前第三方公司提供了技術支援,但是隻是給了Eclipase原始碼,而現在大多是Android開發的IDE都是AndroidStudio,所以開始打算把原始碼部分功能打成jar包到專案中使用,由於jar包不能把資原始檔打進去,所以只能通過反射的

Nodejs 回撥函式以及中介軟體的用法

在用Nodejs + express 開發後臺的過程中,最令人頭疼的就是到處存在的回撥函數了。不管是http請求,還是資料庫請求,都是強制回撥的。這是由js本身的特性導致的。 所謂回撥,就是指假設A將任務分配給B去執行。之後A就可以把這個任務放在一邊,去執行其

工作經常遇到的以及解決的辦法(一),歡迎光臨!

相信大家在敲程式碼的過程中,會遇到無數的坑,不要悲傷,不要氣餒。俗話說,坑就是經驗。嗯,沒錯,俗話是我說的。閒言少敘,本文為長篇小說,致我們程式碼中的坑,以及一些常用的小方法,會逐步寫下,歡迎您的到來

hlsl shader編譯遇到的一個

        最近在修改我們引擎中shader編譯相關的邏輯的時候遇到了一個坑。寫這個引擎的前輩為了讓vertex shader和fragmentshader名稱相同的暫存器常量對於的暫存器索引也是一樣的。在編寫shader程式碼的時候手動指定了每個常量的暫存器索引並人工

Swift專案引入百度地圖SDK過程踩過的

專案中原本使用了高德地圖,最近為了做一個小探索需求需要引入查詢附近人的雷達功能,高德沒有而百度有,遂打算引入百度地圖看看效果。n年前在OC中引入百度地圖過程中遇到過的問題也就是Key不匹配時顯示不出地圖之類的問題。這次在Swift上遇到的比較麻煩,網上沒有找到合

CCS編譯常常遇到的問題以及解決辦法

1、warning: creating .stack section with default size of 400 (hex) words. 這是因為沒有在Project---Build Option---Linker中-stack沒有設定值。 2、warnin

編譯glibc(gcc)以及過程遇到的一些錯誤

一定要按照configure ——> make ——> make install三步驟。 1、下載glibc,解壓 原文中的glibc-ports是用來支援arm架構晶片的包,可以將包內檔案移動到glibc-2.15/ports內編譯安裝,這裡不

tensorflow 遇到的一些以及程式的error

1 tensorboard 無法顯示的問題 events.xxx檔案字尾名是亂碼 原因是主機計算機名為中文,所以出現亂碼。右擊我的電腦 - 屬性 更改為英文名稱即可 2 Couldn’t open CUDA library cupti64_90.dll

聊聊Grpc使用以及怎麼填

總所周知,隨著雲技術的發展,和業務的複雜度的上升,越來越多的系統開始拆分成獨立的子模組微服務。模組之間免不了相互通訊。但是隨著業務量的增多,傳輸量也隨之增大,偶發性timeout,無響應, 傳輸量過大等問題。 這時候就要對服務進行配置需要進行調優。可以從運維層面,或者程式碼層面,本文主要介紹從程式碼層面 Gr

https://github.com/MediaTek-Labs/linkit-smart-7688-feed編譯失敗

lin tar.bz2 tar gdb prepare com gin err evel 2017-06-26 16:08:49 (8.82 KB/s) - Read error at byte 10119560/24112160 (Connection timed out