【TDA4系列】使用 Linux + RTOS 开发基于以太网的应用程序
原文
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;
- 对于RMII,它应该配置为下面
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 开发基于以太网的应用程序相关推荐
- 在 Linux 下开发和下载8051单片机程序
在 Linux 下开发和下载8051单片机程序 在 Linux 下需要用 sdcc 开发8051单片机程序,用 stcgal 这个 python 程序将编译好的8051单片机程序下载到裸机上. sdc ...
- 用vc对oracle数据库编程,用VC开发基于ORACLE数据库应用程序
用VC开发基于ORACLE数据库应用程序 徐智文 [期刊名称]<包钢科技> [年(卷),期]2006(032)001 [摘要]VC++是一个强大的客户端开发工具,可以很方便地开发出基于PR ...
- 能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗?
能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗? 转载于:https://www.cnblogs.com/ygm900/p/3472859.html
- linux驱动开发音频设备驱动,linux驱动开发—基于Device tree机制的驱动编写
摘要:媒介 Device Tree是一种用去描绘硬件的数据布局,类似板级描绘说话,发源于OpenFirmware(OF).正在现在遍及应用的kernel 2.6.x版本中,对分歧仄台.分歧硬件,往] ...
- linux 三维数据绘图软件,Linux下开发基于.NET的三维绘图程序
很多人可能知道使用.NET Core可以开发跨平台(包括Windows,Linux.MacOS)的App,但知道在Linux下使用.NET Core可以开发三维程序的恐怕就很少了.本文通过借助.NET ...
- linux上三维绘图软件,linux下开发基于.net的三维绘图程序
很多人可能知道使用.NET Core可以开发跨平台(包括windows,linux.macOS)的App,但知道在Linux下使用.NET Core可以开发三维程序的恐怕就很少了.本文通过借助.NET ...
- 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...
- [linux驱动开发] 基于gpiod API的platform总线多个led驱动开发
gpiod API对platform-led进行驱动开发 修改设备树源码 如何在驱动中获取设备树节点信息 计算设备子节点数量 给私有属性分配内存 对子节点进行遍历 gpiod的获取 根据设备树字节给的 ...
- linux用于开发qt java_Linux下Qt程序的打包发布
为便于描述,我们这里假设生成的程序名称为test(即要发布的程序名称) 方法一: 1. QtCreate使用Release版本编译 将编译后生成的可执行程序(如:test)复制到一个空目录下 2.使用 ...
- 接 嵌入式设备上的Linux系统开发
Xfree86 4.X(带帧缓冲区支持的 X11R6.4) XFree86 Project, Inc. 是一家生产 XFree86 的公司,该产品是一个可以免费重复分发.开放源码的 X Window ...
最新文章
- 图像特征点检测与匹配评价准则——量化
- 查看哪个进程占用端口
- 大数据开发上岗基本要求
- 64位Outlook 无法与OC集成
- 将一个普通 JAR 文件打包为 plugin 的一个问题
- 吴恩达机器学习 2.矩阵和向量知识
- VSCode打开终端的快捷键
- 张东:大数据时代挑战与解决之道
- ubuntu网络设置找不到有线连接_win7系统找不到网络打印机如何解决?局域网打印机共享怎么设置?...
- [4G5G专题-45]:物理层-基带子载波数字调制解调(星座图, 相位调制PSK, 正交幅度相位调制QAM)
- 周杰伦新歌刷爆朋友圈的背后 付费音乐的春天终于来了?
- 计算机网络网络适配器的作用是什么原因,Win10网络适配器在哪里对网络有什么影响 网络适配器出现各种故障的解决方法...
- ADXL345-数字加速度计
- 仿真器和模拟器的区别
- SDUT 3386小雷的冰茶几
- 在silverlight 使用 IronPython
- 考古表明陕西银沟遗址是目前仅见保存完好的唐宋县城遗址
- 手机上计算机记录怎么删除,手机怎么删除支付宝消费记录 清除支付宝账单明细方法...
- 怎么在VM虚拟机上装显卡等驱动
- 普通用户加入wheel,有sudo权限
热门文章
- ENVI Classic 二次开发简介
- linux qt 触摸屏事件,利用触摸屏获取事件坐标
- 实习成长之路——SpringBean一:BeanDefinition元信息有什么?除了Bean名称和类型,还有那些Bean的元信息值得关注?
- EditPlus安装及远程连接Linux
- Retrofit工作原理总结
- Android ViewFilpper实现分页效果
- python基础篇--从零开始(下)
- mysql 模糊匹配 拆字_一文,5 分钟搞明白 MySQL 是如何利用索引的!
- matlab排课方案,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
- powerquery加载pdf_老板让我汇总PDF文件,我不会,同事用Excel两分钟就搞定