driver de compilação do buildroot

4

Estou usando o Buildroot para compilar o Linux incorporado. Ele funciona bem porque eu tenho configurações de Makefile de destino, mas agora eu preciso de driver para meus dispositivos USB. Consigo compilar as aplicações do Qt (c ++) no meu host linux para o target linux usando buildroots /output/host/usr/bin/arm-none-linux-gnueabi-c++ . Funciona bem.

Agora estou tentando compilar arquivos c para este driver .

Eu estou chamando assim:

/output/host/usr/bin/arm-none-linux-gnueabi-gcc -Wall -D__KERNEL__ -DMODULE -I/home/buildroot-2012.08/output/build/linux-2.6.35.3/include -DMODVERSIONS -include /home/buildroot-2012.08/output/build/linux-2.6.35.3/include/config/modversions.h -I /home/buildroot-2012.08/output/build/linux-2.6.35.3/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c

Estou com erro:

output/build/linux-2.6.35.3/include/linux/linkage.h:5: fatal error: asm/linkage.h: No such file or directory

  1. Como devo configurar o driver compilando?
  2. Existe alguma outra maneira de fazer isso para o target linux. Mayby eu não estou fazendo o caminho certo.
por user257980 22.10.2013 / 16:13

1 resposta

3

asm/ é um link simbólico para sua arquitetura de destino, se não existir provavelmente você está perdendo algum alvo no seu diretório de compilação do kernel, configure (se não, talvez apenas module_headers possa fazê-lo)

Não está claro a sua pergunta se você estiver usando a linha de comando, um Makefile personalizado ou um pacote do Buildroot (qual versão do Buildroot você está usando).

Sua linha de comando está construindo um objeto C .o não um módulo do kernel ( .o foi a extensão para módulos do kernel até a versão 2.4, de 2.6 é .ko )

Se você não tiver certeza sobre os sinalizadores, aumente o detalhamento da construção dos módulos do kernel, compilação e log, e use o mesmo.

O kernel tem o seu caminho para construir módulos e o Buildroot tem o seu caminho para pacotes, o melhor é provavelmente criar um novo pacote para construir seu módulo (dê uma olhada se já houver algum outro pacote que construa um módulo).

Este exemplo é um pouco antigo, mas talvez ajude.

editar

O módulo ftdi_sio.ko é gerado no diretório /lib/modules/$(uname -r)/kernel/drivers/usb/serial/

Mas pode ser configurado como builtin também, para que nenhum .ko seja gerado, verifique o símbolo USB_SERIAL_FTDI_SIO em seu configuração (deve ser y para builtin m para o módulo).

Se estiver embutido ou inserido, deve haver uma interface /proc em tempo de execução no destino chamado ftdi_sio , localize.

    
por 22.10.2013 / 23:29