本文涉及 SSD202 做为主处理器芯片。

1 硬件设计

  • 拥有一路内置MAC+PHY电路的接口,P107-109,实现100M网口。

  • 拥有一路内置MAC的接口,它与TTL-RGB接口复用,外接PHY芯片IP01GR。

    理论上,该处理器可以实现基础2个网口功能。

2 内核设置

2.1 DTS配置

2.1.1 引脚配置

ETH0:arch\arm\boot\dts\infinity2m-ssc011a-s01a-padmux-display-doubleNet.dtsi
固定功能引脚,不复用。
//<PAD_ETH_RN >, // ETH: default not-GPIO
//<PAD_ETH_RP >, // ETH: default not-GPIO
//<PAD_ETH_TN >, // ETH: default not-GPIO
//<PAD_ETH_TP >, // ETH: default not-GPIO

ETH1: arch\arm\boot\dts\infinity2m-ssc011a-s01a-padmux-rgb565-rmii-doublenet.dtsi,注意:有其它文件使用PINMUX_FOR_ETH1_MODE_3不确定具体用哪个。
<PAD_GPIO0 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_GPIO1 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL16 PINMUX_FOR_GPIO_MODE MDRV_PUSE_EMAC1_PHY_RESET>,
<PAD_TTL17 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL18 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL19 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL20 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL21 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL22 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,
<PAD_TTL23 PINMUX_FOR_ETH1_MODE_4 MDRV_PUSE_NA >,

通过上面定义处理器的网络相关引脚。

2.1.2 网络功能支持

参考自 : infinity2m-doublenet.dtsi

emac0: emac0 {compatible = "sstar-emac";interrupts = <GIC_SPI INT_IRQ_EMAC IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI INT_FIQ_LAN_ESD IRQ_TYPE_LEVEL_HIGH>;clocks = <&CLK_emac_ahb>,<&CLK_emac_tx>,<&CLK_emac_rx>;reg = <0x1F2A2000 0x800>, <0x1F343C00 0x600>, <0x1F006200 0x600>;pad = <0x1F203C38 0x0001 0x0000>; // pad selection from 0x0001phy-handle = <&phy0>;status = "ok";mdio-bus@emac0 {phy0: ethernet-phy@0 {phy-mode = "mii";};};};emac1: emac1 {compatible = "sstar-emac";interrupts = <GIC_SPI INT_IRQ_EMAC_1 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI INT_FIQ_LAN_ESD IRQ_TYPE_LEVEL_HIGH>;clocks = <&CLK_emac_ahb>,<&CLK_emac1_tx>,<&CLK_emac1_rx>,<&CLK_emac1_tx_ref>,<&CLK_emac1_rx_ref>;reg = <0x1F2A2800 0x800>, <0x1F344200 0x600>, <0x00000000 0x000>;pad = <0x1F203C38 0x0F00 0x0300>; // pad selection from 0x0100/0x0200/0x0300/0x0400/0x0500/0x0600/0x0700/0x0800/0x0900status = "ok";phy-handle = <&phy1>;mdio-bus@emac1 {phy1: ethernet-phy@1 {phy-mode = "rmii";};};};

2.2 内核配置

ETH0 芯片网卡驱动支持:

EMAC
SSTAR 10/100 PHYs
ETH1:

开启IP101的驱动支持 ICPlus PHYs

2 系统启动

网络相关的:
libphy.ko mii.ko of_mdio.ko kdrv_emac.ko

ETH0:
kdrv_emac.ko sstar_100_phy.ko

ETH1
icplus.ko*

kdrv_emac 30335 0 - Live 0xbf977000
sstar_100_phy 1890 1 - Live 0xbf89b000
of_mdio 5815 3 kdrv_emac, Live 0xbf972000
fixed_phy 2661 1 of_mdio, Live 0xbf897000
libphy 24566 5 kdrv_emac,sstar_100_phy,of_mdio,fixed_phy, Live 0xbf88c000

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:30:1B:BA:02:DB  BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)Interrupt:35 eth1      Link encap:Ethernet  HWaddr 00:30:1B:BA:02:DB  BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)Interrupt:37 lo        Link encap:Local Loopback  LOOPBACK  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
# ifconfig eth0 192.168.250.139 netmask 255.255.255.0 up
# ip route add default dev eth0
# ping 192.168.250.1
PING 192.168.250.1 (192.168.250.1): 56 data bytes
64 bytes from 192.168.250.1: seq=0 ttl=64 time=1.479 ms
64 bytes from 192.168.250.1: seq=1 ttl=64 time=0.308 ms

ssd 以太网设备驱动相关推荐

  1. linux设备驱动开发详解源码,linux设备驱动开发详解光盘源码.rar

    压缩包 : linux设备驱动开发详解光盘源码.rar 列表 19/busybox源代码/busybox-1.2.1.tar.bz2 19/MTD工具/mtd-utils-1.0.0.tar.gz 1 ...

  2. 《Linux设备驱动开发详解 A》一一2.3 接口与总线

    本节书摘来华章计算机出版社<Linux设备驱动开发详解 A>一书中的第2章,第2.3节,作者:宋宝华 更多章节内容可以访问云栖社区"华章计算机"公众号查看.1 2.3 ...

  3. Linux 设备驱动开发 —— 设备树在platform设备驱动中的使用

    关与设备树的概念,我们在Exynos4412 内核移植(六)-- 设备树解析 里面已经学习过,下面看一下设备树在设备驱动开发中起到的作用 Device Tree是一种描述硬件的数据结构,设备树源(De ...

  4. linux块设备驱动编写,Linux内核学习笔记 -49 工程实践-编写块设备驱动的基础

    块设备可以随机存储.字符设备,比如键盘,只能按照输入顺序存取,不可随机,打乱输入的字节流. 文件系统层,包括常见的文件系统,以及虚拟文件系统层VFS,字符设备可以直接用应用程序打开.块设备不会在应用程 ...

  5. Linux操作系统原理与应用09(完):设备驱动

    目录 1. 设备驱动概述 1.1 万物皆文件 1.2 设备分类 1.2.1 块设备 1.2.2 字符设备 1.2.3 网络设备 1.3 设备驱动分层结构 1.3.1 驱动类型与驱动分层 1.3.1 块 ...

  6. 《linux设备驱动开发详解》笔记——14 linux网络设备驱动

    14.1 网络设备驱动结构 网络协议接口层:硬件无关,标准收发函数dev_queue_xmit()和netif_rx();  注意,netif_rx是将接收到的数据给上层,有时也在驱动收到数据以后调用 ...

  7. Linux设备驱动编程第三版-笔记

    第1章 设备驱动简介 1.1 驱动程序的角色 机制:提供什么能力. 策略:如何使用这些能力. 1.2. 划分内核 内核的角色可以划分:     一:进程管理 二:内存管理 三:文件系统 四:设备控制 ...

  8. Linux 设备驱动

    驱动编译要用到kernel的Makefile文件 - - 也就是源码树的编译系统.因此,源码需要被配置和编译,以ubuntu自带的源码为例: 编译外部模块(.ko)的编译命令是: make -C M= ...

  9. 十六、Linux驱动之块设备驱动

    1. 基本概念 块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备,块设备(blockdevice)是一种具有一定结构的随机存取设备,对这种设备的读写是按块(所以叫块设备) ...

最新文章

  1. ubuntu12.04+fuerte 下跑通lsd-slam——数据集
  2. 跟着 Github 学习 Restful HTTP API 的优雅设计
  3. 关于java中::语法的理解
  4. SAP云平台上的Business Partner业务合作伙伴和账户主数据服务
  5. golang 捕获堆栈信息_【网络数据安全】为什么时间戳对于数据包捕获很重要
  6. 带有Flask的服务器端DataTable
  7. 还有哪些类似0.99999…=1有趣的事实?
  8. torchtext处理文本数据——将文本变为embedding(学习三)
  9. QTableWidget简单使用
  10. 学习笔记-数据结构与算法之线性表
  11. uilabe加载html,UILabel加载html字符串
  12. 微信小程序点餐系统的开发与实现
  13. Informatic学习总结_day03_update组件学习
  14. 百度界面代码及效果展示
  15. 2020-08《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布
  16. OpenPCDet 训练自己的数据集详细教程!
  17. 单代号网络图计算例题_钣金展开计算210例节省放样场地,不理解公式也能完成展开计算!...
  18. 最新PHP开源采集器/蓝天采集器系统源码
  19. php给微信公众号接入聊天机器人程序+采坑记录
  20. CentOS 7.8 remove JDK

热门文章

  1. 「元旦快乐 」能力上新 氚云
  2. 招沿实业普通家庭理财规划方案
  3. (附源码)计算机毕业设计SSM圆梦酒店管理系统
  4. Java 基于Excel模板实现导出Excel并插入数据
  5. 分布式电商项目(1)---vue初始化项目
  6. VR多媒体互动系统展馆应用方案
  7. 太赫兹频段耦合器设计相关经验总结
  8. MATLAB 看图猜成语 小游戏
  9. Failed to enable unit: Unit file docker.service does not exist
  10. 一款DIY微头像助手的微信小程序,可以给头像加入各种个性挂件(圣诞帽,中国年,小红旗,口罩)的小程序工具