INÍCIO > Fórum > obsoleto > SlimLine (Linux) > Como escrever meu primeiro programa "HelloWorld"
- Este tópico tem 6 respostas, 3 participantes e foi atualizado pela última vez 11 anos, 6 meses atrás da Sergio Bertana.
-
autorPublique
-
Abril 21, 2012 em 8: 02 am #35204Sergio BertanaAdministrador do fórum
o módulo CPU SlimLine Linux é baseado em um módulo Computer on Modules (CoMs) produzido por Karo. É fornecido por nós com o sistema operacional já pré-instalado Linux embutido - kernel 2.6.31 karo-axel com busybox, bash e vários aplicativos e nenhum gerenciador gráfico Linux. Na inicialização o sistema executa o gerenciador de inicialização redboot que instala o kernel do Linux.
Conecte um programa de emulação de terminal serial (Exemplo Toolly no Windows ou no Putty no Linux), configurou um 115200, e, 8, 1 à porta serial COM0 do módulo da CPU SlimLine. Quando o módulo é ligado no terminal é possível ter um relatório das operações realizadas durante a inicialização. Você verá algo como:
RedBoot> fis load linux
..
Uncompressing Linux………………………………………………………………………………………………………. done, booting the kernel.
Linux version 2.6.31 (gcc version 4.4.1 (GCC) ) #7 PREEMPT Wed Nov 30 10:48:25 CET 2011
CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177
…Se a placa estiver conectada à rede ethernet e um servidor DHCP estiver presente na rede, o módulo solicitará a concessão de um endereço IP do servidor e se configurará com o IP atribuído. Para saber o IP é necessário visualizar todas as informações retornadas da porta serial e buscar aquelas referentes ao DHCP. Teremos algo como:
dhcpcd[1150]: eth0: broadcasting for a lease
dhcpcd[1150]: eth0: offered 192.168.0.86 from 192.168.0.1
dhcpcd[1150]: eth0: acknowledged 192.168.0.86 from 192.168.0.1
dhcpcd[1150]: eth0: checking for 192.168.0.86
dhcpcd[1150]: eth0: leased 192.168.0.86 for 86400 secondsPortanto, neste ponto, podemos abandonar a conexão serial e acessar nosso módulo da rede ethernet no endereço atribuído (no exemplo, é 192.168.0.86). Em todas as energizações subsequentes, o módulo sempre receberá o mesmo endereço IP do servidor DHCP.
Abril 21, 2012 em 8: 41 am #37226Sergio BertanaAdministrador do fórumPara o desenvolvimento dos programas é necessário utilizar um PC Linux (máquina virtual VMware fornecida por Elsist) ou qualquer PC Linux com todos os aplicativos necessários instalados. A partir de um shell de comando é possível conectar em Telnet com o cartão simplesmente digitando Telnet seguido do IP, você será conectado à interface de comando do cartão (Screenshot) Com o comamdi ls você pode executar a listagem do diretório atual e com o comando data do cd você pode ir para o diretório dados, para onde nosso primeiro programa será transferido.
Para a implementação do programa, usamos codelite, um IDE de plataforma cruzada de código aberto para C / C ++. O programa é a clássica impressão de cordas Olá mundo. Fornecemos um projeto CodeLite com os arquivos fonte, basta compilá-lo para que o arquivo esteja no diretório Debug helloworld para ser transferido para a CPU SlimLine (Download do projeto).
Para a transferência é necessário utilizar qualquer cliente FTP (Exemplo FileZilla), mas em nosso projeto de exemplo configuramos o CodeLite para realizar a transferência através do próprio Ftp no final da compilação do projeto. Ao clicar com o botão direito do mouse no nome do projeto e selecionar Configurações, a janela de configurações se abrirá; no comando Pós-Build o comando Ftp do arquivo executável na CPU é invocado no endereço IP definido no diretório de dados (Screenshot).
Abril 21, 2012 em 9: 18 am #37227Sergio BertanaAdministrador do fórumConcluída a transferência do projeto para a CPU SlimLine do Telnet é possível verificar se o arquivo executável foi realmente transferido para o diretório de dados do sistema e possui todos os atributos de execução necessários para ser executado. Com comando ls -l você pode ver os atributos do arquivo e, possivelmente, com o comando Chmod 777 HelloWorld você pode atribuir atributos de execução.
Neste ponto, digitar ./HelloWorld seguido pelo retorno, o programa é executado e a escrita hello world retornou do sistema (Screenshot).
Junho 13, 2012 em 7: 59 am #37370StephenparticipanteOk, atéhelloworld parece claro para mim ... Então, onde posso encontrar documentação / tutoriais / manuais específicos relacionados à programação em "C" para o módulo ARM9? Não estou me referindo tanto à programação em "C", mas às bibliotecas a serem utilizadas para operar com entradas / saídas?
É possível testar algo com algum emulador ou eu necessariamente preciso ter o módulo de CPU físico para fazer alguns experimentos? Estava a avaliá-lo para utilizar em domótica (a minha casa) e apesar de estar bastante familiarizado com Linux / Redes / ... PLCs lembro-me de algo do LADDER e é isso e por isso estava mais inclinado para a solução "Aberta".
Agosto 10, 2012 em 1: 56 pm #37371Sergio BertanaAdministrador do fórumEstamos prosseguindo com a elaboração da biblioteca de suporte do sistema SlimLine, a biblioteca chamada "eSLLinuxLib”Atualmente está disponível em beta. Criei um projeto simples com CodeLite para gerar um executável, que usando a biblioteca (fornecida com o projeto) permite gerenciar o I / O lógico no barramento de expansão.
O exemplo com um menu simples de comandos do telnet permite que você leia as entradas lógicas, ative as saídas lógicas e ative um thread para gerenciar o piscar de uma saída lógica (Download do programa fonte).
Infelizmente não há emulador de hardware, então você precisa do módulo de CPU para testar o programa SlimLine ARM9 (Linux Aberto).
Outubro 10, 2012 em 10: 53 am #37441AnônimoinativoGostaria de saber se existe uma biblioteca para gerenciar tanto RTU quanto TCP Modbus. Eu vi que existe a definição da função que calcula o CRC dos pacotes modbus, mas não encontrei documentação sobre como estabelecer um diálogo modbus.
Também gostaria de saber se a implementação do gerenciamento analógico de IO está planejada.
Outubro 10, 2012 em 2: 12 pm #37442Sergio BertanaAdministrador do fórumExiste uma biblioteca de utilidades ElSLUtility (Código SFR069 ****) onde você pode encontrar a classe CModbus para o gerenciamento do servidor modbus, a classe suporta o modbus Ascii, o modbus RTU e o modbus OverIP.
Quanto ao gerenciamento analógico na biblioteca ElSLLinux (Código SFR064 ****) você pode encontrar as funções apropriadas para o gerenciamento de módulos analógicos.
-
autorPublique
- Você deve estar logado para responder a este tópico.