Openwrt添加rtl8139 驱动

Openwrt添加rtl8139 驱动,第1张

在openwrt嵌入式虚携产品开发中添加。

需要将4G模块驱动代码直接编译到系统中,省去了生成ko驱动文件手动加载 *** 作,下面将驱动代码添加到openwrt的方法总结如下:

步骤1:拷贝驱动代码将需要添加的驱动代码拷贝到linux内核driver对应的文件夹下拿誉数。/openwrt/openwrt-hiwooya/build_dir/target-mipsel_24kec+dsp_uClibc-0、9、33、2/linux-ramips_mt7688/linux-3、18、29/drivers/net/usb。

步消首骤2:修改Makefile在driver对应的文件夹中修改Makefile,把新加的驱动源文件添加到Makefile中。

步骤3:修改Kconfig在driver对应的文件夹中修改Kconfig,把新加的驱动menuconfig相关配置添加到Kconfig中。

步骤4:修改*、mk文件需要修改package/linux/modules/下对应的usb、mk文件,添加以下内容。需要特别注意,这里是openwrt与一般linux的不同之处。

修改内核配置文件

要移明蚂植内核到一个新的开发板,需要修改的内核配置文件主要有:

(1)根Makefile

主要是没备修改ARCH和CROSS_COMPILE的定义。例如:

ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi-

当然也可以不修改,只是在编译内核时每个make命令后面都要加上上述两个选项。

(2)Kconfig

要将新的开发板信激察埋息在make menuconfig/xconfig...时体现在配置选项菜单上,就必须修改Kconfig文件。主要包括arch/arm/Kconfig和arch/arm/mach-pxa/Kconfig,形如MACH_MAINSTONE。在2.4内核中则对应于arch/arm/config.in文件,形如CONFIG_ARCH_MAINSTONE。

arch/arm/Kconfig中设置相关配置:

例如:

config LEDS

bool \"Timer and CPU usage LEDs\"

depends on ARCH_CDB89712 || ARCH_CO285 || ARCH_EBSA110 || ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || ARCH_AT91 || MACH_TRIZEPS4 || ARCH_DAVINCI || ARCH_KS8695 || MACH_XSBASE270

另外还有驱动相关的Kconfig文件:例如drivers/mtd/maps/Kconfig中,需要加入开发板的FLASH存储器配置选项。

config MTD_XSBASE270

tristate \"CFI Flash device mapped on Emdoor XSBASE270 eval board\"

depends on MACH_XSBASE270 &&MTD_CFI_INTELEXT

select MTD_PARTITIONS

help

This provides a driver for the on-board flash of the Emdoor

\'XSBASE270\' evaluation board.

arch/arm/mach-pxa/Kconfig中添加:

config MACH_XSBASE270

bool \"Emdoor XSBASE270 Developemnt Platform\"

select PXA27x

(3)arch/arm/mach-pxa/Makefile

将新移植的硬件平台加入编译。可如下加入平台文件xsbase270.c的编译项:

obj-$(CONFIG_MACH_XSBASE270) += xsbase270.o

1.进入你的内核源码文档,创建一个DoneLin_Driver文件夹来存放你的驱动,于是文件夹路径:drivers/DoneLin_Driver/:

2.复制你的范例驱陆圆动到刚刚建立的DoneLin_Driver文件夹中,我的范例名字叫global_mem_two.c:

3.在DoneLin_Driver文件夹中建立两个新文本文件:Kconfig 和 Makefile

4.修改DoneLin_Driver文件夹下的Kconfig文件,输入以下内容:

menu "DoneLin-driver "

comment "global_mem_two-driver "

config GLOBAL_MEM_TWO tristate "global_mem_two DriTst" help this is global mem 2 test programming

endmenu

5.接着修改DoneLin_Driver的另一个文件Makefile,输入以下内容:

obj-$(CONFIG_GLOBAL_MEM_TWO) += global_mem_two.o

6.修改上一层目录(Driver目录)中的Kconfig文件,声明自己的源代码:在"menu "Device drivers""下面加入如下内容:

source "drivers/DoneLin_Driver/Kconfig"##...add my tst driver module

7.修改arch/arm/Kconfig

同样,跟在driver/Kconfig一样,在"menu device drivers"下面加入同样的语句:

source "drivers/DoneLin_Driver/Kconfig"

就是说:在arch/arm/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/DoneLin_Driver/Kconfig"

在drivers/Kconfig menu "Device Drivers" endmenu之间添加source "答哗drivers/hello/Kconfig"(不知为什么arch/arm/Kconfig中竟然含有Drivers里Kconfig内容的一个复本,实验证明只对drivers/Kconfig中修改内容无效。)

8.修改Drivers目录下的Makefile,在如图位置,加入:

obj-$(CONFIG_GLOBAL_MEM_TWO) += DoneLin_Driver/#ADD FOR TEST add_for_test add for test测试的驱动

8.都修改好,保存好之后清悉行,回到linux内核根目录,make menuconfig,奇迹出现了,我自己的linux驱动程序出现在内核的device drivers选项里面了:

选择global_mem_tow_DriTst为m,表示编译成模块,编译成ko文件

然后,保存退出,make, make zImage, make modules即可生成新的内核和新的modules,

完成了,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8151961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存