原文

https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/06_02_00_21/exports/docs/psdk_rtos_auto/docs/user_guide/developer_notes.html

正文

通用端口交换机 (CPSW) 为设备提供以太网数据包通信,同时也充当以太网交换机。 总端口包括主机端口,它是为设备内核提供数据包流接口的内部端口。 外部端口是 MAC 端口,支持媒体独立接口 (MII),如 MII、千兆媒体独立接口 (GMII)、精简媒体独立接口 (RMII)、精简千兆媒体独立接口 (RGMII)、串行千兆媒体独立接口 (SGMII) 和 四路串行千兆媒体独立接口 (QSGMII)。 支持的 MII 模式因设备型号而异。

J721E有2个实例,在MCU域(MCU_CPSW0)中有2端口,在主域中有9端口交换机(MAIN_CPSW1)。

CPSW 实例通常以端口数后缀为 CPSW,例如 2 端口实例称为 CPSW2G,而 9 端口实例称为 CPSW9G。

CPSW 支持软件

1、以太网固件(EthFw)是运行在主域R5上的用于控制和配置CPSW9G的软件。由于 CPSW9G 是共享资源,EthFw 协调和管理这些内核之间的资源,并使用 CPSW LLD 促进配置。

2、CPSW LLD 是驻留在PDK 中的低级驱动程序。它支持 CPSW2G 和 CPSW9G IP,并为更高级别的堆栈提供 HAL 层。 EthFw 使用 CPSW LLD 进行 CPSW9G 交换机配置。 NIMU(网络接口管理单元)是 TI NDK 抽象层,将 CPSW LLD 连接到 NDK 堆栈。 NIMU 库是 CPSW LLD 的一部分,支持将 CPSW2G 和 CPSW9G 与 TI NDK TCP/IP 应用程序一起使用。

3、 j721e_virt_mac 虚拟 CPSW MAC 驱动,实现标准 Linux netdev 接口,使用 rpmsg-kdrv Eth 交换机设备提供的 RPC 服务,为运行在 R5F 内核之一上的 Eth 交换机固件提供 RPC 接口,并完全控制 J721E CPSW9G 硬件模块。支持的功能:
ifconfig dev 上/下
ifconfig dev
ifconfig dev hw ether – 仅当接口关闭时
ethtool -k dev

本开发人员说明的范围是指向 SDK(RTOS 和 Linux)中可用的各种文档和源代码资源,以了解和使用 CPSW2G(在用户应用程序中使用 CPSW LLD 和 CPSW9G 使用 EthFw)。

源代码参考

1 CPSW_LLD

SDK 组件 文件/文件夹 说明
PDK pdk/packages/ti/drv/cpsw/cpsw.h CPSW2G 和 CPSW9G 的 CPSW 驱动程序接口
PDK pdk/packages/ti/drv/cpsw/inc/cpsw_phy PHY LLD驱动接口
PDK pdk/packages/ti/drv/board/ 用于CPSW9G GESI 板的板驱动程序

2 Eth_Fw

SDK 组件 文件/文件夹 说明
EthFw ethfw/ethremotecfg/protocol/rpmsg-kdrv-transport-ethswitch.h EthFw 远程配置协议接口
EthFw ethfw/ethremotecfg/server/include/ethremotecfg_server.h EthFw RTOS 配置服务器接口
EthFw ethfw/ethremotecfg/client/include/ethremotecfg_client.h EthFw RTOS 配置客户端界面
PDK pdk/packages/ti/drv/cpsw/cpsw_cfgserver/cpsw_cfgserver.h CPSW 配置工具(GUI)界面

8.9.4.3。 J721E CPSW V_irtual MAC

SDK 组件 文件/文件夹 说明
PSDKLA ${PSDKLA_LINUX_KERNEL_PATH}/drivers/net/ethernet/ti/j721e-cpsw-virt-mac.c J721E CPSW 虚拟 MAC 驱动程序

4 EthFw 的演示应用程序

SDK 组件 文件/文件夹 说明
PDK pdk/packages/ti/drv/cpsw/examples/cpsw_loopback_test 所有支持的内核(mcu2_0、mcu1_0、mpu1_0、mcu2_1)上的 CPSW2G/9G 内部环回示例
PDK pdk/packages/ti/drv/cpsw/examples/cpsw_nimu_example CPSW2G/9G 的 NDK 集成示例。支持的内核(mcu2_0、mcu1_0、mpu1_0、mcu2_1)
EthFw ethfw/apps/app_remoteswitchcfg_server 这是交换机固件。托管 EthFw 资源管理器和远程配置库。还运行 cpsw 配置工具服务器。
EthFw ethfw/apps/app_remoteswitchcfg_client mcu2_1 上的 EthFw 远程客户端。使用远程客户端与 EthFw 通信并获取分配给 mcu2_1 的 CPSW9G 资源

EthFw boot flow

  • 在 A72 上使用 Linux 时,在 PSDKLA 和 PSDKRA 中,R5 SPL (tiboot3.bin) 加载 EthFw (/lib/firmware/j7-main-r5f0_0-fw)。 Linux 内核后期通过远程 proc 与 EthFw 连接。
  • 在 PSDKRA 中,运行在 mcu2_0 上的 EthFw 也可以通过 TI SBL 启动。

Getting started on CPSW & EthFw

Refer to CPSW integration guide [LINK], section Examples for available examples.

1.配置网口模式

根据您的板卡配置,端口可以处于 RMII、RGMII 等模式。您需要执行以下操作以在所需模式下配置端口。

  • 使用板库将端口 ENET 控制配置为所需模式。

  • 配置 CPSW 接口。

    • 对于RMII,它应该配置为下面

      • interface->layerType = CPSW_MAC_LAYER_MII; interface->sublayerType = CPSW_MAC_SUBLAYER_REDUCED; interface->variantType = CPSW_MAC_VARIANT_NONE;
    • 对于RGMII,它应该被配置为下面
      • interface->layerType = CPSW_MAC_LAYER_GMII; interface->sublayerType = CPSW_MAC_SUBLAYER_REDUCED; interface->variantType = CPSW_MAC_VARIANT_NONE;

2.运行 CPSW 环回示例

我们建议先运行 CPSW 环回示例,因为这对电路板/EVM 设置没有任何依赖性
请参阅 PDK 用户指南 [LINK],构建步骤部分的构建步骤

3.运行 CPSW NIMU 示例(TCP/IP 示例)

运行回送示例后,您可以运行 cpsw_nimu_example,该示例将 TI NDK 用于 TCP/IP 应用程序。
您需要将 EVM 连接到运行 DHCP 服务器的 PC。运行示例后,您应该会在 UART 上看到打印出的 IP。 EthFw 使用 UART2 进行日志记录。 PDK CPSW 示例使用基于其正在运行的内核的 UART。有关 Core-UART 映射,请参阅 PDK 文档。如果要使用静态 IP 配置,请编辑 cpsw_nimu_example/nimu_example.cfg 以启用静态 IP。
您可以使用此 IP 地址 ping 登板

4.在 CPSW 中集成新的 PHY

如果 cpsw/src/phy/* 中存在的现有 PHY 驱动程序不支持您的电路板上存在的 PHY,则您需要添加新的 PHY 驱动程序。
请参阅 PHY 集成指南 [LINK],其中详细介绍了在 CPSW LLD 中添加对新 PHY 的支持。

5.修改示例以支持您的电路板配置

修改示例以更改 PHY 地址、速度(10M/100M/1G 等)设置、模式(RMII/RGMII 等)设置。
重新构建示例并在您的板上运行。您应该能够看到正在发生的数据传输。

6.使用 GEL 文件进行调试和诊断

CPSW LLD 包括调试和诊断凝胶文件,以帮助将 CPSW 集成到您的应用程序中。凝胶文件存在于 pdk/packages/ti/drv/cpsw/tools/debug_gelscpsw_stats_print_regs.gel - 打印 CPSW 的非零统计信息cpsw_mdio_config.gel - 可用于读/写 PHY 寄存器cpsw_ale_print_table.gel - 打印 ALE 表的所有条目cpsw_enectrl_cfg.gel - 确保板模式匹配配置的模式。

7.使用 Linux j721e_virt_mac

Linux 上的虚拟 mac 驱动程序在内核启动期间自动加载。它当前配置为 DHCP 模式,因此它通过连接到 CPSW9G 端口的 PC 上运行的 DHCP 服务器获取 IP。要获取虚拟 mac 驱动程序的 IP 地址,请运行“ifconfig”

root@j7-evm:~# ifconfigeth0 链接封装:以太网 HWaddr 50:51:A9:FB:F4:2Einet addr:172.24.190.24 Bcast:172.24.191.255 Mask:255.255.252.0 inet6 addr:fe80::5251:a9ff:fefb:f42e/64 Scope:Link UP BROADCAST RUNNING packet:255.255.252.0 inet6 addr: fe80::5251:a9ff:fefb:f42e/64 0 丢弃:120 溢出:0 帧:0 TX 数据包:215 错误:0 丢弃:0 溢出:0 载波:0 冲突:0 txqueuelen:1000 RX 字节:177194 (173.0 KiB) TX 字节:21218 (20.7 KiB)
eth1 链接封装:以太网 HWaddr 70:FF:76:1D:87:95inet addr:192.168.1.31 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::72ff:76ff:fe1d:8795/64 Scope:Link UP BROADCAST RUNNING packet:115RX0 MULTIC 0 0 丢弃:0 溢出:0 帧:0 TX 数据包:56 错误:0 丢弃:0 溢出:0 载波:0 冲突:0 txqueuelen:1000 RX 字节:684 (684.0 B) TX 字节:10769 (10.5 KiB)
lo 链路封装:本地环回inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX包:2错误:0丢弃:0溢出:0帧:0 TX包: 2个错误:0丢弃:0溢出:0载波:0碰撞:0 txqueuelen:1000 RX字节:140(140.0 B)TX字节:140(140.0 B)

下面的标准 Linux 命令可以在虚拟 mac 界面上运行。

    ifconfig dev 上/下ifconfig dev <IP>ifconfig dev hw ether <MAC> – 仅当接口关闭时ethtool -k dev

【TDA4系列】使用 Linux + RTOS 开发基于以太网的应用程序相关推荐

  1. 在 Linux 下开发和下载8051单片机程序

    在 Linux 下开发和下载8051单片机程序 在 Linux 下需要用 sdcc 开发8051单片机程序,用 stcgal 这个 python 程序将编译好的8051单片机程序下载到裸机上. sdc ...

  2. 用vc对oracle数据库编程,用VC开发基于ORACLE数据库应用程序

    用VC开发基于ORACLE数据库应用程序 徐智文 [期刊名称]<包钢科技> [年(卷),期]2006(032)001 [摘要]VC++是一个强大的客户端开发工具,可以很方便地开发出基于PR ...

  3. 能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗?

    能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗? 转载于:https://www.cnblogs.com/ygm900/p/3472859.html

  4. linux驱动开发音频设备驱动,linux驱动开发—基于Device tree机制的驱动编写

    摘要:媒介 Device Tree是一种用去描绘硬件的数据布局,类似板级描绘说话,发源于OpenFirmware(OF).正在现在遍及应用的kernel 2.6.x版本中,对分歧仄台.分歧硬件,往] ...

  5. linux 三维数据绘图软件,Linux下开发基于.NET的三维绘图程序

    很多人可能知道使用.NET Core可以开发跨平台(包括Windows,Linux.MacOS)的App,但知道在Linux下使用.NET Core可以开发三维程序的恐怕就很少了.本文通过借助.NET ...

  6. linux上三维绘图软件,linux下开发基于.net的三维绘图程序

    很多人可能知道使用.NET Core可以开发跨平台(包括windows,linux.macOS)的App,但知道在Linux下使用.NET Core可以开发三维程序的恐怕就很少了.本文通过借助.NET ...

  7. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案

    描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...

  8. [linux驱动开发] 基于gpiod API的platform总线多个led驱动开发

    gpiod API对platform-led进行驱动开发 修改设备树源码 如何在驱动中获取设备树节点信息 计算设备子节点数量 给私有属性分配内存 对子节点进行遍历 gpiod的获取 根据设备树字节给的 ...

  9. linux用于开发qt java_Linux下Qt程序的打包发布

    为便于描述,我们这里假设生成的程序名称为test(即要发布的程序名称) 方法一: 1. QtCreate使用Release版本编译 将编译后生成的可执行程序(如:test)复制到一个空目录下 2.使用 ...

  10. 接 嵌入式设备上的Linux系统开发

    Xfree86 4.X(带帧缓冲区支持的 X11R6.4) XFree86 Project, Inc. 是一家生产 XFree86 的公司,该产品是一个可以免费重复分发.开放源码的 X Window ...

最新文章

  1. 图像特征点检测与匹配评价准则——量化
  2. 查看哪个进程占用端口
  3. 大数据开发上岗基本要求
  4. 64位Outlook 无法与OC集成
  5. 将一个普通 JAR 文件打包为 plugin 的一个问题
  6. 吴恩达机器学习 2.矩阵和向量知识
  7. VSCode打开终端的快捷键
  8. 张东:大数据时代挑战与解决之道
  9. ubuntu网络设置找不到有线连接_win7系统找不到网络打印机如何解决?局域网打印机共享怎么设置?...
  10. [4G5G专题-45]:物理层-基带子载波数字调制解调(星座图, 相位调制PSK, 正交幅度相位调制QAM)
  11. 周杰伦新歌刷爆朋友圈的背后 付费音乐的春天终于来了?
  12. 计算机网络网络适配器的作用是什么原因,Win10网络适配器在哪里对网络有什么影响 网络适配器出现各种故障的解决方法...
  13. ADXL345-数字加速度计
  14. 仿真器和模拟器的区别
  15. SDUT 3386小雷的冰茶几
  16. 在silverlight 使用 IronPython
  17. 考古表明陕西银沟遗址是目前仅见保存完好的唐宋县城遗址
  18. 手机上计算机记录怎么删除,手机怎么删除支付宝消费记录 清除支付宝账单明细方法...
  19. 怎么在VM虚拟机上装显卡等驱动
  20. 普通用户加入wheel,有sudo权限

热门文章

  1. ENVI Classic 二次开发简介
  2. linux qt 触摸屏事件,利用触摸屏获取事件坐标
  3. 实习成长之路——SpringBean一:BeanDefinition元信息有什么?除了Bean名称和类型,还有那些Bean的元信息值得关注?
  4. EditPlus安装及远程连接Linux
  5. Retrofit工作原理总结
  6. Android ViewFilpper实现分页效果
  7. python基础篇--从零开始(下)
  8. mysql 模糊匹配 拆字_一文,5 分钟搞明白 MySQL 是如何利用索引的!
  9. matlab排课方案,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
  10. powerquery加载pdf_老板让我汇总PDF文件,我不会,同事用Excel两分钟就搞定