30
30
#include " stm32xx_emac_config.h"
31
31
#include " stm32xx_emac.h"
32
32
33
+ #include " mbed_trace.h"
34
+
35
+ #if defined(ETH_IP_VERSION_V2)
36
+ #define TRACE_GROUP " STE2"
37
+ #else
38
+ #define TRACE_GROUP " STE1"
39
+ #endif
40
+
41
+ /* mbed trace feature is supported */
42
+ /* ex in mbed_app.json */
43
+ /* "mbed-trace.enable": "1" */
44
+
45
+ /* mbed_trace: debug traces (tr_debug) can be disabled here with no change in mbed_app.json */
46
+ // #undef TRACE_LEVEL_DEBUG
47
+ // #define TRACE_LEVEL_DEBUG 0
48
+
33
49
#if defined(ETH_IP_VERSION_V2)
34
50
#include " lan8742/lan8742.h"
35
51
#include " lwip/memp.h"
@@ -296,17 +312,24 @@ bool STM32_EMAC::low_level_init_successful()
296
312
EthHandle.Init .RxMode = ETH_RXINTERRUPT_MODE;
297
313
EthHandle.Init .ChecksumMode = ETH_CHECKSUM_BY_SOFTWARE;
298
314
EthHandle.Init .MediaInterface = ETH_MEDIA_INTERFACE_RMII;
315
+ tr_info (" PHY Addr %u AutoNegotiation %u" , EthHandle.Init .PhyAddress , EthHandle.Init .AutoNegotiation );
316
+ tr_debug (" MAC Addr %02x:%02x:%02x:%02x:%02x:%02x" , MACAddr[0 ], MACAddr[1 ], MACAddr[2 ], MACAddr[3 ], MACAddr[4 ], MACAddr[5 ]);
317
+ tr_info (" ETH buffers : %u Rx %u Tx" , ETH_RXBUFNB, ETH_TXBUFNB);
318
+
299
319
if (HAL_ETH_Init (&EthHandle) != HAL_OK) {
320
+ tr_error (" HAL_ETH_Init issue" );
300
321
return false ;
301
322
}
302
323
303
324
/* Initialize Tx Descriptors list: Chain Mode */
304
325
if (HAL_ETH_DMATxDescListInit (&EthHandle, DMATxDscrTab, &Tx_Buff[0 ][0 ], ETH_TXBUFNB) != HAL_OK) {
326
+ tr_error (" HAL_ETH_DMATxDescListInit issue" );
305
327
return false ;
306
328
}
307
329
308
330
/* Initialize Rx Descriptors list: Chain Mode */
309
331
if (HAL_ETH_DMARxDescListInit (&EthHandle, DMARxDscrTab, &Rx_Buff[0 ][0 ], ETH_RXBUFNB) != HAL_OK) {
332
+ tr_error (" HAL_ETH_DMARxDescListInit issue" );
310
333
return false ;
311
334
}
312
335
@@ -315,9 +338,11 @@ bool STM32_EMAC::low_level_init_successful()
315
338
316
339
/* Enable MAC and DMA transmission and reception */
317
340
if (HAL_ETH_Start (&EthHandle) != HAL_OK) {
341
+ tr_error (" HAL_ETH_Start issue" );
318
342
return false ;
319
343
}
320
344
345
+ tr_info (" low_level_init_successful" );
321
346
return true ;
322
347
}
323
348
#else // ETH_IP_VERSION_V2
@@ -345,6 +370,9 @@ bool STM32_EMAC::low_level_init_successful()
345
370
EthHandle.Init .TxDesc = DMATxDscrTab;
346
371
EthHandle.Init .RxBuffLen = 1524 ;
347
372
373
+ tr_debug (" MAC Addr %02x:%02x:%02x:%02x:%02x:%02x" , MACAddr[0 ], MACAddr[1 ], MACAddr[2 ], MACAddr[3 ], MACAddr[4 ], MACAddr[5 ]);
374
+ tr_info (" ETH buffers : %u Rx %u Tx" , ETH_RX_DESC_CNT, ETH_TX_DESC_CNT);
375
+
348
376
if (HAL_ETH_Init (&EthHandle) != HAL_OK) {
349
377
return false ;
350
378
}
@@ -358,6 +386,7 @@ bool STM32_EMAC::low_level_init_successful()
358
386
HAL_ETH_DescAssignMemory (&EthHandle, idx, Rx_Buff[idx], NULL );
359
387
}
360
388
389
+ tr_info (" low_level_init_successful" );
361
390
return _phy_init ();
362
391
}
363
392
#endif // ETH_IP_VERSION_V2
@@ -433,7 +462,7 @@ bool STM32_EMAC::link_out(emac_mem_buf_t *buf)
433
462
434
463
/* Prepare transmit descriptors to give to DMA */
435
464
if (HAL_ETH_TransmitFrame (&EthHandle, framelength) != HAL_OK) {
436
-
465
+ tr_error ( " HAL_ETH_TransmitFrame issue " );
437
466
success = false ;
438
467
}
439
468
@@ -473,7 +502,7 @@ bool STM32_EMAC::link_out(emac_mem_buf_t *buf)
473
502
/* copy frame from pbufs to driver buffers */
474
503
for (q = p; q != NULL ; q = q->next ) {
475
504
if (i >= ETH_TX_DESC_CNT) {
476
- printf (" Error : ETH_TX_DESC_CNT not sufficient\n " );
505
+ tr_error (" Error : ETH_TX_DESC_CNT not sufficient" );
477
506
goto error;
478
507
}
479
508
@@ -499,7 +528,7 @@ bool STM32_EMAC::link_out(emac_mem_buf_t *buf)
499
528
if (status == HAL_OK) {
500
529
success = 1 ;
501
530
} else {
502
- printf (" Error returned by HAL_ETH_Transmit (%d)\n " , status);
531
+ tr_error (" Error returned by HAL_ETH_Transmit (%d)" , status);
503
532
success = 0 ;
504
533
}
505
534
@@ -538,6 +567,7 @@ int STM32_EMAC::low_level_input(emac_mem_buf_t **buf)
538
567
539
568
/* get received frame */
540
569
if (HAL_ETH_GetReceivedFrame_IT (&EthHandle) != HAL_OK) {
570
+ tr_debug (" low_level_input no frame" );
541
571
return -1 ;
542
572
}
543
573
@@ -549,6 +579,7 @@ int STM32_EMAC::low_level_input(emac_mem_buf_t **buf)
549
579
dmarxdesc = EthHandle.RxFrameInfos .FSRxDesc ;
550
580
551
581
if (len > 0 ) {
582
+ tr_debug (" low_level_input len %u" , len);
552
583
/* Allocate a memory buffer chain from buffer pool */
553
584
*buf = memory_manager->alloc_pool (len, 0 );
554
585
}
@@ -607,7 +638,7 @@ int STM32_EMAC::low_level_input(emac_mem_buf_t **buf)
607
638
608
639
if (HAL_ETH_GetRxDataBuffer (&EthHandle, &RxBuff) == HAL_OK) {
609
640
if (HAL_ETH_GetRxDataLength (&EthHandle, &frameLength) != HAL_OK) {
610
- printf (" Error: returned by HAL_ETH_GetRxDataLength\n " );
641
+ tr_error (" Error: returned by HAL_ETH_GetRxDataLength" );
611
642
return -1 ;
612
643
}
613
644
@@ -679,12 +710,16 @@ void STM32_EMAC::phy_task()
679
710
if (HAL_ETH_ReadPHYRegister (&EthHandle, PHY_BSR, &status) == HAL_OK) {
680
711
if ((emac_link_state_cb) && (status != 0xFFFF )) {
681
712
if ((status & PHY_LINKED_STATUS) && !(phy_status & PHY_LINKED_STATUS)) {
713
+ tr_info (" emac_link_state_cb set to true" );
682
714
emac_link_state_cb (true );
683
715
} else if (!(status & PHY_LINKED_STATUS) && (phy_status & PHY_LINKED_STATUS)) {
716
+ tr_info (" emac_link_state_cb set to false" );
684
717
emac_link_state_cb (false );
685
718
}
686
719
}
687
720
phy_status = status;
721
+ } else {
722
+ tr_error (" HAL_ETH_ReadPHYRegister issue" );
688
723
}
689
724
690
725
}
@@ -721,8 +756,10 @@ void STM32_EMAC::phy_task()
721
756
if (emac_link_state_cb) {
722
757
if (is_up && !was_up) {
723
758
emac_link_state_cb (true );
759
+ tr_info (" emac_link_state_cb set to true" );
724
760
} else if (!is_up && was_up) {
725
761
emac_link_state_cb (false );
762
+ tr_info (" emac_link_state_cb set to false" );
726
763
}
727
764
}
728
765
@@ -829,6 +866,8 @@ void mbed_default_mac_address(char *mac)
829
866
830
867
bool STM32_EMAC::power_up ()
831
868
{
869
+ tr_info (" power_up" );
870
+
832
871
sleep_manager_lock_deep_sleep ();
833
872
834
873
/* Initialize the hardware */
@@ -912,6 +951,8 @@ void STM32_EMAC::set_all_multicast(bool all)
912
951
913
952
void STM32_EMAC::power_down ()
914
953
{
954
+ tr_info (" power_down" );
955
+
915
956
/* No-op at this stage */
916
957
sleep_manager_unlock_deep_sleep ();
917
958
}
0 commit comments