Subir Script.

Fórum para discussão sobre Linux para processadores ARM

Moderadores: 51, guest2003, Renie, gpenga

Subir Script.

Mensagempor fabim » 03 Dez 2014 13:14

Pessoal, o Miguel esta me ajudando conforme o tempo disponível dele, e estou dividindo meu estranho aprender aqui também.

Eu quando digo que vou colocar um script para rodar no uClinux, pode ser um source-code em sintaxe-X, pode ser um script BASH.

Estou com muita dificuldade para entender a LOGIA, nesta mecânica.

Como ele é executado, ele é compilado ?
Tem que existir algo no /bin para rodar isto ?

ETC ETC ETC.

Alguém pode me ajudar a entender mais mió ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor xultz » 03 Dez 2014 14:21

Um script em bash é executado pelo programa /bin/bash, que é o mesmo que está rodando o prompt onde você vai executar o script bash. Ou seja, você precisa do bash para ter a linha de comandos onde executa um script em bash.
Se teu script foi feito de forma caprichada, vai ver que a primeira linha tem escrito:
#!/bin/bash
toda linha que começa com # é um comentário em script, porém esta é uma exceção, e você diz pro S.O. o que ele deve usar para executar aquele script. No caso, o bash. Alguns scripts usam #!/bin/sh e se você procurar, vai encontrar um link simbólico chamado sh que aponta para o... /bin/bash.
Existem outros shells além do bash, que possuem sintaxes diferentes, e se quiser você pode rodar um script que deve ser executado pelo tsh (por exemplo) a partir do bash, se a linha for #!/bin/tsh.

Isso tudo eu puxei da memória, porque fazem uns 10 anos que não faço um shell script, e eu só fiz scripts usando a sintaxe do laço for que o polesapart me ensinou, prá baixar grandes quantidades de fotos de mulher pelada de sites mal feitos. Ou seja, como minha memória é de formiga, pode ser que esteja tudo errado.

Ah, e se não tiver #!/bin/bash na primeira linha? Ele executa com o shell de onde está sendo chamado, no caso o... /bin/bash.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: Subir Script.

Mensagempor fabim » 03 Dez 2014 15:00

Bem supondo que os seus 3% estejam errados.
Na API daquela distro, informa que as funções de configuração de IO, acesso, interfaces de comunicação, etc já estão implementadas.
Pensando de forma simbólica, no exemplo pelo terminal o cara usa um simples echo encrevendo 1 ou 0, de forma a espelhar isto nos ports, ou escrever ou ler pela I2C etc.
Enfim, se eu estou correto em pensar desta forma, ao invés de eu criar um executável e cross compila-lo-ei, para aquele target, utilizando bibliotecas de acesso a hw etc.
Posso-ei-lho-ei, fazer este mesmo projeto que seria um executável cross compilado, em bash no exemplo, e caso seja necessário apenas alterando este arquivo texto dito BASH, já seria uma pessoa feliz !!?

Estou correto ? meio, ou zomeno ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor xultz » 03 Dez 2014 15:47

Acho que menos que zomeno.
Primeiro que um script shell (seja ele para bash, ou qualquer outro shell) não é compilado, é interpretado. Pense num arquivo do DOS .bat, mas com lasers e capacidade de voar mesmo em dias de chuva. Um shell script é só isso.
Ah, mas e como faz prá ele acessar a porta I2C, que comando uso? Sei lá, eu acho improvável que ele consiga. O que pode fazer é o seguinte: escreve um programa em C, que acessa a API do kernel para acessar o hardware. Por exemplo, eu faço um programa em C que recebe um parâmetro, que pode ser 0 ou 1. O protótipo da função main é int main(int argc, char ** argv), e se eu executar o programa (que se chama xubiduba.c) com ./xubiduba 1 ele colocar uma GPIO em alto e liga um led, e se executar como ./xubiduba 0 ele apaga o led. O shell script pode ter uma lógica qualquer que executa xubiduba 1 caso aconteça uma coisa, e xubiduba 0 caso aconteça outra. Este é só um exemplo. O script pode executar um segundo programa, e conforme o retorno do programa (que é o return da função main), ele executa xubiduba 0 ou xubiduba 1, e assim por diante.
A questã aqui é: o xubiduba.c tem que ser compilado para a plataforma na qual ele vai rodar. O shell script não, ele é interpretado, e não executado.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: Subir Script.

Mensagempor fabim » 03 Dez 2014 16:05

HUM !!!
HUM !!!
HUM !!!
Hora pois, pois, 12:00 !!

Acho, que, eu, possa estar mais confuso agora.

No Linux, tudo é texto, e arquivo ?!?"duas duvidas para uma afirmação".
Se crio um device driver para fazer lulu latir, e o parâmetro para tal é '1' ou '0', e estes exemplos toscos de mini2440, beagle-bone, HLK-RM04, "TENHO AS TRÊS".
Estes exemplos dizem o seguinte, via terminal, "echo 1 /dev/port1" liga led, "echo 0 /dev/port1" desliga led.
Como você explicou, o BASH é a automação de escritas como se estive no terminal OK !?, se eu implementar dentro deste arquivo texto que será interpretado pelo BASH um loop infinito, com a mesma lógica que usaria em C para rodar determinada aplicação, utilizando-se leitura e escrita em ports etc, FUNCIONARIA OK ?
Ou não, o BASH tem só uma lanterninha ao invés de laser, e feito de papel e não pode voar a chuva.
Sendo assim, para aquela plataforma, tenho que possuir o toolchain, e cross compilar mesmo, pois etc e tals ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor xultz » 03 Dez 2014 16:33

Cara, é e não é.
Poderia fazer um script em bash em loop infinito rodando uma aplicação? Poderia. Eu faria assim? Não. Um script geralmente tem uma série de comandos, com algumas decisões if-else, pode ter loops, mas geralmente eles executam uma série de comandos e encerram.
No caso da Beaglebone, ele tem uma parada ligeiramente diferente (na verdade, diferente prá baralho) chamado bonescript. Esse bonescript é uma biblioteca para o node.js que executa programas em javascript fora de um browser. É, eu sei, eu levei mais ou menos uma semana prá entender essa salada de letras aí. No causo do bonescript e do node.js, é possível criar aplicações prá lá de bacanas em javascript e rodar nele. O legal é que além do bonescript, tem uma penca enorme de outras bibliotecas prontas pro node.js, principalmente para fazer dele um servidor de páginas web. O problema é que o javascript é uma linguagem absurdamente esquisita, principalmente prá mim que pensa que alto nível é C e orientação ao objeto é a coisa mais nebulosa do mundo. O javascript consegue ser muito mais abstrato que a orientação ao objeto.
De qualquer maneira, semana passada fiz uma brincadeira que ficou legalzinha, pruma matéria da faculdade. O professor queria que a gente fizesse um middleware, que no entendimento dele, é um programa em um computador se conectar a outro programa em outro computador, que lê informações de um terceiro computador rodando um terceiro programa. O terceiro computador era uma beaglebone black, com um circuito supersensacional que eu mesmo projetei e montei e que tinha um led e um potenciômetro. O led é LPAJ (luzinha prá agradar jacu), e o programa eu fiz em javascript que fazia leitura do A/D onde conectei o potenciômetro. E esse programa ficava escutando numa porta, por meio da biblioteca socket.io.
O computador do meio eu rodei outro node.js, e fiz um programa que ficava lendo via socket.io o potenciômetro da Beaglebone, e abria uma porta rodando http prá servir uma página em html que eu fiz.
O primeiro computador acessava o computador do meio, que recebia a página, que continha somente uma imagem bem no centro de um knob de potenciômetro. E também na página tinha um script em javascript que via socket.io se conectava ao computador do meio e lia o valor do potenciômetro lido da Beaglebone, e atualizava o css da página fazendo o knob girar.
O resultado dessa lambança toda: você rodava o knob do potenciômetro, e na mesma hora o knob girava na tela do browser. Deu um trampo enorme, mas ficou bem legalzinho.
Desde então estou tentando aprender esse raio dessa linguagem javascript.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: Subir Script.

Mensagempor fabim » 03 Dez 2014 16:47

Cara, então, eu penso no seguinte.
As coisas mudam, sei disso, mas:
Linux continua sendo melhorado, acrescido funções, etc, em C/C++.
Eu desenvolvo tudo em C/C++, etc.
Então vou continuar, no C/C++.
Java é coisa criada pelo satã, e horas vagas, para infernizar a vida de pessoas que não gostam de ter preguiça !!
Em suma, tenho que cross compilar mesmo.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor denis » 04 Dez 2014 06:52

xultz,

Eu acho que ele está querendo utilizar os comandos para acessar a I2C, GPIO via shell. Eu já vi isso no Raspberry mas eu não sei se isso vem no BSP ou já vem compilado no Kernel.

Se você está acostumado com C e que fazer isso dentro do seu programa, dá pra usar o comando [b]popen()[/b] ou [b]system()[/b].


abs,
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Re: Subir Script.

Mensagempor fabim » 04 Dez 2014 07:24

Então, isto isto !!
Estou com dificuldade na logia empregada !!
1° -Quando estou no desktop, eu programo PARA um frame-work, ou seja, posso até usar C++, C#, ou java que seja.
Mas, eu utilizo tal frame-work !!
2° - Ou, não uso frame-work, e uso um Borland c++, devc++, etc para gerar um executável.

Usando uma analogia, eu creio que o BASH seria algo para o primeiro item, ou seja o executável /bin/bash vai interpretar o arquivo texto, fazendo a automação do que eu faria em um terminal, sendo assim, eu programo para o BASH enxergando-o como frame-work, vide analogia.
Eu cruzar uma compilação de um arquivo com um toolchain, o qual foi criado para a plataforma alvo ARM, X86,... esta para o item 2. Mas, para que meu EXECUTAVEL funcionar naquele determinado alvo, é necessário conhecer as bibliotecas disponíveis, como o HW é acessado por exemplo, se já existem os drivers dos periféricos, se estes são acessados por usuário ou sistema. Com base nisto, eu uso aquela(?) biblioteca do kernel para ler e escrever nos drivers baseada se é usuário ou sistema.

Bem, como as coisas evoluíram, eu creio que exista a terceira opção, a qual seja a correta, e eu possa estar imaginando como a roda gira de forma incorreta !
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor fabim » 05 Dez 2014 07:21

Abaixo a repressão !!!
XUXU diga-vos ó !!
Faz-me saber !!

Estou certo errado, etc ?
Porque nada que eu faço da certo RSRRSRS
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor xultz » 05 Dez 2014 09:23

Fábio, a coisa mais difícil na verdade é entender o que realmente você precisa.
Qual é a situação em que teu projeto vai rodar, que tipo de programa você pretende fazer, em que dispositivos pretende que ele rode?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: Subir Script.

Mensagempor fabim » 05 Dez 2014 09:42

BASICAMENTE.
1°- tenho uma plaquinha com o openWRT HLK-RM04.
Tem I2C, 12 GPIO.
Quero fazer um carrinho da hora.

2° - tenho uma beagle-bone black, quero fazer um controlador dedicado para minha CNC. Peguei um projeto muito bem feitinho para XYZ, gráfico muito legal, etc. e quero aprender a acessar os IOS para controlar os steppers, etc.

no 1°, não quero ficar crosscompilando, quero mudar campos num script, e ir acertando.
no 2°, o céu é o limite, cross compilado ou não, pois pelo que vi, da para compilar o executável no próprio beagle-bone, e já botar pra rodar, criar os device drives etc..

Veja que nas duas aplicações, a LOGIA é diferente !!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor xultz » 05 Dez 2014 10:27

Bom, vamos lá.
Quanto ao primeiro caso, eu realmente sou um completo jumento em se tratando de openWRT, tudo que eu sei é que é um bagulho feito prá fazer roteadores. Ou seja, eu não sei nada mesmo. Então eu não sei como se comporta o ambiente, que recursos ele provê, etc.

No segundo caso, a BeagleBone é uma CPU super bacana. Ela vem com uma distribuição de Linux chamada Angstrom, que possui várias coisas bacanas, incluindo o compilador gcc, o node.js e uma IDE via web chamada Cloud9. Desta forma, você pode se logar na BeagleBone Black (também chamada de BBB) via ssh. Se você ligar a BBB na porta USB do teu computador e você estiver um bom SO no computador (seja ele Ubuntu, seja ele MacOS), ele vai criar uma porta de rede do éter e dar o IP 192.168.7.2 prá BBB e 192.168.7.1 pro teu computador. Se estiver usando Windows, tem que instalar um driver sei lá qual que nunca testei. Porém, se ligar a placa numa fonte de 5V e cabo de rede, tem que descobrir qual IP ela ganhou e acessar através deste IP.
Daí você pode acessar a placa via ssh no ip 192.168.7.2 (ou o IP que ela ganhou pelo cabo de rede), e logar como root e senha em branco. Aí você está dentro do Linux da BBB, pode abrir um editor de texto vim e escrever um fantástico programa em C e compilar ali mesmo com o gcc. Ou pode escrever no teu computador e transferir o arquivo .c via scp e compilar na BBB. Ou coisa parecida. A questã é que prá acessar o hardware tem que usar device-tree, que nunca usei.
Outra forma de programar é usando o node.js e escrever teu programa em javascript e usar a biblioteca bonescript, que tem funçõezinhas de alto nivel prá mexer no hardware. O F*** é aprender javascript.
Se decidir partir pro javascript, pode acessar a IDE Cloud9, abrindo um navegador no teu computador (use o chrome que funciona), e acesse 192.168.7.2:3000 e vai aparecer uma IDE supersensacional, onde você cria teus arquivos .js e executa ali mesmo, é muito bacana mesmo.
Como eu não sei como é esse programa da CNC que você pretende usar, não tenho como dar muitas opiniões a respeito. Também não sei que tipo de interface pretende usar, tipo uma placa de display gráfico, ou vai ligar num monitor via HDMI.

E também não consegui entender o que você quer dizer com "LOGIA".
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: Subir Script.

Mensagempor fabim » 05 Dez 2014 10:52

http://pt.wiktionary.org/wiki/-logia

A logia, é um termo utilizado quando o cabra não tem preguiça.
Ao invés de utilizar a IDE do Arduino, e jamais descobrir o que acontece pro LED piscar, ficando totalmente abstraído de tudo que acontece até ver o LED piscar.
O fantástico entusiasta arregaça as mangas, e, abre datasheet, olha códigos fontes em baixo nível, baixa user manual's, acessa fóruns excelentes com pessoas excelentes para solicitar ajuda.

E descobre a LOGIA empregada, desde digitar um texto em um editor qualquer, e o uC/uP fazer algo que antes era um texto e apenas existente em sua mente, agora ser algo que funciona no mundo real.
A descoberta da LOGIA empregada em determinada área, deu a este entusiasta a capacidade de criar, descobrir possíveis falhas, e interpretar outras áreas que a mesma LOGIA é empregada.
Vulgo projetistas, desde que tenham este perfil, são sabiamente utilizados para enriquecer empresas, pois estes por sua vez perdem a sua vida toda em busca de conhecimento, que não comportam outros como por exemplo, lidar com
pessoas, administrar finanças, criar cara de malandro e lábia para com clientes, etc.

Por assim dizer.

Subir script, é algo que no momento apenas esta em minha mente, e sou usado para enriquecer empresas.

E nas horas vagas, eu desligo totalmente de projetos eletrônicos, e uso apenas projetos prontos de terceiros, usando apenas conectores com chave fenda ou cruzada, e fios para fazer funcionar !! rs

Me expliquei melhor XUXU ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Subir Script.

Mensagempor xultz » 05 Dez 2014 12:22

Podecrê...
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Próximo

Voltar para Linux / uCLinux ( ARM ) / UNIX

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x