Red de conocimiento informático - Material del sitio web - Cómo solidificar las imágenes del kernel de Boot Loader y Wince en el chip flash

Cómo solidificar las imágenes del kernel de Boot Loader y Wince en el chip flash

Boot Loader es una parte importante del proceso de desarrollo de personalización del sistema operativo Windows CE. La función de Boot Loader es como las dos palabras en su nombre: Boot, que es el sistema de arranque. Si los productos basados ​​en CE usan BIOS para inicializar y configurar el hardware, entonces Boot Loader solo necesita iniciar el sistema de software. Si no se utiliza BIOS, la función de Boot Loader también incluye implementar las funciones básicas de BIOS; Loader no solo carga el sistema operativo, sino que después de que todo el sistema se inicia normalmente, Boot Loader carga el archivo del kernel CE nk.bin de diferentes maneras. Cuando el cargador de arranque descomprime nk.bin en la RAM, la CPU toma el control del núcleo CE. Existen la mayoría de los tipos de cargadores de arranque en la plataforma x86. Aquí hay una introducción a los cargadores de arranque en la plataforma x86:

cargador de arranque ROM x86

También se llama arranque Rom. Recuerde que en el artículo anterior se mencionó Rom Boot. Rom Boot está diseñado para almacenarse en Flash/EEPROM, que es la ubicación del BIOS original, de modo que cuando la CPU ejecute el código en una dirección fija después del arranque, ejecutará el código contenido en Rom Boot para inicializar y detectar el todo el sistema de hardware, y admite la descarga de nk.bin desde una máquina remota a través de una tarjeta de red, o la búsqueda y carga del archivo nk.bin desde la partición activa de un disco duro IDE/ATA local. La ventaja de Rom Boot es que se inicia y carga rápidamente y puede completar todas las operaciones por sí solo, por lo que no requiere BIOS, MSDOS ni Loadcepc. La desventaja es que los desarrolladores de CE deben leer el código fuente y realizar modificaciones. CE proporciona todo el código fuente para Rom Boot y los lectores pueden encontrar un archivo de ayuda titulado "Organización fuente x86" que enumera todos los directorios relevantes y sus contenidos, y también enumera el código fuente del controlador para las cuatro NIC.

Cargador de arranque BIOS x86

El cargador de arranque BIOS es similar al método MSDOS Loadcepc, excepto que el cargador de arranque BIOS no requiere el sistema operativo MSDOS, pero aún requiere el BIOS y Sistema de archivos FAT. La siguiente es la secuencia de inicio del sistema utilizando el cargador de arranque del BIOS: Después de que el sistema esté encendido y el BIOS complete la inicialización y configuración del hardware, el BIOS verificará la secuencia de inicio del dispositivo de arranque si el dispositivo de arranque es un dispositivo de almacenamiento, como por ejemplo. un disco duro, tarjeta CF o DOC (disco en chip). El sector de arranque real (sector de arranque principal) se cargará en el sector de arranque de la memoria. Si el dispositivo de arranque es un disco duro, una tarjeta CF, DOC (Disk-On-Chip) u otro dispositivo de almacenamiento, entonces el código de modo real en el sector de arranque principal de estas memorias se cargará en la memoria y se ejecutará. El código mencionado aquí se llama Master Boot Record (MBR), primero busca la partición activa en la tabla de particiones (también ubicada en el sector de arranque maestro) y, si hay una partición activa, carga el código en la primera. sector de la partición activa en la memoria y luego ejecutar el código. El primer sector de la partición activa mencionada aquí se llama sector de arranque. La función del código del sector de arranque es localizar y cargar el cargador de arranque del BIOS y luego cargar nk.bin. El código fuente del sector de arranque se encuentra en el directorio _WINCEROOT\Public\Common\Oak\Cspi486\Biosloader\Bootsector. A continuación se muestra un ejemplo de un sector de arranque que se puede utilizar en un cargador de arranque.

Hay un archivo de imagen del sector de arranque listo para usar en la ruta _WINCEROOT\Public\Common\Oak\Csp\i486\Biosloader\Diskimages\Setupdisk\Bsect.img. En cuanto al cargador de arranque del BIOS, CE proporciona dos archivos: Setupdisk.144 y Bootdisk.144. Ya presenté cómo extraer el archivo con la extensión ".144" en mi artículo anterior. Ambos archivos contienen sectores de arranque e imágenes del cargador de arranque. Ejecute el comando por lotes "mkdisk C:" para escribir estas dos imágenes en el disco. mkdisk configurará el atributo oculto del cargador de arranque para que los archivos del cargador de arranque no se muestren al enumerar todos los archivos en el directorio raíz.

MSDOS Loadcepc

Este método es muy sencillo. La ejecución de loadcepc.exe después del arranque de MSDOS permite a loadcepc cargar nk.bin en la memoria antes de entregar el control de la CPU al programa del kernel CE.

Analicemos la composición de Boot Loader en función del código fuente general de Boot Loader:

Boot Loader consta de dos partes: código de inicio OEM y código principal. Luego salte al código principal. El código de inicio OEM generalmente se escribe en lenguaje ensamblador. El código principal suele estar escrito en lenguaje C y es responsable de todas las demás tareas mientras ejecuta la información relevante que se muestra en la pantalla. Normalmente, aquí se modifica la adición del logotipo de una empresa u otro logotipo de inicio.

El código principal consta de varias partes: código de descarga de imágenes, que descarga nk.bin desde una computadora remota a través de un puerto paralelo o una tarjeta de red; código de depuración del puerto serie, incluidas las funciones de lectura y escritura del puerto serie. los usuarios llaman a estas funciones y pueden usar el puerto serie para comunicarse entre la computadora remota y la computadora local para escribir código flash, incluida la función de escribir imágenes en código de monitoreo de hardware;