2 puntos por GN⁺ 2024-11-12 | 1 comentarios | Compartir por WhatsApp
  • Envío de paquetes Ethernet

    • El autor quería crear una serie llamada "Networking from scratch" y comenzó un proyecto para construir una pila TCP/IP en un microcontrolador.
    • Esta entrada del blog comparte la historia de haber enviado con éxito el primer paquete Ethernet y las experiencias con errores y depuración durante el proyecto.
  • Microcontrolador

    • El microcontrolador utilizado es el STM32F401, basado en ARM Cortex-M4 y capaz de operar hasta 84MHz.
    • Tiene 96KiB de RAM, lo que proporciona suficiente capacidad para procesar varios paquetes.
  • Ethernet

    • Ethernet es un concepto que abarca diversas tecnologías y estándares, e incluye hardware a nivel físico, formatos de señal, estrategias para manejar colisiones en el bus, diseño de tramas y más.
    • En este proyecto se usa el chip W5100 de Wiznet, que incorpora una pila TCP/IP por hardware.
  • Problema 1: Gritar en el vacío

    • Se escribió un controlador para comunicarse con el chip W5100, pero la comunicación no funcionaba porque las señales SPI estaban conectadas incorrectamente.
    • El problema se produjo porque el encabezado ICSP del shield de Arduino conectaba mal las señales SPI, y se retrabajó la placa para corregirlo.
  • Problema 2: La esencia de la comedia

    • Incluso después de conectar correctamente las señales SPI, la transmisión de paquetes Ethernet seguía sin funcionar bien.
    • Se usó un analizador lógico para examinar las señales digitales y se resolvió un problema de temporización en la señal de selección de chip, logrando así una comunicación exitosa.
  • Problema 3: Paquete desconocido

    • En Wireshark aparecía un paquete incorrecto en lugar del paquete que se había enviado.
    • Analizando el problema con ayuda de la biblioteca de Arduino, se encontró y corrigió un error que escribía datos en una dirección de memoria equivocada.
  • La moraleja de la historia

    • Enviar un paquete Ethernet puede parecer un logro pequeño, pero los errores y la experiencia de depuración en el proyecto tienen mucho valor.
    • La depuración y la creación de herramientas son partes importantes del proceso de desarrollo, y es fundamental entender el sistema mediante exploración y experimentación.
    • El proyecto sigue en marcha, abordando problemas y errores en niveles de abstracción más altos.

1 comentarios

 
GN⁺ 2024-11-12
Comentarios de Hacker News
  • Siempre vale la pena crear herramientas y explorar la depuración. Sin embargo, mucha gente no entiende esto y, especialmente en procesos de desarrollo como JIRA, a menudo no ve el valor de la exploración.

  • La capacidad de crear herramientas pequeñas es parte central del programador 10x, y a menudo es un arte que se practica en las sombras.

  • Es el inicio de una serie para construir desde cero la pila de TCP/IP y tramas Ethernet en un microcontrolador. Usa el chip W5100 para manejar TCP/IP y admite tramas Ethernet preconstruidas.

  • Está cambiando su carrera hacia la ingeniería FPGA y enfocándose en Ethernet, y entender las abstracciones de redes ha sido muy valioso.

  • Hay una opinión de que, en lugar de usar un STM32F401 y un shield Ethernet W5100, sería mejor usar una placa STM32F407 y una placa Ethernet PHY barata.

  • La funcionalidad Ethernet por lo general viene incluida como un periférico integrado dentro del microcontrolador.

  • Fue la primera vez que vio la nueva denominación de MOSI/MISO como main out/subordinate in, y no se entiende bien la alternativa COPI/CIPO.

  • Para escribir una pila de red en Linux, se puede usar socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)).

  • La placa STM32 Nucleo trae Ethernet de 100 Mbps integrado, y el software STM32Cube recibe evaluaciones mixtas, pero ofrece ejemplos que funcionan.

  • Ethernet trabaja con tramas; los paquetes son un concepto de IP.

  • Se puede considerar el ENC28J60, un 'Stand-Alone Ethernet Controller with SPI Interface', aunque como no tiene una pila TCP/IP por hardware, requiere una implementación por software.