PIC32 no tiene unidad de gestión de memoria, ¿por qué un microcontrolador de gama alta no tendría un dispositivo periférico

2

Se necesita MMU para ejecutar Linux y quizás para otras tareas relacionadas con el sistema operativo. Sin embargo, el PIC32 no tiene uno de estos. ¿Por qué alguien haría un microcontrolador de gama alta y no incluiría una MMU?

Puede tener sentido que los PIC de nivel inferior como PIC18F, PIC24 no tengan MMU, pero ¿por qué Microchip no colocó una MMU en PIC32, que es su procesador de gama alta?

    
pregunta quantum231

4 respuestas

4

PIC32 no tiene unidad de gestión de memoria ...

Pero lo hace.

El PIC32 usa la arquitectura MIPS, que normalmente está emparejada con una MMU. Cuando Microchip diseñó la familia PIC32MX, la dejaron apagada. El PIC32MX más grande, en términos de memoria, es el PIC32MX795F512L de gama alta que tiene 512 KB de flash de programa y 128 KB de RAM.

Sin embargo, la nueva familia PIC32MZ, presentada a principios de este año, tiene un MMU (o eso dice la hoja de datos en la primera página; todavía no la he usado).

El PIC32MZ2048ECM144 , por ejemplo, tiene 2MB de flash del programa y 512 KB de RAM. Estoy bastante seguro de que esto todavía no es suficiente para ejecutar una versión real de Linux. En cualquier caso, supongo que Microchip continuará presentando nuevas versiones de PIC32MZ con espacios de memoria cada vez más grandes. Lo ideal es que salgan con un PIC32 que tenga una interfaz de memoria externa (que aparece en el mapa de memoria como memoria normal, no como periférico). PIC32s ya puede ejecutar código desde flash o RAM.

Hace un tiempo vi un trabajo de Microchip para un ingeniero de controladores de Linux. Hmm.

    
respondido por el tcrosley
5

Primero, el PIC32 no ejecuta Linux. Una búsqueda rápida en Google muestra una falta de distribuciones de Linux en toda regla o compilaciones del kernel para el PIC32 (por razones tales como RAM insuficiente, falta de interés)

En segundo lugar, aunque puede ser una oferta de gama alta, sigue siendo un microcontrolador, cuyo propósito es algo diferente de un procesador de propósito general. Solo transporta hasta 32 KB de RAM física, que definitivamente no es suficiente .

Sin embargo, una lectura de la hoja de datos de la familia PIC32MX muestra que la familia PIC32 contiene una unidad de "traducción de mapeo fija" para la memoria virtual. Esta característica similar a MMU implementa recursos de mapeo de memoria como flash, así como la segmentación de kernel / usuario.

Editar: No puedo responder por qué Microchip no se involucra con Linux / Android, ya que no trabajo para Microchip. Solo puedo decir que, de acuerdo con las especificaciones del microcontrolador específico que usted menciona, puede ser de gama alta para un microcontrolador / microprocesador, pero no es suficiente para un sistema basado en Linux, y mucho menos para uno que ejecuta una máquina virtual Java. un JIT (no sucederá debido a la memoria, y porque JIT en una arquitectura de Harvard es una premisa cuestionable). Un microcontrolador está diseñado para actuar en una aplicación embebida simple de baja latencia y altamente confiable, y ejecutar Linux o Android no es necesariamente propicio para hacer las cosas de manera barata y confiable y en tiempo real.

    
respondido por el Andrey Akhmetov
1

Una MMU es principalmente útil en los casos en que un sistema necesitará hospedar múltiples procesos con tiempos de vida independientes y superpuestos arbitrariamente. El soporte para tales acciones es esencial en Linux, pero completamente innecesario en muchas aplicaciones integradas donde todos los procesos se establecen en el inicio y continúan ejecutándose hasta que el sistema se apaga o reinicia.

En general, existen compensaciones significativas entre la capacidad de un sistema para adaptarse a los requisitos de uso que cambian dinámicamente y su capacidad para garantizar respuestas constantes y oportunas a los estímulos. Algo así como el sistema de control de movimiento de un vehículo guiado automático puede necesitar realizar algunos cálculos 10,000 veces / segundo de manera constante sin problemas, pero puede que no sea necesario mantener algunos procesos activos mientras que otros se cambian. Puede ser completamente suficiente para que tenga un comando para "confirmar que el vehículo está inmóvil y que los frenos están activados, luego reiniciar". Si no hay necesidad de cambiar el diseño de la memoria de un sistema mientras los procesos están activos, hay pocos beneficios de tener una MMU.

    
respondido por el supercat
1

Creo que puedes usar µClinux ; μClinux es una bifurcación del kernel de Linux para microcontroladores (en sistemas integrados) sin una unidad de gestión de memoria (MMU).

    
respondido por el Mohammed Amine

Lea otras preguntas en las etiquetas