Receita para o alvo 'vmlinux' falhou?

1

Estou tentando construir um kernel para o QEMU para emular um pi de framboesa: link link

No entanto, executando o comando: faça ARCH = arm

compilou bem por um bom tempo, mas parou quando recebeu esta mensagem:

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

Não sei exatamente o que está me dizendo. Meu palpite é que não é possível encontrar uma biblioteca que precisa em sua compilação. Eu estou usando o kit de ferramentas raspberry pi (que parece que deve ser plug and play, essencialmente, se eles têm no seu git para o toolchain Pi oficial)

Alguma ajuda?

    
por user138741 06.05.2015 / 18:54

2 respostas

2

adicione o driver abaixo ao arquivo (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-

funciona para mim.

é isso.

    
por steve 17.06.2015 / 09:46
1

Tive o mesmo problema usando o conjunto de ferramentas jessie cross do Debian. Usando o kernel rpi-3.18.y. Rastreou até mmc_debug que foi definido incorretamente:


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

Olhando mais, apenas o bcm2835-mmc.c e quirks.c tem o símbolo definido:


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;

Então eu voltei e habilitei AMBOS os drivers MMC, bem como o adaptador host BCM2835 em minha configuração. Isso ADICIONADO ao patch de configuração já aplicado.


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.

Em seguida, ative o BCM2835 na configuração e compilação. Trabalhou para mim.

    
por Christoph 26.05.2015 / 06:16