最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Linux内核移植步骤_添加DM9000网卡驱动(设备树)

来源:动视网 责编:小OO 时间:2025-09-29 19:30:35
文档

Linux内核移植步骤_添加DM9000网卡驱动(设备树)

Linux内核移植步骤2015年05月13日星期三上午11:05往设备树中添加网卡驱动:1、选平台,指定交叉编译工具链:(1)、在Makefile中指定:源码顶层目录下MakefileARCH                ?=$(SUBARCH)CROSS_COMPILE        ?=$(CONFIG_CROSS_COMPILE:"%"=%)改为:ARCH                ?=armCROSS_COMPILE        ?=arm-linux-(2)、编译时指定:#m
推荐度:
导读Linux内核移植步骤2015年05月13日星期三上午11:05往设备树中添加网卡驱动:1、选平台,指定交叉编译工具链:(1)、在Makefile中指定:源码顶层目录下MakefileARCH                ?=$(SUBARCH)CROSS_COMPILE        ?=$(CONFIG_CROSS_COMPILE:"%"=%)改为:ARCH                ?=armCROSS_COMPILE        ?=arm-linux-(2)、编译时指定:#m
Linux内核移植步骤

2015年05月13日星期三

上午 11:05

往设备树中添加网卡驱动:

1、选平台,指定交叉编译工具链:

(1)、在Makefile中指定:

源码顶层目录下Makefile

ARCH                ?= $(SUBARCH)

CROSS_COMPILE        ?= $(CONFIG_CROSS_COMPILE:"%"=%)

改为:

ARCH                ?= arm

CROSS_COMPILE        ?=arm-linux-

(2)、编译时指定:

# make ARCH=arm CROSS_COMPILE=/opt/arm-linux-gcc-4.6.4/bin/arm-linux-

 

 

2、导出缺省配置:

(1)、直接把缺省配置文件改成”.config“:

把“源码/arch/arm/configs”目录下的“xxxx_defconfig“(例如:”exynos_defconfig“)配置文件拷贝到源码顶层目录下,并改名为”.config“。

(2)、使用make生成缺省配置:

# make exynos_defconfig

#执行该命令后系统会在源码顶层目录下自动生成”.config“文件:

# configuration written to .config

 

3、往设备树文件中添加dm9000网卡驱动:

(1)、参考与自己板子最接近的demo板的设备树文件生成自己的设备树文件(直接拷贝修改)。

设备树文件在”源码目录/arch/arm/boot/dts/exynos4412-fs4412.dts“

(2)、在设备树文件中添加网卡设备驱动信息(参考网卡厂商提供的范例代码):

示例代码在”Documentation/devicetree/bindings/net/davicom-dm9000.txt“,如下:

Davicom DM9000 Fast Ethernet controller

 

Required properties:

- compatible = "davicom,dm9000";

- reg : physical addresses and sizes of registers, must contain 2 entries:

    first entry : address register,

    second entry : data register.

- interrupt-parent : interrupt controller to which the device is connected

- interrupts : interrupt specifier specific to interrupt controller

 

Optional properties:

- davicom,no-eeprom : Configuration EEPROM is not available

- davicom,ext-phy : Use external PHY

 

Example:

 

        ethernet@18000000 {

                compatible = "davicom,dm9000";

reg = <0x18000000 0x2 0x18000004 0x2>;

interrupt-parent = <&gpn>;

interrupts = <7 4>;

                local-mac-address = [00 00 de ad be ef];

                davicom,no-eeprom;

        };

修改并添加:

ethernet@05000000 {

                compatible = "davicom,dm9000";

reg = <0x05000000 0x2 0x05000004 0x2>;/*0x05000000为4412处理器的srom片选地址,详见手册*/

  interrupt-parent = <&gpx0>;/*继承父节点*/

interrupts = <6 4>;/*gpx0节点中断中的第6个,4是标志*/

                local-mac-address = [00 00 de ad be ef];/*网卡地址*/

                davicom,no-eeprom;

 

pinctrl@11000000 {

...

gpx0: gpx0 {

gpio-controller;

#gpio-cells = <2>;

 

interrupt-controller;

interrupt-parent = <&gic>;

interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,/*中断<类型中断号中断标志>*/

<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>;

#interrupt-cells = <2>;

};

...

}

 

4、修改设备树的Makefile文件:

设备树的Makefile文件在”xxx/linux-3.19.1/arch/arm/boot/dts“目录下。

(1)、直接添加:

(2)、为了加快编译速度,删除其他多余的设备树文件,仅保留自己的设备树文件:

 

5、内核选配:

(1)、执行make menuconfig命令通过图形界面方式选配(在源码顶层目录下执行):

(2)、添加网络协议支持:

(3)、添加dm9000网卡设备驱动:

(4)、添加nfs文件系统支持

 

6、保存配置,编译内核:

在源码顶层目录下执行”make“命令编译内核:

 

7,制作内核镜像:

gcc --编译内核-->vmlinux(elf头)--去elf头--->Image--压缩-->zImage----加u-boot特定格式头---->uImage

u-boot源码的tools会编译出一个x86下运行的应用程序”mkimage“打包uImage

 

把arch/arm/boot/zImage文件拷贝到源码根目录下,然后执行如下命令(事先把uboot制作好的mkimage工具拷贝到源码根目录下):

./mkimage -A arm -O linux -T kernel -C none -a 0x41000000 -e 0x41000040 -n 'linux-3.19.1@wnavy' -d zImage uImage

 

 

8、tftp下载内核镜像并通过nfs挂载根文件系统:

把编译好的内核景象uImage和设备树exnos4412-fs4412.dtb拷贝到tftp目录下,打开开发版电源启动内核并挂载文件系统。

 

.

文档

Linux内核移植步骤_添加DM9000网卡驱动(设备树)

Linux内核移植步骤2015年05月13日星期三上午11:05往设备树中添加网卡驱动:1、选平台,指定交叉编译工具链:(1)、在Makefile中指定:源码顶层目录下MakefileARCH                ?=$(SUBARCH)CROSS_COMPILE        ?=$(CONFIG_CROSS_COMPILE:"%"=%)改为:ARCH                ?=armCROSS_COMPILE        ?=arm-linux-(2)、编译时指定:#m
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top