¿Cómo se comunican entre sí una aplicación incrustada y RTOS?

3

Estoy trabajando en un proyecto que utiliza un procesador ARM 7 y un RTOS con micrium - os II. Por favor, ayúdenme a comprender las preguntas fundamentales que me han llegado con respecto a este proyecto.

Debajo están las preguntas:

  1. ¿Cómo interactúa la aplicación con el RTOS?
  2. Inturn ¿cómo interactúa el RTOS con el controlador? (¿lo mismo que Windows hace referencia al procesador Intel?)
  3. Especificamos la ubicación de la RAM, ROM, pila, etc., pero ¿cómo se identifican los puertos a través del programa C, es decir, especificamos algún valor hexadecimal en nuestro programa, pero cómo se vincula de nuevo al controlador?
  4. ¿Cómo sabe el RTOS dónde comenzar la ejecución del programa?
  5. Una vez que la aplicación se carga en la ROM y al encender el dispositivo integrado, ¿cómo sabe dónde comenzar a ejecutar la aplicación?
pregunta user1611753

2 respuestas

6

No he usado un ARM7 antes, pero antes he usado µC / OS-II en un microcontrolador de 8 bits. No soy un experto, pero intentaré responder tus preguntas.

  1. Normalmente, un RTOS te permitirá crear "tareas", que son como hilos de ejecución separados. µC / OS-II puede utilizar la multitarea cooperativa, lo que significaría que depende de sus tareas devolver el control del procesador al sistema operativo. (También es compatible con la multitarea preventiva). También definirá los niveles de prioridad para cada tarea.

  2. A través de las tareas, interactuarás con el controlador de la misma manera que lo harías si no estuvieras usando un RTOS. ¡Escribe funciones que hacen cosas y llámalos!

  3. No sé acerca de ARM7, pero en mi procesador los puertos de E / S solo están asignados a la memoria, así que sí, simplemente configura / lee el valor en la dirección asignada al puerto de interés. Probablemente querrás definir el puerto como volatile para que el compilador no optimice las cosas que no debería.

4,5. El RTOS solo se está ejecutando donde se ejecutaría cualquier programa normal, por lo que el vector de restablecimiento apunta a su inicio de ejecución.

    
respondido por el Dave
6
  

cómo interactúa la aplicación con el RTOS

El RTOS tiene una API, un conjunto de llamadas a funciones, que la aplicación llama. Por ejemplo, para crear una tarea RTOS, llama a la función API de RTOS que crea una tarea para usted. Hay otras llamadas a la API para enviar mensajes, etc.

Creo que en el uCOS también necesitas envoltorios en las funciones de interrupción para avisar al RTOS cuando estás dentro de una interrupción.

  

Ingrese cómo interactúa el RTOS con el controlador (igual que Windows   ¿Ineractos con el procesador Intel?)

Normalmente, esta clase de RTOS solo necesitará usar uno de los periféricos con temporizador de los microcontroladores para generar una interrupción periódica de tic. También puede ser necesario utilizar el vector de interrupción del software.

  

especificamos la ubicación de RAM, ROM, pila, etc., pero cómo están los puertos   identificado a través del programa C, es decir, especificamos algún valor hexadecimal en nuestra   programa, pero ¿cómo están vinculados de nuevo al controlador

No entiendo lo que estás preguntando en esta pregunta.

  

¿Cómo saben los rtos dónde comenzar la ejecución del programa?

A menos que lo modifique de otra manera, el código de inicio de C llamará a main () como de costumbre. El código de su aplicación en main () creará algunas tareas utilizando la API de RTOS antes de iniciar el RTOS. También puede crear nuevas tareas a partir de las tareas existentes después de que se inicie el RTOS.

  

una vez que la aplicación se carga en la ROM y al encender el   dispositivo integrado, ¿cómo sabe dónde empezar a ejecutar el   aplicación.

uCOS está enlazado estáticamente. Simplemente crea un binario ejecutable, como si no estuviera usando un RTOS. Cuando el programa se compila, se vincula y se carga en el microcontrolador, al reiniciarse, el microcontrolador ejecutará el código que el vector de reinicio le indique. Normalmente este será el código de inicio de C, que luego se llama main, que luego ejecuta su código de aplicación, que luego creará tareas de RTOS y luego iniciará el RTOS. A partir de ese momento, el RTOS decide qué tarea ejecutar cuando.

    
respondido por el Richard

Lea otras preguntas en las etiquetas