ssd 以太网设备驱动
本文涉及 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 以太网设备驱动相关推荐
- linux设备驱动开发详解源码,linux设备驱动开发详解光盘源码.rar
压缩包 : linux设备驱动开发详解光盘源码.rar 列表 19/busybox源代码/busybox-1.2.1.tar.bz2 19/MTD工具/mtd-utils-1.0.0.tar.gz 1 ...
- 《Linux设备驱动开发详解 A》一一2.3 接口与总线
本节书摘来华章计算机出版社<Linux设备驱动开发详解 A>一书中的第2章,第2.3节,作者:宋宝华 更多章节内容可以访问云栖社区"华章计算机"公众号查看.1 2.3 ...
- Linux 设备驱动开发 —— 设备树在platform设备驱动中的使用
关与设备树的概念,我们在Exynos4412 内核移植(六)-- 设备树解析 里面已经学习过,下面看一下设备树在设备驱动开发中起到的作用 Device Tree是一种描述硬件的数据结构,设备树源(De ...
- linux块设备驱动编写,Linux内核学习笔记 -49 工程实践-编写块设备驱动的基础
块设备可以随机存储.字符设备,比如键盘,只能按照输入顺序存取,不可随机,打乱输入的字节流. 文件系统层,包括常见的文件系统,以及虚拟文件系统层VFS,字符设备可以直接用应用程序打开.块设备不会在应用程 ...
- Linux操作系统原理与应用09(完):设备驱动
目录 1. 设备驱动概述 1.1 万物皆文件 1.2 设备分类 1.2.1 块设备 1.2.2 字符设备 1.2.3 网络设备 1.3 设备驱动分层结构 1.3.1 驱动类型与驱动分层 1.3.1 块 ...
- 《linux设备驱动开发详解》笔记——14 linux网络设备驱动
14.1 网络设备驱动结构 网络协议接口层:硬件无关,标准收发函数dev_queue_xmit()和netif_rx(); 注意,netif_rx是将接收到的数据给上层,有时也在驱动收到数据以后调用 ...
- Linux设备驱动编程第三版-笔记
第1章 设备驱动简介 1.1 驱动程序的角色 机制:提供什么能力. 策略:如何使用这些能力. 1.2. 划分内核 内核的角色可以划分: 一:进程管理 二:内存管理 三:文件系统 四:设备控制 ...
- Linux 设备驱动
驱动编译要用到kernel的Makefile文件 - - 也就是源码树的编译系统.因此,源码需要被配置和编译,以ubuntu自带的源码为例: 编译外部模块(.ko)的编译命令是: make -C M= ...
- 十六、Linux驱动之块设备驱动
1. 基本概念 块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备,块设备(blockdevice)是一种具有一定结构的随机存取设备,对这种设备的读写是按块(所以叫块设备) ...
最新文章
- ubuntu12.04+fuerte 下跑通lsd-slam——数据集
- 跟着 Github 学习 Restful HTTP API 的优雅设计
- 关于java中::语法的理解
- SAP云平台上的Business Partner业务合作伙伴和账户主数据服务
- golang 捕获堆栈信息_【网络数据安全】为什么时间戳对于数据包捕获很重要
- 带有Flask的服务器端DataTable
- 还有哪些类似0.99999…=1有趣的事实?
- torchtext处理文本数据——将文本变为embedding(学习三)
- QTableWidget简单使用
- 学习笔记-数据结构与算法之线性表
- uilabe加载html,UILabel加载html字符串
- 微信小程序点餐系统的开发与实现
- Informatic学习总结_day03_update组件学习
- 百度界面代码及效果展示
- 2020-08《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布
- OpenPCDet 训练自己的数据集详细教程!
- 单代号网络图计算例题_钣金展开计算210例节省放样场地,不理解公式也能完成展开计算!...
- 最新PHP开源采集器/蓝天采集器系统源码
- php给微信公众号接入聊天机器人程序+采坑记录
- CentOS 7.8 remove JDK