octavio rainha Postado Setembro 26, 2019 em 20:57 Compartilhar Postado Setembro 26, 2019 em 20:57 Há um tempo comprei um daqueles controles genéricos usb para computador e fiquei interessado em saber como funcionava a comunicaçao do controle com o computador, resolvi que a melhor maneira de ver na prática seria escrever um driver. Sou novo no kernel linux, e a pouca documentaçao q achei pelo q eu vi parece datada (tanto pq alguns codigos de exemplos nem dá pra dar insmod sem erros). A pergunta, tem alguma doumentaçao mais moderna ou algo que eu nao deveria deixar de ver sobre driver e modulos linux, para conseguir escrever meu primeiro driver pra valer? Tbm tenho interesse em saber um pouco mais sobre kernel e syscalls(tem a ver com os modulos né). Os livros que eu estou lendo no momento( e penando um pouco tentando entender oq é novo e nao se usa mais e atualizar os exemplos que nao rodam mais). http://tldp.org/LDP/lkmpg/2.6/html/index.html (daqueles exemplos classicos de documentaçao sobre algo em computaçao, alguem que sabe mto resolve escrever um livro em html). https://lwn.net/Kernel/LDD3/ (sei que é uma boa fonte mas tmb sei que esta datado, e pelo q pesquisei nao existe pretensao em escrever a quarta ediçao). Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Setembro 27, 2019 em 21:39 Compartilhar Postado Setembro 27, 2019 em 21:39 Em que ponto você está, Octavio? Já rolou um "hello, world"? O que não tá funcionando? Não conheço nada super atualizado, mas podemos de repente fazer algo e até gerar um artigo, mantendo-o atualizado, sei lá. Abraço! Link para o comentário Compartilhar em outros sites More sharing options...
octavio rainha Postado Setembro 28, 2019 em 22:41 Autor Compartilhar Postado Setembro 28, 2019 em 22:41 Em 27/09/2019 em 18:39, Fernando Mercês disse: Em que ponto você está, Octavio? Já rolou um "hello, world"? O que não tá funcionando? Não conheço nada super atualizado, mas podemos de repente fazer algo e até gerar um artigo, mantendo-o atualizado, sei lá. Abraço! Um "hello world"ja rolou sim , tive quase nenhum problema em atualizar as "novas boas práticas" de programaçao de modulo tipo declarar o fops e usar module_init e exit ao invés de init e cleanup_module em uns drivers (básicos) pra device de caracter (tipo o chardev.c de exemplo aqui http://tldp.org/LDP/lkmpg/2.6/html/x569.html e os exemplos mais pra trás no livro tbm). As minhas dúvidas e oq eu to tentando entender acho que sao um pouco mais "estruturais" do tipo, entender melhor como funciona o "filp" (o struct file pra representar um device no kernel) na prática, entender a diferença entre .read e o .open do "fops " (eles nao deveriam ser a mesma coisa?!), como o kernel sabe que é pra chamar a .read quando eu leio de um device file?, acho que os diretorios do file system do linux tbm pq nao acho que entendi o próposito de escrever um módulo que cria um file em /proc e esse foi um dos exemplos que eu nao consegui atualizar e fazer com q o "Make" funcionasse sem erros (o exemplo procfs1.c aqui http://tldp.org/LDP/lkmpg/2.6/html/x710.html). Acho interessante a ideia de um artigo pq pelo menos oq eu achei alem de estar datado está em ingles. Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Setembro 28, 2019 em 23:07 Compartilhar Postado Setembro 28, 2019 em 23:07 A coisa não mudou muito da versão 2.6 para cá, mas a documentação é MUITO grande, prepare-se: https://www.kernel.org/doc/html/latest/driver-api/index.html Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Setembro 30, 2019 em 14:48 Compartilhar Postado Setembro 30, 2019 em 14:48 Em 28/09/2019 em 19:41, octavio rainha disse: nao acho que entendi o próposito de escrever um módulo que cria um file em /proc O /proc é um sistema de arquivos virtual para os usuários consultarem informações do kernel e também dar instruções a ele, sem a necessidade de reiniciar o sistema. Por exemplo, dá pra habilitar roteamento (/proc/sys/net/ipv4/ip_forwarding) ou consultar informações do processador (/proc/cpuinfo), processos em execução, etc. Como programar um módulo é como se fosse extender o kernel, é bem útil que tal módulo escreva no procfs e também leia parâmetros de lá. ;) Tentei compilar rapidinho num kernel 5.x e também não rolou, mas não consigo parar agora para verificar. De fato, tem um trabalho a ser feito aí! Abraço! Link para o comentário Compartilhar em outros sites More sharing options...
octavio rainha Postado Outubro 1, 2019 em 18:38 Autor Compartilhar Postado Outubro 1, 2019 em 18:38 Em 28/09/2019 em 20:07, fredericopissarra disse: A coisa não mudou muito da versão 2.6 para cá, mas a documentação é MUITO grande, prepare-se: https://www.kernel.org/doc/html/latest/driver-api/index.html É.. acho que eu preciso de um pouco mais de preparo, mas obrigado pelo link mesmo assim. Link para o comentário Compartilhar em outros sites More sharing options...
octavio rainha Postado Outubro 1, 2019 em 18:45 Autor Compartilhar Postado Outubro 1, 2019 em 18:45 Em 30/09/2019 em 11:48, Fernando Mercês disse: O /proc é um sistema de arquivos virtual para os usuários consultarem informações do kernel e também dar instruções a ele, sem a necessidade de reiniciar o sistema. Por exemplo, dá pra habilitar roteamento (/proc/sys/net/ipv4/ip_forwarding) ou consultar informações do processador (/proc/cpuinfo), processos em execução, etc. Como programar um módulo é como se fosse extender o kernel, é bem útil que tal módulo escreva no procfs e também leia parâmetros de lá. ? Tentei compilar rapidinho num kernel 5.x e também não rolou, mas não consigo parar agora para verificar. De fato, tem um trabalho a ser feito aí! Abraço! Interessante, sabia da parte de log do kernel no procfs mas nao q dava pra dar instruçoes por ele. Fiquei interessado em consertar e atualizar os exemplos do livro e posso postar aqui ou talvez ate em um topico novo( talvez até mandar pra quem publicou o livro). Valeu, Mercês. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.