Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 72ed70b

Browse files
committed
ksz8851: debug
1 parent 841360a commit 72ed70b

File tree

2 files changed

+43
-15
lines changed

2 files changed

+43
-15
lines changed

drivers/ksz8851/ksz8851.c

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
#define SPI_END 2
4040
#define SPI_COMPLETE 3
4141

42+
#define MSG(fmt, ...) printf("[%u] ksz8851: " fmt, mp_hal_ticks_ms(), ##__VA_ARGS__)
43+
//#define MSG(fmt, ...) (void)0
4244

4345
static uint16_t length_sum;
4446
static uint8_t frameID = 0;
@@ -390,6 +392,7 @@ void ksz8851Init(void) {
390392
spi_setbits(REG_PORT_LINK_MD, PORT_POWER_SAVE_MODE);
391393

392394
/* Enable Link change interrupt , enable tx/Rx interrupts */
395+
MSG("init INT:0x%x\n", INT_MASK);
393396
spi_setbits(REG_INT_MASK, INT_MASK );
394397

395398
/* Enable QMU Transmit */
@@ -412,6 +415,7 @@ void ksz8851BeginPacketSend(unsigned int packetLength) {
412415

413416
/* Check if TXQ memory size is available for this transmit packet */
414417
txmir = ksz8851_regrd(REG_TX_MEM_INFO) & TX_MEM_AVAILABLE_MASK;
418+
//MSG("Send Begin(%u): %u %u\n", packetLength, txmir, (txmir < packetLength+4));
415419
if (txmir < packetLength + 4) {
416420
/* Not enough space to send packet. */
417421

@@ -456,6 +460,7 @@ void ksz8851BeginPacketSend(unsigned int packetLength) {
456460
void ksz8851SendPacketData(unsigned char *localBuffer, unsigned int length) {
457461

458462
length_sum += length;
463+
//MSG("Send Data(buf, %u):%u\n", length, length_sum);
459464

460465
spi_op(SPI_CONTINUE, FIFO_WR, localBuffer, length);
461466
}
@@ -469,7 +474,7 @@ void ksz8851SendPacketData(unsigned char *localBuffer, unsigned int length) {
469474
void ksz8851EndPacketSend(void) {
470475
uint32_t dummy = 0;
471476

472-
//printf("ksz8851EndPacketSend():length_sum = %d\n", length_sum);
477+
//MSG("Send End:length_sum = %d\n", length_sum);
473478

474479
/* Calculate how many bytes to get to DWORD */
475480
length_sum = -length_sum & 3;
@@ -502,6 +507,7 @@ void ksz8851RetrievePacketData(unsigned char *localBuffer, unsigned int *length)
502507
*length = 0;
503508
//Read received frame status from RXFHSR
504509
status = ksz8851_regrd(REG_RX_FHR_STATUS);
510+
//MSG("Retr Data s=0x%x\n", status);
505511

506512
//Make sure the frame is valid
507513
if(status & RX_VALID)
@@ -531,10 +537,23 @@ void ksz8851RetrievePacketData(unsigned char *localBuffer, unsigned int *length)
531537
//End RXQ read access
532538
spi_clrbits(REG_RXQ_CMD, RXQ_START);
533539
*length = n;
540+
//MSG("Retr read %u\n", *length);
534541
return;
535542
}
543+
else
544+
{
545+
MSG("Retr unacceptable frame size: %u (4,%u)\n", n, ETHERNET_RX_PACKET_BUFF_SIZE);
546+
}
547+
}
548+
else
549+
{
550+
MSG("Retr errors\n");
536551
}
537552
}
553+
else
554+
{
555+
MSG("Retr invalid\n");
556+
}
538557
//Release the current error frame from RXQ
539558
spi_setbits(REG_RXQ_CMD, RXQ_CMD_FREE_PACKET);
540559
}

esp32/mods/modeth.c

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@
5858
#define ETHERNET_EVT_CONNECTED 0x0001
5959
#define ETHERNET_EVT_STARTED 0x0002
6060

61+
#define MSG(fmt, ...) printf("[%u] modeth: " fmt, mp_hal_ticks_ms(), ##__VA_ARGS__)
62+
//#define MSG(fmt, ...) (void)0
63+
6164
/*****************************************************************************
6265
* DECLARE PRIVATE FUNCTIONS
6366
*****************************************************************************/
@@ -145,34 +148,30 @@ static esp_err_t modeth_event_handler(void *ctx, system_event_t *event)
145148

146149
switch (event->event_id) {
147150
case SYSTEM_EVENT_ETH_CONNECTED:
148-
//printf("Ethernet Link Up\n");
151+
MSG("EH Ethernet Link Up\n");
149152
break;
150153
case SYSTEM_EVENT_ETH_DISCONNECTED:
151-
//printf( "Ethernet Link Down\n");
154+
MSG("EH Ethernet Link Down\n");
152155
mod_network_deregister_nic(&eth_obj);
153156
xEventGroupClearBits(eth_event_group, ETHERNET_EVT_CONNECTED);
154157
break;
155158
case SYSTEM_EVENT_ETH_START:
156-
//printf( "Ethernet Started\n");
159+
MSG("EH Ethernet Started\n");
157160
break;
158161
case SYSTEM_EVENT_ETH_GOT_IP:
159162
memset(&ip, 0, sizeof(tcpip_adapter_ip_info_t));
160163
ESP_ERROR_CHECK(tcpip_adapter_get_ip_info(ESP_IF_ETH, &ip));
161-
//printf( "Ethernet Got IP Addr\n");
162-
//printf( "~~~~~~~~~~~\n");
163-
//printf( "ETHIP:\n" IPSTR, IP2STR(&ip.ip));
164-
//printf( "ETHMASK:\n" IPSTR, IP2STR(&ip.netmask));
165-
//printf( "ETHGW:\n" IPSTR, IP2STR(&ip.gw));
166-
//printf( "~~~~~~~~~~~\n");
164+
MSG("EH Got IP Addr: " IPSTR " " IPSTR " " IPSTR "\n", IP2STR(&ip.ip), IP2STR(&ip.netmask), IP2STR(&ip.gw));
167165
#if defined(FIPY) || defined(GPY)
166+
MSG("EH save DNS\n");
168167
// Save DNS info for restoring if wifi inf is usable again after LTE disconnect
169168
tcpip_adapter_get_dns_info(TCPIP_ADAPTER_IF_ETH, TCPIP_ADAPTER_DNS_MAIN, &eth_sta_inf_dns_info);
170169
#endif
171170
mod_network_register_nic(&eth_obj);
172171
xEventGroupSetBits(eth_event_group, ETHERNET_EVT_CONNECTED);
173172
break;
174173
case SYSTEM_EVENT_ETH_STOP:
175-
//printf( "Ethernet Stopped\n");
174+
MSG("EH Ethernet Stopped\n");
176175
xEventGroupClearBits(eth_event_group, ETHERNET_EVT_STARTED);
177176
break;
178177
default:
@@ -201,6 +200,7 @@ static void process_rx(void)
201200
uint32_t len, frameCnt;
202201

203202
frameCnt = (ksz8851_regrd(REG_RX_FRAME_CNT_THRES) & RX_FRAME_CNT_MASK) >> 8;
203+
MSG("TE process_rx f:%u\n", frameCnt);
204204
while (frameCnt > 0)
205205
{
206206
ksz8851RetrievePacketData(modeth_rxBuff, &len);
@@ -210,6 +210,7 @@ static void process_rx(void)
210210
}
211211
frameCnt--;
212212
}
213+
MSG("TE process_rx len:%u\n", totalLen);
213214
}
214215
static IRAM_ATTR void ksz8851_evt_callback(uint32_t ksz8851_evt)
215216
{
@@ -251,6 +252,7 @@ static IRAM_ATTR void ksz8851_evt_callback(uint32_t ksz8851_evt)
251252
}
252253

253254
static void TASK_ETHERNET (void *pvParameters) {
255+
MSG("TE\n");
254256

255257
static uint32_t thread_notification;
256258
system_event_t evt;
@@ -259,6 +261,7 @@ static void TASK_ETHERNET (void *pvParameters) {
259261

260262
// Block task till notification is recieved
261263
thread_notification = ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
264+
MSG("TE tn=%u\n", thread_notification);
262265

263266
if (thread_notification)
264267
{
@@ -289,6 +292,7 @@ static void TASK_ETHERNET (void *pvParameters) {
289292
/* link status */
290293
ksz8851RegisterEvtCb(ksz8851_evt_callback);
291294
eth_start:
295+
MSG("TE eth_start\n");
292296
xQueueReset(eth_cmdQueue);
293297
xEventGroupWaitBits(eth_event_group, ETHERNET_EVT_STARTED, false, true, portMAX_DELAY);
294298
// Init Driver
@@ -302,11 +306,13 @@ static void TASK_ETHERNET (void *pvParameters) {
302306
if(!eth_obj.link_status && (xEventGroupGetBits(eth_event_group) & ETHERNET_EVT_STARTED))
303307
{
304308
// block till link is up again
309+
MSG("TE block til up\n");
305310
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
306311
}
307312

308313
if(!(xEventGroupGetBits(eth_event_group) & ETHERNET_EVT_STARTED))
309314
{
315+
MSG("TE deinit\n");
310316
// deinit called, free memory and block till re-init
311317
xQueueReset(eth_cmdQueue);
312318
heap_caps_free(modeth_rxBuff);
@@ -323,16 +329,17 @@ static void TASK_ETHERNET (void *pvParameters) {
323329
switch(queue_entry.cmd)
324330
{
325331
case ETH_CMD_TX:
332+
//MSG("TE TX %u\n", queue_entry.len);
326333
process_tx(queue_entry.buf, queue_entry.len);
327-
//printf("TX command\n");
328334
break;
329335
case ETH_CMD_RX:
330336
process_rx();
331-
//printf("RX command\n");
337+
//MSG("TE RX {0x%x}\n", queue_entry.isr);
332338
// Clear Intr status bits
333339
ksz8851_regwr(REG_INT_STATUS, INT_MASK);
334340
break;
335341
case ETH_CMD_CHK_LINK:
342+
MSG("TE CHK_LINK {0x%x}\n", queue_entry.isr);
336343
if(ksz8851GetLinkStatus())
337344
{
338345
eth_obj.link_status = true;
@@ -349,7 +356,7 @@ static void TASK_ETHERNET (void *pvParameters) {
349356
ksz8851_regwr(REG_INT_STATUS, INT_MASK);
350357
break;
351358
case ETH_CMD_OVERRUN:
352-
//printf("\n\n===================OVERRUN=====================\n\n");
359+
MSG("TE OVERRUN {0x%x} ========================================\n", queue_entry.isr);
353360
xQueueReset(eth_cmdQueue);
354361
eth_obj.link_status = false;
355362
ksz8851PowerDownMode();
@@ -359,6 +366,7 @@ static void TASK_ETHERNET (void *pvParameters) {
359366
ksz8851Init();
360367
break;
361368
default:
369+
MSG("TE def {0x%x} %u\n", queue_entry.isr, queue_entry.cmd);
362370
break;
363371
}
364372
}
@@ -369,12 +377,13 @@ static void TASK_ETHERNET (void *pvParameters) {
369377
//TODO: This workaround should be removed once the lockup is resolved
370378
while((!pin_get_value(KSZ8851_INT_PIN)) && timeout < 5)
371379
{
380+
MSG("TE TO %u\n", timeout);
372381
vTaskDelay(1 / portTICK_PERIOD_MS);
373382
timeout++;
374383
}
375384
if(timeout >= 5)
376385
{
377-
//printf("Force Int\n");
386+
MSG("TE Force Int\n");
378387
xQueueReset(eth_cmdQueue);
379388
eth_obj.link_status = false;
380389
ksz8851PowerDownMode();

0 commit comments

Comments
 (0)