mones2/21.NICドライバ移植/04.NE2000のドライバコードを比較しよう


Top / mones2 / 21.NICドライバ移植 / 04.NE2000のドライバコードを比較しよう

これは何か

monesのNE2000ドライバとFreeBSDドライバを比べて、類似点を見出します。

作業

  1. NE2000は if_ed.c (src/sys/dev/ed/if_ed.c)
  2. まずは初期化処理探してみようかな

今回の重要関数

#define	ed_nic_inb(sc, port) \
	bus_space_read_1(sc->port_bst, sc->port_bsh, (sc)->nic_offset + (port))

#define	ed_nic_outb(sc, port, value) \
	bus_space_write_1(sc->port_bst, sc->port_bsh, \
	    (sc)->nic_offset + (port), (value))

初期化処理

ed_init_locked(FreeBSD) と nic_init(Mones)の処理内容がかなり似ている。

ed_init_lockeded_nic_outb(sc, ED_P0_CR, sc->cr_proto |ED_CR_STP);nic_initoutp8( NE_P0_COMMAND, ne_cr_proto | NE_CR_STP );Set interface for page 0, Remote DMA complete, Stopped/リモートDMA 停止
ed_nic_outb(sc, ED_P0_DCR, ED_DCR_FT1 | ED_DCR_WTS | ED_DCR_LS);outp8( NE_P0_DCR, NE_DCR_FT1 + NE_DCR_WTS + NE_DCR_LS );Set FIFO threshold to 8, No auto-init Remote DMA, byte/FIFO スレッショルド 8Byte,リモートDMA 自動初期化禁止
ed_nic_outb(sc, ED_P0_RBCR0, 0);ed_nic_outb(sc, ED_P0_RBCR1, 0);outp8( NE_P0_RBCR0, 0 );outp8( NE_P0_RBCR1, 0 );Clear Remote Byte Count Registers/リモートDMA バイトカウンタクリア

などなど

初期化処理で違う部分を探したほうがはやそう

    outp8( NE_P0_DCR, NE_DCR_FT1 + NE_DCR_WTS + NE_DCR_LS );

交換可能

ed_init_locked(struct ed_softc *sc)nic_init細かい構造体とかを用意すれば交換可能っぽ

割り込み処理&その後の読み込み

コメント

コメントはありません。 コメント/mones2/21.NICドライバ移植/04.NE2000のドライバコードを比較しよう?

お名前:

MENU

now: 6

リンク


最新の20件
2018-10-07 2018-09-20 2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3308, today: 1, yesterday: 1

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:00 (3914d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.042 sec.