介绍:
FS4412使用的是DM9000网卡,我们通过这个实验能够了解如何在内核中添加网卡驱动及网络功能的基本配置。
当没有网络功能,开发板通过NFS服务连接ubuntu系统时会出现以下错误:
那么如何解决这样的问题呢?
一、前期准备
FS4412内核以及交叉编译器:
链接:https://pan.baidu.com/s/1sKVHGHQA2nmgJJ-cWPykjQ?pwd=7b3q
提取码:7b3q
Ubuntu工具下载:
sudo apt install libncurses5-dev
sudo apt install u-boot-tools
若下载失败:
检查网络是否正常:ifconfig
sudo apt-get update
二、解压文件并配置文件(可以配置也可以不用配置,若未配置则直接使用第三点中的命令编译)
tar -vxf linux-3.14.tar.xz
cd linux-3.14
将Makefile文件中:
ARCH ?= $(SUBARCH)
CROSS_COMPOLE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
修改为:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
三、内核编译
/*导入默认配置*/
make exynos_defconfig (配置后使用该命令)
make ARCH=arm CROSS_COMPILE=arm-linux- exynos_defconfig (未配置使用该命令)
/*菜单模式配置内核驱动*/
make menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
[*] Networking support --->
Networking options --->
<*> Packet socket
<*>Unix domain sockets
[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
Device Drivers --->
[*] Network device support --->
[*] Ethernet driver support (NEW) --->
<*> DM9000 support
File systems --->
[*] Network File Systems (NEW) --->
<*> NFS client support
[*] NFS client support for NFS version 3
[ ] NFS client support for the NFSv3 ACL protocol extension
[*] Root file system on NFS
/*编译设备树文件*/
修改设备树文件:(将下面内容添加进去)
vim arch/arm/boot/dts/exynos4412-origen.dts
srom-cs1@5000000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x5000000 0x1000000>;
ranges;
ethernet@5000000 {
compatible = "davicom,dm9000";
reg = <0x5000000 0x2 0x5000004 0x2>;
interrupt-parent = <&gpx0>;
interrupts = <6 4>;
davicom,no-eeprom;
mac-address = [00 0a 2d a6 55 a2];
};
};
修改完成后:
make exynos4412-origen.dtb
make ARCH=arm CROSS_COMPILE=arm-linux- exynos4412-origen.dtb
/*编译配置完成的内核 -j4:多核编译,单核工作下就不需要加了*/
make -j4 uImage
make ARCH=arm CROSS_COMPILE=arm-linux- -j4 uImage
/*编译好内核和设备树后将拷贝到tftp目录下*/
cp arch/arm/boot/uImage /home/farsight/tftpboot
cp arch/arm/boot/dts/exynos4412-origen.dtb /home/farsight/tftpboot
重启开发板进入linux系统。