自己写的操作系统,不知道怎么使用网卡,如何才能从零开始写一个网卡驱动呢?
看手册呗,与硬件还有很大关系,是IO方式还是memory方式,而且中断和轮询写法不一样,你自己的操作系统怎么考虑设备层呢?比如ARM编程指南中有一个简单的操作系统SLOS,它里面有device driver framework,写设备驱动按照框架要求就可以了。
我的操作系统刚刚写好键盘中断,时钟中断,多任务和内存管理,现在刚开始接触写驱动,想先从网卡开始,不知道该怎么写,大家有没有什么好文章可以推荐一下?
RTOS? or Embedded OS?如果不考虑设备驱动框架的设计,最简单的方法就是直接找一个类似芯片的驱动程序,改一改,网上有很多rtl8019和rtl8139的程序
楼上说的rtl8019的驱动程序好象都是针对WINDOWS或者LINUX的啊,没有针对裸机的吗
不是吧,我以前就做过裸机上的rtl8019as芯片的网卡驱动,这个与操作系统是无关的。这里所说的驱动程序不是win或linux操作系统中的驱动,是指操作网卡芯片的程序。
实际上网卡驱动本身跟操作系统关系并不大,如果你自己实现操作系统,完全可以跨过操作系统,直接调用底层的程序。就NIC的驱动而言,最关键的就3个:初始化,接收和发送,其它的都是辅助。
原帖由 bilbo0214 于 2007-6-13 11:49 发表于 7楼 实际上网卡驱动本身跟操作系统关系并不大,如果你自己实现操作系统,完全可以跨过操作系统,直接调用底层的程序。就NIC的驱动而言,最关键的就3个:初始化,接收和发送,其它的都是辅助。
這部份一般都 是由廠家的芯片廠商提供的吧。
原帖由 plumlee 于 2007-6-15 23:07 发表于 8楼 這部份一般都 是由廠家的芯片廠商提供的吧。
原帖由 plumlee 于 2007-6-15 23:07 发表于 8楼
就网络芯片而言,厂家一般只提供手册,主要讲操作方式、寄存器定义等,也会提供主流操作系统下的驱动程序。但如果没有操作系统,或用于RTOS这类非主流操作系统,那么只有根据手册自己去写驱动程序。所谓硬件驱动本质就是如何操作设备的寄存器,如何操作DMA,比如rtl8019as的驱动90%的代码都是在读写寄存器,处理DMA,判断寄存器状态。我觉得大家不应该被驱动二字迷惑而忘记本质的东西。
rtl8019as的驱动例子在:
http://www.laskater.com/projects/uIPAVRcode/rtl8019.c
网上也可以查到rtl8139的驱动代码,其实与操作系统基本没关系。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(9)
看手册呗,与硬件还有很大关系,是IO方式还是memory方式,而且中断和轮询写法不一样,你自己的操作系统怎么考虑设备层呢?比如ARM编程指南中有一个简单的操作系统SLOS,它里面有device driver framework,写设备驱动按照框架要求就可以了。
我的操作系统刚刚写好键盘中断,时钟中断,多任务和内存管理,现在刚开始接触写驱动,想先从网卡开始,不知道该怎么写,大家有没有什么好文章可以推荐一下?
RTOS? or Embedded OS?
如果不考虑设备驱动框架的设计,最简单的方法就是直接找一个类似芯片的驱动程序,改一改,网上有很多rtl8019和rtl8139的程序
楼上说的rtl8019的驱动程序好象都是针对WINDOWS或者LINUX的啊,没有针对裸机的吗
不是吧,我以前就做过裸机上的rtl8019as芯片的网卡驱动,这个与操作系统是无关的。这里所说的驱动程序不是win或linux操作系统中的驱动,是指操作网卡芯片的程序。
实际上网卡驱动本身跟操作系统关系并不大,如果你自己实现操作系统,完全可以跨过操作系统,直接调用底层的程序。就NIC的驱动而言,最关键的就3个:初始化,接收和发送,其它的都是辅助。
這部份一般都 是由廠家的芯片廠商提供的吧。
就网络芯片而言,厂家一般只提供手册,主要讲操作方式、寄存器定义等,也会提供主流操作系统下的驱动程序。但如果没有操作系统,或用于RTOS这类非主流操作系统,那么只有根据手册自己去写驱动程序。所谓硬件驱动本质就是如何操作设备的寄存器,如何操作DMA,比如rtl8019as的驱动90%的代码都是在读写寄存器,处理DMA,判断寄存器状态。我觉得大家不应该被驱动二字迷惑而忘记本质的东西。
rtl8019as的驱动例子在:
http://www.laskater.com/projects/uIPAVRcode/rtl8019.c
网上也可以查到rtl8139的驱动代码,其实与操作系统基本没关系。