Este sistema operacional estava criando durante uma tarefa de classe. O código é experimental e altamente não testado, mas deve funcionar.
O sistema operacional usa um agendador Robin Round muito simples e faz uma troca de contexto a cada 262144 CLOUST CYCLES. Esse comportamento é controlável definindo OCR0A e os Prescalers do Timer0. Você não pode usar o Timer0 em seu aplicativo, ele é usado exclusivamente pelo agendador.
Basta colocar os arquivos começando com os em seu projeto. Edite os_config.h para atender às suas necessidades. Do seu principal, ligue os_init() e crie suas tarefas com os_task_add(task_func, task_data) . Para iniciar o agendador, ligue os_run() . Observe que esta chamada nunca retorna, portanto, o código subsequente não será executado.
Observe que as tarefas atualmente nunca podem encerrar e devem ser encerradas usando os_current_task_kill() . Para acessar o void-pointer dado a os_task_add , ligue para os_current_task_get_data() .
Por favor, não tente usar a recursão ou as pilhas de chamadas profundas, pois você tem apenas uma pilha muito limitada. Você não pode usar o Timer0, porque é usado para o agendador! Não tente reativar interrupções ao usar rotinas de serviço de interrupção personalizadas!
O sistema operacional pode ser configurado no momento da compilação usando o seguinte define-macros em os_config.h :
OS_STACK_SIZE Controla o tamanho da pilha para uma tarefa.OS_TASK_COUNT controla quantas tarefas podem ser criadas simultaneamente. Copyright 2020 Stephan Brunner
A permissão é concedida, gratuita, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "software"), para lidar com o software sem restrição, inclusive sem limitação os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, mobilizar o software e/ou vender cópias do software e permitir que as pessoas a quem
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em partes substanciais do software.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.