Não é possível fazer um LDD para um Devkit8000

Não é possível fazer um LDD para um Devkit8000

Estou tentando construir um driver de dispositivo Linux para um Devkit 8000. Estou recebendo a seguinte mensagem de erro:

Mensagem de erro

Quando tento seguir suas instruções, recebo um monte de perguntas de sim/não que realmente não entendo. No final, posso escolher entre 25 processadores diferentes (?):

Seleção de processador

Aqui está meu makefile:

ifeq ($(KERNELRELEASE),)

KERNELDIR = ~/sources/linux-3.2.6
PWD := $(shell pwd)
modules:
$(MAKE) ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- -C $(KERNELDIR) M=$(PWD) modules

.PHONY: modules clean

else
# called from kernel build system: just declare what our modules are
obj-m := LED_timer.o
endif

Não acho que meu código em si seja relevante ainda, além disso,saberque meu código-fonte está cheio de bugs, você não quer ver isso, haha.

Responder1

Você não disse onde conseguiu a fonte que está usando, mas evidentemente há algo inválido .confignela. Isto é usado para definir várias opções, como o tipo de processador. Existem literalmente centenas dessas opções com dependências complexas entre si (por exemplo, o processador que você escolher afetará as outras opções que você terá).

A fonte de baunilha não .configcontém; você precisa fornecer ou criar um. make oldconfigé usado quando .configé de uma versão anterior e deve ser atualizado. Às vezes, esse processo não pode ser totalmente automatizado e você acaba basicamente executando o make config, que usa uma interface CLI; isso também pode acontecer se você tentar make oldconfigsem configuração.

Você deve olhar mais gráfico make menuconfigpara ter uma perspectiva melhor do que se trata.

No entanto, começar do nada e tentar obter uma configuração que funcione para você será impossível, a menos que você saiba o que está fazendo. Idealmente, você começaria com aquele usado para criar seu kernel em execução. Isto é especialmente verdadeiro se você estiver apenas construindo um módulo; embora você não precise construir o kernel real, para compilar o módulo, ele deve saber como o kernel para o qual ele será usado foi compilado.

Esperançosamente, você pode encontrar isso /proc/config.gzno sistema de destino. Este não é um arquivo em disco, o sistema deve estar em execução para recuperá-lo. Está compactado então

gunzip config.gz
mv config .config

Deveria fazer isso. Copie isso em sua árvore de origem e execute make menuconfigpara adicionar instruções para o módulo que deseja construir.

Se isso não existir, você terá que rastrear a configuração que foi usada. Observe também que você precisa usar exatamente a mesma versão do kernel se estiver construindo um módulo.

Aqui estáuma visão geraldo processo de compilação, que também pode ser útil, leia primeiro os itens 2 e 3.

Responder2

Primeiro temos que limpar a configuração antiga, como make mrproper.

Depois disso, execute recentemente make menuconfig. Se você selecionou itens indesejados definitivamente, .config eles não serão criados.

informação relacionada