Red de conocimiento informático - Conocimiento informático - ¿Cómo evitar errores en la asignación de memoria de WinCE?

¿Cómo evitar errores en la asignación de memoria de WinCE?

Una diferencia significativa entre los dispositivos integrados y las PC de escritorio es que los dispositivos integrados generalmente requieren acceso directo a un determinado segmento de memoria física en sus aplicaciones. Esto es especialmente importante para el acceso a la memoria física en los controladores. Esto es especialmente cierto para la arquitectura ARM, donde los puertos de E/S también se asignan a direcciones de memoria física. Además, en comparación con la versión de escritorio de Windows, WinCE también proporciona un acceso a la memoria física relativamente simple, y tanto los controladores como las aplicaciones pueden acceder a una sección de la memoria física a través de la API.

En general, se requieren ROM (memoria de solo lectura) y RAM (memoria de acceso aleatorio) para ejecutar WinCE. Sin embargo, en WinCE, la forma en que se utilizan la ROM y la RAM es ligeramente diferente a la del entorno de PC. En WinCE, la RAM se divide en dos áreas: la primera área es la memoria del programa, también llamada montón del sistema, que es un poco como. en la RAM de la PC que contiene el contenido del montón y la pila para ejecutar aplicaciones. Guarda el contenido del montón y la pila para ejecutar aplicaciones. El segundo es el almacén de objetos, que es algo así como un disco RAM virtual persistente. A diferencia de los discos RAM virtuales de las PC, el almacenamiento de objetos conserva los archivos almacenados incluso después de que se apaga el sistema.

En WinCE, los programas almacenados en la ROM se pueden ejecutar como Ejecución in situ (XIP). En otras palabras, los programas se pueden ejecutar directamente desde la ROM sin necesidad de cargarlos primero en la RAM. Esta característica tiene dos grandes ventajas para los sistemas integrados: en primer lugar, el código se ejecuta directamente desde la ROM, lo que significa que el código del programa no ocupa RAM más valiosa; en segundo lugar, no es necesario copiar el programa a la RAM antes de su ejecución; requiere Se necesita muy poco tiempo para iniciar la aplicación. Por otro lado, los programas que no están en la ROM pero que están contenidos en un almacenamiento de objetos o en una tarjeta flash no se ejecutarán in situ; se copiarán en la RAM antes de su ejecución;

(2) Memoria virtual

Todos los programas que se ejecutan en la computadora deben ejecutarse a través de la memoria. Si los programas ejecutados son grandes o hay una gran cantidad de ellos, causará. memoria insuficiente. Para resolver este problema, Windows utiliza tecnología de memoria virtual para aliviar las limitaciones de memoria. Como la mayoría de los sistemas operativos, WinCE implementa un mecanismo de memoria virtual con paginación según demanda. WinCE es un sistema operativo de 32 bits que admite 4 GB de espacio de direcciones virtuales. Las llamadas al sistema a la API de memoria virtual asignan memoria para otros tipos de memoria, incluidos el montón y la pila. Las páginas de memoria virtual de WinCE pueden estar en tres estados: libre, reservada o comprometida.

WinCE proporciona dos métodos de mapeo de direcciones virtuales, a saber, mapeo estático y mapeo dinámico. Solo el núcleo puede acceder al espacio de direcciones virtuales mapeado estáticamente, mientras que las aplicaciones en modo de usuario pueden acceder al espacio de direcciones mapeado dinámicamente. . Esto significa: una vez que la MMU del sistema WinCE comienza a funcionar, la CPU ya no puede acceder directamente a la memoria física. Para el kernel CE que se ejecuta en CPU de las series x86 y ARM, primero se debe realizar la asignación entre la dirección de la memoria física y la dirección de la memoria virtual. ser establecido.