shineyear 发表于 2007-06-12 10:22

怎么从零开始写一个网卡驱动?

自己写的操作系统,不知道怎么使用网卡,如何才能从零开始写一个网卡驱动呢?

bilbo0214 发表于 2007-06-12 12:42

看手册呗,与硬件还有很大关系,是IO方式还是memory方式,而且中断和轮询写法不一样,你自己的操作系统怎么考虑设备层呢?比如ARM编程指南中有一个简单的操作系统SLOS,它里面有device driver framework,写设备驱动按照框架要求就可以了。

shineyear 发表于 2007-06-12 13:50

我的操作系统刚刚写好键盘中断,时钟中断,多任务和内存管理,现在刚开始接触写驱动,想先从网卡开始,不知道该怎么写,大家有没有什么好文章可以推荐一下?

bilbo0214 发表于 2007-06-13 09:01

RTOS? or Embedded OS?
如果不考虑设备驱动框架的设计,最简单的方法就是直接找一个类似芯片的驱动程序,改一改,网上有很多rtl8019和rtl8139的程序

shineyear 发表于 2007-06-13 10:13

楼上说的rtl8019的驱动程序好象都是针对WINDOWS或者LINUX的啊,没有针对裸机的吗

bilbo0214 发表于 2007-06-13 11:47

回复 #5 shineyear 的帖子

不是吧,我以前就做过裸机上的rtl8019as芯片的网卡驱动,这个与操作系统是无关的。这里所说的驱动程序不是win或linux操作系统中的驱动,是指操作网卡芯片的程序。

bilbo0214 发表于 2007-06-13 11:49

实际上网卡驱动本身跟操作系统关系并不大,如果你自己实现操作系统,完全可以跨过操作系统,直接调用底层的程序。就NIC的驱动而言,最关键的就3个:初始化,接收和发送,其它的都是辅助。

plumlee 发表于 2007-06-15 23:07

原帖由 bilbo0214 于 2007-6-13 11:49 发表于 7楼
实际上网卡驱动本身跟操作系统关系并不大,如果你自己实现操作系统,完全可以跨过操作系统,直接调用底层的程序。就NIC的驱动而言,最关键的就3个:初始化,接收和发送,其它的都是辅助。


這部份一般都 是由廠家的芯片廠商提供的吧。

bilbo0214 发表于 2007-06-16 21:34

原帖由 plumlee 于 2007-6-15 23:07 发表于 8楼



這部份一般都 是由廠家的芯片廠商提供的吧。

就网络芯片而言,厂家一般只提供手册,主要讲操作方式、寄存器定义等,也会提供主流操作系统下的驱动程序。但如果没有操作系统,或用于RTOS这类非主流操作系统,那么只有根据手册自己去写驱动程序。所谓硬件驱动本质就是如何操作设备的寄存器,如何操作DMA,比如rtl8019as的驱动90%的代码都是在读写寄存器,处理DMA,判断寄存器状态。我觉得大家不应该被驱动二字迷惑而忘记本质的东西。

bilbo0214 发表于 2007-06-16 21:38

rtl8019as的驱动例子在:

http://www.laskater.com/projects/uIPAVRcode/rtl8019.c

网上也可以查到rtl8139的驱动代码,其实与操作系统基本没关系。
页: [1]
查看完整版本: 怎么从零开始写一个网卡驱动?