首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

一文详解 | Linux设备树框架及驱动移植实例

我这里用Linux4.8.5源码自带的dm9000网卡为例来分析设备树的使用和移植。...dm9000驱动中就是使用下面这个函数通过设备节点中的"compatible"属性提取相应的信息,所以二者的字符串需要严格匹配。...在下面的这个dm9000的例子中,我们在相应的板级dts中找到了这样的代码块: 然后我们取内核源码中找到dm9000的网卡驱动,从中可以发现这个驱动是使用的设备树描述的设备信息(这不废话么,显然用设备树好处多多...比如dm9000网卡,就需要首先将示例信息挂接到我们的板级设备树上,并根据芯片手册和电路原理图将相应的属性进行配置,再配置相应的驱动。...最终的配置结果是: 勾选相应的选项将dm9000的驱动编译进内核。

1.5K20

3.移植驱动到3.4内核-移植DM9000C驱动

以及更改函数名等 所以移植驱动的过程如下: 1)编译 2)解决错误 ->2.1)头文件不对:去掉或改名 ->2.2)宏不对:改名使用新宏 ->2.3)有些函数没有了:改名使用新函数 2.移植内核自带的DM9000...网卡驱动 machid=16a(mach-smdk2440.c)的内核下输入ifconfig,发现该板卡的内核不支持DM9000,如下图所示: ?...而在machid= 7cf(mach-mini2440.c)的内核下输入ifconfig,却能支持DM9000,如下图所示: ?..."平台驱动,而再注册个"dm9000"平台设备时,内核便会调用上面的probe函数来注册dm9000驱动. 2)然后再来看看mach-mini2440.c单板文件,是如何支持dm9000的,代码如下:...网卡驱动) 1)添加头文件 #include 2)添加全局变量: #define MACH_SMDK2440_DM9K_BASE (S3C2410_CS4 +

1K20

第3阶段——内核启动分析之make menuconfig内核配置(2)

s3c2410_deconfig 命令在默认的配置上进行自动修改.config文件 (3)使用厂家提供的配置config_ok文件覆盖.config文件 所以,所有的配置结果都是配置.config文件 1 在linux...CONFIG_DM9000”  -nwR (grep指令详细介绍入口链接http://www.cnblogs.com/lifexy/p/7009706.html) 可以看到4个地方在使用它 (1) include/linux.../autoconf.h中定义宏DM9000 include/linux/autoconf.h:129:#define CONFIG_DM9000 1 然后通过vi include/linux/autoconf.h...(2)在C源码里通过判断autoconf.h的宏DM9000 arch/arm/plat-s3c24xx/common-smdk.c:46:#if defined(CONFIG_DM9000) || defined.../drivers/net/ 子目录Makefile中添加DM9000文件到obj-$(CONFIG_DM9000)中,其中CONFIG_DM9000=y,所以编译进内核中. drivers/net/Makefile

1.3K50

Linux驱动之网卡驱动剖析

Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送的接口。...传递的数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中的各层之间传输数据,该结构在整个网络收发过程中贯穿始终...源码分析 笔者基于的是 S5PV210 的 DM9000 驱动,会大体上对 DM9000 的驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 的驱动是基于 platform...dm9000_set_io 函数用于设置 DM9000 的读写函数。...重启完 DM9000 后,开始读取 DM9000 的寄存器 /* try multiple times, DM9000 sometimes gets the read wrong */ for (i =

55.4K20

第3阶段——内核启动分析之make menuconfig内核配置(2)

s3c2410_deconfig 命令在默认的配置上进行自动修改.config文件 (3)使用厂家提供的配置config_ok文件覆盖.config文件 所以,所有的配置结果都是配置.config文件 1 在linux...CONFIG_DM9000”  -nwR (grep指令详细介绍入口链接http://www.cnblogs.com/lifexy/p/7009706.html) 可以看到4个地方在使用它 (1) include/linux.../autoconf.h中定义宏DM9000 include/linux/autoconf.h:129:#define CONFIG_DM9000 1 然后通过vi include/linux/autoconf.h...(2)在C源码里通过判断autoconf.h的宏DM9000 arch/arm/plat-s3c24xx/common-smdk.c:46:#if defined(CONFIG_DM9000) || defined.../drivers/net/ 子目录Makefile中添加DM9000文件到obj-$(CONFIG_DM9000)中,其中CONFIG_DM9000=y,所以编译进内核中. drivers/net/Makefile

1.1K90

用中的linux驱动 platform_device

原文出自:http://blog.csdn.net/ghostyu/article/details/6908805 一个现实的linux设备和驱动通常要挂接在一种总线上,像pci,usb,iic,spi...基于这个背景,linux发明了一种虚拟总线:platform总线,相应的设备称为platform_device,而驱动成为platform_driver。...注意,platform_device并不是与自负设备,块设备等平行的概念,而是linux提供的一种附加手段,例如s3c2440处理器中,把内部集成的iic,rtc,spi,lcd,watchdog,等控制器归纳为...例如dm9000的resource部分: [cpp] view plain copy print ?...mach-s3c2440.c中,但关键的驱动源码在 drvier/mtd/nand/文件夹下 这样的结构就是linux驱动的分层思想,设备驱动的核心层与例化。

77820

让天堂的归天堂,让尘土的归尘土——谈Linux的总线、设备、驱动模型

一旦DM9000的驱动也被注册,由于platform总线已经关联了设备,驱动自然可以根据已经存在的DM9000设备信息,获知如下的内存基地址、中断等信息了: static struct resource...但是,这个VxBus,可以说和Linux的总线、设备、驱动模型是极大地雷同的。但是,请问,你为什么要叫VxBus呢,它非常地Vx吗?...这些代码的存在,简直是对Linux内核的污染和对Linus Torvalds的无情藐视,因为,太木有技术含量了!...比如arch/arm/boot/dts/ imx1-apf9328.dts下面的DM9000就是这样的脚本,基地址、中断号都成为了DM9000设备节点的一个属性: eth: eth@4...Linux的车轮滚滚向前,无情碾压一切。人类的千年轨迹,沧海桑田,斗转星移,重复地进行着历史的归于历史,未来还是归于历史的过程。这是现实的悲怆,也是历史的豪迈。

90931

Linux 网络设备驱动开发(一) —— linux内核网络分层结构

Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。    Linux内核采用分层结构处理网络数据包。...Linux内核有一个dev_base的全局指针,指向一个设备链表,包括了系统内的所有网络设备。该设备链表每个节点是一个网络设备。   ...图片     以DM9000网卡为例,当网卡收到数据包以后,调用中断处理函数 dm9000_interrupt(),该函数检查中断处理类型,如果是接收数据包中断,则调用 dm9000_rx()函数接收数据包到内核空间...五、数据包发送流程    以UDP数据包发送流程为例,在DM9000网卡上如何发送一个数据包。...链路层的 dev_queue_xmit()函数处理发送队列,调用 DM9000网卡的发送数据包函数 dm9000_xmit()发送数据包,发送完毕后,调用 dm9000_xmit_done函数处理发送结果

1.8K21
领券