Supercon: Ruth Grace Wong y Firehose Firmware

El firmware y el software son solo código, ¿verdad? ¿Qué tan diferente podría ser el código que administra los sitios web distribuidos a escala de Internet del código que opera un diminuto cerebro microcontrolador dentro de un dispositivo hidropónico personal? ¡Noche y dia!

Ruth Grace Wong trabaja en el mundo anterior, pero brilla a la luz de la luna como ingeniera de fábrica con algunos amigos. Su producto tenía un firmware preexistente que contenía (al menos) un error, y el trabajo de Ruth era encontrarlo. El código en cuestión fue escrito por el ingeniero chino de PCB, que conocía la electrónica íntimamente pero no tenía experiencia en programación, lo que le dio a Ruth la oportunidad de saltar principalmente a la programación incrustada en bruto más cruda. Alerta de spoiler: encontró el error y aprendió mucho sobre firmware en el camino. Este discurso la sigue a lo largo de la aventura.

"El código está muy bien documentado, en chino", pero los nombres de las variables están increíblemente sin escribir. Del mismo modo, aunque el ingeniero de PCB sabe bien lo que 24C02 es si eres un programador que también podría ser chino. Como era de esperar, las búsquedas en Internet se guardan en ambos lados.

El error terminó escondiéndose en una falla lógica en el código PWM, solucionándolo en una rutina de servicio de interrupción, e impidió que el ventilador se ejecutara. Una vez encontrado, fue fácilmente reparado. Pero llegar al punto en el que comprende la base del código lo suficientemente profundo como para saber dónde buscar es cuatro quintas partes de la batalla. Diablos, configurar la cadena de herramientas solo puede llevar uno o dos días.

Si eres un compañero del tipo de software, el discurso de Ruth (incrustado a continuación) te dará un vistazo rápido a las pocas capas externas de la cebolla que está incrustada en el desarrollo de firmware, desde un punto de vista familiar. ¡Dale un reloj de conversación rápido y valioso! Los veteranos del hardware Grizzled asentirán con la cabeza, e incluso pueden entender un poco de cómo se ve nuestro código para "ellos".

  • Ripu Helmer Lán sè dice:

    “Una vez encontrado, fue fácilmente reparado. Pero llegar al punto en el que se comprende la base del código lo suficientemente profundo como para saber dónde buscar es cuatro quintas partes de la batalla ".

    ¡Pensé que estabas tratando de señalar que el desarrollo de firmware es diferente de otras formas de desarrollo de software!

  • David dice:

    "De manera similar, aunque el ingeniero de PCB sabe bien qué es 24C02, si eres un programador, también podrías ser chino".

    Qué !? Si está escribiendo firmware para un dispositivo con 24C02, conocerá íntimamente la pieza y cómo funciona. Creo que es mucho más probable que un ingeniero de PCB no sepa qué es 24C02 en lugar de que el ingeniero escriba el código en él.

    • Fred dice:

      Codificador de firmware seguro (los dispara de manera diferente), pero ¿software de Internet? No.

  • Daños severos a los neumáticos dice:

    Escribo mucho firmware, no creo en absoluto la idea de que el firmware es muy diferente. El firmware es solo una especie de software y puede estar bien escrito o terriblemente escrito como cualquier otra cosa. Quizás las malas prácticas de código son más comunes entre las personas que escriben firmware, pero no creo que ese sea necesariamente el caso.

    • Jim Shortz dice:

      Me alegra oír eso. Después de 25 años en programas empresariales, realmente quiero integrarme cuando sea grande, pero me temo que nadie me contratará por falta de trabajo integrado remunerado.

      • Alphatek dice:

        Estás bromeando. Es muy difícil llenar los lugares integrados. "Devops" es lo que todo el mundo y su perro parecen querer hacer. Los ingenieros de firmas experimentadas valen su peso en oro.

        • Ostraco dice:

          Mientras pagan en oro, ... o Bitcoin.

          • playbola dice:

            ¿A quién estás engañando? Los buenos ingenieros de la empresa pagan en pizza y Mountian Dew.

        • Mitchell dice:

          ¿Son ellos? Dejé de buscar aquí en el norte de Inglaterra.

  • Ingeniero de Backwoods dice:

    Buena presentación. Solo un remache:
    ¿La memoria flash no es constante? Equivocado.
    EEPROM es direccionable por bytes y persistente por ciclos de energía.
    Los relámpagos también duran, pero en los relámpagos NAND (el tipo más común), debe escribir un bloque completo en lugar de solo un byte.

    • donotdespisethesnake dice:

      Erk ... ¡no es lo único malo en esa presentación! Cualquiera que esté tan equivocado con lo básico es una gran señal de alerta, obviamente no es un programador integrado. Realmente espero que la gente no aprenda su oficio a través de tediosos videos de Internet como este.

      Sin embargo, el firmware es similar a los programas, ya que hay bastantes personas desprevenidas que trabajan en ambos campos y que tienen éxito.
      todavía paga para hacerlo, en parte porque no hay buenas personas, pero principalmente porque los administradores saben incluso menos sobre programas / firmware que los desarrolladores. Tenía uno que literalmente no conocía la diferencia entre RAM y ROM.

    • rewolff dice:

      > Flash también persiste, pero en flash NAND (tipo más común), debe escribir un bloque completo en lugar de solo un byte
      No. El bloque debe QUITARSE al mismo tiempo. A menudo se puede escribir en bytes al mismo tiempo.

      Eso puede depender un poco del dispositivo en el que se encuentre el rayo. Si tiene una tarjeta SD o EMMC, la interfaz que recibe no le da la opción de escribir un byte al mismo tiempo. Pero tanto para AVR como para STM32, sé que una vez eliminados, puede escribir los datos en bloques muy pequeños. (en STM32 según su elección de byte, media palabra o palabra, menos seleccionable si la fuente de alimentación es "baja").

  • hex4def6 dice:

    Hmm ... Una mezcla un poco extraña en esta presentación. No estoy muy seguro de quién era el público objetivo.

    Al principio, parece que está destinado a principiantes absolutos que no saben qué son las EEPROM, la memoria flash, PWM o los bucles principales, pero luego pasan por los ISR, la aritmética modular y los temporizadores. (Todavía estoy tratando de averiguar por qué se usó (65536 - 60) / 256, por ejemplo, para TH1).

    Y creo que la lección / tropo sobre los ingenieros de hardware como malos programadores no fue realmente confirmada por el error real. Sí, fue un error estúpido, pero no un error fue el resultado de un código terriblemente escrito, sino probablemente un copiar y pegar que se pasó por alto.

Maya Lorenzo
Maya Lorenzo

Deja una respuesta

Tu dirección de correo electrónico no será publicada.