【Linux/安卓+SPI以太网项目】

各位新年好!
2017第一天开工上班,没啥新项目安排;借此空挡整理一份去年安卓设备增加SPI以太网的应用案例,互相探讨;继上次的USB网卡项目之后,公司又接到了不少添加以太网的客户需求;

这批客户网速需求一般较为简单,无需很大的带宽传输视频文件,一般用来上传下载一些采集数据,控制命令,语音信息等;而此时硬件平台又很尴尬,只有一个USB接口,如果用USB网卡将增加调试难度。

这时候想到了之前供应商推荐的一款SPI接口以太网芯片,DM9051NP,应该能胜任此些客户项目需求;
于是找供应商拿到了开发资料,以及开发demo板,开干!!

demo板照片如下:

 

 



【DM9051芯片驱动+硬件资料】


链接: https://pan.baidu.com/s/1ei88hNObtq3m-wzV67dRzA 提取码: 4mu3 复制这段内容后打开百度网盘手机App,操作更方便哦

 

 

【驱动】

 

 

 

/* drivers/net/dm9051.c (dm9r.c )

 *

 * Copyright 2014 Davicom Semiconductor,Inc.

 * http://www.davicom.com.tw

 * 2014/03/11  Joseph CHANG  v1.0  Create

 * 2014/05/05  Joseph CHANG  v1.01  Start from Basic functions

 * 2015/06/08  Joseph CHANG  v1.02  Formal naming (Poll version)

 *

 * This program is free software; you can redistribute it and/or

 * modify it under the terms of the GNU General Public License

 * as published by the Free Software Foundation; either version 2

 * of the License, or (at your option) any later version.

 *

 * This program is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

 * GNU General Public License for more details.

 *

 *  Ver: Step1.2p1: Use "db->ret95" to trace bug track.. (20151127)

 *  Ver: Step1.3 dma: mt_ DMA.. (20151203)

 *  Ver: Step1.3p1 DMA3_PNs design for platforms' config (20151223)

 * Ver: 3p6s

 * Ver: 3p6ss

 * Ver: 3p11sss (kmalloc re-placement)

 *        Remove: drwbuff_u8()

 *  Ver: V1.1

 *  Ver: V1.2 Default as static 'dm9051.o'

 */

 

 

 

 

 

 

...

 

 

添加步骤:

1.做成  .KO 或 .o (整合在 zImage里面) 都可~
  

2. SPI master:
      到 arch/arm/  找到你的 board device directory
            ( 例如: 我用 s5pv210 , 为 mach-s5pv210 )
           在 此目录裡找到board source file
   (例如: 我用 s5pv210 , 为 mach-mini210.c )
                在此档案裡, 改 (此例为SPI0, 若为SPI1 则
保留SPI0 這组,  改用下一组   .bus_num         = 1 者, )
              ( 註:依此方式, 如各個平台会略有差异!)

static struct spi_board_info s3c_spi_devs[] __initdata = {
        {   
                .modalias        =  "dm9051",  // .modalias= "spidev", /* MMC SPI */
                .mode            =  SPI_MODE_0,
                .max_speed_hz    =   33000000,  //[SPEC. MAX]

                /* Connected to SPI-0 as 1st Slave */
                .bus_num         = 0,
                .chip_select     = 0,
                .controller_data = &smdk_spi0_csi[SMDK_MMCSPI_CS],
        },
        ..
}

 

 

3. 增添 DM9051 Linux driver 到drivers/net/  ,  

 

 

 

3.1 Add source to the kernel

 

$ cp dm9051.h drivers/net/ethernet/davicom/
$ cp dm9051.c drivers/net/ethernet/davicom/
3.2 Modify source in the kernel

$ vi drivers/net/ethernet/Makefile
+obj-$(CONFIG_DM9051) += davicom/
$ vi drivers/net/ethernet/davicom/Makefile
+obj-$(CONFIG_DM9051) += dm9051.o
$ vi drivers/net/ethernet/davicom/Kconfig
+config DM9051
+      tristate ”DM9051 support”
+      depends on ARM || BLACKFIN || MIPS
+      selectCRC32
+      selectMII
+      ---help---
+        Support for DM9051 chipset.
$ vi arch/arm/mach-bcm2709/bcm2709.c
-        .modalias = “spidev”,
-        .max_speed_hz =500000,
+        .modalias = “dm9051”,
+        .max_speed_hz = 20000000,

 

 

 

 

 

 

 

做成  .KO 或 .o (整合在 zImage里面)

    ( 註:比较新的Linux核心, 路径变更为 drivers/net/ethernet/davicom/ !)


完成以上即成~

最后测试底层ping路由,ping外网均ok;
再把上层以太网设置栏选项调出来即可。

 

 

 

 

 

 

 

 

 

 

 

 

【可能会遇到的问题】


1,添加驱动后,无法查询到以太网设备;
     》》检测SPI接线有无问题,关于宏定义也检查下。

2,网卡无法自动UP,每次重启都需要手动UP一次;
     》》vim /etc/sysconfig/network-script/ifeth0   中的ONBOOT=NO修改为ONBOOT=YES
     》》不然就写个sh脚本->/data/,ifconfigeth0up,dhcp up等。
     》》修改init.mt6735.rc让插入网卡就自动获取ip:

 

device/mediatek/mt6735/init.mt6735.rc

#DHCPCD  
# eth0  by eric.wang
service dhcpcd_eth0 /system/bin/dhcpcd -ABKL  
    class main  
    disabled  
    oneshot 
   

# IP Renew  
# # eth0  by eric.wang
service iprenew_eth0 /system/bin/dhcpcd -n  
    class main  
    disabled  
    oneshot  
     





3,底层能ping通,浏览器却无法访问;
     》》检查dns获取情况,一般能ping IP dns是没问题的;
     》》对比安卓版本之间的区别,web相关调用底层的地方是否有改动;
     》》修改以太网权限文件:
PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml
然后,配置config.xml
    <string-array translatable="false" name="networkAttributes">
<item>"ethernet,9,9,1,-1,true"</item>
<item>"wifi,1,1,2,-1,true"</item>



4,SPI休眠、速率等问题;
    》》有些平台SPI会休眠导致以太网挂掉,建议休眠功能关闭;

 

     》》速率来说,一般SPI可以设置0-80Mhz的时钟速率,以太网速率也会随之提升;

 

     》》:DM9051SPI時鐘速率可達 50MHz.

     》》网口速率一般能到5-10Mbps。

 

5, Android4.4 以太网和DHCP启动过程介绍(转)

6,    安卓4.4增加以太网上层服务(转)

 

 

 

如还有发现更多问题,后面我会再更新上来,谢谢。

 

DM9051供应商信息如下:

深圳市嘉鸿时代科技  0755-26727968

 

 

*DM9051NP芯片介紹,來自台灣聯傑國際/Davicom官网:

 

 

 

 

 

主芯片開發板: Raspberry Pi2 / BCM2836

SPI clock is 20 MHz, The TX/RX performance:

The receive performance test by:  # iperf –s

We get the result RX 8.52 mbps

The send performance test by:  # iperf –c $IP  (Note: $IP is the test opposite partner’s IP address)

We get the result TX 8.65 mbps

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值