記錄一下編譯新的mt7603驅動

2021-07-24 10:51:21 字數 2581 閱讀 7422

之前拿到的mt7603驅動和之前ralink的其他驅動如7601等沒有什麼大的區別,控制介面也都是ioctl,然後根據/etc/wireless下的配置檔案來配置wifi的屬性。不過老版本的7603驅動據說有些問題,現在拿到的新的驅動據說已經修復了……而且增加了netlink的介面,可以直接用hostapd來控制ap。

新驅動果然是新驅動,只是編譯就遇到很多問題。

1、配置檔案依然是makefile和/os/linux/config.mk,把其中的編譯器和核心目錄修改為自己的目錄;

2、修改好了可以直接編譯,然後問題就來了:

error: implicit declaration of function 'rtmp_driver_adapter_rt28xx_wow_disable' [-werror=implicit-function-declaration]

cc1: some warnings being treated as errors

看起來是編譯器把warning被當成error了,去掉config.mk中的werror選項,繼續編譯,還是出現此錯誤,後面怎麼找也找不到驅動的哪個配置裡還有配這個werror選項。想想此驅動編譯時應該會依賴核心的makefile,是否是核心makefile的問題。找到核心的makefile,果然發現了-werror-implicit-function-declaration,去掉重新編譯,錯誤變成了警告,驅動編譯成功。

3、驅動放到檔案系統,然後insmod,結果出現錯誤如下:

[ 1374.080000] mt7603u_sta: unknown symbol cfg80211_scan_done (err 0)

[ 1374.080000] mt7603u_sta: unknown symbol cfg80211_remain_on_channel_expired (err 0)

[ 1374.090000] mt7603u_sta: unknown symbol regulatory_hint (err 0)

[ 1374.110000] mt7603u_sta: unknown symbol cfg80211_new_sta (err 0)

[ 1374.110000] mt7603u_sta: unknown symbol cfg80211_disconnected (err 0)

[ 1374.120000] mt7603u_sta: unknown symbol cfg80211_ready_on_channel (err 0)

[ 1374.130000] mt7603u_sta: unknown symbol wiphy_register (err 0)

[ 1374.150000] mt7603u_sta: unknown symbol wiphy_new (err 0)

………………

[ 1374.190000] mt7603u_sta: unknow symbol rtmp_driver_adapter_rt28xx_wow_disable ( err 0)

[ 1374.200000] mt7603u_sta: unknow symbol rtmp_driver_adapter_rt28xx_wow_enable ( err 0)

看了下前面的unknow symbol應該是cfg80211的介面沒找到?將核心中的cfg80211編譯成module,然後insmod,再載入7603的ko,果然前面的錯誤去掉了。後面的錯誤看起來和之前werror遇到的是同乙個問題,果然還是不能直接去掉werror選項。查詢了一下出錯**的位置,發現出錯**由ifdef控制:

#ifdef mt_wow_support

rtmp_driver_adapter_rt28xx_wow_disable(pad);

#endif

於是想到這功能能不能先去掉,在config.mk中將has_mt_wow_support選項配置為n重新編譯,這個錯誤沒了,cfg80211.c又出現錯誤了,錯誤是error: 'struct _rtmp_adapter' has no member named 'wow_cfg'即pad中沒有wow_cfg這個成員:

ndiscopymemory(pad->wow_cfg.ptk, data->kck, len_ptk_kck);

ndiscopymemory(&pad->wow_cfg.ptk[len_ptk_kck], data->kek, len_ptk_kek);

ndiscopymemory(pad->wow_cfg.replaycounter, data->replay_ctr, len_key_desc_replay);

檢視了pad結構體中的定義,發現wow_cfg還是由has_mt_wow_support選項來控制的,因為之前被我們配成了n,所以在此刻找不到wow_cfg了。於是直接在上述出錯的**上加上ifdef has_mt_wow_support的控制繼續編譯,終於編譯成功。放到檔案系統,先掛cfg80211.ko再掛mt7603u_sta.ko,沒有錯誤,並且可以找到節點wlan0了。

記錄一下新的開始吧

這一波工作換得我已經有點麻木,經歷了乙個極其痛苦與掙扎的過程,四個月.我感覺在這期間,我已經失去了我身上一直附帶的很多針對的東西.雖然我還是奔著那個方向,但我心裡確實起了很多變化.我也似乎開始承認對現實的無力,對我自己的信念不是很堅持.雖然最後還是得到了我期望的,但是我真的是少了那股很堅毅的誓死搞圖...

新入坑python 寫點東西記錄一下

python 一種高階語言 簡單一看比c簡單多了 用的python3.5 print 那些就不說了記錄一下不同的用法吧 else if可以簡寫為elif 可以轉譯多種字元 表示依舊位 可以用r 預設來表示不轉譯其中內容 來表示換行 python中的列表list 即可 aa bb cc dd len ...

記錄一下最近的心情

qq空間一直不好用,只好轉到這裡,寫一寫最近的心情。這幾天發生了很多事情。在同病魔搏鬥了很久之後,奶奶撒手人寰,離我們而去了。對於親人的離開,我沒有經受過太多,爺爺走的時候我才十歲,姥姥走的時候因為種種原因我沒有收到訊息。現在奶奶也去了。我很難過。我沒有盡到孫子的孝心,沒有特別在意這個將我一直掛在嘴...