LusoRobótica - Robótica em Português
Software => Software e Programação => Tópico iniciado por: SJD22 em 15 de Maio de 2014, 11:23
-
Não sei se há aqui alguém expert em Linux... eu não sou nem pouco mais ou menos.
tenho um ficheiro chamado "build" que é do tipo link localizado em "/lib/modules/3.4.75+/build". Está a vermelho por isso é um broken link pq esta a apontar para um sitio que não existe.
Eu estou a tentar instalar um driver (faço Make). So que ao correr o Makefile com o comando make tenho um erro a dizer "build: no such file or directory", justamente porque esse link "build" está a apontar para um sitio que não existe. Penso que foi alguma instalação mal feita... não sei.
Pergunta: esse build é suposto apontar para onde? Qual o sitio correcto?
-
Não será suposto o make criar essa directoria no entanto não ter permissões para tal?
Se for disso experimenta: "sudo make" ou "sudo make install"
-
O ideal era partilhares o make ou projecto para perceber o que faz o make. Pode bastar criar uma pasta chamada build na raiz onde estas a executar o make para não teres que estar a usar o sudo.
-
Boas a pasta build aponta para os headers do kernel linux. Se isso for um debian falta-te o pacote linux-headers.
No meu amd64 a pasta build aponta "build -> /usr/src/linux-headers-3.2.0-4-amd64"
.
Mas como isso é um arm ve qual o nome dos pacotes disponiveis para essa distribuição linux.
$apt-cache search linux-headers
Depois de saberes qual é o pacote a ser instalado faz.
#apt-get install nome-do-pacote
ou
$sudo apt-get install nome-do-pacote
Depois disto volta a fazer make e diz se mostra um novo erro ou se correu tudo bem.
Boa sorte.
-
obrigado!!
Logo já faço isso e digo coisas!
-
Olá. Já listei os pacotes que tenho disponiveis:
linux-headers-3.2.0-4-all - All header files for Linux 3.2 (meta-package)
linux-headers-3.2.0-4-all-armhf - All header files for Linux 3.2 (meta-package)
linux-headers-3.2.0-4-common - Common header files for Linux 3.2.0-4
linux-headers-3.2.0-4-mx5 - Header files for Linux 3.2.0-4-mx5
linux-headers-3.2.0-4-omap - Header files for Linux 3.2.0-4-omap
linux-headers-3.2.0-4-vexpress - Header files for Linux 3.2.0-4-vexpress
linux-headers-2.6-mx5 - Header files for Linux mx5 configuration (dummy package)
linux-headers-2.6-omap - Header files for Linux omap configuration (dummy package)
linux-headers-mx5 - Header files for Linux mx5 configuration (meta-package)
linux-headers-omap - Header files for Linux omap configuration (meta-package)
linux-headers-vexpress - Header files for Linux vexpress configuration (meta-package)
E agora como sei qual é?
Tentei instalar 1 deles mas o link "build" continua a apontar para o mesmo sitio que eu ontem tinha obrigado a apontar: /usr/src/linux-headers-3.2.0-4-common/. Antes de o apontar para aqui ele apontava para um sitio que nao existia e por isso estava a vermelho (broken link).
O tempo que um gajo perde com coisas que deviam ser rapidas... :)
-
mas quando fazes make agora qual é o problema? partilha o make é mais facil.
-
Dá isto:
root@a13-OLinuXino:/home/olimex/XPTO2/GobiSerial# make
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* modules.order
make -C /lib/modules/3.4.75+/build M=/home/olimex/XPTO2/GobiSerial modules
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-4-common'
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
WARNING: Symbol version dump /usr/src/linux-headers-3.2.0-4-common/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /home/olimex/XPTO2/GobiSerial/GobiSerial.o
In file included from <command-line>:0:0:
/usr/src/linux-headers-3.2.0-4-common/include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: No such file or directory
compilation terminated.
make[2]: *** [/home/olimex/XPTO2/GobiSerial/GobiSerial.o] Error 1
make[1]: *** [_module_/home/olimex/XPTO2/GobiSerial] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-4-common'
make: *** [all] Error 2
root@a13-OLinuXino:/home/olimex/XPTO2/GobiSerial#
fui eu que meti a apontar para o "/usr/src/linux-headers-3.2.0-4-common" ontem a noite.
-
Pelo o que vi não é nenhum pacote desses. Tu estás a usar o kernel 3.4.75+ e esses são mais antigos e não servem para essa placa. Tens de ir a olimex procurar se eles têm o kernel com a source compilado se não vais ter de compilar novamente o kernel tu próprio.
Bem vindo ao mundo Linux ;D
-
epah.... :) nao era suposto perder tanto tempo nesta fase...
vou explorar a coisa entao...
-
posta a tua duvida no Portugal-a-programar.. nao é que goste la mto deste forum, porque aquilo é meio elitista e só ajudam qdo calha..mas é suposto ter mais experts em linux
-
Qual é que é a funcionalidade do GobiSerial ao certo?
É que pelo que vejo no github não é actualizado á 2 anos, o olinuxino não existe á 2 anos, ou existe?
-
É um driver para Linux para falar com modems 4G pelo protocolo QMI da Qualcomm.
-
E já viste que o código fala em kernel 2.6.x quando o actual é o 3.15, não fazendo ideia de que kernel o olinuxino usa(faz uname -a e posta aqui), é provavel que isso nunca vá compilar á primeira, e se for código feito a pensar em kernel x86 e esse é um kernel arm, ainda mais chato.
-
o que estou a usar é o 3.4.75+.
Na documentação do Gobi diz que aceita qualquer um para cima de 2.6....
Vou continuar a partir um pouco mais de pedra.
-
epah.... :) nao era suposto perder tanto tempo nesta fase...
Sistemas embebidos = 90% debug + 10% desenvolvimento.
Estás sempre "a partir pedra" :)
-
...Desespero Parte II :)
Ainda não resolvi o primeiro problema... mas entretanto resolvi explorar outras coisas que necessito também e deparei-me com outra dificuldade. Para criar um SD Card Boot preciso de instalar um pacote: "apt-get install gcc-4.6-arm-linux-gnueabi".
Dá o erro:
root@a13-OLinuXino:/home/olimex# apt-get install gcc-4.6-arm-linux-gnueabi
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gcc-4.6-arm-linux-gnueabi
E: Couldn't find any package by regex 'gcc-4.6-arm-linux-gnueabi'
Já pesquisei pela net e o que se lê não resulta...
Ajuda?
Tks
-
Isso é uma script pra te fazer o sdcard bootable ou é a imagem do sistema que queres meter no sdcard?
Ja viste isto: http://linux-sunxi.org/Bootable_SD_card (http://linux-sunxi.org/Bootable_SD_card)
-
O erro que estás a ter é porque não encontra esse package nos repositórios que estão configurados. Se estás a fazer o resto bem, vais ter que editar o "/etc/apt/sources.list" e adicionar o repositório onde é suposto estar esse package.
Estás a instalar essa package diretamente na placa Olimex, ou num PC com linux?
-
jm_araujo, ja editei esse ficheiro e nada... editei segundo o que andei a ler pela net.
estou a instalar directamente na placa olimex.
-
Pode ser esse o teu problema.
Pelo pouco que conheço de desenvolvimento nesse género de plataformas, o que vi é que é habitual fazer o desenvolvimento em PC com cross-compilers e usar as plataformas só para correr os binários.
Não me pareceu que seja muito habitual fazer o desenvolvimento na própria plataforma pelas suas limitações.
Hoje em dia é muito fácil correr linux no PC. A maneira mais fácil é com uma máquina virtual com o VirtualBox. Também tens soluções para dualboot sem ter de particionar o disco, como o Wubi.
-
Podes sacar daqui a versão mais recente: https://launchpad.net/gcc-arm-embedded
-
Podes sacar daqui a versão mais recente: https://launchpad.net/gcc-arm-embedded
No readme:
Supported hosts:
* Windows 7 32/64 bits (with installer and alternative zip package)
* Linux 32/64 bits
- Ubuntu 8.x or later (tarball)
- Ubuntu 10.04/12.04/13.04/13.10 (tarball and PPA)
- RHEL 4/5 (tarball)
* Mac OS X 10.7.3 and newer 64 bits (tarball)
Vai de encontro ao que disse anteriormente.
-
só uma perguntinha...
antes do
apt-get install
fizeste
apt-get update
?
normalmente é necessário fazer um update à base de dados de pacotes antes de começar a instalar...
-
Mas isto nem era para desenvolver na placa... estou so a tentar criar uma imagem num cartao SD conforme diz aqui: https://www.olimex.com/wiki/Build_Bootable_SD_Card_with_Debian (https://www.olimex.com/wiki/Build_Bootable_SD_Card_with_Debian)
-
Tools required
A13-OLinuXino or A13-OLinuXino-WIFI
Micro SD card larger than 2g
A method to check the system worked, VGA screen or serial cable
A computer that can run linux (These instructions do not work for windows)
Acho que é suposto fazeres isso num PC.
-
Lá terei que recorrer a uma virtual machine... vou pesquisar pela VirtualBox
-
Boas,
voltando à questão inicial deste post...
Basicamente, eu preciso que o link /dev/modules/3.4.75+/build seja um link a apontar para os headers e não um broken link a apontar não sei bem para onde como está a acontecer com a imagem Debian disponibilizada pela Olimex.
Entretanto instalei outra imagem Debian fornecida pela Olimex e feita por um gajo da comunidade para ver se nao acontecia o mesmo, mas acontece. Desta vez o build aponta para: "/home/davidefa/olinuxino/linux-sunxi"... e mais uma vez esta pasta nao existe...
Pergunta: isto acontece pq? Erro ou "burrice" de quem constroi a imagem?
Basicamente eu so quero o build a apontar para os headers correctos... porque preciso de instalar um driver!! Fiz isto aqui no meu computador em Debian com uma VirtualBox e o build está a apontar para o sitio correcto e por consequencia consegui compilar o driver e meter a funcionar o que queria!
Tks
-
Boas.
Nem é erro nem "burrice", é feito por uma razão, as rootfs geralmente são instaladas numa flash ou no teu caso num cartão sd e estas têm falta de espaço e como a pasta do kernel depois de compilada tem um tamanho mais ou menos 2G (não confudir com o kernel este pode vir a ter apenas um tamanho de 4 megas mais ou menos) ninguem mete isto na rootfs. Claro que se pode reduzir o tamanho desta pasta para uns pequenos mega bytes mas ninguém se dá a esse trabalho apenas os distribuidores de distros linux (ex: debian, fedora, etc) para poder incluir em pacotes.
Além disto compilar um kernel não é tarefa fácil para um só core a 1Ghz não é impossivel mas demora muito tempo.
Para acabar eu acho que eles pensam que quem compra essas placas já sabe fazer tudo isto e vai querer ter o seu próprio kernel compilado por si mesmo para poder compilar as seus próprios modulos(drives).
-
Obrigado zedlav.
Ora traduzido para miudos... e agora? :)
Sou completamente leigo em Linux... o pouco que sei aprendi na faculdade ha uns bons anos...
-
Usas o teu debian (virtual machine) para fazer o que diz no link que nos destes (https://www.olimex.com/wiki/Build_Bootable_SD_Card_with_Debian (https://www.olimex.com/wiki/Build_Bootable_SD_Card_with_Debian)).
Quando acabares o passo Building the Kernel, já podes compilar o teu driver da gobiserial mas para que não dê erro vais ter de mudar algumas coisas no Makefile como o KDIR e OUTPUTDIR.
E ao executares o make dentro da pasta do gobiserial vai ter de ser desta forma:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
Se tiveres algum problema diz.
PS -> Eu não tenho essa placa nem algo parecido mas dei-me ao trabalho de compilar o uboot e o kernel e o modulo da gobiserial e só tive problemas com a linha 625 tive este erro:
/home/zedlav/gobiserial-master/GobiSerial/GobiSerial.c:625:16: error: ‘struct usb_device’ has no member named ‘reset_resume’
Tive de resolver com:
#ifdef CONFIG_PM
// Unless this is PM_EVENT_SUSPEND, make sure device gets rescanned
if ((powerEvent.event & PM_EVENT_SUSPEND) == 0)
{
pDev->dev->reset_resume = 1;
}
#endif
Mas como não tenho forma de testar não sei se tem alguma influência na sua execução, ainda procurei na configuração do kernel mas muito por cima para ver se faltava activar alguma coisa para isto não acontecer mas acabei por desistir. Podes sempre falar com quem criou o modulo e submeter este problema.
-
Ok voltei a compilar o kernel mas desta vez com algumas mudanças no .config seguindo este link http://wiki.gentoo.org/wiki/USB_Power_Saving (http://wiki.gentoo.org/wiki/USB_Power_Saving) e depois voltei a compilar o gobiserial tal e qual como está e já não dá erro. Mas volto a dizer não tenho maneira de testar.
-
Só vi o teu post agora.
Ha coisas que referes (parte do kernel) que eu já tinha feito anteriormente e com sucesso, tirando 1 ou 2 pontos...
Amanha vou analisar melhor e fazer e depois dou noticias.
Obrigado uma vez mais.
-
sjd22: envia um sd card ao zedlav que ele coisa-te isso no cartao e pagas-lhe o envelope azul e tens a coisa feita! ;)
-
Hugo: eu quero aprender a fazer... :)
-
Sistemas embebidos = 90% debug + 10% desenvolvimento.
Estás sempre "a partir pedra" :)
Bem, peço desculpa por ser directo e objectivo, mas quem desenvolve com esse rácio com "90% de debug"
devia mesmo mudar de profissão ... quem sabe ir mesmo para pedreiro ou calceteiro, pois de certeza que não
percebe nada do que está a (tentar) fazer.
Abraços,
PA
-
Sistemas embebidos = 90% debug + 10% desenvolvimento.
Estás sempre "a partir pedra" :)
Bem, peço desculpa por ser directo e objectivo, mas quem desenvolve com esse rácio com "90% de debug"
devia mesmo mudar de profissão ... quem sabe ir mesmo para pedreiro ou calceteiro, pois de certeza que não
percebe nada do que está a (tentar) fazer.
Abraços,
PA
Não te levo a mal o comentário porque não me conheces pessoalmente.
Obviamente que o rácio é exagerado, mas muitas vezes o debug de sistemas embebidos não é facil e daí que se perca por vezes mais tempo do que o esperado, principalmente para quem não está habituado a desenvolvimento de baixo nivel que foi o que me pareceu no caso deste tópico.
-
Temos assunto para novo topico :)
O comentario do StarRider li como se fosse dirigido genericamente.
Essas percentagens, exageradas, existem realmente nestes meios amadores (DIY) e na maioria das empresas onde trabalham amadores (por exemplo empresas onde predominam recem licenciados e nao existem seniores ou pessoas com formacao continua)
Normalmente aqui nestas empresas o normal é ver as pessoas "a partir pedra", ou "à martelada", ou "a pregar pregos nos proprios pés".. realmente muito semelhante a profissoes onde se trabalha mais com o esforco fisico do que o esforco mental.
Dependendo dos projecto, existem muitas fases. Aquelas que normalmente nao sao cumpridas, sao as fases anteriores ao desenvolvimento: requesitos e especificacoes, desenho da solucao, etc.
Por outras palavras, as pessoas comecam a fazer o projecto sem saberem (exactamente) o que querem ou o que precisam, sem pensar como tudo vai ser feito.
Muitos dos problemas tambem acontecem, porque ao passarem imediatamente para o desenvolvimento, ao nao pararem na fase de desenho da solucao, nao tiveram oportunidade para ler e reflectir sobre toda a documentacao do que vao estar a usar.
Normalmente anda-se à depois a fazer "debug" a um problema que esta documentado algures. Ou falha-se algo por nao ter sido lido convenientemente a documentacao. (Por exemplo, algo nao dá para funcionar / encaixar com algo)
Por exemplo, a mim ja me aconteceu andar um dia inteiro a "debuggar" o codigo e uma placa, num pino (output) que nao estava a funcionar .. quando depois venho a descubrir que esse pino era apenas input e quem desenhou o hardware nao olhou para isso.
É de atirar aos arames! :)
(e ja veem o que é depois ter de desenhar novamente uma placa.. mandar fazer PCBs novas.. e montagens componentes.. por um problema que mais um pouco de tempo gasto antes de fazer o desenvolvimento nao teria existido)
-
Mais uma dúvida basica de Linux para os experts.
Tenho um modem instalado e identificado pelo comando "lsusb": "Bus 001 Device 003: ID 1199:68a3 Sierra Wireless, Inc."
Pergunta: como sei agora qual a porta USB dele correcta em "/dev/"? Nao tenho lá nenhum /dev/ttyUSB*....
-
Deves ter um ACM, ou meia duzia, ou um COM, ou um HID, não sabes que modo(s) de USB esse modem fala?
-
ja me safei.
esta coisa de ser maquina linux virtual tb tem as suas desvantagens... tenho de andar a passar perifericos do windows para o virtual... e as vezes dá asneira... talvez pq o Windows e os drivers tb é coisa que nc corre mto bem...
ja avancei mais 1 mm :)
-
Se não gostares de máquinas virtuais, podes experimentar o wubi. Permite instalar ubuntu num PC windows sem ter de reparticionar o disco.
-
ja me safei.
esta coisa de ser maquina linux virtual tb tem as suas desvantagens... tenho de andar a passar perifericos do windows para o virtual... e as vezes dá asneira... talvez pq o Windows e os drivers tb é coisa que nc corre mto bem...
ja avancei mais 1 mm :)
O que tas a usar? Eu tenho o Virtualbox com guest addiction.
-
nao, afinal nao estou safo.
preciso de saber em que porta está... como faço isso?
ivitro: eu tb.
-
Isto?
ls /dev/
Ou:
lsusb
-
nao... isso faço eu. Vou explicar melhor.
Faço "lsusb" e obtenho isto:
Bus 001 Device 003: ID 1199:68a3 Sierra Wireless, Inc.
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Agora, para usar o Putty por exemplo, preciso de saber onde está o Sierra Wireless. Onde está no "/dev". Tenho lá uma lista enorme e os ttySx nao sao... e ttyUSBx nem sequer tenho....
No Putty preciso de ir pelo device para conseguir ligar-me a ele.
-
faz dmesg apos ligar o modem.
-
[ 63.764995] usb 1-2: new full speed USB device using ohci_hcd and address 3
[ 64.222067] usb 1-2: config 1 has an invalid interface number: 7 but max is 5
[ 64.222069] usb 1-2: config 1 has no interface number 5
[ 64.235152] usb 1-2: New USB device found, idVendor=1199, idProduct=68a3
[ 64.235154] usb 1-2: New USB device strings: Mfr=3, Product=2, SerialNumber=4
[ 64.235156] usb 1-2: Product: MC7710
[ 64.235157] usb 1-2: Manufacturer: Sierra Wireless, Incorporated
[ 64.235158] usb 1-2: SerialNumber: 358178042223927
[ 64.235214] usb 1-2: configuration #1 chosen from 1 choice
[ 64.236883] usb 1-2: can't set config #1, error -32
dá um errozito no final... será disso?
-
Era suposto criar uma porta serie virtual?
Por esta linha:
[ 63.764995] usb 1-2: new full speed USB device using ohci_hcd and address 3
parece que ele está mais virado para o HCI.
Se for porta série, já procuraste por ttyACM* no /dev/?
-
segundo o manual era suposto ficar em ttyUSB3.
ACM nao tem nada.
-
Se não gostares de máquinas virtuais, podes experimentar o wubi. Permite instalar ubuntu num PC windows sem ter de reparticionar o disco.
e com isso, tens o ubuntu durante o windows? n se fica com dual booting ou é tipo uma virtual machine?
-
Dual booting, mas sem ter de reparticionar o disco como disse, e quando já não precisares mais desinstalas no windows como outra aplicação qualquer e recuperas o espaço do disco todo.
-
Tambem não é dificil re-dimensionar uma partição, é só ir a Disk Management e fazer shrink, não é preciso nenhum programa extra, e é seguro, e bastam 10-15Gb para um linux que seja para brincar.
-
... a minha luta continua... :)
Tenho agora instalado o Debian 6.0.6 kernel 2.6.32-5-686... mas ja me aconselharam a actualizar o kernel para a versao mais recente para ultrapassar a questao das USB's...
alguem conhece assim um tutorial para leigos como eu que ensine step by step a actualizaçao do kernel?