Este sistema operativo estaba creando durante una asignación de clase. El código es experimental y altamente no probado, pero debería funcionar.
El sistema operativo utiliza un planificador redondo muy simple y hace un cambio de contexto cada 262144 ciclos de reloj. Este comportamiento se puede controlar al establecer OCR0A y los preescalores de Timer0. No puede usar Timer0 en su aplicación, el programador utiliza exclusivamente.
Simplemente coloque los archivos que comienzan con os en su proyecto. Editar os_config.h para que se ajuste a sus necesidades. Desde su principal, llame os_init() y cree sus tareas con os_task_add(task_func, task_data) . Para iniciar el planificador, llame os_run() . Tenga en cuenta que esta llamada nunca regresa, por lo que el código posterior no se ejecutará.
Tenga en cuenta que las tareas actualmente nunca pueden terminar y deben finalizarse utilizando os_current_task_kill() . Para acceder al Void-Pointer dado a os_task_add , llame a os_current_task_get_data() .
No intente usar la recursión o las pilas de llamadas profundas, ya que solo tiene una pila muy limitada. ¡No puede usar Timer0, porque se usa para el planificador! ¡No intente las interrupciones de reacción cuando usen rutinas de servicio de interrupción personalizadas!
El sistema operativo se puede configurar en el momento de la compilación utilizando el siguiente Define-Macros en os_config.h :
OS_STACK_SIZE controla el tamaño de la pila para una tarea.OS_TASK_COUNT controla cuántas tareas se pueden crear simultáneamente. Copyright 2020 Stephan Brunner
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar en el software sin restricción, incluidos los derechos de los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicense y/o vender copias del software, y para permitir que las personas a quienes se les proporciona el software para hacer, sujeto a las siguientes condiciones: las siguientes condiciones: las siguientes condiciones: las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.