最近將某個 Device Porting 從 2.6.16 Porting 上 2.6.24, 記錄一下碰到的問題.
1. Network Driver
當有這樣的訊息時
# ifconfig eth0 up
SIOCSIFFLAGS : invalid agument
我碰到的狀況是, MAC Address 必需要在 probe 時先行 initial 完成.
若是沒有完成, ifconfig 就會出現這樣的錯誤訊息, 原因仍然不明.
我的做法就是加一行
memcpy(dev->dev_addr , addr, 6); 這樣就可以了.
2.6.24 的 NAPI Interface 改過了, 上比對一下 2.6.23 和 2.6.24 的 Code 就可以知道改了什麼地方.
netif_poll_* 的 interface 改名了以外, NAPI hook 的 _poll function 在傳入參數和結構上有小小的修正
2.6.24 修改了 NAPI 的呼叫法, 對我這邊比較複雜的 Switch Driver 也應該修正一下.
2. PCI
pci_find_device 要改用 pci_get_device. 這個 function 還很早就改名了,
只是在 porting 這一版的時候, 多了一個選項
[ ] Enable deprecated pci_find_* API.
如果不想開就不用改了.
3. CPU
2.6.24 CPU proc.info 結構和2.6.16 有一點點不一樣, 如果直接放上 2.6.24 則 CPU Info 會錯誤,
這時要修改 mm/CPU-proc.S , 附上部份的 patch, 增加一個 word 大小, 這樣就可以顯示正常了.
PMD_BIT4 | \
PMD_SECT_AP_WRITE | \
PMD_SECT_AP_READ
+ .long PMD_TYPE_SECT | \
+ PMD_SECT_AP_WRITE | \
+ PMD_SECT_AP_READ
4. Interrupt.
原來 SA_INTERRUPT/SA_SHIRQ 都改叫 IRQF_SHARED, 事實上, 這一組定義己經完全換掉了
詳情請見 include\linux\Interrupt.h
5. DMA
pci_free_consistent 被 dma_free_coherent 取代
pci_alloc_consistent(..); 被 dma_alloc_coherent(.., GFP_KERNEL); 取代, 後面要多加一個參數.
consistent_sync 被 dma_cache_maint 取代.
算是小改….
匿名訪客
嗨 Rich 你好:
我是傳識資訊的Mountain, 很高興有機會和你聯繫, 看到你部落格的資料發現你對Linux有很多的經驗, 很想和你交個朋友, 所以和你聯繫
我們公司–傳識資訊 ( http://www.fitpi.com ),是一家專業的教育訓練單位,也是ARM與MIPS在台所授權的 教育訓練中心,我們的定位是針對企業用戶提供所需的課程訓練,我們的專長在嵌入式產品,網路,及通信的教育訓練,所以會依據企業的課程需求,尋找適合的兼任講師。
因我們在教育訓練有多年的經驗, 也訓練出不少嵌入式相關的學員, 若是你們有相關領域人員尋找的需求, 我們也可提供一些協助。 因為我們和很多技術人員接洽過, 所以很希望能善用這些人力資源,
下列是我們目前所提供的課程, 提供給你作參考:
http://www.fitpi.com.tw/products/emb_sys/index.html
我們目前主要的課程領域是嵌入式Win ce, Linux及多媒體相關的課程, 假如你有合適的朋友也可以幫忙介紹,讓我們共同為資訊產業素質的提升盡一份心力。
謝謝你
期盼與你交朋友的Mountain
如有任何問題歡迎來電( 0930-037436 ), MSN: mountain@fitpi.com 或以e-mail告知,
匿名訪客
不好意思mountain@fitpi.com那是mail
macpaul
請教長輩一個問題,如果不用 napi而是自己用tasklet去schedule isr, 效能會比較好嗎?因為看到有些driver不走napi卻自己做schedule isr
richliu
你應該碰到的是 Wireless driver 吧.
就我的角度來看, NAPT 和 tasklet 效率應該差不多.
至於 Wireless 為什麼不用 NAPI, 我想應該是相容性問題.
macpaul
我碰到的是 SoC 的 ethernet/switch driver. (AR231x), 今天的 Talk 會稍微提到。不過之後就沒有空繼續弄了。