{"id":20591530,"url":"https://github.com/lmtreser/intro-rtos","last_synced_at":"2026-04-10T20:49:03.615Z","repository":{"id":226113050,"uuid":"767794348","full_name":"lmtreser/intro-rtos","owner":"lmtreser","description":"Colección de recursos para introducirse en los Sistemas Operativos y RTOS. Aplicaciones para el ecosistema Arduino como para Raspberry Pi","archived":false,"fork":false,"pushed_at":"2026-02-23T16:44:27.000Z","size":90473,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-24T00:30:25.403Z","etag":null,"topics":["arduino","cpp","esp32","freertos","operating-system","rtos","threads"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmtreser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-05T22:56:17.000Z","updated_at":"2026-02-23T16:44:34.000Z","dependencies_parsed_at":"2025-10-03T15:36:25.222Z","dependency_job_id":null,"html_url":"https://github.com/lmtreser/intro-rtos","commit_stats":null,"previous_names":["lmtreser/intro-rtos"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lmtreser/intro-rtos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fintro-rtos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fintro-rtos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fintro-rtos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fintro-rtos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmtreser","download_url":"https://codeload.github.com/lmtreser/intro-rtos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fintro-rtos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31658964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"ssl_error","status_checked_at":"2026-04-10T17:19:13.364Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","cpp","esp32","freertos","operating-system","rtos","threads"],"created_at":"2024-11-16T07:40:40.918Z","updated_at":"2026-04-10T20:49:03.601Z","avatar_url":"https://github.com/lmtreser.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introducción a RTOS\n\nIntroducción, con tintes educativos, a RTOS y su aplicación con el ecosistema Arduino.\n\n## Contenidos del repositorio\n\n- `arduino-avanzado` Tutoriales avanzados de [Luis Llamas](https://www.luisllamas.es/)\n- `arduino-freertos` Fork de la biblioteca [Arduino FreeRTOS](https://github.com/feilipu/Arduino_FreeRTOS_Library) de [Phillip Stevens](https://github.com/feilipu) para dispositivos AVR\n- `arduino-protothreads` Ejecución de código lineal para sistemas controlados por eventos\n- `avr-simple-scheduler` Un programador de tareas realmente simple\n- `c_cpp` Recursos para trabajar con C y C++\n- `docs` Documentos varios sobre RTOS y sus aplicaciones\n- `esp-os` Un simple SO para microcontroladores\n- `freertos-arduino-tutorials` Tutoriales de FreeRTOS aplicado a Arduino \n- `introduction-to-rtos` Fork de [Introduction to RTOS](https://github.com/ShawnHymel/introduction-to-rtos) by [Shawn Hymel](https://github.com/ShawnHymel)\n- `python` Recursos para trabajar con Python y MicroPython\n\n## Recursos\n\n- Arduino Avanzado\n    - [Aproximación a la multitarea en Arduino](https://www.luisllamas.es/multitarea-en-arduino-blink-sin-delay/)\n    - [Cómo usar FreeRTOS en Arduino](https://www.luisllamas.es/como-usar-freertos-en-arduino/)\n    - [Implementar una máquina de estados finitos en Arduino](https://www.luisllamas.es/maquina-de-estados-finitos-arduino/)\n    - [Implementar una red de Petri en Arduino](https://www.luisllamas.es/implementar-una-red-de-petri-en-arduino/)\n    - [Librería Arduino AsyncTask](https://www.luisllamas.es/libreria-arduino-asynctask/)\n    - [Librería de Arduino PetriNet](https://www.luisllamas.es/libreria-de-arduino-petrinet/)\n    - [Librería de Arduino StateMachine](https://www.luisllamas.es/libreria-arduino-statemachine/)\n\n- Arduino FreeRTOS\n    - [Arduino FreeRTOS](https://feilipu.me/2015/11/24/arduino_freertos/)\n    - [Arduino FreeRTOS Library](https://github.com/feilipu/Arduino_FreeRTOS_Library)\n    - [AVR ATmega port of freeRTOS](https://github.com/feilipu/avrfreertos)\n    - [Phillip Stevens's Projects on Hackster.io](https://www.hackster.io/feilipu/projects)\n\n- ESP-OS\n    - [Esp-cf](https://github.com/Pepe-57/esp-cf)\n    - [Esp-os](https://github.com/Pepe-57/esp-os/)\n    - [Esp-os Commands](https://github.com/Pepe-57/esp-os/blob/main/commands.txt)\n\n- FreeRTOS Arduino Tutorials\n    - [Arduino_FreeRTOS from Explore Embedded](https://github.com/ExploreEmbedded/Arduino_FreeRTOS/)\n    - [How to use FreeRTOS with Arduino](https://microcontrollerslab.com/use-freertos-arduino/)\n    - [FreeRTOS Arduino Tutorials](https://microcontrollerslab.com/category/freertos-arduino-tutorial/)\n    - [FreeRTOS Básico, proyecto en Wokwi](https://wokwi.com/projects/352968005017477121)\n\n- Introducción a RTOS\n    - [Part 1: What is a Real-Time Operating System (RTOS)?](https://www.digikey.com/en/maker/projects/what-is-a-realtime-operating-system-rtos/28d8087f53844decafa5000d89608016)\n    - [Part 2: FreeRTOS](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-2-freertos/b3f84c9c9455439ca2dcb8ccfce9dec5)\n    - [Part 3: Task Scheduling](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-3-task-scheduling/8fbb9e0b0eed4279a2dd698f02ce125f)\n    - [Part 4: Memory Management](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-4-memory-management/6d4dfcaa1ff84f57a2098da8e6401d9c)\n    - [Part 5: FreeRTOS Queue Example](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-5-freertos-queue-example/72d2b361f7b94e0691d947c7c29a03c9)\n    - [Part 6: FreeRTOS Mutex Example](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-6-freertos-mutex-example/c6e3581aa2204f1380e83a9b4c3807a6)\n    - [Part 7: FreeRTOS Semaphore Example](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-7-freertos-semaphore-example/51aa8660524c4daba38cba7c2f5baba7)\n    - [Part 8: Software Timers](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-8-software-timers/0f64cf758da440a29476165a5b2e577e)\n    - [Part 9: Hardware Interrupts](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-9-hardware-interrupts/3ae7a68462584e1eb408e1638002e9ed)\n    - [Part 10: Deadlock and Starvation](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-10-deadlock-and-starvation/872c6a057901432e84594d79fcb2cc5d)\n    - [Part 11: Priority Inversion](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-11-priority-inversion/abf4b8f7cd4a4c70bece35678d178321)\n    - [Part 12: Multicore Systems](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-12-multicore-systems/369936f5671d4207a2c954c0637e7d50)\n\n- Introducción a RTOS (Vídeos)\n    - [Introduction to RTOS Part 1 - What is a Real-Time Operating System (RTOS)?](https://youtu.be/F321087yYy4?si=Jv4AU2lzRQuS7cqF)\n    - [Introduction to RTOS Part 2 - Getting Started with FreeRTOS](https://youtu.be/JIr7Xm_riRs?si=E-_WyxjYfESnBRAg)\n    - [Introduction to RTOS Part 3 - Task Scheduling](https://youtu.be/95yUbClyf3E?si=Fkijsk15KdK31M_N)\n    - [Introduction to RTOS Part 4 - Memory Management](https://youtu.be/Qske3yZRW5I?si=mjdnW7VlTrC2_Djg)\n    - [Introduction to RTOS Part 5 - Queue](https://youtu.be/pHJ3lxOoWeI?si=pFaONnFQvljUmBBh)\n    - [Introduction to RTOS Part 6 - Mutex](https://youtu.be/I55auRpbiTs?si=1UO8IIK37hrNuehb)\n    - [Introduction to RTOS Part 7 - Semaphore](https://youtu.be/5JcMtbA9QEE?si=CDjvdKTl_qEOL23j)\n    - [Introduction to RTOS Part 8 - Software Timer](https://youtu.be/b1f1Iex0Tso?si=Zo8QPR-lZak3h1zr)\n    - [Introduction to RTOS Part 9 - Hardware Interrupts](https://youtu.be/qsflCf6ahXU?si=YFt5m_X1gZFZj_ab)\n    - [Introduction to RTOS Part 10 - Deadlock and Starvation](https://youtu.be/hRsWi4HIENc?si=cgFNCEjHxKBsVDuX)\n    - [Introduction to RTOS Part 11 - Priority Inversion](https://youtu.be/C2xKhxROmhA?si=NsC6se5xdbtCFe3R)\n    - [Introduction to RTOS Part 12 - Multicore Systems](https://youtu.be/LPSHUcH5aQc?si=IsP6jo5YPuwmVGQN)\n\n- ProtoThreads\n    - [Protothreads for Arduino](https://gitlab.com/airbornemint/arduino-protothreads)\n    - [Protothreads](https://dunkels.com/adam/pt/)\n\n- Python\n    - [Python](https://www.python.org/)\n    - [MicroPython](https://micropython.org/)\n    - [Thonny Python IDE for beginners](https://thonny.org/)\n    - [Multi-thread coding on the Raspberry Pi Pico in MicroPython/](https://bytesnbits.co.uk/multi-thread-coding-on-the-raspberry-pi-pico-in-micropython/)\n\n- Lecturas Recomendadas\n    - [FreeRTOS book and reference manual](https://www.freertos.org/Documentation/RTOS_book.html)\n    - [What is an RTOS?](https://www.freertos.org/about-RTOS.html)\n    - [RTOS](https://www.guru99.com/real-time-operating-system.html)\n    - [Differences between FreeRTOS and ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos_idf.html)\n    - [Multitasking on ESP32 with Arduino and FreeRTOS](https://simplyexplained.com/blog/multitasking-esp32-arduino-freertos/)\n    - [FreeRTOS Task Priorities](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-3-task-scheduling/8fbb9e0b0eed4279a2dd698f02ce125f)\n    - [Memory in C – the stack, the heap, and static](https://craftofcoding.wordpress.com/2015/12/07/memory-in-c-the-stack-the-heap-and-static/)\n    - [The C build process](https://blog.feabhas.com/2012/06/the-c-build-process/)\n    - [What and where are the stack and heap?](https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap/13326916#13326916)\n    - [FreeRTOS Memory Management](https://www.freertos.org/a00111.html)\n    - [FreeRTOS Queues](https://www.freertos.org/Embedded-RTOS-Queues.html)\n    - [FreeRTOS Queue API](https://www.freertos.org/a00018.html)\n    - [Using queue with struct](https://www.freertos.org/FreeRTOS_Support_Forum_Archive/August_2015/freertos_Send_a_struct_through_Queue_64d28ac3j.html)\n    - [Atomic operations](https://stackoverflow.com/questions/52196678/what-are-atomic-operations-for-newbies)\n    - [Atomic operations in FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/atomic.html)\n    - [Difference between “lock,” “mutex,” and “semaphore”](https://stackoverflow.com/questions/2332765/what-is-the-difference-between-lock-mutex-and-semaphore)\n    - [Mutexes and Semaphores Demystified](https://barrgroup.com/embedded-systems/how-to/rtos-mutex-semaphore)\n    - [FreeRTOS Semaphores (and Mutexes) API reference](https://www.freertos.org/a00113.html)\n    - [Understanding and Using FreeRTOS Software Timers](https://dzone.com/articles/understanding-and-using-freertos-software-timers)\n    - [FreeRTOS Software Timer documentation page](https://www.freertos.org/RTOS-software-timer.html)\n    - [FreeRTOS Software Timer API documentation](https://www.freertos.org/FreeRTOS-Software-Timer-API-Functions.html)\n    - [FreeRTOS API reference (you will want to look for function calls that end in FromISR)](https://www.freertos.org/a00106.html)\n    - [Critical sections in ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html#critical-sections-disabling-interrupts)\n    - [The Dining Philosophers challenge was ported to Arduino from this University of Virginia course’s lab](https://www.cs.virginia.edu/luther/COA2/S2019/pa05-dp.html)\n    - [You can try the Dining Philosophers challenge without an Arduino here (using C++)](https://leetcode.com/problems/the-dining-philosophers/)\n    - [Another good article discussing deadlock on FreeRTOS](https://microcontrollerslab.com/freertos-recursive-mutex-avoid-deadlocks-examples-arduino/)\n    - [What really happened on Mars Rover Pathfinder](http://www.cs.cornell.edu/courses/cs614/1999sp/papers/pathfinder.html)\n    - [How to use priority inheritance](https://www.embedded.com/how-to-use-priority-inheritance/)\n    - [Priority inversion](https://barrgroup.com/embedded-systems/how-to/rtos-priority-inversion)\n    - [ESP-IDF FreeRTOS SMP Changes](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html)\n    - [ESP32 Interrupt Allocation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/intr_alloc.html)\n    - [Adding simple mutlicore support to FreeRTOS](https://www.freertos.org/2020/02/simple-multicore-core-to-core-communication-using-freertos-message-buffers.html)\n\n- Otros recursos\n    - [avr-simple-scheduler](https://github.com/ferenc-nemeth/avr-simple-scheduler)\n    - [Prevent ATMega328P crashes with a stack monitor](https://www.eventuallabs.com/blog/avr_stack_monitor/)\n    - [Librería de Arduino que permite ejecutar tareas de forma asincrona](https://github.com/luisllamasbinaburo/Arduino-AsyncTask)\n    - [Librería de Arduino que implementa una red de Petri](https://github.com/luisllamasbinaburo/Arduino-PetriNet)\n    - [Librería de Arduino que implementa una máquina de estados finita](https://github.com/luisllamasbinaburo/Arduino-StateMachine)\n    - [Repositorio Tutoriales Arduino de Luis Llamas](https://github.com/luisllamasbinaburo/tutoriales-arduino-luisllamas_es)\n    - [ShawnHymel RTOS Repository](https://github.com/ShawnHymel/introduction-to-rtos)\n    - [Zephyr Project](https://zephyrproject.org/)\n\n## Licencia\n\nEste trabajo está protegido por la **Licencia MIT**. Puedes acceder a la versión original de la licencia (en inglés) a través del archivo [LICENSE](./LICENSE) o en línea en [The MIT License (MIT)](https://mit-license.org/). También proporcionamos una traducción no oficial desde [Wikipedia](https://es.m.wikipedia.org/wiki/Licencia_MIT#La_licencia):\n\nCopyright (c) 2024 Lucas Martín Treser\n\nPor la presente se concede permiso, libre de cargos, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el \"Software\"), a utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:\n\nEl aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.\n\nEL SOFTWARE SE PROPORCIONA \"COMO ESTÁ\", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR E INCUMPLIMIENTO. EN NINGÚN CASO LOS AUTORES O PROPIETARIOS DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, DERIVADAS DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmtreser%2Fintro-rtos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmtreser%2Fintro-rtos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmtreser%2Fintro-rtos/lists"}