Análisis sobre el trasplante de LINUX basado en ARM
1. Modificar el Makefile en el directorio raíz del código fuente del kernel
#ARCH = arm
#CROSS_COMPILE = arm-linux-? p>
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.