This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4377: PRU Ethernet signal quality issue

Part Number: AM4377


Hi SIr 

We used AM4377 with SDK 4.03.00.05 for development.

1. PRU MII is connected to  RTL8201 and CPSW RGMII is connected to RTL8211.

2. We have done the compliance test for Ethernet PHY. 

We found we did the signal quality test failed in PRU Ethernet port 

The duplicated is listed as below 

1.Set AM4377 PRU Ethernet Port as 100M setting and CPSW Ethernet Port as 1000M setting.

2.We used  PRU Ethernet Port for 10M duplex test and send packet by using genpkt  command. It failed 

3. We used CPSW Ethernet Port for 10M duplex test and send packet by using genpkt  command. It passed.

It seems this issue only happened in PRU Ethernet 10M mode.

Below is the information

1. genpkt sample code 

/* Ethernet packet generator    */
/* Written by Vladimir Zapolsky */
/* mail to avz101c@motolola.com */
/* July 28, 2007                */

#define ETH_FRAME_LEN 1514
#define ETH_HEADER_LEN (2 * ETH_ALEN)

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#include <netinet/in.h>
#include <linux/if_packet.h>
#include <linux/if_ether.h>
#include <linux/if_arp.h>

#include <sys/ioctl.h>
#include <getopt.h>
#include <unistd.h>
#include <fcntl.h>

typedef struct _Packets
{
    unsigned int dst[ETH_ALEN];
    unsigned int src[ETH_ALEN];
    unsigned char hdr[ETH_HEADER_LEN];
    unsigned char payload;
    char ifname[5];
    int fll;
    int cnt;
    int rnd;
    int len;
} Packets;

Packets packets;
const char* program;

void dump_packets()
{
    printf("Interface name: %s\n", packets.ifname);
    if (packets.fll)
    {
			printf("Fillall\n");
    }
    else
    {
			printf("Source MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", packets.src[0], packets.src[1], packets.src[2], packets.src[3], packets.src[4], packets.src[5]);
			printf("Destination MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", packets.dst[0], packets.dst[1], packets.dst[2], packets.dst[3], packets.dst[4], packets.dst[5]);
		}
    printf("Count: %d\n", packets.cnt);
    printf("Length: %d\n", packets.len);
    if (packets.rnd)
    {
			printf("Payload: random\n");
    }
    else
    {
			printf("Payload: %02X\n", packets.payload);
    }
}

void src_mac(const int sd, int* index)
{
    struct ifreq ifr;
    int i;
    
    strcpy(ifr.ifr_name, packets.ifname);

    if (ioctl(sd, SIOCGIFINDEX, &ifr) == -1)
    {
			perror("Cannot get ifindex of the interface");
			exit(1);
    }
    
    *index = ifr.ifr_ifindex;
    
    if (ioctl(sd, SIOCGIFHWADDR, &ifr) == -1 )
    {
			perror("Cannot get source MAC ");
			exit(1);
    }				
    
    for (i = 0; i < 6; i++)
    {
			packets.src[i] = ifr.ifr_hwaddr.sa_data[i];
    }
    
}

void print_usage()
{
    printf("Usage: %s [options]\n", program);
    printf("  -h  --help                         Display the usage information.\n");
    printf("  -p  --payload   (0x[0-9A-F]{2}|rand) Set payload.\n");
    printf("  -i  --interface eth[0-9]           Set interface.\n");
    printf("  -c  --count     num                Set number of packets to send.\n");
    printf("  -f  --fillall                      Set packet header similar to payload.\n");
    printf("  -d  --dest      XX:XX:XX:XX:XX     Set destination MAC address.\n");
    printf("  -l  --length    num                Set whole length of a packet ( min 60, max 1514 )\n");
    printf("  Default payload is 0x00, interface is eth0, count of packets is 1, length is 1514.\n");
    printf("  Default destination MAC address is 00:00:00:00:00:00.\n");
    exit(1);
}

void print_error(char* str)
{
    printf("%s\n", str);
    exit(1);					    
}

int main (int argc, char* argv[])
{
    int sd = 0;
    int rd = 0;
    
    program = argv[0];
    
    int opt;

    unsigned char buffer[ETH_FRAME_LEN];
    
    int i;
    
    struct sockaddr_ll saddr;    
/*    int status;*/
    
    const char* const short_opt = "hp:i:c:fd:l:";
    const struct option long_opt[] =
    {
			{ "help",      0, NULL, 'h' },
			{ "payload",   1, NULL, 'p' },
			{ "interface", 1, NULL, 'i' },
			{ "count",     1, NULL, 'c' },
			{ "fillall",   0, NULL, 'f' },
			{ "dest",      1, NULL, 'd' },
			{ "length",    1, NULL, 'l' }
    };

    for (i = 0; i < ETH_ALEN; i++)
    {
			packets.dst[i] = 0x00;
			packets.src[i] = 0x00;
    }
    
    packets.len = ETH_FRAME_LEN;
    packets.rnd = 0;
    packets.cnt = 1;
    packets.payload = 0x00;
    packets.fll = 0;
    strcpy(packets.ifname, "eth0");
    
    do
    {
	opt = getopt_long(argc, argv, short_opt, long_opt, NULL);
	switch (opt)
	{
	    case 'h':
		print_usage();
	    case 'p':
		if (strlen(optarg) != 4)
		{
		    print_error("Invalid payload");
		}
		else if (!strcmp("rand", optarg))
		{
		    packets.rnd = 1;
		}
		else if (!strncmp("0x", optarg, 2))
		{
		    packets.payload = strtol(optarg, (char**)NULL, 16);
		}
		else
		{
		    print_error("Invalid payload");
		}
		break;
	    case 'i':
		if (strlen(optarg) > 4 || strncmp("eth", optarg, 3))
		{
		    print_error("Invalid interface name");
		}
		strcpy(packets.ifname, optarg);
		break;
	    case 'c':
		packets.cnt = strtol(optarg, (char**)NULL, 10);
		if (packets.cnt <= 0)
		{
		    print_error("Invalid count");
		}
		break;
	    case 'f':
		packets.fll = 1;
		break;
	    case 'd':
		if (strlen(optarg) != 17)
		{
		    print_error("Invalid destination MAC address");
		}
		else
		{
		    for (i = 0; i < 5; i++)
		    {
			if (optarg[3*i+2] != ':')
			{
			    print_error("Invalid destination MAC address");
			}
		    }

		    if (sscanf(optarg, "%x:%x:%x:%x:%x:%x", &packets.dst[0], &packets.dst[1], &packets.dst[2], &packets.dst[3], &packets.dst[4], &packets.dst[5]) != ETH_ALEN)
		    {
			print_error("Invalid destination MAC address");
		    }
		}
		break;
	    case 'l':
		packets.len = strtol(optarg, (char**)NULL, 10);
		if (packets.len > ETH_FRAME_LEN || packets.len < 60)
		{
		    print_error("Invalid length");
		}
		break;
	    default:
		break;
	}
    }
    while (opt != -1);

    /* Body */

    if (packets.rnd)
    {
	rd = open("/dev/urandom", O_RDONLY);
	if (rd == -1)
	{
	    printf("Cannot open /dev/urandom, packets are filled with zeroes\n");
	    packets.rnd = 0;
	}
    }
    
    sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
    if (sd == -1)
    {
	perror("Cannot open socket ");
	exit(1);
    }
    
    saddr.sll_family   = PF_PACKET;
    saddr.sll_protocol = htons(ETH_P_IP);
    src_mac(sd, &saddr.sll_ifindex);
    saddr.sll_hatype   = ARPHRD_ETHER;
    saddr.sll_pkttype  = PACKET_OTHERHOST;
    saddr.sll_halen    = ETH_ALEN;
    
/*    saddr.sll_addr[i] = packets.dst[i];*/
    
    dump_packets();
    
    /* Generate payload */

    for (i = 0; i < ETH_ALEN; i++)
    {
			packets.hdr[i] = (unsigned char)packets.dst[i];
			packets.hdr[i + ETH_ALEN] = (unsigned char)packets.src[i];
    }
    
    if (!packets.rnd)
    {
			memset((void*)buffer, packets.payload, packets.len);
    }

    if (!packets.fll)
    {
        memcpy((void*)buffer, (void*)packets.hdr, ETH_HEADER_LEN);
    }
    
    while(packets.cnt > 0)
    {
        if (packets.rnd)
	{
	    if (packets.fll)
	    {
				read(rd, buffer, packets.len);
	    }
	    else
	    {
				read(rd, &buffer[ETH_HEADER_LEN], packets.len - ETH_HEADER_LEN);
	    }
        }
        
		if (sendto(sd, buffer, packets.len, 0, (struct sockaddr*)&saddr, sizeof(saddr)) != packets.len)	
		{
		    print_error("Cannot send a packet");
		    perror("");
		}	
	
	packets.cnt--;
    }

    printf("Done.\n");
    
    if (rd > 0)
    {
	close(rd);
    }
    
    close(sd);
    
    return(0);
}

2. Below is the test waveform

    We found the PRU Ethernet Port test failed and cannot meet right photo requirement

     We found the signal from the PRU Ethernet Port has interference (Left Photo)

BTW, we found the inter-space width of left photo  is 1.325us. The standard spec should be over 4.2us. 

The inter-space width of right photo is 9.28us

Please advise

BR

Yimin

  • Hello Yimin,

    Please provide your terminal output for booting and running these tests.

    Regards,

    Nick

  • Hello Yimin,

    Additional questions:

    1) You say that "this issue only happened in PRU Ethernet 10M mode". Does that mean that PRU Ethernet 100M mode is behaving as expected?

    2) Where are you grabbing the signal from? e.g., is this from the PRU output pins? Is it from the output of the PHY?

    3) Do you see the same behavior on a TI EVM?

    Regards,

    Nick

  • Hi Sir 

    please refer to attachment about log message for booting and running the test.

    U-Boot 2017.01-00458-gfd06b46-dirty (Feb 27 2019 - 17:20:47 +0800)
    
    
    
    CPU  : AM437X-GP rev 1.2
    
    I2C:   ready
    
    DRAM:  1 GiB
    
    PMIC:  TPS65218
    
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    
    SF: Detected mx25l51235f with page size 256 Bytes, erase size 64 KiB, total 64 MiB, mapped at 30000000
    
    *** Warning - bad CRC, using default environment
    
    
    
    Net:   <ethaddr> not set. Validating first E-fuse MAC
    
    cpsw, usb_ether
    
    Hit any key to stop autoboot:  0
    
    Card did not respond to voltage select!
    
    Card did not respond to voltage select!
    
    Card did not respond to voltage select!
    
    Card did not respond to voltage select!
    
    SF: Detected mx25l51235f with page size 256 Bytes, erase size 64 KiB, total 64 MiB, mapped at 30000000
    
    device 0 offset 0x200000, size 0x400000
    
    SF: 4194304 bytes @ 0x200000 Read: OK
    
    device 0 offset 0x100000, size 0x100000
    
    SF: 1048576 bytes @ 0x100000 Read: OK
    
    Kernel image @ 0x82000000 [ 0x000000 - 0x3bbec8 ]
    
    ## Flattened Device Tree blob at 88000000
    
       Booting using the fdt blob at 0x88000000
    
       Loading Device Tree to 8fff0000, end 8ffffc53 ... OK
    
    
    
    Starting kernel ...
    
    
    
    [    0.000000] Booting Linux on physical CPU 0x0
    
    [    0.000000] Linux version 4.9.65-rt23 (kaka@mbdrd-centos7) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #75 PREEMPT RT Mon Jul 8 15:03:02 CST 2019
    
    [    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
    
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    
    [    0.000000] OF: fdt:Machine model: TI AM437x SK EVM
    
    [    0.000000] efi: Getting EFI parameters from FDT:
    
    [    0.000000] efi: UEFI not found.
    
    [    0.000000] cma: Reserved 48 MiB at 0xbd000000
    
    [    0.000000] Memory policy: Data cache writeback
    
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    
    [    0.000000] AM437x ES1.2 (neon)
    
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260416
    
    [    0.000000] Kernel command line: console=ttyO3,115200n8 spi-ti-qspi.enable_qspi=1 root=/dev/mtdblock5 rw rootfstype=jffs2 rootwait
    
    [    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
    
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    
    [    0.000000] Memory: 976152K/1048576K available (8192K kernel code, 336K rwdata, 2572K rodata, 1024K init, 340K bss, 23272K reserved, 49152K cma-reserved, 212992K highmem)
    
    [    0.000000] Virtual kernel memory layout:
    
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    
    [    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
    
    [    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
    
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    
    [    0.000000]       .text : 0xc0008000 - 0xc0900000   (9184 kB)
    
    [    0.000000]       .init : 0xc0c00000 - 0xc0d00000   (1024 kB)
    
    [    0.000000]       .data : 0xc0d00000 - 0xc0d54340   ( 337 kB)
    
    [    0.000000]        .bss : 0xc0d54340 - 0xc0da94f8   ( 341 kB)
    
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    
    [    0.000000] Preemptible hierarchical RCU implementation.
    
    [    0.000000]  Build-time adjustment of leaf fanout to 32.
    
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    
    [    0.000000] L2C: platform modifies aux control register: 0x0e030000 -> 0x3e430000
    
    [    0.000000] L2C: DT/platform modifies aux control register: 0x0e030000 -> 0x3e430000
    
    [    0.000000] L2C-310 enabling early BRESP for Cortex-A9
    
    [    0.000000] OMAP L2C310: ROM does not support power control setting
    
    [    0.000000] L2C-310 dynamic clock gating disabled, standby mode disabled
    
    [    0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
    
    [    0.000000] L2C-310: CACHE_ID 0x410000c9, AUX_CTRL 0x4e430000
    
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    
    [    0.000010] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    
    [    0.000021] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    
    [    0.000026] OMAP clocksource: timer1 at 24000000 Hz
    
    [    0.000144] sched_clock: 64 bits at 500MHz, resolution 2ns, wraps every 4398046511103ns
    
    [    0.000153] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0xe6a171a037, max_idle_ns: 881590485102 ns
    
    [    0.000170] Switching to timer-based delay loop, resolution 2ns
    
    [    0.000509] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    
    [    0.000512] OMAP clocksource: 32k_counter at 32768 Hz
    
    [    0.000929] Console: colour dummy device 80x30
    
    [    0.001062] WARNING: Your 'console=ttyO3' has been replaced by 'ttyS3'
    
    [    0.001064] This ensures that you still see kernel messages. Please
    
    [    0.001065] update your kernel commandline.
    
    [    0.001087] Calibrating delay loop (skipped), value calculated using timer frequency.. 1000.00 BogoMIPS (lpj=5000000)
    
    [    0.001091] pid_max: default: 32768 minimum: 301
    
    [    0.001216] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
    
    [    0.001222] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
    
    [    0.002077] CPU: Testing write buffer coherency: ok
    
    [    0.002387] Setting up static identity map for 0x80100000 - 0x80100060
    
    [    0.003312] EFI services will not be available.
    
    [    0.004118] devtmpfs: initialized
    
    [    0.017054] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    
    [    0.017394] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    
    [    0.017420] futex hash table entries: 256 (order: 1, 8192 bytes)
    
    [    0.020846] pinctrl core: initialized pinctrl subsystem
    
    [    0.022080] NET: Registered protocol family 16
    
    [    0.023580] DMA: preallocated 256 KiB pool for atomic coherent allocations
    
    [    0.042720] omap_hwmod: rtc: no dt node
    
    [    0.042741] ------------[ cut here ]------------
    
    [    0.042770] WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2548 _init.constprop.23+0x1fc/0x4b8
    
    [    0.042776] omap_hwmod: rtc: doesn't have mpu register target base
    
    [    0.042781] Modules linked in:
    
    [    0.042796] CPU: 0 PID: 1 Comm: swapper Not tainted 4.9.65-rt23 #75
    
    [    0.042802] Hardware name: Generic AM43 (Flattened Device Tree)
    
    [    0.042808] Backtrace:
    
    [    0.042839] [<c010b87c>] (dump_backtrace) from [<c010bb38>] (show_stack+0x18/0x1c)
    
    [    0.042849]  r7:00000009 r6:00000000 r5:c0aa7dfc r4:ef065e38
    
    [    0.042871] [<c010bb20>] (show_stack) from [<c03cddfc>] (dump_stack+0x24/0x28)
    
    [    0.042885] [<c03cddd8>] (dump_stack) from [<c012d570>] (__warn+0xe8/0x100)
    
    [    0.042893] [<c012d488>] (__warn) from [<c012d5c8>] (warn_slowpath_fmt+0x40/0x48)
    
    [    0.042903]  r9:c0c0061c r8:000000db r7:c0c3c820 r6:00000000 r5:00000000 r4:c0aa8450
    
    [    0.042912] [<c012d58c>] (warn_slowpath_fmt) from [<c0c0d39c>] (_init.constprop.23+0x1fc/0x4b8)
    
    [    0.042918]  r3:c0ae5728 r2:c0aa8450
    
    [    0.042923]  r4:c0d0e6d4
    
    [    0.042934] [<c0c0d1a0>] (_init.constprop.23) from [<c0c0d788>] (__omap_hwmod_setup_all+0x48/0x124)
    
    [    0.042943]  r10:00000000 r9:c0c0061c r8:000000db r7:c0c3c820 r6:c0c49bdc r5:c0d09a30
    
    [    0.042947]  r4:c0d0e6d4
    
    [    0.042958] [<c0c0d740>] (__omap_hwmod_setup_all) from [<c01017b4>] (do_one_initcall+0x4c/0x178)
    
    [    0.042963]  r5:ffffe000 r4:c0c0d740
    
    [    0.042979] [<c0101768>] (do_one_initcall) from [<c0c00e94>] (kernel_init_freeable+0x13c/0x1cc)
    
    [    0.042988]  r10:00000003 r9:c0c0061c r8:000000db r7:c0c3c820 r6:c0c49bdc r5:c0d54340
    
    [    0.042992]  r4:c0d54340
    
    [    0.043017] [<c0c00d58>] (kernel_init_freeable) from [<c08339fc>] (kernel_init+0x10/0x110)
    
    [    0.043026]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c08339ec
    
    [    0.043030]  r4:00000000
    
    [    0.043042] [<c08339ec>] (kernel_init) from [<c0107e40>] (ret_from_fork+0x14/0x34)
    
    [    0.043047]  r5:c08339ec r4:00000000
    
    [    0.043052] ---[ end trace 0000000000000001 ]---
    
    [    0.106148] OMAP GPIO hardware version 0.1
    
    [    0.121871] No ATAGs?
    
    [    0.121900] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    
    [    0.121910] hw-breakpoint: maximum watchpoint size is 4 bytes.
    
    [    0.137078] edma 49000000.edma: TI EDMA DMA engine driver
    
    [    0.140190] SCSI subsystem initialized
    
    [    0.140573] usbcore: registered new interface driver usbfs
    
    [    0.140632] usbcore: registered new interface driver hub
    
    [    0.140743] usbcore: registered new device driver usb
    
    [    0.141043] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp@44000000/l4_wkup@44c00000/scm@210000/pinmux@800/i2c0_pins, deferring probe
    
    [    0.141097] omap_i2c 4819c000.i2c: could not find pctldev for node /ocp@44000000/l4_wkup@44c00000/scm@210000/pinmux@800/i2c2_pins, deferring probe
    
    [    0.141222] media: Linux media interface: v0.10
    
    [    0.141276] Linux video capture interface: v2.00
    
    [    0.141318] pps_core: LinuxPPS API ver. 1 registered
    
    [    0.141324] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    
    [    0.141345] PTP clock support registered
    
    [    0.141380] EDAC MC: Ver: 3.0.0
    
    [    0.142291] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    
    [    0.142627] Advanced Linux Sound Architecture Driver Initialized.
    
    [    0.143731] clocksource: Switched to clocksource arm_global_timer
    
    [    0.152734] NET: Registered protocol family 2
    
    [    0.153443] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
    
    [    0.153525] TCP bind hash table entries: 8192 (order: 5, 196608 bytes)
    
    [    0.154098] TCP: Hash tables configured (established 8192 bind 8192)
    
    [    0.154278] UDP hash table entries: 512 (order: 3, 32768 bytes)
    
    [    0.154393] UDP-Lite hash table entries: 512 (order: 3, 32768 bytes)
    
    [    0.154765] NET: Registered protocol family 1
    
    [    0.155266] RPC: Registered named UNIX socket transport module.
    
    [    0.155280] RPC: Registered udp transport module.
    
    [    0.155285] RPC: Registered tcp transport module.
    
    [    0.155291] RPC: Registered tcp NFSv4.1 backchannel transport module.
    
    [    0.157702] workingset: timestamp_bits=14 max_order=18 bucket_order=4
    
    [    0.163529] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    
    [    0.164499] NFS: Registering the id_resolver key type
    
    [    0.164540] Key type id_resolver registered
    
    [    0.164547] Key type id_legacy registered
    
    [    0.164588] ntfs: driver 2.1.32 [Flags: R/O].
    
    [    0.164720] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
    
    [    0.166489]erd defult)
    
    [    0.169774] pinctrl-single 44e10800.pinmux: 9in atfe080z 796
    
    [    0.170449] plc gpio driver init
    
    [    0.172901] backlight supply power not found, using dummy regulator
    
    [    0.225058] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
    
    [    0.227702] omap8250 481a6000.serial: No clock speed specified: using default: 48000000
    
    [    0.228611] 481aspciied: using default: 48000000
    
    [    1.133035] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 31, base_baud = 3000000) is a OMAP UART4
    
    [    1.142716] omap_uart 481aa000.serial: no wakeirq for uart5
    
    [    1.148383] omap_uart 481aa000.serial: No clock speed specified: using default: 48000000
    
    [    1.156575] 481aa000.serial: ttyO5 at MMIO 0x481aa000 (irq = 32, base_baud = 3000000) is a OMAP UART5
    
    [    1.167086] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    
    [    1.173921] [drm] Initialized
    
    [    1.190875] brd: module loaded
    
    [    1.200296] loop: module loaded
    
    [    1.206162] spi spi1.0: not using DMA for McSPI (-19)
    
    [    1.212282] spi spi2.0: not using DMA for McSPI (-19)
    
    [    1.220440] m25p80 spi0.0: mx66l51235l (65536 Kbytes)
    
    [    1.225538] 6 ofpart partitions found on MTD device spi0.0
    
    [    1.231012] Creating 6 MTD partitions on "spi0.0":
    
    [    1.235798] 0x000000000000-0x000004000000 : "QSPI.nor"
    
    [    1.242091] 0x000000000000-0x000000080000 : "QSPI.u-boot"
    
    [    1.248557] 0x000000080000-0x000000100000 : "QSPI.firmware"
    
    [    1.255103] 0x000000100000-0x000000200000 : "QSPI.fdt"
    
    [    1.261153] 0x000000200000-0x000000600000 : "QSPI.kernel"
    
    [    1.267563] 0x000000600000-0x000004000000 : "QSPI.filesystem"
    
    [    1.275109] libphy: Fixed MDIO Bus: probed
    
    [    1.280187] CAN device driver interface
    
    [    1.285199] c_can_platform 481cc000.can: c_can_platform device registered (regs=fa1cc000, irq=218)
    
    [    1.294993] c_can_platform 0000.can: c_can_platform device registered (regs=fa1d0000, irq=219)
    
    [    1.304582] usbcore: registered new interface driver r8152
    
    [    1.310112] usbcore: registered new interface driver asix
    
    [    1.315564] usbcore: registered new interface driver ax88179_178a
    
    [    1.326487] xhci-hcd xhci-hcd.0.auto: xams 0x0238f06d hc in0x100 quirks 0x02010010
    
    [    1.385] xci-c xhci-hcd.0.auto: irq 253, io mem 0x48390000
    
    [    1.355836] hub 1-0:1.0: USB hub found
    
    [    1.359625] hub 1-0:1.0: 1 port detected
    
    [    1.364024] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    
    [    1.369518] xhci-hcd xhci-hcd.0.auto: new US4] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
    
    [    1.399831] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 3
    
    [    1.407897] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f06d hci version 0x100 quirks 0x02010010
    
    [    1.416760] xhci-hcd xhci-hcd.1.auto: irq 254, io mem 0x483d0000
    
    [    1.423557] hub 3-0:1.0: USB hub found
    
    [    1.427341] hub 3-0:1.0: 1 port detected
    
    [    1.431645] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
    
    [    1.437139] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 4
    
    [    1.444858] usb usb4S hnd
    
    [    1.457429] hub 4-0:1.0: 1 port detected
    
    [    1.461950] usbcore: registered new interface driver usb-storage
    
    [    1.468301] mousedev: PS/2 mouse device common for all mice
    
    [    1.474406] i2c /dev entries driver
    
    [    1.478055] usbcore: registered new interface driver uvcvideo
    
    [    1.483857] USB Viore: registered new interface driver usbhid
    
    [    1.506795] usbhid: USB HID core driver
    
    [    1.512862] NET: Registered protocol family 10
    
    [    1.518504] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    
    [    1.525183] NET: Registered protocol family 17
    
    [    1.529639] can: controller area network co    1.550490] can: netlink gateway (rev 20130117) max_hops=1
    
    [    1.556403] Key type dns_resolver registered
    
    [    1.560932] omap_voltage_late_init: Voltage driver support not added
    
    [    1.644990] omap_i2c 44e0b000.i2c: bus 0 rev0.12 at 100 kHz
    
    [    1.677775] rtc-ds1307 2-0068: rtc core: registered ds1307 as rtc0
    
    [    1.683966] rtc-ds1307 2-0068: 56 bytes nvram
    
    [    1.692885] omap_i2c 4819c000.i2c: bus 2 rev0.12 at 100 kHz
    
    [    1.699162] omap_hsmmc 48060000.mmc: Got CD GPIO
    
    [    1.775410] rtc-ds1307 2-0068: setting system clock to 2018-06-04 20:56:01 UTC (1528145761)
    
    [    1.794393] ALSA device list:
    
    [    1.797361]   No soundcards found.
    
    [    1.862580] random: fast init done
    
    [    5.048552] VFS: Mounted root (jffs2 filesystem) on device 31:5.
    
    [    5.055138] devtmpfs: mounted
    
    [    5.059936] Freeing unused kernel memory: 1024K
    
    INIT: version 2.88 booting
    
    mount: mounting tmpfs on /mnt/.psplash failed: No such file or directory
    
    Starting udev
    
    [    6.149553] udevd[130]: starting version 3.2
    
    [    6.277537] udevd[131]: starting eudev-3.2
    
    [    7.433264] remoteproc remoteproc0: wkup_m3 is available
    
    [    8.973926] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
    
    [    8.980030] davinci_mdio 4a101000.mdio: detected phy mask ffffffee
    
    [    9.403086] libphy: 4a101000.mdio: probed
    
    [    9.407982] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver RTL8211F Gigabit Ethernet
    
    [    9.507445] davinci_mdio 4a101000.mdio: phy[4]: device 4a101000.mdio:04, driver RTL8211F Gigabit Ethernet
    
    [    9.564388] cpsw 4a100000.ethernet: Detected MACID = f4:e1:1e:45:d6:57
    
    [    9.571051] cpsw 4a100000.ethernet: device node lookup for pps timer failed
    
    [    9.670184] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
    
    [    9.724670] ti-pruss 54400000.pruss: creating PRU cores and other child platform devices
    
    [    9.757512] remoteproc remoteproc1: 54434000.pru0 is available
    
    [    9.763447] pru-rproc 54434000.pru0: PRU rproc node /ocp@44000000/pruss_soc_bus@54426000/pruss@54400000/pru@54434000 probed successfully
    
    [    9.836827] remoteproc remoteproc2: 54438000.pru1 is available
    
    [    9.842752] pru-rproc 54438000.pru1: PRU rproc node /ocp@44000000/pruss_soc_bus@54426000/pruss@54400000/pru@54438000 probed successfully
    
    [    9.892173] prueth pruss1_eth: pruss MC Mask 0:0:0:0:0:0
    
    [    9.897819] prueth pruss1_eth: could not get ptp tx irq
    
    [    9.903055] prueth pruss1_eth: port 1: using random MAC addr: 2e:b6:80:b9:f9:35
    
    [    9.963900] davinci_mdio 54432400.mdio: davinci mdio revision 1.6
    
    [    9.970000] libphy: 54432400.mdio: probed
    
    [   10.002848] prueth pruss1_eth: pruss MC Mask 0:0:0:0:0:0
    
    [   10.011440] prueth pruss1_eth: could not get ptp tx irq
    
    [   10.033008] prueth pruss1_eth: port 1: using random MAC addr: 26:87:12:61:5f:50
    
    [   10.051540] davinci_mdio 54432400.mdio: phy[0]: device 54432400.mdio:00, driver RTL8201F 10/100Mbps Ethernet
    
    [   10.061783] davinci_mdio 54432400.mdio: phy[1]: device 54432400.mdio:01, driver RTL8201F 10/100Mbps Ethernet
    
    [   10.090716] ti-pruss 54440000.pruss: creating PRU cores and other child platform devices
    
    [   10.114266] remoteproc remoteproc3: 54474000.pru0 is available
    
    [   10.120198] pru-rproc 54474000.pru0: PRU rproc node /ocp@44000000/pruss_soc_bus@54426000/pruss@54440000/pru@54474000 probed successfully
    
    [   10.134815] prueth pruss1_eth: could not get ptp tx irq
    
    [   10.134836] prueth pruss1_eth: port 2: using random MAC addr: 2a:9b:1f:6b:e5:9b
    
    [   10.164380] remoteproc remoteproc4: 54478000.pru1 is available
    
    [   10.170311] pru-rproc 54478000.pru1: PRU rproc node /ocp@44000000/pruss_soc_bus@54426000/pruss@54440000/pru@54478000 probed successfully
    
    INIT: Entering runlevel: 5
    
    [   10.238070] prueth pruss1_eth: TI PRU ethernet (type 0) driver initialized
    
    Configuring network interfaces...
    
    [   10.749352] remoteproc remoteproc2: powering up 54438000.pru1
    
    [   10.758916] remoteproc remoteproc2: Booting fw image ti-pruss/am437x-pru1-prueth-fw.elf, size 5508
    
    [   10.768245] ti-pruss 54400000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a
    
    [   10.780208] remoteproc remoteproc2: remote processor 54438000.pru1 is now up
    
    [   10.787687] net eth1: started
    
    [   10.790730] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
    
    [   11.131358] net eth0: initializing cpsw version 1.15 (0)
    
    [   11.137670] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
    
    [   11.144022] cpsw 4a100000.ethernet: ALE Table size 1024
    
    [   11.244755] RTL8211F Gigabit Ethernet 4a101000.mdio:04: attached PHY driver [RTL8211F Gigabit Ethernet] (mii_bus:phy_addr=4a101000.mdio:04, irq=-1)
    
    [   11.262491] cpts ptp bc clkid 0
    
    [   11.268630] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    
    done.
    
    Starting system message bus: [   11.444522] random: crng init done
    
    dbus.
    
    using ti_cpsw
    
    Starting syslogd/klogd: done
    
    [   12.884408] prueth pruss1_eth eth1: Link is Up - 10Mbps/Half - flow control off
    
    [   12.891765] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    
    ldconfig: /lib/ld-linux-armhf.so.3 is not a symbolic link
    
    
    
    ldconfig: /lib/libcom_err.so.2 is not a symbolic link
    
    
    
    ldconfig: /lib/libext2fs.so.2 is not a symbolic link
    
    
    
    ldconfig: /lib/libe2p.so.2 is not a symbolic link
    
    
    
    ldconfig: /usr/lib/libcurl.so.4 is not a symbolic link
    
    
    
    umount: can't unmount /mnt/.psplash: No such file or directory
    
    
    
    inifile: warning: File contains DOS-style line endings.
    
    Version=1.0.0.0
    
    eCLR:------------------------------------------------------------------
    
    ControllerDataSize=200000
    
    ApplicationDataSize=5000008
    
    ApplicationCodeSize=5000000
    
    RetainDataSize=100016
    
    LowerPrio=10
    
    NormLowPrio=60
    
    NormHighPrio=88
    
    HighPrio=89
    
    ScheduleCycleTime=90
    
    EtherCATMaster:--------------------------------------------------------
    
    EtherCATMasterEnable=1
    
    LinkLayerType=CPSW
    
    MasterInstance=1
    
    CycleTime=1000
    
    MasterPrioBase=95
    
    DcmMode=2
    
    LicenseKey=0x0
    
    MOTION:----------------------------------------------------------------
    
    ISGEnable=0
    
    SHM:-------------------------------------------------------------------
    
    SHMEnable=0
    
    eCLRIntime -ECAT CPSW 1 1000 95
    
    PHOENIX CONTACT Software embedded CLR Version 2.2.0.20783 for Linux.ARM
    
    fiiplc@am437x-evm:~$ I/elog     [06-04 20:56:19] Logger V2.0.3 is initialize success.
    
    Open Dev /dev/plcgpio success!
    
    I/target_mb_gpio [06-04 20:56:19] gpio initialize done.
    
    [   20.255335] spidev spi1.0: not using DMA for McSPI (-19)
    
    I/target_mb_led [06-04 20:56:19] led initialize done.
    
    [   20.263188] spidev spi1.0: not using DMA for McSPI (-19)
    
    [   20.273240] spidev spi1.0: not using DMA for McSPI (-19)
    
    I/target_mb_adc [06-04 20:56:19] adc select 10V.[   20.279358] spidev spi2.0: not using DMA for McSPI (-19)
    
    
    
    I/target_mb_adc [06-04 20:56:19] adc initialize done.
    
    [   20.288743] spidev spi2.0: not using DMA for McSPI (-19)
    
    [   20.299418] spidev spi2.0: not using DMA for McSPI (-19)
    
    I/target_mb_dac [06-04 20:56:19] dac select 10V.
    
    I/target_mb_dac [06-04 20:56:19] dac initialize done.
    
    CRCData=0x7070
    
    rcv numberByte=0x0, expect=0xC
    
    CRCData:16395
    
    receive numberReg :0x0,expect NumReg:0x52
    
    CRCData:16395
    
    receive numberReg :0x0,expect NumReg:0x52
    
    W/target_iob_system [06-04 20:56:19] (iob_system_set_setting:191)write io board system info error
    
    MB_Digital_IO_Write:CRCData=0x400B, expect=0
    
    MB_Digital_IO_Write:numberByte=0x0, expect=0x8
    
    CRCData:45928
    
    MB_IO_Register_Read:receive numberByte :0x0,expect NumByte:0xA4
    
    I/target_iob_system [06-04 20:56:19] I/O board SW version is: v0.0.0
    
    I/target_iob_system [06-04 20:56:19] io board initialize done.
    
    /dev/plcgpio already open
    
    [   20.408333] c_can_platform 481cc000.can can0: setting BTR=1c05 BRPE=0000
    
    I/target_iom_system [06-04 20:56:22] ====================================
    
    I/target_iom_system [06-04 20:56:22] Starting Assign IO Module Address !
    
    I/target_iom_system [06-04 20:56:22]
    
    
    
    I/target_iom_system [06-04 20:56:25] IO module count:0
    
    I/target_iom_system [06-04 20:56:25] Address Assignment Completed !
    
    I/target_iom_system [06-04 20:56:25] ====================================
    
    I/satislite_plc [06-04 20:56:26] main board hw version:1
    
    I/satislite_plc [06-04 20:56:26] io board hw version:0
    
    I/satislite_plc [06-04 20:56:27] satislite task init
    
    
    
    fiiplc@am437x-evm:~$ su -
    
    Password:
    
    root@am437x-evm:~# ethtool eth1
    
    Settings for eth1:
    
            Supported ports: [ TP MII ]
    
            Supported link modes:   10baseT/Half 10baseT/Full
    
                                    100baseT/Half 100baseT/Full
    
            Supported pause frame use: No
    
            Supports auto-negotiation: Yes
    
            Advertised link modes:  10baseT/Half 10baseT/Full
    
                                    100baseT/Half 100baseT/Full
    
            Advertised pause frame use: No
    
            Advertised auto-negotiation: Yes
    
            Link partner advertised link modes:  10baseT/Half
    
            Link partner advertised pause frame use: No
    
            Link partner advertised auto-negotiation: No
    
            Speed: 10Mb/s
    
            Duplex: Half
    
            Port: MII
    
            PHYAD: 1
    
            Transceiver: external
    
            Auto-negotiation: on
    
            Link detected: yes
    
    root@am437x-evm:~# ethtool eth0
    
    Settings for eth0:
    
            Supported ports: [ TP MII ]
    
            Supported link modes:   10baseT/Half 10baseT/Full
    
                                    100baseT/Half 100baseT/Full
    
                                    1000baseT/Full
    
            Supported pause frame use: No
    
            Supports auto-negotiation: Yes
    
            Advertised link modes:  10baseT/Half 10baseT/Full
    
                                    100baseT/Half 100baseT/Full
    
                                    1000baseT/Full
    
            Advertised pause frame use: No
    
            Advertised auto-negotiation: Yes
    
            Speed: 10Mb/s
    
            Duplex: Half
    
            Port: MII
    
            PHYAD: 4
    
            Transceiver: external
    
            Auto-negotiation: on
    
            Supports Wake-on: d
    
            Wake-on: d
    
            Current message level: 0x00000000 (0)
    
    
    
            Link detected: no
    
    root@am437x-evm:~# [   54.484303] prueth pruss1_eth eth1: Link is Down
    
    [   56.564404] prueth pruss1_eth eth1: Link is Up - 10Mbps/Half - flow control off
    
    
    
    root@am437x-evm:~#
    
    root@am437x-evm:~# genpkt -i eth0 -[   73.204300] prueth pruss1_eth eth1: Link is Down
    
    p rand -c 1000000
    
    root@am437x-evm:~#
    
    root@am437x-evm:~#
    
    root@am437x-evm:~#
    
    root@am437x-evm:~# genpkt -i eth1 -p rand -c 1000000
    
    Interface name: eth1
    
    Source MAC: 80:2B:F9:FD:32:72
    
    Destination MAC: 00:00:00:00:00:00
    
    Count: 1000000
    
    Length: 1514
    
    Payload: random
    
    ^C
    
    root@am437x-evm:~#
    
    

  • Hi Sir 

    1. This is the only test item for 10M mode. This test item called "TP_IDL Mask Test".  

    2. We grab the signal from the output of the PHY chip.

    3. We don't have the EVM.

        but we have a My C437X-PRU board in hand.

        http://www.myirtech.com/list.asp?id=559    

       The test result is also failed (the length is 2.02us). below is the signal photo
       

    BR

    Yimin

  • Hi SIr 

    Do you have any update 

  • Hello Yimin,

    I apologize for the delayed response.

    TI does not support Realtek devices, so we cannot do much with the PHY output. Could you capture the output from the MAC?

    The PRU Ethernet driver gets updated pretty frequently. Do you see the same behavior with the latest processor SDK?

    Regards,

    Nick

  • Hello Yimin,

    I am looking into whether we ran TPIDL tests. Feel free to ping me next week if I do not have a response for you in a couple of days.

    Regards,

    Nick

  • Hi Sir 

    attachment is the waveform file

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/TP_5F00_IDL.7z

  • Hi Nick

    Do you have any update ?

  • Hello Yimin,

    I do not have a response from the firmware team yet, but I pinged them again.

    For context, are those MAC oscilloscope captures from a particular test?

    Regards,

    Nick

  • Hi Sir

        Those MAC oscilloscope captures are from Ethernet TPIDL Test failed item for PRU Ethernet Port.

    FYR

    Yimin

  • Hello Yimin,

    Our documentation states that we provide 100M PRU Ethernet, but it does not mention 10M PRU Ethernet. As of Processor SDK 6.0, we do not support 10M PRU Ethernet on AM437x. I do not have a timeline for when we might add 10M support.

    We will update the PRU Ethernet documentation and look at other ways to make this distinction more clear.

    Is 10M PRU Ethernet necessary for your application?

    Regards,

    Nick

  • Hello Yimin,

    I am going to mark the thread resolved. Feel free to reply if we need to continue the conversation.

    Thank you for bringing this up so we can improve our documentation.

    Regards,

    Nick