Я пытаюсь создать ядро для QEMU для эмуляции пи малины: http://xecdesign.com/compiling-a-kernel/ https://www.raspberrypi.org/documentation/linux/kernel/building.md
Однако выполнение команды: сделайте ARCH=arm
это скомпилировало хорошо в течение хорошего долгого времени, но затем остановилось, когда это получило это сообщение:
kevin@kevin-laptop:~/linux$ make ARCH=arm
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CHK kernel/config_data.h
LINK vmlinux
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
drivers/built-in.o: In function `mmc_fixup_device':
of_iommu.c:(.text+0xb9674): undefined reference to `mmc_debug'
Makefile:923: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
Я не абсолютно уверен, что это говорит мне. Мое предположение - то, что это не может найти библиотеку, в которой это нуждается, он - компиляция. Я использую инструментарий пи малины (Который кажется, что это должен быть Plug and Play по существу, если у них есть он на их мерзавце для чиновника набор инструментальных средств Pi),
Какая-либо справка?
добавьте ниже драйвера к файлу (arch/arm/configs/bcm2835_defconfig)
CONFIG_MMC_BCM2835=y
CONFIG_MMC_BCM2835_DMA=y
CONFIG_DMADEVICES=y
CONFIG_DMA_BCM2708=y
cp arch/arm/configs/bcm2835_defconfig ./.config
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
, это работает на меня.
вот именно.
Имел ту же проблему с помощью перекрестного набора инструментальных средств Debian jessie. Используя rpi-3.18.y ядро. Прослеженный это вниз до mmc_debug
, который был неправильно определен:
christoph@debian:~/raspidev/linux$ find drivers/mmc -name \*.c -exec -H grep mmc_debug {} \;
drivers/mmc/host/bcm2835-mmc.c
drivers/mmc/host/omap_hsmmc.c
drivers/mmc/core/quirks.c
Взгляд далее, только bcm2835-mmc.c
и quirks.c
определили символ:
bcm2835-mmc.c:
/*static */unsigned mmc_debug;
/*static */unsigned mmc_debug2;
module_param(mmc_debug, uint, 0644);
module_param(mmc_debug2, uint, 0644);
quirks.c:
extern unsigned mmc_debug;
, Таким образом, я возвратился и включил ОБОИМ драйверы MMC, а также хост-адаптер BCM2835 в моей конфигурации. ДОБАВЛЕННЫЙ к конфигурации уже исправляет примененный.
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 3e7abcd..95eb332 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -6,7 +6,7 @@ comment "MMC/SD/SDIO Host Controller Drivers"
config MMC_BCM2835
tristate "MMC support on BCM2835"
- depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835
+ depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
help
This selects the MMC Interface on BCM2835.
Тогда активируют BCM2835 в конфигурации и компиляции. Работавший для меня.