Quiero saber cuál es la cantidad mínima de RAM necesaria para ejecutar Linux Kernel (4.6) en ARM cortex-a5.
Ahora estoy usando 32 MB de PSRAM, pero cada vez que estoy cargando vmlinux (formato elf) a través de depurador a PSRAM, memcpy () no funciona, que se encuentra internamente en printk.
Mi dirección de inicio de PSRAM es 0x20000000. Entonces, para hacer el punto de entrada de elf, modifiqué arch / arm / Kconfig como se muestra a continuación,
config PAGE_OFFSET
hex
default PHYS_OFFSET if !MMU
default 0x40000000 if VMSPLIT_1G
default 0x80000000 if VMSPLIT_2G
default 0xB0000000 if VMSPLIT_3G_OPT
(-)default 0xC0000000
(+)default 0x20000000
Entonces, cada vez que memcpy () lo está obteniendo es asombroso. Por favor, hágame saber dónde estoy haciendo mal aquí.
Tamaño de Vmlinux con símbolos de depuración: 10,9 MB. Loading_DTB @ ubicación de memoria superior.
linux
memory
linux-kernel
arm
Anindya
fuente
fuente
"Estoy cargando vmlinux" - No, deberías cargar la Imagen o zImage. ¿Qué SoC estás usando? ¿No hay soporte del fabricante del chip? Estudie lxr.free-electrons.com/source/Documentation/arm/Booting Por cierto, su edición en PAGE_OFFSET está equivocada.
aserrín
En realidad, también necesito el soporte del símbolo de depuración para el kernel de Linux. Entonces, si uso binario no obtendré soporte de símbolos de depuración. Estoy usando la interfaz JTAG con el depurador JLink segger. Levantando kernel en FPGA con SOC personalizado. Para cargar el elfo, se requiere la dirección de entrada del elfo. Para el kernel de Linux, esto es 0xC0000000 predeterminado si selecciono vmsplit 3G / 1G. Pero para mi caso, la RAM está comenzando desde 0x20000000. Por lo tanto, necesito reemplazar el valor de C0000000 con mi dirección de memoria RAM. Entonces, ¿hay alguna forma alternativa?
Anindya
¿Vas a discutir con Russell King, quien escribió que deberías arrancar una zImage o Image? (Si no sabe quién es, lea armlinux.simtec.co.uk/whoswho.html ) El formato ELF es un no-go; tienes que arrancar una imagen en bruto. Todavía puede obtener símbolos de depuración. La dirección de carga e inicio convencional para un núcleo ARM es start-of-phys-mem plus 32KB; para su placa que sería 0x20008000. No modifique la configuración PAGE_OFFSET; No es lo que crees que es.
aserrín
¿Puede proporcionar alguna información sobre cómo depurar el binario del kernel de Linux? Estoy usando eclipse con el depurador segger, pero cada vez que estoy cargando el binario del kernel en lugar de obtener el código línea por línea, solo muestra los nombres de las funciones y el ensamblaje (@ Disembler).
Anindya
De todos modos, no tengo ninguna intención de discutir porque solo estaba siguiendo las instrucciones que se mencionaron en devel.timesys.com/embedded-linux/docs/…
Anindya