请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:DRA726 主题中讨论的其他器件:TDA2E
您好!
我尝试在 J6ECO/TDA2E EVM 板上启动以太网通信。 但它没有启动、UART 会显示接下来的消息:
ENETPHY_FindingState:PhyNum:3 ENETPHY_DisablePhy (3) 启用 PHY 以协商外部连接 Nway 广播:FullDuplex-1000 FullDuple-100 HalfDuplex-100 HalfDuplex-10 HalfDuplex-10 Nerted 连接:FullDuplex 1000 Mbs
这意味着什么? 发生或不发生什么? 这些消息是在哪里生成的、如何进入 UART? 我尝试在 ti 文件夹中找到此消息、但无法找到。
CPSW 和 NIMU 是否正确配置 CPSW?在哪里可以看到源函数 CpswEmacInit()?
使用的软件:
pdk_dra7xx_1_0_10
NDK_2_26_00_08
BIOS_6_76_02_02
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== */
* 包含文件 /*
==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "ti/ndk/inc/os/osif.h"
/* EMAC 驱动程序头文件*/
#include
#include
/* UART 驱动程序头文件*/
#include
#include
/* I2C 驱动程序头文件*/
#include
#include
/*板级头文件*/
#include
// UDP 数据流任务
static void sendclient();
extern int dtask_udp_hello();
//启用以下宏以在 IO 控制台上打印*/
//*#define IO_console */
#ifndef IO_console
#define NIMU_log UART_printf
#else
#define NIMU_log printf
#endif
/* MAC 端口的数量及其 PHY 地址*/
#if defined (evmDRA72x)
#define EMAC_CPSW_PORT0_PHY_ADDR_EVM 3 //为3
#define EMAC_CPSW_Port1_PHY_ADDR_EVM 0 /*未组装*/
#define DRA7XX_EVM_NUM_PORTS 1
#elif defined (evmDRA75x)
#define EMAC_CPSW_PORT0_PHY_ADDR_EVM 2
#define EMAC_CPSW_Port1_PHY_ADDR_EVM 3
#define DRA7XX_EVM_NUM_PORTS 2
#define NIMU_DUAL_MAC_MODE
#Elif defined (evmDRA78x)
#define EMAC_CPSW_PORT0_PHY_ADDR_EVM 0
#define EMAC_CPSW_Port1_PHY_ADDR_EVM 1 /*未组装*/
#define DRA7XX_EVM_NUM_PORTS 1
#endif
/* NDK 最大表条目*/
#define MAX_TABLE 条目 3
NIMU_DEVICE_TABLE_Entry NIMUDeviceTable[MAX_TABLE_ENCELESS];
extern char * LocalIPAddr;
#ifdef NIMU_DUAL_MAC_MODE
//接口2的静态 IP 地址设置*/
const char * ip2Addr ="192.168.2.4";
const char * ip2Mask ="8.2";
convendipt ="enchar * Ent ="enchar * Ent 1;enchar Ent =
"Ent ="Ent 1 Entinchar *
/**
*\name main
*\brief Main Function
*\param none
*\return none
*
//
emac_open_config_info_T open_cfg;
int main()
{
EMAC_HwAttrs_V4 cfg;
int 索引= 0;
/*设置 pinmux、IRQ 交叉开关*/
BOARD_INIT (BOARD_INIT_PINMUX_CONFIG |
BOARD_INIT_UART_STDIO | BOARD_INIT_ETH_PHY);
/*更新 PHY 地址*/
EMAC_socGetInitCfg (0、&cfg);
cfg.numPorts = DRA7XX_EVM_NUM_PORTS;
cfg.port[0].phy_addr = EMAC_CPSW_PORT0_PHY_ADDR_EVM;
cfg.port[1].phy_addr = EMAC_CPSW_Port1_PHY_ADDR_EVM;
cfg.macModeFlags = EMAC_CPSW_CONFIG_MODEFLG_FULLDUPLEX | EMAC_CPSW_CONFIG_MODEFLG_Gigabit;
EMAC_socSetInitCfg (0、&cfg);
NIMUDeviceTable[index+].init =&CpswEmacInit;
#ifdef NIMU_DUAL_MAC_MODE
NIMUDeviceTable[index+].init =&CpswEmacInit;
#endif
NIMUDeviceTable[index].init =空;
BIOS_start();
返回-1;
}
void netOpenHook (void)
{
NIMU_log ("netOpenHook:SYS/BIOS EtherNet/IP (CPSW)示例应用、EVM IP 地址:%s\n"LocalIPAddr);
Nimu_log ("TaskCreate\n");
Task_sleep (100);
#ifdef NIMU_DUAL_MAC_MODE
NIMU_log ("netOpenHook:SYS/BIOS EtherNet/IP (CPSW)示例应用、EVM IP 地址2:%s\n"、ip2Addr);
#endif
//创建发送客户端任务
TaskCreate( sendclient、"SendClient"、OS_TASKPRINORM、0x1400、0、 0、0);
Nimu_log (!!! 任务创建完成! \n");
}
void netCloseHook (void)
{
Nimu_log ("netCloseHook\n");
}
//从 ti_nkd_config_Global_stackThread ()调用以运行用户设置代码*/
void stackInitHook (handle hCfg)
{
NIMU_log ("\n\nstackInitHook \n");
#ifdef NIMU_DUAL_MAC_MODE
CI_IPNet IPNet;
CI_route;
/*为接口2添加 IP 地址*/
IPNet.ipaddr = inet_addr (ip2Addr);
IPNet.IPMask = inet_addr (ip2Mask);
CfgAddEntry (hCfg、CFGTAG _IPNet、2、0、sizeof (CI_IPNet)、 (uint8 *)&IPNet、0);
/*为接口2添加网关*/
bzero (路由、sizeof (路由));
route.IPDestAddr = 0;
route.IPDestMask = 0;
route.IPGateAddr = inet_addr (ip2Gateway);
CfgAddEntry (hCfg、CFGTAG _route、0、0、sizeof (CI_route)、 (uint8 *)&route、0);
#endif
}
//
UDP 发送客户端
//
int sizeBaseFrame = 1024;//размер передаваемого фрейма
int lunderse_send = 1;
int send_unesssuccessful = 0;
#define REMOTE_IPADDR_string "192.168.1.60"//адрес компьютера
#define PORTVAUE 4231
sendclient (
{void client)
插座 sudp = invalid_socket;
struct sockaddr_in sin1;
内部 i、tmp;
内部 statusPackage;
int i;
静态 int sizeFrame;
静态 int 基址= 0;
内部 sizeData;
静态 int flagTx = 0;
//提高传输数据的优先级并等待链路出现。
TaskSetPri (TaskSelf ()、1);
int frameData[1000];
NIMU_LOG (!!! 任务开始工作- sendclient ()\n");
Task_sleep (20000);
for (;;){
//为此任务分配文件环境
fdOpenSession( TaskSele());
Task_sleep (1000);
//创建主 UDP 侦听套接字
sudp = socket (AF_iNet、SOCK_DGRAM、IPPROTO_UDP);
if (sudp =inval_socket)
{
NIMU_log ("\n 无效的套接字\n");
返回;
}
//Nimu_log ("socket_OK\n");
//设置端口= PORTVAUE、IP 地址= REMOLE_IPADDR_STRING
bzero (&sin1、sizeof (struct sockaddr_in)));
Sin1.Sin_Family = AF_iNet;
sin1.sin_addr.s_addr = inet_addr (remote_IPADDR_string);
Sin1.Sin_port =__htons (PORTVAUE);//NDK_htons (PORTVAUE);
对于(i = 0;i < 8;i++){
sin1.sin_zero[i]= 255;
}
tmp = sizeof (sin1);
//连接套接字
i = connect( sudp,(struct sockaddr *)&sin1, tmp );
如果(I < 0)
{
fdCloseSession( TaskSele());}
sizeData = sizeof (frameData);
/*在发送数据包之前,这将从中获取 ARP
*路。 *
while (1){
// statusPackage = SEND (sudp、(char *)&buffer、TESTSIZE、0);
// statusPackage = sendto (sudp、(char *)&buffer、TESTSIZE、0、(struct sockaddr *)&sin1、 sizeof (sin1));
对于(;;){
if (sizeData - Base < sizeFrame)
{
sizeFrame = sizeData - Base;
flagTx = 1;
} 否则{
sizeFrame = sizeBaseFrame;
}
//statusPackage = sendto (sudp、(void *)&frameData[Base]、sizeFrame、0、(struct sockadr *)&sin1、 sizeof (sin1));
statusPackage = SEND (sudp、(void *)&frameData[Base]、sizeFrame、0);
基址=基址+ sizeFrame;
if (statusPackage < 0){
send_unsessful ++;
标志 Tx = 0;//重置 Tx
基址= 0;
中断;
}
if (flagTx = 1){
标志 Tx = 0;//重置 Tx
基址= 0;
//break;
}
}//结束 for (;);)
if (statusPackage < 0)
{
中断;
}
}
fdCloseSession( TaskSele());
/*关闭插座。 *
fdClose (sudp);
} //结束(;);)
NIMU_LOG (!!! 关闭 sendclient()\n");}
谢谢
乔治