zoukankan      html  css  js  c++  java
  • tiny4412学习(三)之移植linux-4.x驱动(1)支持网卡驱动【转】

    本文转载自: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

     

    [cpp] view plain copy
     
     print?
    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、  编译

    [cpp] view plain copy
     
     print?
    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

  • 相关阅读:
    acm的STL容器之vector篇
    服务器远程管理方法及centos该装那个
    VB获取对象成员
    获取搜索引擎关键字建议
    IntelliJ IDEA乱码 问题
    排序算法思想
    ubuntu16 开机启动plank
    fail-fast出识
    html 标签过滤、转译、反转译
    (a ==1 && a== 2 && a==3) 有可能是 true 吗?
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7249899.html
Copyright © 2011-2022 走看看