本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74160686

一、思路

上一节我们通过DNW将内核、文件系统、设备树文件烧入到内存中,并使用bootm启动内核:bootm0x40600000  0x41000000  0x42000000。因为此时内核并没有SD卡驱动,和EMMC驱动,我们只能直接将系统拷贝至内存中然后启动。当时我们进入文件系统后,并无法挂载外面的网络文件系统,对开发带来很多不便,所以这一节,我们移植网卡,让系统启动后可以挂接虚拟机中的网络文件系统,或者直接挂载虚拟机中的网络文件系统。

实验参考摩斯电码的博客:http://www.cnblogs.com/pengdonglin137/p/5153794.html

tiny4412网卡跟DM9000差别很大,DM9000是内存接口,移植容易, tiny4412使用的网卡芯片是DM9621,是usb接口的,而且并没有直接连接到exynos4412上,中间通过一个hub芯片usb4640,然后usb4640通过HSIC接口(XhsicSTROBE0和XhsicDATA0)连接到exynos4412上。

DM9621的驱动在Linux4.4中在driver/net/usb/dm9601.c中实现了,我们需要在内核配置中将DM9601的驱动编译进内核。

make menuconfig

  1. Device Drivers  --->
  2. Network device support  --->
  3. USB Network Adapters  --->
  4. Davicom DM96xx based USB 10/100ethernet devices

此外,最关键的是要在设备树中将用到的片内外设使能:如hsi、ehci、ohci、otg等等。执行完这些操作后,板子上的三个usb口(USBH1/USBH2/USBH3)都可以识别了,即可以插入U盘等设备了。

二、内核修改的地方主要如下:

(1)arch/arm/boot/dts/exynos4412-tiny4412.dts

(2)drivers/net/usb/dm9601.c

(3)drivers/usb/misc/Kconfig

(4)drivers/usb/misc/Makefile

(5)drivers/usb/misc/usb4640.c(新建)

(6)include/dt-bindings/usb4640/usb4640.h(新建)

(7)include/Linux/platform_data/usb4640.h(新建)

三、测试

对内核做如上修改后,编译并下载

1、  编译

  1. <span style="font-size:18px;">make mrproper
  2. cp tiny4412_defconfig .config
  3. make uImage  LOADADDR=0x40008000  -j2
  4. make  dtbs</span>

2、  下载

下载内核、文件系统、设备树文件

#u-boot:dnw  0x40600000

dnw  arch/arm/boot/uImage.

#u-boot:dnw  0x41000000

dnw  ramdisk.img

#u-boot:dnw  0x42000000

dnw   arch/arm/boot/dts/exynos4412-tiny4412.dtb

启动内核使用bootm启动内核:

bootm  0x40600000  0x41000000  0x42000000

3、  测试

ifconfig eth0 192.168.1.125

ping 192.168.1.123

mount -t nfs -o nolock192.168.1.123:/work/nfs/filesystem  /mnt

4、从网络文件系统启动

#u-boot:
setenv bootargs  'root=/dev/nfs  rw  nfsroot=192.168.1.123:/work/nfs/filesystem ethmac=1C:6F:65:34:51:7E  ip=192.168.1.125:192.168.1.123:192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,115200  init=/linuxrc'
#u-boot:save
#u-boot:dnw 0x40600000
dnw arch/arm/boot/uImage
#u-boot:dnw 0x42000000
dnw  arch/arm/boot/dts/exynos4412-tiny4412.dtb
bootm 0x40600000 - 0x42000000

四、源码下载

Git clone https://github.com/fengyuwuzu0519/linux4_forTiny4412.git

git clone https://github.com/fengyuwuzu0519/rootfs_forTiny4412

文件系统git下了少东西,则创建如下:

(mkdir dev  proc  sys  tmp  var    mknod  dev/console  c  5  1)

git clone https://github.com/fengyuwuzu0519/u-boot_forTiny4412

make distclean

make tiny4412_config

make

内核修改的代码下载链接:

http://download.csdn.net/detail/fengyuwuzu0519/9887164

tiny4412学习(三)之移植linux-4.x驱动(1)支持网卡驱动【转】的更多相关文章

  1. Linux网络管理(一):网卡驱动与Linux内核

    下图简单描述了网卡驱动与Linux内核之间的联系: 关于上图的一些说明: 系统初始化: 1. 协议模块调用 dev_add_pack() 来注册协议处理函数到链表 &ptype_base: 2 ...

  2. tiny4412学习(四)之移植linux-设备树(1)设备树基础知识及GPIO中断【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74177978 版权声明:本文为博主原创文章,转载请注明http://blog.c ...

  3. Linux网卡驱动安装、防火墙原理

    安装网卡驱动程序: 需要检查是否安装kernel依赖包: rpm –q kernel-devel #检查kernel依赖包是否安装 yum –y install kernel-devel 检查gcc和 ...

  4. Linux下查看网卡驱动和版本信息

    Linux下查看网卡驱动和版本信息 查看网卡生产厂商和信号 查看基本信息:lspci 查看详细信息:lspci -vvv # 3个小写的v 查看网卡信息:lspci | grep Ethernet 查 ...

  5. linux4.1内核配置以及编译及千兆网卡dp83867网卡驱动移植

    一  内核配置编译 1首先解压内核 tar jxvf linux-at91-4.1.tar.bz2: 2下载编译链 在ubuntu命令行中输入sudo apt-get install gcc-arm- ...

  6. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

  7. Tiny4412 学习

    平台: Tiny4412ADK + S700 + 4GB FlashU-boot: 友善之臂提供的开源U-boot Linux: linux-3.0.31 Android: android_4_1_2 ...

  8. docker深入学习三

    docker学习三:network docker支持容器之间的网络通信,docker的网络通信方式有以下五种: bridge docker 默认的网络驱动,如果不指定网络驱动,docker就会创建一个 ...

  9. ZYNQ跑系统 系列(二) petalinux方式移植linux

    三.搭建petalinux工程 0.定位目录    先在shell中找一个准备存放工程的地方,(我的是home/hlf/PRO),命令行cd home/hlf/PRO 1.定位编译链    根据安装p ...

随机推荐

  1. C++标准库 vector排序

    前天要做一个对C++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排 ...

  2. RabbitMQ系列(三)--Java API

    基于java使用RabbitMQ 框架:SpringBoot1.5.14.RELEASE maven依赖: <dependency> <groupId>com.rabbitmq ...

  3. 00JavaScript

    JavaScript JavaScript是由网景公司开发的一种跨平台面向对象(object-oriented)的网页脚本语言(Web Script Language)是目前流行的网页特效设计语言Ja ...

  4. cgroup代码浅析(2)

    info include/linux/memcontrol.h memcg相关的函数 数据结构 mem_cgroup在每个node下,都有一个lruvec, 这个lruvec保存在mem_cgroup ...

  5. Oracle的shutdown命令

    oracle的shutdown命令用来关闭当前实例,有4个可选参数:normal.transactional.immediate和abort.不带参数时默认是normal.这几个参数的差异体现在以下几 ...

  6. ORM优化

    orm优化数据库访问:https://docs.djangoproject.com/en/1.11/topics/db/optimization/ 一.QuerySet 可迭代 querysey=mo ...

  7. linux free命令-显示内存的使用情况

    更多Linux 性能监测与优化 关注 Linux命令大全 free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区. 语法 free(选项) 选项 -b:以Byte为单 ...

  8. JMeter测试websocket

    今天公司要测websocket,搞了一天踩了不少坑,关键是还没爬出来,BOSS让回家再理理思路,没办法到家就开干. 一.家里玩的还是2.1的,为了少踩坑,先下个JMeter5.1.1(他们说4版本也行 ...

  9. LINUX-关机 (系统的关机、重启以及登出 )

     shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统  ...

  10. dp专题备忘录

    hdu 1024:基础dp题 hdu 1029:主元素问题,很快的解法,计数器 hdu 1069:LIS hdu 1074:数位dp,数位dp基础 hdu 1257:简单LIS,要仔细分析为什么是求最 ...