<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=FreeRTOS</id>
	<title>FreeRTOS - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=FreeRTOS"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=FreeRTOS&amp;action=history"/>
	<updated>2026-07-05T21:22:28Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=FreeRTOS&amp;diff=3505974&amp;oldid=prev</id>
		<title>Javiermartin jc: Texto reemplazado: «&lt;div align=&quot;justify&quot;&gt;» por «»</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=FreeRTOS&amp;diff=3505974&amp;oldid=prev"/>
		<updated>2019-08-14T21:35:42Z</updated>

		<summary type="html">&lt;p&gt;Texto reemplazado: «&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;» por «»&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 21:35 14 ago 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Definición &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Definición &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|nombre= FreeRTOS&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|nombre= FreeRTOS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-1226745:rev-3505974 --&gt;
&lt;/table&gt;</summary>
		<author><name>Javiermartin jc</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=FreeRTOS&amp;diff=1226745&amp;oldid=prev</id>
		<title>Carlos idict en 19:28 1 dic 2011</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=FreeRTOS&amp;diff=1226745&amp;oldid=prev"/>
		<updated>2011-12-01T19:28:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 19:28 1 dic 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot; &gt;Línea 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|concepto= FreeRTOS es una variante robusta para la construcción de sistemas empotrados por las excelentes prestaciones y funcionalidades que brinda como planificador. Es utilizado además gracias a su licenciamiento en el mundo académico como material de estudio en la materia de sistemas operativos. Se integra fácilmente con un buen número de tecnologías,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|concepto= FreeRTOS es una variante robusta para la construcción de sistemas empotrados por las excelentes prestaciones y funcionalidades que brinda como planificador. Es utilizado además gracias a su licenciamiento en el mundo académico como material de estudio en la materia de sistemas operativos. Se integra fácilmente con un buen número de tecnologías,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cadenas de compilación y entornos de desarrollo utilizados actualmente para el diseño de aplicaciones en hardware de bajas prestaciones&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cadenas de compilación y entornos de desarrollo utilizados actualmente para el diseño de aplicaciones en hardware de bajas prestaciones&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}'''FreeRTOS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/ins&gt;''' [[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Planificador&lt;/ins&gt;]] de [[tiempo real]] el cual puede servir como base a las aplicaciones empotradas para construir sistemas con requerimientos determininistas hasta el grado de lograr obtener [[tiempo real]] duro ( hard real time ). En un [[microcontrolador]] donde existe un núcleo, solamente una tarea puede estar ejecutándose en un momento determinado. El planificador decide cual tarea debe iniciar su ejecución basado en un mecanismo de asignación de prioridades que el diseñador de la aplicación puede especificar.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''FreeRTOS''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;es un &lt;/del&gt;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;planificador&lt;/del&gt;]] de [[tiempo real]] el cual puede servir como base a las aplicaciones empotradas para construir sistemas con requerimientos determininistas hasta el grado de lograr obtener [[tiempo real]] duro ( hard real time ). En un [[microcontrolador]] donde existe un núcleo, solamente una tarea puede estar ejecutándose en un momento determinado. El planificador decide cual tarea debe iniciar su ejecución basado en un mecanismo de asignación de prioridades que el diseñador de la aplicación puede especificar.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==FreeRTOS==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==FreeRTOS==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-1222983:rev-1226745 --&gt;
&lt;/table&gt;</summary>
		<author><name>Carlos idict</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=FreeRTOS&amp;diff=1222983&amp;oldid=prev</id>
		<title>Maritza14026 may.jc: Página creada con '&lt;div align=&quot;justify&quot;&gt; {{Definición  |nombre= FreeRTOS |imagen=Freertos.png |tamaño=150px |concepto= FreeRTOS es una variante robusta para la construcción de sistemas empotrad...'</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=FreeRTOS&amp;diff=1222983&amp;oldid=prev"/>
		<updated>2011-12-01T01:27:21Z</updated>

		<summary type="html">&lt;p&gt;Página creada con &amp;#039;&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt; {{Definición  |nombre= FreeRTOS |imagen=Freertos.png |tamaño=150px |concepto= FreeRTOS es una variante robusta para la construcción de sistemas empotrad...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
{{Definición &lt;br /&gt;
|nombre= FreeRTOS&lt;br /&gt;
|imagen=Freertos.png&lt;br /&gt;
|tamaño=150px&lt;br /&gt;
|concepto= FreeRTOS es una variante robusta para la construcción de sistemas empotrados por las excelentes prestaciones y funcionalidades que brinda como planificador. Es utilizado además gracias a su licenciamiento en el mundo académico como material de estudio en la materia de sistemas operativos. Se integra fácilmente con un buen número de tecnologías,&lt;br /&gt;
cadenas de compilación y entornos de desarrollo utilizados actualmente para el diseño de aplicaciones en hardware de bajas prestaciones&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''FreeRTOS''' es un [[planificador]] de [[tiempo real]] el cual puede servir como base a las aplicaciones empotradas para construir sistemas con requerimientos determininistas hasta el grado de lograr obtener [[tiempo real]] duro ( hard real time ). En un [[microcontrolador]] donde existe un núcleo, solamente una tarea puede estar ejecutándose en un momento determinado. El planificador decide cual tarea debe iniciar su ejecución basado en un mecanismo de asignación de prioridades que el diseñador de la aplicación puede especificar.&lt;br /&gt;
&lt;br /&gt;
==FreeRTOS==&lt;br /&gt;
&lt;br /&gt;
FreeRTOS porta todas sus funcionalidades oficialmente hasta 27 arquitecturas y se le hacen más de 77,500 descargas anualmente.  Se libera bajo la licencia libre [[GPL]]v2 con una enmienda especial de poder utilizar código propietario sin que este sea liberado. Se integra fácilmente con otras bibliotecas libres para el manejo de periféricos y puertos como son: [[FatFS]] un manejador del sistema de archivo [[FAT]] para sistemas empotrados, lwIP una pila [[TCP/IP]] ligera, controladores para el manejo de puertos [[USB]], entre otros.  Se integra además con diversos IDE para el manejo de funciones de programación y depuración como son [[Eclipse]] y [[MPLAB]].&lt;br /&gt;
&lt;br /&gt;
==Características==&lt;br /&gt;
&lt;br /&gt;
El planificador ofrece una serie de funcionalidades consideradas obligatorias en el diseño de [[sistemas operativos]] de tiempo real. Ligado esto al hecho de que FreeRTOS lo componen 4 archivos de código fuente, hacen que sea tanto simple como eficiente:&lt;br /&gt;
*Funcionamiento apropiable o cooperativo.&lt;br /&gt;
*Asignación de prioridades a las tareas de una forma flexible.&lt;br /&gt;
*Manejo de colas, utilizadas para el paso de mensajes entre tareas.&lt;br /&gt;
*Uso de semáforos binarios, recursivos, de conteo y de exclusión mutua.&lt;br /&gt;
*Funciones para distintos estados del planificador: tick del reloj, inactividad, chequeo de desbordamiento de pila.&lt;br /&gt;
*Macros para el monitoreo de parámetros de ejecución.&lt;br /&gt;
*Soporte y licenciamiento comercial opcional.&lt;br /&gt;
&lt;br /&gt;
Está escrito mayoritariamente en [[C]] salvo en secciones específicas a cada arquitectura donde es necesario el uso de ensamblador. Se emplea en [[microcontroladores]] de limitados y medianos recursos, entre 32 KB y 512 KB de [[memoria Flash]] y 16 KB y 256 KB de memoria [[RAM]]. Aunque se ha probado en microcontroladores de 8 KB de [[RAM]]. Generalmente un binario ya compilado se llevará entre 4 KB y 9 KB.&lt;br /&gt;
&lt;br /&gt;
==Código==&lt;br /&gt;
&lt;br /&gt;
Ejemplos de funciones utilizadas dentro de freeRTOS que generalmente se utilizan también en entornos de mayor nivel o con lenguajes de programación más robustos.&lt;br /&gt;
&lt;br /&gt;
===Crear una tarea===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xTaskCreate( configTask, ( signed portCHAR * ) &amp;quot;configTask&amp;quot;, &lt;br /&gt;
                   configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );&lt;br /&gt;
...&lt;br /&gt;
void configTask( void* p )&lt;br /&gt;
{&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El primer parámetro configTask especifica la función que contendrá el cuerpo de la tarea, el segundo parámetro un identificador para la tarea, el tercer parámetro el tamaño de la pila configMINIMAL_STACK_SIZE es el mínimo en este caso, el cuarto es un puntero a los parámetros que le pasaremos a la tarea, en este caso ninguno, el quinto parámetro especifica la prioridad de la tarea el cual está en el mínimo tskIDLE_PRIORITY y por último se pasa por parámetro el manejador de la tarea que en este caso no se especifica.&lt;br /&gt;
&lt;br /&gt;
===Crear y utilizar un semáforo===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xSemaphoreHandle atdMonitor = xSemaphoreCreateMutex();&lt;br /&gt;
if( xSemaphoreTake( atdMonitor, portMAX_DELAY ) == pdTRUE )&lt;br /&gt;
{&lt;br /&gt;
   // Algo aquí&lt;br /&gt;
   xSemaphoreGive( atdMonitor );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Se crea primero un semáforo de tipo exclusión mutua con xSemaphoreCreateMutex() y luego para apropiarse del semáforo, se invoca a xSemaphoreTake() pasando por parámetros el semáforo y la demora a esperar a que se obtenga, en este caso se pide bloquear hasta que se libere. Por último se libera el semáforo dentro del contexto de ejecución de la función con xSemaphoreGive().&lt;br /&gt;
&lt;br /&gt;
===Crear y utilizar una cola de mensajes===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xQueueHandle handleUp = xQueueCreate( 128,  sizeof( char ) );&lt;br /&gt;
...&lt;br /&gt;
char c = 'a';&lt;br /&gt;
xQueueSend( handleUp, (void*) &amp;amp;amp;c, 10 );&lt;br /&gt;
...&lt;br /&gt;
char d;&lt;br /&gt;
xQueueReceive( handleUp, &amp;amp;amp;d, 10 );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En el ejemplo se crea una cola llamada handleUp con la función xQueueCreate(). Más adelante se envia un caracter a la cola con xQueueSend(). Por parámetros le especificamos la cola a utilizar, el caracter y el tiempo de espera de confirmación de envio. En otra sección de código se recibe el caracter con la función xQueueReceive(). Los parámetros aquí son análogos a los de la función anterior.&lt;br /&gt;
&lt;br /&gt;
== Fuente ==&lt;br /&gt;
&lt;br /&gt;
*http://comunidades.uci.cu/blogs/micro/&lt;br /&gt;
*http://www.freertos.org&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Programación]]&lt;/div&gt;</summary>
		<author><name>Maritza14026 may.jc</name></author>
		
	</entry>
</feed>