https://github.com/lmtreser/intro-rtos
Colección de recursos para introducirse en los Sistemas Operativos y RTOS. Aplicaciones para el ecosistema Arduino como para Raspberry Pi
https://github.com/lmtreser/intro-rtos
arduino cpp esp32 freertos operating-system rtos threads
Last synced: 10 months ago
JSON representation
Colección de recursos para introducirse en los Sistemas Operativos y RTOS. Aplicaciones para el ecosistema Arduino como para Raspberry Pi
- Host: GitHub
- URL: https://github.com/lmtreser/intro-rtos
- Owner: lmtreser
- License: mit
- Created: 2024-03-05T22:56:17.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-17T22:39:12.000Z (over 1 year ago)
- Last Synced: 2024-10-20T09:45:19.321Z (over 1 year ago)
- Topics: arduino, cpp, esp32, freertos, operating-system, rtos, threads
- Language: HTML
- Homepage:
- Size: 74.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Introducción a RTOS
Introducción, con tintes educativos, a RTOS y su aplicación con el ecosistema Arduino.
## Contenidos del repositorio
- `arduino-avanzado` Tutoriales avanzados de [Luis Llamas](https://www.luisllamas.es/)
- `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
- `arduino-protothreads` Ejecución de código lineal para sistemas controlados por eventos
- `avr-simple-scheduler` Un programador de tareas realmente simple
- `c_cpp` Recursos para trabajar con C y C++
- `docs` Documentos varios sobre RTOS y sus aplicaciones
- `esp-os` Un simple SO para microcontroladores
- `freertos-arduino-tutorials` Tutoriales de FreeRTOS aplicado a Arduino
- `introduction-to-rtos` Fork de [Introduction to RTOS](https://github.com/ShawnHymel/introduction-to-rtos) by [Shawn Hymel](https://github.com/ShawnHymel)
- `python` Recursos para trabajar con Python y MicroPython
## Recursos
- Arduino Avanzado
- [Aproximación a la multitarea en Arduino](https://www.luisllamas.es/multitarea-en-arduino-blink-sin-delay/)
- [Cómo usar FreeRTOS en Arduino](https://www.luisllamas.es/como-usar-freertos-en-arduino/)
- [Implementar una máquina de estados finitos en Arduino](https://www.luisllamas.es/maquina-de-estados-finitos-arduino/)
- [Implementar una red de Petri en Arduino](https://www.luisllamas.es/implementar-una-red-de-petri-en-arduino/)
- [Librería Arduino AsyncTask](https://www.luisllamas.es/libreria-arduino-asynctask/)
- [Librería de Arduino PetriNet](https://www.luisllamas.es/libreria-de-arduino-petrinet/)
- [Librería de Arduino StateMachine](https://www.luisllamas.es/libreria-arduino-statemachine/)
- Arduino FreeRTOS
- [Arduino FreeRTOS](https://feilipu.me/2015/11/24/arduino_freertos/)
- [Arduino FreeRTOS Library](https://github.com/feilipu/Arduino_FreeRTOS_Library)
- [AVR ATmega port of freeRTOS](https://github.com/feilipu/avrfreertos)
- [Phillip Stevens's Projects on Hackster.io](https://www.hackster.io/feilipu/projects)
- ESP-OS
- [Esp-cf](https://github.com/Pepe-57/esp-cf)
- [Esp-os](https://github.com/Pepe-57/esp-os/)
- [Esp-os Commands](https://github.com/Pepe-57/esp-os/blob/main/commands.txt)
- FreeRTOS Arduino Tutorials
- [Arduino_FreeRTOS from Explore Embedded](https://github.com/ExploreEmbedded/Arduino_FreeRTOS/)
- [How to use FreeRTOS with Arduino](https://microcontrollerslab.com/use-freertos-arduino/)
- [FreeRTOS Arduino Tutorials](https://microcontrollerslab.com/category/freertos-arduino-tutorial/)
- [FreeRTOS Básico, proyecto en Wokwi](https://wokwi.com/projects/352968005017477121)
- Introducción a RTOS
- [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)
- [Part 2: FreeRTOS](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-2-freertos/b3f84c9c9455439ca2dcb8ccfce9dec5)
- [Part 3: Task Scheduling](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-3-task-scheduling/8fbb9e0b0eed4279a2dd698f02ce125f)
- [Part 4: Memory Management](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-4-memory-management/6d4dfcaa1ff84f57a2098da8e6401d9c)
- [Part 5: FreeRTOS Queue Example](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-5-freertos-queue-example/72d2b361f7b94e0691d947c7c29a03c9)
- [Part 6: FreeRTOS Mutex Example](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-6-freertos-mutex-example/c6e3581aa2204f1380e83a9b4c3807a6)
- [Part 7: FreeRTOS Semaphore Example](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-7-freertos-semaphore-example/51aa8660524c4daba38cba7c2f5baba7)
- [Part 8: Software Timers](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-8-software-timers/0f64cf758da440a29476165a5b2e577e)
- [Part 9: Hardware Interrupts](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-9-hardware-interrupts/3ae7a68462584e1eb408e1638002e9ed)
- [Part 10: Deadlock and Starvation](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-10-deadlock-and-starvation/872c6a057901432e84594d79fcb2cc5d)
- [Part 11: Priority Inversion](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-11-priority-inversion/abf4b8f7cd4a4c70bece35678d178321)
- [Part 12: Multicore Systems](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-12-multicore-systems/369936f5671d4207a2c954c0637e7d50)
- Introducción a RTOS (Vídeos)
- [Introduction to RTOS Part 1 - What is a Real-Time Operating System (RTOS)?](https://youtu.be/F321087yYy4?si=Jv4AU2lzRQuS7cqF)
- [Introduction to RTOS Part 2 - Getting Started with FreeRTOS](https://youtu.be/JIr7Xm_riRs?si=E-_WyxjYfESnBRAg)
- [Introduction to RTOS Part 3 - Task Scheduling](https://youtu.be/95yUbClyf3E?si=Fkijsk15KdK31M_N)
- [Introduction to RTOS Part 4 - Memory Management](https://youtu.be/Qske3yZRW5I?si=mjdnW7VlTrC2_Djg)
- [Introduction to RTOS Part 5 - Queue](https://youtu.be/pHJ3lxOoWeI?si=pFaONnFQvljUmBBh)
- [Introduction to RTOS Part 6 - Mutex](https://youtu.be/I55auRpbiTs?si=1UO8IIK37hrNuehb)
- [Introduction to RTOS Part 7 - Semaphore](https://youtu.be/5JcMtbA9QEE?si=CDjvdKTl_qEOL23j)
- [Introduction to RTOS Part 8 - Software Timer](https://youtu.be/b1f1Iex0Tso?si=Zo8QPR-lZak3h1zr)
- [Introduction to RTOS Part 9 - Hardware Interrupts](https://youtu.be/qsflCf6ahXU?si=YFt5m_X1gZFZj_ab)
- [Introduction to RTOS Part 10 - Deadlock and Starvation](https://youtu.be/hRsWi4HIENc?si=cgFNCEjHxKBsVDuX)
- [Introduction to RTOS Part 11 - Priority Inversion](https://youtu.be/C2xKhxROmhA?si=NsC6se5xdbtCFe3R)
- [Introduction to RTOS Part 12 - Multicore Systems](https://youtu.be/LPSHUcH5aQc?si=IsP6jo5YPuwmVGQN)
- ProtoThreads
- [Protothreads for Arduino](https://gitlab.com/airbornemint/arduino-protothreads)
- [Protothreads](https://dunkels.com/adam/pt/)
- Python
- [Python](https://www.python.org/)
- [MicroPython](https://micropython.org/)
- [Thonny Python IDE for beginners](https://thonny.org/)
- [Multi-thread coding on the Raspberry Pi Pico in MicroPython/](https://bytesnbits.co.uk/multi-thread-coding-on-the-raspberry-pi-pico-in-micropython/)
- Lecturas Recomendadas
- [FreeRTOS book and reference manual](https://www.freertos.org/Documentation/RTOS_book.html)
- [What is an RTOS?](https://www.freertos.org/about-RTOS.html)
- [RTOS](https://www.guru99.com/real-time-operating-system.html)
- [Differences between FreeRTOS and ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos_idf.html)
- [Multitasking on ESP32 with Arduino and FreeRTOS](https://simplyexplained.com/blog/multitasking-esp32-arduino-freertos/)
- [FreeRTOS Task Priorities](https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-3-task-scheduling/8fbb9e0b0eed4279a2dd698f02ce125f)
- [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/)
- [The C build process](https://blog.feabhas.com/2012/06/the-c-build-process/)
- [What and where are the stack and heap?](https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap/13326916#13326916)
- [FreeRTOS Memory Management](https://www.freertos.org/a00111.html)
- [FreeRTOS Queues](https://www.freertos.org/Embedded-RTOS-Queues.html)
- [FreeRTOS Queue API](https://www.freertos.org/a00018.html)
- [Using queue with struct](https://www.freertos.org/FreeRTOS_Support_Forum_Archive/August_2015/freertos_Send_a_struct_through_Queue_64d28ac3j.html)
- [Atomic operations](https://stackoverflow.com/questions/52196678/what-are-atomic-operations-for-newbies)
- [Atomic operations in FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/atomic.html)
- [Difference between “lock,” “mutex,” and “semaphore”](https://stackoverflow.com/questions/2332765/what-is-the-difference-between-lock-mutex-and-semaphore)
- [Mutexes and Semaphores Demystified](https://barrgroup.com/embedded-systems/how-to/rtos-mutex-semaphore)
- [FreeRTOS Semaphores (and Mutexes) API reference](https://www.freertos.org/a00113.html)
- [Understanding and Using FreeRTOS Software Timers](https://dzone.com/articles/understanding-and-using-freertos-software-timers)
- [FreeRTOS Software Timer documentation page](https://www.freertos.org/RTOS-software-timer.html)
- [FreeRTOS Software Timer API documentation](https://www.freertos.org/FreeRTOS-Software-Timer-API-Functions.html)
- [FreeRTOS API reference (you will want to look for function calls that end in FromISR)](https://www.freertos.org/a00106.html)
- [Critical sections in ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html#critical-sections-disabling-interrupts)
- [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)
- [You can try the Dining Philosophers challenge without an Arduino here (using C++)](https://leetcode.com/problems/the-dining-philosophers/)
- [Another good article discussing deadlock on FreeRTOS](https://microcontrollerslab.com/freertos-recursive-mutex-avoid-deadlocks-examples-arduino/)
- [What really happened on Mars Rover Pathfinder](http://www.cs.cornell.edu/courses/cs614/1999sp/papers/pathfinder.html)
- [How to use priority inheritance](https://www.embedded.com/how-to-use-priority-inheritance/)
- [Priority inversion](https://barrgroup.com/embedded-systems/how-to/rtos-priority-inversion)
- [ESP-IDF FreeRTOS SMP Changes](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html)
- [ESP32 Interrupt Allocation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/intr_alloc.html)
- [Adding simple mutlicore support to FreeRTOS](https://www.freertos.org/2020/02/simple-multicore-core-to-core-communication-using-freertos-message-buffers.html)
- Otros recursos
- [avr-simple-scheduler](https://github.com/ferenc-nemeth/avr-simple-scheduler)
- [Prevent ATMega328P crashes with a stack monitor](https://www.eventuallabs.com/blog/avr_stack_monitor/)
- [Librería de Arduino que permite ejecutar tareas de forma asincrona](https://github.com/luisllamasbinaburo/Arduino-AsyncTask)
- [Librería de Arduino que implementa una red de Petri](https://github.com/luisllamasbinaburo/Arduino-PetriNet)
- [Librería de Arduino que implementa una máquina de estados finita](https://github.com/luisllamasbinaburo/Arduino-StateMachine)
- [Repositorio Tutoriales Arduino de Luis Llamas](https://github.com/luisllamasbinaburo/tutoriales-arduino-luisllamas_es)
- [ShawnHymel RTOS Repository](https://github.com/ShawnHymel/introduction-to-rtos)
- [Zephyr Project](https://zephyrproject.org/)
## Licencia
Este 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):
Copyright (c) 2024 Lucas Martín Treser
Por 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:
El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL 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.