Наличие собственного оборудования, работающего на встроенном Linux (OpenWrt), просто прелесть. Процессор - IMX6ULL (ArmV7), поэтому он поддерживается Jlink для отладки через интерфейс JTAG. Запуск сервера GDB и пошаговая отладка ядра Linux выдает много optimized out
сообщений из-за того, что ядро скомпилировано с KBUILD_CFLAGS += -O2 -fno-reorder-blocks -fno-tree-ch $(EXTRA_OPTIMIZATION)
флагом. Поэтому я пытаюсь скомпилировать его с помощью -O0
этого, что дает мне следующую возможность:
$ 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':
Проверено наWARNING: modpost: Found x section mismatch(es).
здесь. Похоже, что полученный двоичный файл занимает больше места, чем настроено некоторыми настройками. Размер, vmlinux
созданный с -O2
опцией, равен 39Mb
. Использование -O1
дает мне 37Mb
образ, поэтому я надеюсь, что в моей оперативной памяти DDR3 (128 Мб) достаточно места для еще большего образа, скомпилированного с -O0
конфигурацией. Поэтому мне интересно, как предоставить больше места для разделов? Может ли кто-нибудь указать мне место, где я могу это сделать? Имею ограниченные знания о ядре Linux, поэтому не смог найти ни одного скрипта компоновщика, который использовался бы для этого.