ZPUTA (Aplicacion de Prueba ZPU)
ZPUTA
Originalmente, los desarrollos de ZPUTA/zOS se dirigian solo a la arquitectura ZPU, y tenian dos metodos de ejecucion principales:
- como aplicacion arrancada por IOCP,
- de forma autonoma como firmware de inicio de la ZPU Evo.
Recientemente, zOS/ZPUTA se ha portado a la arquitectura ARM Cortex-M4, para su uso con el Freescale K64F en el proyecto tranZPUterSW. Dado que el K64F es una CPU/SoC de arquitectura fija, solo existe un metodo de ejecucion: 'autonomo'.
La idea detras de ZPUTA es principalmente la prueba, obtener acceso interno a un sistema de hardware embebido y ejecutar codelets para probar o experimentar con funcionalidades de hardware. Cada prueba se construiria como funcion interna y como app externa, lo cual era crucial debido a las placas de desarrollo utilizadas.
Para su funcionamiento, ZPUTA requiere como minimo una conexion serial (fisica o USB virtual), preferiblemente dos para la salida de depuracion. En la conexion serial principal, es preferible tener conectado un paquete de emulacion de terminal ANSI/VT100.
Uso de ZPUTA
Antes de ZPUTA, cree un programa de arranque llamado IOCP (I/O Control Program) que operaba a los niveles de hardware mas bajos y era capaz de arrancar programas mas sofisticados, por ejemplo ZPUTA. IOCP es sensible al tamano y disenado para arrancar desde cualquier dispositivo de almacenamiento, y al incluir una tarjeta SD y Petit FatFS puede arrancar desde una tarjeta SD.
Linea de comandos
El primer encuentro con el sistema operativo es un mensaje de inicio de sesion que muestra CPU, version, etc. y presenta un prompt para la entrada de comandos:

Las asignaciones de teclas readline y la lista completa de comandos para IO de disco, buffer de disco, sistema de archivos, memoria, hardware, pruebas de rendimiento, ejecucion de programas y aplicaciones son identicas a la version en ingles y se enumeran alli.
Aplicaciones
Detalles tecnicos
Organizacion de la memoria
Los mapas de memoria de IOCP y ZPUTA son identicos a la version en ingles y se presentan alli.
Interfaz de la aplicacion
Como la mayoria de los sistemas operativos, ZPUTA proporciona una API que una aplicacion debidamente compilada puede utilizar para reducir su tamano y complejidad y reutilizar funciones dentro del sistema operativo como la conexion serial.
En lugar de disenar un conjunto de API personalizado, era mas sensato exponer los metodos dentro de ZPUTA para uso de la aplicacion, por ejemplo printf. Esto se logra creando una tabla de saltos en un vector fijo dentro de ZPUTA.
La tabla completa de vectores API y los ejemplos de codigo son identicos a la version en ingles.
Configuracion y compilacion automatizadas (recomendado)
build.sh, que ensambla/compila IOCP, ZPUTA y las apps para una CPU elegida en una sola pasada. ZPUTA puede compilarse como una unica imagen autonoma con su funcionalidad integrada (util cuando no hay tarjeta SD) o dividida con los applets en la tarjeta SD. Intervienen dos cadenas de herramientas y los scripts de configuracion proporcionan ambas:
| Cadena de herramientas | CPU objetivo | Origen |
|---|---|---|
ZPU zpu-elf-gcc 3.4.2 |
Small Medium Flex Evo EvoMin (ZPU) |
instalada en /opt/zpu (desde ZPU_TOOLCHAIN_URL) |
ARM arm-none-eabi |
K64F (Kinetis / Teensy 3.5) |
incluida en el repositorio en tools/arm (sin instalacion) |
Dado que ambas cadenas de herramientas son binarios Linux / cruzados, la compilacion se ejecuta de forma nativa en Linux, en Docker en macOS y mediante WSL1 en Windows:
| Script | Plataforma | Notas |
|---|---|---|
setup_zSoft.sh |
Linux (nativo) / macOS (Docker) | Instala las herramientas base de compilacion + la cadena de herramientas ZPU; en macOS compila dentro de la imagen Docker zsoft-build:latest. |
setup_zSoft_windows.cmd |
Windows 10 / 11 | Lanzador de doble clic que invoca el script de PowerShell siguiente. |
setup_zSoft_windows_native.ps1 |
Windows 10 / 11 (WSL1) | Configura WSL1 (distribucion predeterminada Ubuntu-24.04) y ejecuta la configuracion de Linux dentro de ella. |
setup_zSoft_wsl1.sh |
dentro de WSL1 | El paso de configuracion de Linux invocado automaticamente dentro de la distribucion WSL1. |
Linux / macOS — setup_zSoft.sh
chmod +x setup_zSoft.sh
./setup_zSoft.sh
Windows 10 / 11 — setup_zSoft_windows_native.ps1 — haz doble clic en setup_zSoft_windows.cmd, o desde un simbolo de PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_zSoft_windows_native.ps1
La configuracion clona ZSOFT_REPO_URL (por defecto https://git.eaw.app/eaw/zSoft.git) en ~/zSoft. Una vez finalizada, compila ZPUTA con (build.sh selecciona automaticamente nativo / Docker / WSL1 segun el host):
./build.sh -C Evo -O zputa # ZPUTA for the Evo ZPU
./build.sh -C K64F -O zputa # ZPUTA for the K64F (ARM Cortex-M4)
./build.sh -h # all options (-C CPU, -I IOCP, -O os, -o os ver, addresses, sizes ...)
build/ y build/SD/ — la ROM de arranque (BOOT.ROM / BOOTTINY.ROM), el cargador de arranque IOCP_<func>_<addr>.bin y el .bin de ZPUTA, ademas de los binarios de aplicacion bin/ listos para copiar a una tarjeta SD formateada en FAT.
Modificaciones utiles de variables de entorno:
| Variable | Proposito |
|---|---|
ZSOFT_REPO_URL |
Repositorio a clonar (por defecto https://git.eaw.app/eaw/zSoft.git). |
ZSOFT_DIR |
Compilar dentro de una copia de trabajo existente en lugar de clonar. |
ZPU_TOOLCHAIN_URL |
Ubicacion del tarball de la cadena de herramientas zpu-elf-gcc 3.4.2 instalada en /opt/zpu. |
ZSOFT_BUILD_IMAGE |
Imagen Docker usada para la compilacion en macOS (por defecto zsoft-build:latest). |
ZSOFT_WSL_DISTRO |
Nombre de la distribucion WSL1 en Windows (por defecto Ubuntu-24.04). |
ZSOFT_ASSUME_YES=1 |
Acepta todos los prompts de forma no interactiva (instalaciones desatendidas / CI). |
build.sh — esta documentada en la seccion Build del software inmediatamente debajo.
Build del software
Esta seccion muestra como construir un kernel ZPUTA basico. El punto de partida para el build de ZPUTA es el script ‘build.sh’.
Rutas
La tabla completa de rutas y la documentacion del arbol de build son identicas a la version en ingles.
Herramientas
Todo el desarrollo se realizo en Linux, en particular Debian/Ubuntu. El software necesario incluye la ZPU GCC ToolChain y opcionalmente Arduino y Teensyduino.
Build.sh
La documentacion completa de build.sh con todos los parametros y ejemplos se encuentra en la version en ingles.
Agradecimientos
Los agradecimientos y licencias son identicos a la version en ingles.
Licencias
La licencia FreeBSD
Este proyecto esta licenciado bajo la licencia FreeBSD. Los detalles se encuentran en la version en ingles.
La GNU Public License v3
Partes de este proyecto estan licenciadas bajo la GPLv3. Los detalles se encuentran en la version en ingles.