關於rt3070驅動編譯問題(2)

來源:互聯網
上載者:User

      前段時間也編譯個RT3070驅動,開發板是mini2440,核心時2.6.32.遇到很多問題,但都解決了,詳細請看部落格。這幾天因為要在另外一塊板子移植驅動板子是sam9x5,核心2.3.39,因為有前面的經驗,以為會很容易,沒想到,各種問題的出現,而且是以前沒遇到個的。不過努力之後還搞定了。關於修改Makefile和config.mk就不在一步步說了,前面的部落格裡都有說明,大同小異。主要是說下遇到的問題吧。

       剛開始我平台選擇:PLATFORM = IXP,對於平台選擇我也不是很懂,只曉得這與晶片有關,但每個PLATFORM具體代表那個廠家晶片我不知道,有知道的博友請在評論裡給我說說,這裡先謝了,因為網上看到有用ATMEL晶片的也選擇這平台。編譯時間出現錯誤如下:

mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c: In function 'NICInitRecv':
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:3: error: implicit declaration of function 'usb_buffer_alloc'
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:30: warning: assignment makes pointer from integer without a cast
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:818:4: error: implicit declaration of function 'usb_buffer_free'
make[2]: *** [/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.o] Error 1
make[1]: *** [_module_/mcuzone/wifi/rt3070sta/os/linux] Error 2
make[1]: Leaving directory `/mcuzone/work/linux-2.6.39'
make: *** [LINUX] Error 2

以前編譯時間好像也出現過類似問題,記得是核心沒編譯好的原因,於是一遍遍的編譯核心,在測試,但沒有解決。關於核心的配置,這個部落格寫得比較詳細http://blog.csdn.net/unsigned_/article/details/6123876。想了想可能是平台的原因,平台不同,CFLAG也就不同,於是選擇以前用的平台PLATFORM = PC。編譯時間出現問題如下:

/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c: In function 'NICInitRecv':
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:3: error: implicit declaration of function 'usb_buffer_alloc'
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:30: warning: assignment makes pointer from integer without a cast
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:818:4: error: implicit declaration of function 'usb_buffer_free'
make[2]: *** [/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.o] Error 1
make[1]: *** [_module_/mcuzone/wifi/rt3070sta/os/linux] Error 2
make[1]: Leaving directory `/mcuzone/work/linux-2.6.39'
make: *** [LINUX] Error 2

因為核心該配置的我都配置了,不用的以防萬一我也編譯成模組了,所以排除核心。以前2.6.32版本並沒有出現這樣的問題,這次是2.3.39版本的,那麼就可能是核心版本差異造成的,經過努力發現2.6.35 核心後, usb_buffer_alloc
和 usb_buffer_free 被替換成 usb_alloc_coherent 和 usb_free_coherent。所以編譯才會報錯。修改 include/os/rt_linux.h 檔案。如下

#define
RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_buffer_alloc(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_buffer_free(pUsb_Dev, BufSize, pTransferBuf,
Dma_addr)
替換成:
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_alloc_coherent(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_free_coherent(pUsb_Dev, BufSize, pTransferBuf,
Dma_addr)

然後在make。通過。另外出現的第一個問題也就是PLATFORM
= IXP,有人如果有解決的經驗,請告訴我。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.