Tener hardware personalizado que ejecute Linux integrado (OpenWrt) es una maravilla. CPU: es IMX6ULL (ArmV7), por lo que Jlink la admite para depurar a través de la interfaz JTAG. Al iniciar el servidor GDB y depurar paso a paso el kernel de Linux, se muestran muchos optimized out
mensajes debido al kernel compilado con KBUILD_CFLAGS += -O2 -fno-reorder-blocks -fno-tree-ch $(EXTRA_OPTIMIZATION)
la bandera. Entonces estoy tratando de compilarlo con -O0
la siguiente opción:
$ make -j64 V=s all
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CC scripts/mod/empty.o
....
AR built-in.o
LD vmlinux.o
MODPOST vmlinux.o
WARNING: modpost: Found 4 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
arm-openwrt-linux-muslgnueabi-ld: arch/arm/kernel/setup.o: in function `setup_arch':
/opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/arch/arm/kernel/setup.c:1134: undefined reference to `psci_smp_ops'
arm-openwrt-linux-muslgnueabi-ld: /opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/arch/arm/kernel/setup.c:1134: undefined reference to `psci_smp_ops'
arm-openwrt-linux-muslgnueabi-ld: kernel/panic.o: in function `__xchg':
/opt/eclipse/imx6ull-openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-imx6ull_cortexa7/linux-4.14.199/./arch/arm/include/asm/cmpxchg.h:110: undefined reference to `__bad_xchg'
arm-openwrt-linux-muslgnueabi-ld: kernel/exit.o: in function `__xchg':
Comprobado paraWARNING: modpost: Found x section mismatch(es).
aquí. Parece que el archivo binario resultante ocupa más espacio que el configurado por algunas configuraciones. El vmlinux
tamaño construido con -O2
opción es 39Mb
. El uso -O1
me da 37Mb
una imagen, así que espero que haya suficiente espacio en mi RAM DDR3 (128 MB) para una imagen aún más grande compilada con -O0
la configuración. Entonces me pregunto cuál es la forma de proporcionar más espacio para las secciones. ¿Alguien podría indicarme un lugar donde puedo hacerlo? Tengo conocimientos limitados sobre el kernel de Linux, por lo que no pude encontrar ningún script de enlace utilizado para eso.