What is Noizz & how do I use it?

Guía de Uso del Depurador NoICE para Novatos

31/12/2023

Valoración: 4.61 (5111 votos)

Si te dedicas al desarrollo con microprocesadores, sabes que contar con las herramientas adecuadas es crucial para el éxito. Una de las herramientas más importantes en el arsenal de cualquier desarrollador es un buen depurador. Hoy vamos a sumergirnos en el mundo de NoICE, un potente depurador (debugger) para Windows diseñado para una amplia variedad de microprocesadores. A lo largo de este artículo, exploraremos qué es, cómo funciona, sus características principales y cómo puedes empezar a utilizarlo para llevar tus proyectos al siguiente nivel.

How do I use NoICE?
To use NoICE, you can operate it via the menu and toolbar, or via a command line. Command keywords are case insensitive. NoICE currently runs on Windows XP, Vista, and 7. Earlier versions ran on Windows 95, 98, ME, and 2000, and ancient versions ran on DOS.
Índice de Contenido

¿Qué es Exactamente NoICE?

NoICE es un software de depuración alojado en Windows que se conecta con una gran variedad de microprocesadores. Su arquitectura se compone de dos partes principales: un programa específico para el target que se ejecuta en Windows (NoICExxx.EXE) y, en muchos casos, un pequeño programa monitor que reside en el propio microprocesador de destino. La comunicación entre ambos se establece a través de diversos medios, como RS-232, BDM o JTAG, permitiendo un control y monitoreo detallado del hardware.

La versatilidad es uno de sus puntos fuertes, ofreciendo soporte para una lista considerable de procesadores. A continuación, detallamos los microprocesadores compatibles con la versión actual de Windows:

  • ARM7
  • 6801/6301/6800
  • 68HC08/MC9S08
  • 68HC11
  • 68HC12
  • 8051
  • MSP430
  • Z80/Z180
  • 8080/8085
  • 8096/80196
  • 65(C)02
  • 6809

Es importante mencionar que una versión anterior, NoICE para DOS, también daba soporte a otros procesadores como el Z8, 68(HC)05, M50740/M38000 y TMS370. Aunque no están en la versión actual de Windows, es posible que se añadan en el futuro.

Características Principales que Debes Conocer

NoICE no es solo un depurador básico; viene cargado con un conjunto de herramientas diseñadas para facilitar y agilizar el proceso de desarrollo y depuración. Estas son algunas de sus funcionalidades más destacadas:

  • Depuración a nivel de código fuente: Permite depurar directamente sobre tu código C (para ciertos compiladores) y ensamblador, haciendo el proceso mucho más intuitivo.
  • Desensamblador y Mini-Ensamblador: Incluye un desensamblador que puede ser utilizado incluso sin el hardware de destino, y un práctico mini-ensamblador para realizar pequeñas modificaciones al vuelo.
  • Visualización y Edición de Memoria: Puedes inspeccionar y modificar la memoria del microprocesador tanto en formato hexadecimal como en formatos de alto nivel.
  • Compatibilidad de Archivos: Carga archivos de depuración de ImageCraft, Elf/Dwarf/Stabs y IEEE 695. También es compatible con archivos hexadecimales de Intel, Motorola/Freescale y Tektronix.
  • Programación de Flash EEPROM: Permite grabar directamente la memoria Flash en targets como ARM, HC12, HC08 y MSP430.
  • Breakpoints Ilimitados: Puedes establecer un número virtualmente ilimitado de breakpoints (puntos de interrupción) para programas en RAM. También soporta breakpoints de hardware en procesadores compatibles (ARM, HC08, HC12, MSP430).
  • Paso a Paso sin Hardware: Permite la ejecución paso a paso del código utilizando breakpoints definidos automáticamente, sin necesidad de soporte de hardware específico para esta función.
  • Definición de Símbolos y Estructuras: Puedes definir tus propios símbolos, así como estructuras de datos de C, arrays y variables basadas en la pila para una depuración más clara.
  • Macros y Comandos: Permite grabar y reproducir archivos de comandos, e incluso definirlos como macros para automatizar tareas repetitivas.

Primeros Pasos: Instalación y Configuración

Utilizar NoICE es bastante sencillo. Puedes operarlo tanto a través de su interfaz gráfica con menús y barras de herramientas, como mediante una línea de comandos. A continuación, te explicamos cómo iniciarlo y configurarlo para tus necesidades.

Formas de Iniciar NoICE

Puedes ejecutar NoICE de varias maneras estándar en Windows:

  1. Acceso Directo o Línea de Comandos: Simplemente ejecuta el archivo .EXE. Si especificas una ruta de archivo, NoICE lo abrirá automáticamente. Por ejemplo: C:\NoICE\NoICE51.exe "C:\proyecto\mi_codigo.noi". Recuerda usar comillas si la ruta contiene espacios.
  2. Asociación de Archivos: Si asocias un tipo de archivo (como .noi) con NoICE en el Explorador de Windows, hacer doble clic en uno de esos archivos lanzará el programa y abrirá el archivo.
  3. Arrastrar y Soltar: Puedes arrastrar un archivo compatible y soltarlo sobre el icono de NoICE o sobre la ventana del programa ya en ejecución para abrirlo.

Parámetros Útiles de Línea de Comandos

NoICE ofrece algunos interruptores (switches) que puedes usar al lanzarlo desde la línea de comandos para modificar su comportamiento:

  • /show: Este comando es extremadamente útil para diagnosticar problemas de comunicación. Al usarlo, NoICE mostrará toda la comunicación con el target en formato hexadecimal.
  • /settings=nombre: Esta es una función clave para quienes trabajan con múltiples dispositivos. Permite ejecutar varias instancias de NoICE simultáneamente, cada una con su propio archivo de configuración. Por ejemplo, si tienes dos dispositivos conectados a COM1 y COM2, puedes crear dos accesos directos:

"C:\Program Files\NoICE\bin\NoICE51.exe" /settings=master

"C:\Program Files\NoICE\bin\NoICE51.exe" /settings=slave

Cada instancia guardará su configuración por separado (puerto COM, velocidad, etc.), permitiéndote depurar ambos sistemas a la vez sin conflictos.

Entendiendo el Contexto de Depuración (Debug Context)

Una de las características más inteligentes y que ahorran más tiempo en NoICE es el "Contexto de Depuración". Esta función está diseñada para recordar tus breakpoints y watchpoints (puntos de observación) entre diferentes sesiones de depuración, incluso si recompilas tu código. Su funcionamiento es automático y se divide en tres pasos:

1. Definición del Contexto

Un contexto de depuración se define cada vez que cargas un archivo (comando LOAD) o ejecutas un script que lo contiene. En este momento, NoICE hace dos cosas:

  • Recuerda el nombre, la ruta y la marca de tiempo (fecha y hora de la última modificación) del archivo que estás cargando.
  • Elimina todos los breakpoints y watchpoints existentes. Esto se hace para evitar conflictos, ya que las direcciones de memoria pueden haber cambiado si has modificado y recompilado el código.

2. Guardado del Contexto

El contexto se guarda automáticamente cuando sales de NoICE o cuando cargas un nuevo archivo. El guardado ocurre justo antes de la definición de un nuevo contexto. La información se almacena en un archivo con el mismo nombre que tu archivo de programa, pero con la extensión .NoiCtx. Por ejemplo, si cargas C:\proyecto\codigo.elf, el contexto se guardará en C:\proyecto\codigo.elf.NoiCtx. Este archivo contiene:

  • Los breakpoints, guardados tanto por su dirección de memoria como por el nombre del archivo fuente y el número de línea.
  • Los watchpoints, guardados por dirección y por nombre de símbolo.
  • Las marcas de tiempo de los archivos fuente asociados.

3. Restauración del Contexto

Al finalizar un comando LOAD, NoICE busca el archivo .NoiCtx correspondiente. Aquí es donde ocurre la magia:

  • Si el archivo principal no ha cambiado: NoICE compara la marca de tiempo actual del archivo con la guardada en el contexto. Si coinciden, significa que el programa es idéntico, por lo que todos los breakpoints y watchpoints se restauran por su dirección original.
  • Si el archivo principal ha cambiado: Si las marcas de tiempo no coinciden, el código ha sido modificado. En este caso, NoICE no restaura los puntos de interrupción que solo conoce por su dirección. Sin embargo, intentará restaurar aquellos guardados con información de archivo fuente y línea, o por nombre de símbolo. Buscará la nueva dirección de esa línea de código o símbolo en el programa recién cargado y colocará el breakpoint o watchpoint allí. ¡Esto te ahorra tener que volver a configurar todo manualmente después de cada compilación!

Tabla Comparativa de Soporte de Procesadores

Para tener una idea clara de la cobertura de NoICE, aquí tienes una tabla que resume las familias de procesadores soportadas por las versiones de Windows y la antigua de DOS.

Versión de NoICEProcesadores Soportados
NoICE para Windows (actual)ARM7, 6801/6301, 68HC08/S08, 68HC11, 68HC12, 8051, MSP430, Z80/Z180, 8080/85, 8096/196, 6502, 6809
NoICE para DOS (antigua)Z8, 68(HC)05, M50740/M38000, TMS370, además de muchos de la versión de Windows

Preguntas Frecuentes (FAQ)

¿NoICE es un software gratuito?

No, NoICE no es gratuito. Se ofrece bajo un modelo de "shareware". Puedes descargarlo y utilizarlo para evaluación sin coste durante un período de 30 días. Si decides seguir usándolo después de este período, es necesario adquirir una licencia. El uso no registrado después de los 30 días viola las leyes de copyright.

How do I use NoICE?
To use NoICE, you can operate it via the menu and toolbar, or via a command line. Command keywords are case insensitive. NoICE currently runs on Windows XP, Vista, and 7. Earlier versions ran on Windows 95, 98, ME, and 2000, and ancient versions ran on DOS.

¿En qué sistemas operativos funciona NoICE?

La versión actual de NoICE es compatible con Windows XP, Vista y 7. Versiones anteriores funcionaban en sistemas más antiguos como Windows 95, 98, ME y 2000. Si necesitas una de estas versiones antiguas, puedes contactar a los desarrolladores.

¿Cómo puedo depurar más de un microprocesador a la vez?

Puedes hacerlo utilizando el parámetro de línea de comandos /settings=nombre. Esto te permite ejecutar múltiples instancias de NoICE, cada una con su propia configuración (por ejemplo, una para cada puerto COM), permitiéndote trabajar con varios dispositivos simultáneamente.

Mis breakpoints desaparecen cada vez que cargo mi programa. ¿Cómo lo evito?

¡No tienes que evitarlo! Esta es la función del "Contexto de Depuración" trabajando. Guardará tus breakpoints y los restaurará de forma inteligente después de cargar el nuevo programa, incluso si el código ha cambiado de ubicación en la memoria. Simplemente depura con normalidad y deja que NoICE gestione los puntos de interrupción por ti.

Licencia y Condiciones de Uso

Es importante entender los términos de la licencia. Una copia registrada de NoICE puede ser utilizada por una sola persona en múltiples ordenadores, o puede ser instalada en un solo ordenador para ser usada por múltiples personas (pero no simultáneamente). Para el uso en red, se requiere una licencia individual para cada ordenador que acceda al software. El software se vende "tal cual", sin garantías de rendimiento o comerciabilidad, y el usuario asume todo el riesgo de su uso.

En resumen, NoICE es una herramienta de depuración extraordinariamente completa y flexible para desarrolladores de sistemas embebidos. Su amplio soporte de procesadores, junto con características avanzadas como el contexto de depuración y la configuración de múltiples instancias, lo convierten en un aliado invaluable para identificar y solucionar errores en el firmware de cualquier proyecto.

Si quieres conocer otros artículos parecidos a Guía de Uso del Depurador NoICE para Novatos puedes visitar la categoría Juegos.

Subir