Red de conocimiento informático - Material del sitio web - Análisis sobre el trasplante de LINUX basado en ARM

Análisis sobre el trasplante de LINUX basado en ARM

Solo desea trasplantar. Las operaciones específicas son las siguientes. Es posible que no correspondan una a una, pero el proceso es más o menos el mismo. Se recomienda descargar una versión superior del código para el trasplante. menos trabajo tendremos que hacer.

1. Modificar el Makefile en el directorio raíz del código fuente del kernel

#ARCH = arm

#CROSS_COMPILE = arm-linux-

2. Modifique el archivo arch/arm/plat-s3c24xx/common-smdk.c, modifique la información de la partición Nand Flash y la información del hardware Nand Flash. La partición aquí debe ser coherente con la partición del cargador de arranque. Puede consultar la estructura de datos smdk_default_nand_part[] para practicar.

3. Aún usando el archivo en 2, cambie la estructura estática s3c2410_platform_nand smdk_nand_info = {

.tacls = 0,

.twrph0 = 30, //this Los tres números deben cambiarse a los anteriores 20 60 20

.twrph1 = 0,

.nr_sets = ARRAY_SIZE(smdk_nand_sets),

.sets = smdk_nand_sets ,

};

4. Cambie NAND_ECC_SOFT en drivers/mtd/nand/s3c2410.c a NAND_ECC_NONE.

Frecuencia del cristal: modificar arch/arm/mach-s3c2440/mach-smdk2440.c

static void __init smdk2440_map_io(void)

{

s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

s3c24xx_init_clocks(12000000); // Cámbialo para que sea igual al tuyo

s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)); p>}

6. Agregue soporte para el sistema de archivos yaffs2:

Descargue el paquete de código fuente de yaffs2, descomprímalo e introdúzcalo, se ha agregado al kernel de Linux ( método de parche)

#cd yaffs2

#./patch-ker.sh c $you_kernel_path (el directorio de códigos de su kernel)

7. Configure el kernel

Primero, copie la configuración predeterminada de la placa de desarrollo s3c2410 al directorio raíz del kernel para simplificar el proceso de configuración

# cp arch/arm/configs/s3c2410_ defconfig .config

# make menuconfig

1.Configuración general ---gt;

[*] Configurar las funciones estándar del kernel (para sistemas pequeños)

2. Tipo de sistema----gt;

[*] Compatible con DMA S3C2410 [*] Compatible con procesador ARM920T

Máquina S3C2410---gt;

[*] SMDK2410/ A9M2410

Máquina S3C2440---gt;

[*] SMDK2440

[*] SMDK2440 con módulo de CPU S3C2440

3.root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Cadena de comando predeterminada del kernel

Cambiar (noinitrd root=/dev/mtdblock2 console=ttySAC0, 115200 init=/linux2440) reemplazado por (noinitrd root=/dev/mtdblock2 console=ttySAC0, 115200 init=/linux2440). 115200 init=/linuxrc )

Preste especial atención al parámetro root=/dev/mtdblock2 aquí. mtdblock2 es la ubicación del sistema de archivos raíz y está relacionado con la asignación del cargador de arranque. También está estrechamente relacionado con los 2 pasos anteriores. Si no funciona, inténtalo unas cuantas veces más.

4. [*] Habilitar soporte para módulos cargables ---gt;

[*] Descarga de módulos

[*] Cargar módulos del kernel automáticamente

p>

Seleccione estos dos elementos y el resto se podrá eliminar.

5. Controlador de dispositivo ---gt;

lt; *gt; soporte de dispositivo de tecnología de memoria (MTD) ---gt; Soporte de partición MTD

lt; *gt; soporte de dispositivo NAND ---gt;

lt; *gt; soporte de flash NAND para SoC S3C2410/S3C2440 [ ] S3C2410 NAND hardware ECC // Este elemento debe eliminarse

6.

lt; *gt; soporte del sistema de archivos YAFFS2

7. Crear zImage

Esta configuración es común a 2440 y 2410. Hay muchos tutoriales relacionados en línea.

Hay otro punto al que se debe prestar especial atención, que también es un dolor de cabeza: la producción de sistemas de archivos no es fácil de manejar, le sugiero que si desea ingresar a la industria de Linux integrado, Wei. El "Manual de desarrollo" de "Aplicaciones Linux integradas" de Dongshan es muy adecuado para que los principiantes aprendan. A través de este libro, tendrá una comprensión muy clara de todo el proceso de desarrollo de Linux integrado.