TMS320C6678开发笔记---网络例程

17节  网络例程

ps:两周前调试的网络,现在有些记不清了,现试着回想将开发流程写出来。

17.1节  创龙NDK_TCP例程编译

  • 例程位置:E:\ft6678\doc\Tronlong6678\Demo\SYSBIOS\Application\NDK_TCP
  • 编译依赖的库版本
* CCSv7 IDE

 * 7.4

* 依赖组件版本为

 * - XDCTools 3.50.5.12-core *

 * - Board Library 4.6.0.01 *

 * - NDK 2.25.1.11 *

 * - SYS/BIOS 6.52.0.12 *

 * - UIA 2.20.0.02 *

 * - C667x PDK 2.08

 

  • 编译配置

 

  • 公司板卡默认使用SPI启动,PLL没有配置,程序启动后需要代码配置PLL,代码修改如下:

E:\ft6678\doc\Tronlong6678\Demo\SYSBIOS\Application\NDK_TCP\main.c

17.3节  与网络交换芯片5396互通

  • DSP6678与5396互通,需要配置DSP6678 SerDes参数。 修改配置如下:

① 配置SerDes参数

C:\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\src\evmc6678_phy.c

configSerdes函数

    //CSL_BootCfgSetSGMIIRxConfig (0, 0x00700621);	// ti默认提供的配置参数
    //CSL_BootCfgSetSGMIIRxConfig (1, 0x00700621);
    CSL_BootCfgSetSGMIIRxConfig (0, 0x00440411);		// 连接5396需要配置的参数
    CSL_BootCfgSetSGMIIRxConfig (1, 0x00440411);

//CSL_BootCfgSetSGMIITxConfig (0, 0x000108A1);	// ti默认提供的配置参数
//CSL_BootCfgSetSGMIITxConfig (1, 0x000108A1);	
    CSL_BootCfgSetSGMIITxConfig (0, 0x00010F11);		// 连接5396需要配置的参数
    CSL_BootCfgSetSGMIITxConfig (1, 0x00010F11);

② 打开主模式

C:\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\src\evmc6678_phy.c

Init_SGMII函数

  • platform_lib_evmc6678l为库文件,目录在C:\ti\pdk_C6678_1_1_2_6\packages\ti\platform下,加载到CCS中后修改configSerdes函数,编译成功后的文件为platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66
  • 将ti.platform.evm6678l.ae66拷贝到E:\ft6678\doc\Tronlong6678\Demo\SYSBIOS\Library\Debug目录下,重新编译NDK_TCP例程即可(注意NDK_TCP工程配置文件中将Tronlong.DSP.C6678.Platform.le66库文件名称为ti.platform.evm6678l.ae66)

17.4节  EMAC0支持

  • 默认ti提供的例程使用的是EMAC1,公司板卡硬件连接了EMAC0,此处需要做移植。

参考文章:

http://processors.wiki.ti.com/index.php/NDK,_PA_Resource_Wiki_for_Keystone_Devices#Q_Where_and_how_to_enable_the_EMAC0_on_C6678_EVM.27s_AMC_c

https://blog.youkuaiyun.com/kunkliu/article/details/107105797

https://www.pianshen.com/article/6008408646/

支持EMAC0移植步骤如下:

  • 步骤1.

导入NIMU工程(C:\ti\pdk_C6678_1_1_2_6\packages\ti\transport\ndk\nimu),修改nimu_eth.c文件。修改方法:

① EmacSend()函数中,移除下面这行代码:

Cppi_setPSFlags (Cppi_DescType_HOST, (Cppi_Desc *)pCppiDesc, (1<<gTxPort));

②EMACInit_Core()函数中,用下面的代码替换"#ifndef SIMULATOR_SUPPORT" 和 "#else" 之间的代码:

platform_get_emac_info(0, &emac_info);

memcpy(ptr_pvt_data->pdi.bMacAddr, emac_info.mac_address, 6);

③Init_Switch()函数中,把下面的代码放到Init_Switch()函数的最后:

// Configure "Learning"/"Forward" state for all 3 ports
int portNum;
for (portNum=0; portNum<3; portNum++)
{
    CSL_CPSW_3GF_ALE_PORTCONTROL alePortControlCfg;
    alePortControlCfg.portState             =   ALE_PORTSTATE_FORWARD;
    alePortControlCfg.dropUntaggedEnable    =   0;
    alePortControlCfg.vidIngressCheckEnable =   0;
    alePortControlCfg.noLearnModeEnable     =   0;
    alePortControlCfg.mcastLimit            =   0;
    alePortControlCfg.bcastLimit            =   0;
    CSL_CPSW_3GF_setAlePortControlReg (portNum, &alePortControlCfg);
}

④用下面的函数替代整个Init_Cpsw()函数:

int32_t Init_Cpsw (uint32_t mtu, uint8_t* myMACAddress)
{                      
    uint8_t portMac[6] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
    Init_MAC(0, portMac, mtu);

    portMac[0] = 2;
    Init_MAC(1, portMac, mtu);

    /* Setup the Phys by initializing the MDIO - not needed for Simulator*/
    Init_MDIO();

    /* Setup the Ethernet switch finally. */
    Init_Switch(mtu);

    /* CPSW subsystem setup done. Return success */
    return 0;
}
  • 步骤2.

导入Platform_lib工程(C:\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib),修改platform.c,如果要支持双网口,把Init_SGMII(0);的注释去掉;如果要修改使之只支持port0,去掉Init_SGMII(0)的注释,并注释Init_SGMII(1)。

 

  • 步骤3.

rebuild “Platform_lib工程”

rebuild “NIMU工程”

编译方法将在下一节介绍

ps:NIMU工程编译出的库名称为nimu_eth_evmc6678l.lib,位置C:\ti\pdk_C6678_1_1_2_6\packages\ti\transport\ndk\nimu\Debug,在NDK_TCP工程配置文件中需要修改名称。

 

  • 移植成功后调试打印信息如下:

17.5  nimu_eth_evmc6678l 编译

通过工程编译

17.5  platform_lib_evmc6678l 编译

通过工程编译

 

17.6节  创龙NDK_Telnet例程分析

  • 参考例程:E:\ft6678\doc\Tronlong6678\Demo\SYSBIOS\Application\NDK_Telnet-cks
  • 原则上:只要创龙的NDK_Telnet可以编译通过(参考NDK_TCP例程),可以与PC机ping通即可。Telnet即可正常使用
  • 代码中增加telnet支持:(通过对NDK增加Telnet配置信息,具体代码怎么实现的没有追究,以后有机会在研究)
   // 添加一个 Telnet 服务器
	CI_SERVICE_TELNET telnet;
	bzero( &telnet, sizeof(telnet) );
	telnet.cisargs.IPAddr = INADDR_ANY;
	telnet.cisargs.pCbSrv = &ServiceReport;
	telnet.param.MaxCon = 2;
	telnet.param.Callback = &ConsoleOpen;
	CfgAddEntry( hCfg, CFGTAG_SERVICE, CFGITEM_SERVICE_TELNET,0, sizeof(telnet), (UINT8 *)&telnet, 0 );
  • NDK 中的telnet服务中通过ConsoleOpen创建了一个Console task,然后在里面实现了一些命令

ccs打印信息:

串口打印信息:

17.7节  应用层通过telnet打印调试信息支持

  • 使用场景:8个核的调试打印信息通过网口输出。 尚未实现。

17.8节  tftp支持

  • 默认Telnet例程中包含tftp功能,使用方法如下:

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值