Portando controladores de Linux específicamente I2C

1

Estoy desarrollando un controlador I2C para un acelerómetro.

Mis objetivos (en realidad, es la restricción que tengo según las directrices del proyecto que figuran en mi instituto):

  1. utilice Linux como sistema operativo - (software)
  2. utilice ISA basada en ARM Core (ARM CORTEX-A o serie M) - (hardware)

Cualquier ayuda en este sentido sería genial.

Una de las soluciones que me ofrecieron fue ir para FreeRTOS en el LPC1769 de NXP, que es un SoC basado en ARM cortex-M3. (utilizando la placa de desarrollo LPCXpresso)

Pero mi pregunta es: ¿por qué recurrir a RTOS cuando mi requisito es la implementación del controlador? ¿Por qué no puedo tomar el sabor normal de vainilla del kernel de Linux o algo así?

¿Y también ayuda con respecto a las placas de desarrollo que soportan la configuración anterior?

¿Alguna sugerencia o proceso de reflexión sobre esto?

    
pregunta kishanp

1 respuesta

2

No estoy seguro de lo que estás preguntando, pero,

Hay algo interesante con tu tarea:

  • Tienes que usar un kernel de Linux
  • Sería un BRAZO A o M.

En primer lugar, portar un kernel de Linux no es una tarea fácil !

Tienes dos opciones. O la plataforma que elija ya es compatible y puede usarla o no. Y cuando digo plataforma me refiero a toda la placa, no solo al modelo de MCU. Cada placa puede tener diferentes chips de RAM y amp; El chip FLASH, usa diferentes asignaciones de E / S, árbol de reloj, etc. Todas estas cosas tienen un nivel bastante bajo en el kernel (o en el gestor de arranque) y requerirían mucho esfuerzo para portar (y probar). Cuando digo mucho, quiero decir meses si estás familiarizado con esto, o quizás años, si no ...

No conozco el puerto de kernel estándar de Linux para Cortex-M. IFAIK la falta de MMU en dispositivos Cortex-M es un NO-GO para un kernel estándar de Linux. Puedes usar uClinux en su lugar. ¿Pero sigue siendo Linux ? Tendrías que responder a esto.

Esta es la razón por la que no puede usar una distribución de linux común: su plataforma no será una PC. La memoria RAM que tendrá puede alcanzar los 512 MB, no los 4 GB. Cosa sobre un tablero de Raspberry Pi. No hay Linux estándar para él, pero hay una distribución personalizada hecha específicamente para él. De hecho, una Raspberry Pi podría estar bien para ti aquí. Todo el sistema está listo, y usted podría concentrarse en escribir un controlador I2C para su acelerómetro.

Entonces estás hablando de RTOS. Primero, Linux no es un sistema operativo en tiempo real. Se puede agregar tiempo real al kernel estándar (por ejemplo, Xenomai), pero no estoy seguro de por qué está hablando de sistemas operativos en tiempo real aquí.

También dijiste que una opción era ir con FreeRTOS. Pero esto violaría su requerimiento de usar un kernel de Linux. Y si el objetivo de todo el proyecto es aprender el desarrollo de controladores de dispositivos. El uso de FreeRTOS o Linux es completamente diferente en términos de codificación de controladores.

De todos modos, usar FreeFTOS parece una buena idea aquí. Viene con muchas plataformas compatibles incluyendo ejemplos. Es bastante fácil de usar (al menos un orden de magnitud (o quizás dos) más fácil que portar un kernel de Linux). Es en tiempo real, esto podría ser un requisito, dependiendo de lo que planea hacer con los datos de su acelerómetro. Por último, pero no menos importante, es posible que no necesite RAM externa o FLASH. Es lo suficientemente ligero como para caber en la memoria interna de su MCU. A Cortex-M está bien aquí.

* EDIT * *

Leí en la historia de tu pregunta que inicialmente dijiste que se supone que es un proyecto de 1 mes.

Por lo tanto, ya no tienes la opción y básicamente tienes dos opciones:

  1. Vaya a una conocida plataforma integrada de Linux que ya esté en funcionamiento, como la Raspberry Pi. Y sumérgete de inmediato en el desarrollo de Linux Kernel Diver.

  2. Vaya a una plataforma que ya sea compatible con un ejemplo I2C de FreeRTOS. Puede descargar FreeRTOS y mirar en la carpeta de ejemplos. Busque una placa que tenga un ejemplo I2C adjunto y use esa placa.

No conozco sus requisitos de costo para su proyecto, pero un panel de desarrollo sólido puede costar cientos de dólares y puede requerir un programador o un entorno de desarrollo que puede o no ser gratuito, cuando un Pi es ~ 50 $ y no requiere nada.

    
respondido por el Blup1980

Lea otras preguntas en las etiquetas