LusoRobótica - Robótica em Português

Sistemas específicos => ARM => Tópico iniciado por: Addax em 28 de Abril de 2015, 14:35

Título: Iniciar-me em ARM
Enviado por: Addax em 28 de Abril de 2015, 14:35
Boas,
Já programei diversos microcontroladores (microchip) mas agora quero-me iniciar nos ARM e preciso da vossa ajuda.

Eu tenho o seguinte hardware:
-STM32F4Discovery (STM32F407 + DA-STF4BB), http://www.timll.com/chinese/ST/image/devkit407.jpg (http://www.timll.com/chinese/ST/image/devkit407.jpg)
-ST-LINK/V2

Por onde devo começar?
Necessito de mais algum hardware?
Qual o IDE que devo utilizar para programar em C?
Qual é o compilador?

Cump
Título: Re: Iniciar-me em ARM
Enviado por: metRo_ em 28 de Abril de 2015, 14:41
Segue este livro, nao usa a mesma placa que tu mas acho que facilmente te adaptas http://www.cs.indiana.edu/~geobrown/book.pdf (http://www.cs.indiana.edu/~geobrown/book.pdf)
Título: Re: Iniciar-me em ARM
Enviado por: senso em 28 de Abril de 2015, 15:07
Que sistema operativo usas?
Um IDE simples de usar, free, sem limtações, CooCox, instalas, vais buscar o compilador oficial ao site da ARM, feito.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 28 de Abril de 2015, 15:18
Que sistema operativo usas?
Um IDE simples de usar, free, sem limtações, CooCox, instalas, vais buscar o compilador oficial ao site da ARM, feito.
Windows.
Obrigado pelas respostas
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 28 de Abril de 2015, 15:20
wat? tentei postar algo e deu-me endereço blacklisted?
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 28 de Abril de 2015, 15:23
Não vou escrever tudo o que escrevi e falhou por sei lá o que...


Eu uso o IAR workbench com as placas discovery da ST, é um pouco complicado de começar mas oferece várias ferramentas muito boas. Há uma versão gratis com limite de 32KB de código.
O eclipse é gratis e também gosto muito, nunca usei com essas placas mas há um plugin da IAR para permitir usar o compilador e debugger do IAR. Também podes sempre usar o GNU ARM no eclipse.

De bibliotecas da ST, se quiseres usar em vez de andar em CMIS e cenas de mais baixo nivel, há agora o STM32Cube. É mt fixe, tem gerador de código de inicialização gráfico.
Prefiro as bibliotecas antigas, peripheral driver library, por ter sido muito mais testada, é de maior conhecimento dos utilizadores e por motivos pessoais.

Espero que tenha ajudado.
Título: Re: Iniciar-me em ARM
Enviado por: Sérgio_Sena em 28 de Abril de 2015, 15:37
Ha tambem os EFM32 da Silabs, de M0+ a M4F.

O IDE eh em ambiente Eclipse com Peripheral Configurator e Energy Measurements On-the-Fly.
Nao tem limite de codigo.

Os Kits andam ah volta dos ~£30 e tambem permitem programacao de chips externos.
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 28 de Abril de 2015, 15:46
Se é para sugerir chip eu digo Tiva :p

Mas não, acho que para ARM a ST é uma aposta muito boa, tem tantas familias desde mais baratos, a low power (agora se são mesmo low não sei) até ARMs-M4 de 180Mhz (e no futuro possivelmente ARM-M7).
Alias eu aconselhava-te era teres começado com esta placa por ser muito mais simples em vez de ires logo para M4s gigantes e é bué barata:
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF253215?sc=internet/evalboard/product/253215.jsp (http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF253215?sc=internet/evalboard/product/253215.jsp)

Ou até mesmo esta por ter incluido na placa varios LEDs, 2 botões, um gyroscope e 4 sensores capacitativos:
http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF259724 (http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF259724)

E nenhum destes compro por mais de 12€
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 28 de Abril de 2015, 15:58
Antes de mais obrigado a todos pelas respostas.
Por agora penso que vou ficar pela STM32F4Discovery e partir pedra por aqui.. se não conseguir logo vejo se retrocedo para uma mais simples.

junto com o ST-Link/v2 vinha um flyer a falar do TrueStudio for ARM. este IDE não é hipotese em relação ao que falaram? Quais as desvantagens?
Título: Re: Iniciar-me em ARM
Enviado por: Njay em 28 de Abril de 2015, 15:59
Eu sou suspeito porque vendo o "prototyping kit", mas de qualquer maneira se as tuas ambições couberem num core de 48MHz (ou 80MHz, agora numa versão melhorzinha mas tb mais cara), vai directo ao que "é bom": PSoC4 (ou PSoC5, mas mais caro). Podes comprar a placa de desenvolvimento Pioneer por uns 35€ (penso que inclui debugger), ou apenas o prototyping kit por uns 5€ (preços comprando lá fora). O ambiente de desenvolvimento e todo o conceito é abismalmente bom e sem restrições do IDE ou de utilização comercial dos projectos desenvolvidos, e o chip inclui alguns periféricos analógicos (comparadores de tensão, ampops) e alguma lógica programável.
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 28 de Abril de 2015, 16:04
btw njay, os ARM psoc da Cypress vs os teus da Pionner? Algum comentário?
Título: Re: Iniciar-me em ARM
Enviado por: metRo_ em 28 de Abril de 2015, 16:15
Ha tambem os EFM32 da Silabs, de M0+ a M4F.

O IDE eh em ambiente Eclipse com Peripheral Configurator e Energy Measurements On-the-Fly.
Nao tem limite de codigo.

Os Kits andam ah volta dos ~£30 e tambem permitem programacao de chips externos.

Qual e' o custo do IDE e e' possivel usar o gnu arm ou e' tambem necessario pagar pelo compilador?
Título: Re: Iniciar-me em ARM
Enviado por: Sérgio_Sena em 28 de Abril de 2015, 16:23
Ha tambem os EFM32 da Silabs, de M0+ a M4F.

O IDE eh em ambiente Eclipse com Peripheral Configurator e Energy Measurements On-the-Fly.
Nao tem limite de codigo.

Os Kits andam ah volta dos ~£30 e tambem permitem programacao de chips externos.

Qual e' o custo do IDE e e' possivel usar o gnu arm ou e' tambem necessario pagar pelo compilador?


O custo do IDE, compilador, e todos os gadjets associados eh gratuito.


Título: Re: Iniciar-me em ARM
Enviado por: metRo_ em 28 de Abril de 2015, 16:49
Ha tambem os EFM32 da Silabs, de M0+ a M4F.

O IDE eh em ambiente Eclipse com Peripheral Configurator e Energy Measurements On-the-Fly.
Nao tem limite de codigo.

Os Kits andam ah volta dos ~£30 e tambem permitem programacao de chips externos.

Qual e' o custo do IDE e e' possivel usar o gnu arm ou e' tambem necessario pagar pelo compilador?


O custo do IDE, compilador, e todos os gadjets associados eh gratuito.

Mesmo para fins comerciais?
Título: Re: Iniciar-me em ARM
Enviado por: Njay em 28 de Abril de 2015, 16:53
btw njay, os ARM psoc da Cypress vs os teus da Pionner? Algum comentário?
Humm?? Pioneer é o nome da placa de desenvolvimento da Cypress para PSoC4.

Pioneer (PSoC4)
http://www.cypress.com/?rid=77780 (http://www.cypress.com/?rid=77780)

Prototyping kit (PSoC4)
http://www.cypress.com/?rID=92146 (http://www.cypress.com/?rID=92146)

PSoC Creator (IDE da Cypress para PSoC, gratuito sem restrições)
http://www.cypress.com/psoccreator/ (http://www.cypress.com/psoccreator/)
Título: Re: Iniciar-me em ARM
Enviado por: Sérgio_Sena em 28 de Abril de 2015, 17:07
Ha tambem os EFM32 da Silabs, de M0+ a M4F.

O IDE eh em ambiente Eclipse com Peripheral Configurator e Energy Measurements On-the-Fly.
Nao tem limite de codigo.

Os Kits andam ah volta dos ~£30 e tambem permitem programacao de chips externos.

Qual e' o custo do IDE e e' possivel usar o gnu arm ou e' tambem necessario pagar pelo compilador?


O custo do IDE, compilador, e todos os gadjets associados eh gratuito.

Mesmo para fins comerciais?



Sim. E tens apoio do fabricante se necessitares.

Eu confirmo, pois estou a usar em fins comerciais.

Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 28 de Abril de 2015, 19:20
Por onde devo começar?
Deves começar por ler as datasheets do MCU que estás a usar, neste caso o STM32F407.

Necessito de mais algum hardware?
Não.

Qual o IDE que devo utilizar para programar em C?
Cump
Aquele que gostares mais. Quais conheces ?

Qual é o compilador?
Cump
Depende do IDE.

Título: Re: Iniciar-me em ARM
Enviado por: Addax em 28 de Abril de 2015, 19:24

Qual o IDE que devo utilizar para programar em C?
Cump
Aquele que gostares mais. Quais conheces ?

Qual é o compilador?
Cump
Depende do IDE.
Não conheço nenhum IDE para ARM nem compilador.
O que aconselhas?
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 28 de Abril de 2015, 19:36

Qual o IDE que devo utilizar para programar em C?
Cump
Aquele que gostares mais. Quais conheces ?

Qual é o compilador?
Cump
Depende do IDE.
Não conheço nenhum IDE para ARM nem compilador.
O que aconselhas?

Boas,

A nível pessoal e profissional uso o Keil ... mas tens também o MikroC para ARM.

Não sei qual o teu nível de conhecimentos, mas o Keil não aconselho se estás a começar,
mas tudo depende do teu empenho, só te posso dizer que é possivelmente a melhor
toolchain para ARM ... e a Keil pertence à própria ARM.

Experimenta o MikroC também.

Abraços,
PA
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 28 de Abril de 2015, 19:59
são ambos gratuitos?
em relação a ARM ainda não tenho conhecimentos. estou a iniciar
Título: Re: Iniciar-me em ARM
Enviado por: metRo_ em 28 de Abril de 2015, 22:21
O keil nao e' gratuito e ou a versao gratis e' muito fraca ou o keil e' muito fraco, nem atalho para ir para a declaracao de uma variavel ou funcao tem? -.-'
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 28 de Abril de 2015, 22:44
O keil nao e' gratuito e ou a versao gratis e' muito fraca ou o keil e' muito fraco, nem atalho para ir para a declaracao de uma variavel ou funcao tem? -.-'

Boas,

Fraco ?? Vai lá vai :) ... faz rightclick em cima do nome da var/func no editor e tens duas
opções para esse fim: "Goto Definition" e "Goto Reference"

Não subestimes o poder do Keil e MDK, o IDE pode não ter uns menus todos janotas como
o Eclipse ... mas estão lá todas as funcionalidades, quer e nível do IDE e ainda mais ao nível
do compilador com libs/packs para todos os ARMs do mercado, todos os periféricos, RTOS,
USB classes, File system, LCD Lib, etc, etc.

Abraços,
PA
Título: Re: Iniciar-me em ARM
Enviado por: senso em 28 de Abril de 2015, 22:55
Para quem detesta arduino de uma certa maneira, e glorifica código enlatado pronto a comer com 2 clicks  ::)

O Atollic True Studio é estupido, no sentido em que é Eclipse e GCC, mas tens de pagar para ter coisas básicas como ver o tamanho do hex e ram usada(uso estático), assim como outras coisas estranhas por assim dizer.

Toolchain baseada em gcc é download gratuito e directo sem registos nem mete cá o mail directamente da ARM:
http://www.arm.com/products/tools/software-tools/ds-5/compiler.php (http://www.arm.com/products/tools/software-tools/ds-5/compiler.php)

De resto é como já foi dito, tens vários IDE's, uns mais dedicados, outros com extensões em cima, mas se queres andar pelo open-source, qualquer editor de texto + make funciona.
Com extensões tens logo á cabeça Eclipse e EM:Blocks.
Tens milhentos tutoriais sobre o assunto, desde o compilar toolchain, a fazer download quer da ARM quer do Launchpad, tens várias versões pré-compiladas(só me recordo do velhinho Yagarto), tens IDE's com código enlatado que é o Coocox, e podes sempre procurar por código no Github.

Tens geradores de código pelo menos da TI e da STM, e vários fabricantes começam a entender que vender programadores e ferramentas(ide, compilador, etc) limitados não é o caminho a seguir.

E acima de tudo, tens mil opiniões, cada um a dar vós ao que nos é mais familiar.
Cada micro terá os seus pontos fortes, e pontos menos fortes, cada fabricante terá uma área em que é melhor, outras em que é pior.

Roll the dices.
Título: Re: Iniciar-me em ARM
Enviado por: metRo_ em 28 de Abril de 2015, 22:57
O keil nao e' gratuito e ou a versao gratis e' muito fraca ou o keil e' muito fraco, nem atalho para ir para a declaracao de uma variavel ou funcao tem? -.-'
nível do IDE e ainda mais ao nível
do compilador com libs/packs para todos os ARMs do mercado, todos os periféricos, RTOS,
USB classes, File system, LCD Lib, etc, etc.

isto sim, e vdd, mas tem que andar com o rato para isso acho um pouco mau demais para um IDE, so' o uso quase por obrigacao...
Título: Re: Iniciar-me em ARM
Enviado por: senso em 28 de Abril de 2015, 23:02
O keil nao e' gratuito e ou a versao gratis e' muito fraca ou o keil e' muito fraco, nem atalho para ir para a declaracao de uma variavel ou funcao tem? -.-'
nível do IDE e ainda mais ao nível
do compilador com libs/packs para todos os ARMs do mercado, todos os periféricos, RTOS,
USB classes, File system, LCD Lib, etc, etc.

isto sim, e vdd, mas tem que andar com o rato para isso acho um pouco mau demais para um IDE, so' o uso quase por obrigacao...

Wanna buy a nice vim clutch my dear friend?  8)
Título: Re: Iniciar-me em ARM
Enviado por: dropes em 28 de Abril de 2015, 23:29
Para quem detesta arduino de uma certa maneira, e glorifica código enlatado pronto a comer com 2 clicks  ::)

Obrigado pela frase do dia  :)
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 28 de Abril de 2015, 23:43
Concordo com o senso, cada um dá o que está mais famialirizado.

Eu pessoalmente não gosto do Keil, não me dei bem com ele. Mas olha que tem muito boas ferramentas, olha que grátis só te limita o tamanho do código.

O que te digo que são as ferramentas "profissionais" para ARM é IAR e Keil.
Eclipse é muito porreiro e é completamente gratis como já disse.

Eu digo-te mais vale escolheres um e ires decidido porque em geral dá algum trabalho começar a trabalhar qualquer uma das sugestões acima (Keil, IAR, Eclipse).



Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 28 de Abril de 2015, 23:50
btw njay, os ARM psoc da Cypress vs os teus da Pionner? Algum comentário?
Humm?? Pioneer é o nome da placa de desenvolvimento da Cypress para PSoC4.

Pioneer (PSoC4)
http://www.cypress.com/?rid=77780 (http://www.cypress.com/?rid=77780)

Prototyping kit (PSoC4)
http://www.cypress.com/?rID=92146 (http://www.cypress.com/?rID=92146)

PSoC Creator (IDE da Cypress para PSoC, gratuito sem restrições)
http://www.cypress.com/psoccreator/ (http://www.cypress.com/psoccreator/)

Aaaaah não sabia que era o nome.

Eu achei interessante quando vi essas placas, que até há umas bem baratas.
Mas tipo achei que usar tipo um STM32 até 180Mhz e depois um CPLD tinha melhor performance.

Mas já que conheces que opinião tens? Em termos de poder de processamento e quanto há parte "tipo fpga"? E a configuração parte FPGA é gráfica? E a programar? (so many questions)
Título: Re: Iniciar-me em ARM
Enviado por: Njay em 29 de Abril de 2015, 00:13
O PSoC4 é um M0 com uma performance modesta, como referi o top speed são 48MHz, portanto não é para processar video.
Agora, aquilo tem um IDE fenomenal e uns periféricos muito interessantes, embora limitados em tamanho (o PSoC 5 já tem mais coisas mas também é mais caro, a placa de prototipagem equivalente já são uns 10€).

O IDE (PSoC Creator) tem wizards para a configuração inicial dos periféricos, alguns até te mostram graficamente o que estás a configurar (por exemplo se estiveres a configurar uma máquina de PWM ele desenha-te a forma de onda que estás a "fazer"). Cada periférico tem também uma API para controlo por software, e help localizado, isto é, tens no menu local uma entrada que te abre um PDF que descreve só o periférico e a sua API - até dá gosto usar. E tens ainda uma biblioteca de pequenos projectos onde podes procurar por "qualquer coisa que use os contadores" o whatever, acedida a partir do menu local.

Desenhas a configuração de hw como um esquema (vê o meu projecto do gerador de onda triangular na sub-fórum do PSoC). Podes ver graficamente a configuração geral de routing no chip. O chip tem alguma lógica programável embora pouca (não se compara nem a uma FPGA das mais fraquinhas), só que permite-te poupar hw externo. Por exemplo, se precisares de uma porta lógica, um mux digital ou analógico, um contador e outras coisas, em hw, podes fazê-lo "dentro" do chip. É arrastar o componente para o esquema e fazer as ligações. Este hardware é programável, o CPU pode mudar a configuração de tudo quando lhe apetecer.
Existe alguma flexibilidade no routing, isto é, é possível, com algumas restrições, escolher a que pinos ficam ligados os periféricos. Tem um ADC de 12bits (1Msps), 1 DAC de 7 e outro de 8bits (6Msps), 2 ampops, 2 comparadores de tensão, um bloco de "toque capacitivo", 4 contadores (que fazem PWM, contagem, etc), SPI/i2C/UART, uma tensão de referência de 1.024V penso que de 1% de tolerância, vem com clock interno RC mas calibrado com precisão suficiente "over temperature" para poderes usar a UART, e ainda pode ser alimentado a 5V facilitando a interface com muitos módulos e componentes que existem de 5V (a dev board Pioneer tem headers compativeis com Arduino, podes usar os mesmos shields).

Basicamente todos os registos estão documentados, o IDE é gratuito e sem restrições, mesmo para fins comerciais. O protocolo de gravar código na flash é aberto e a Cypress até tem código C mais ou menos genérico para quem quiser fazer o seu programador de PSoC4. O GCC também suporta o chip (e é o que o IDE usa).
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 29 de Abril de 2015, 00:14
Concordo com o senso, cada um dá o que está mais famialirizado.

O problema é que alguns falam e nem de longe nem de perto estão familiarizados  com
nada do que aqui se esta a debater... falam somente porque leram umas coisas na net,
mas nunca meteram as mãos num ARM e muito menos nas toochains que aqui foram
sugeridas ... enfim, devem ter algum complexo de inferioridade.

edit: correção ortográfica
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 29 de Abril de 2015, 00:20
Obrigado pelo info Njay ;)
Ás vezes é dificil encontrar pessoal que tenha experimentado esse tipo de cenas.

Olha eu tive de voltar a windows porque tenho de voltar a usar o IAR... Eu uso principalmente o CCS, que é baseado em eclipse porque dá com todas as placas da Texas Instruments e gostei mais porque sim.

O IAR depois de bué tempo finalmente arranjei uma forma de criar projectos sem problemas com as placas ST, e mesmo assim... aquilo é chato para criar projectos novos ou até copiar projectos, tem de se andar a mudar nomes à mão. O eclipse é muito bom nesse aspecto e dá para alterar facilmente as "macros" de paths (pelo menos no CCS). E agora tenho de voltar ao IAR para usar os STM32 e ver se finalmente me meto "pro" com aquilo. (Por isso ya, acho cenas baseadas em eclipse mais fáceis)
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 29 de Abril de 2015, 00:26
Para quem detesta arduino de uma certa maneira, e glorifica código enlatado pronto a comer com 2 clicks  ::)

É a tal coisa, existem "salsichas" enlatadas e depois existe "caviar" enlatado, o problema é
que para os desconhecedores e ignorante no assunto tudo pode parecer igual.

Por outro lado, os que, como eu, andam a comer "caviar" desde 1995 sabem bem que
para abrir uma "lata" no Keil basta UM click ... e não dois, é a chamada "abertura fácil".

Eu até me considero um bom garfo, mas não dispenso uma boa lata de vez em quanto,
volta e não volta abro uma lata de "salsichas", ainda tenho aqui algumas que enlatei em
1994 e ainda hoje estão comestíveis.

Alias, tenho muitas latas de "caviar" e de "salsichas" para a troca, quanto tiveres também
feito "enlatados" de qualquer uma das arquitecturas podemos trocar.
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 29 de Abril de 2015, 00:36
mas tem que andar com o rato para isso acho um pouco mau demais para um IDE, so' o uso quase por obrigacao...

Não, podes definir teclas também !

Edit->Configuration->Shortchut Keys.

O Keil (e o IAR) sendo ferramentas profissionais podem intimidar no primeiro contacto,
mas sem duvida que são de longe as mais potentes.

 
Título: Re: Iniciar-me em ARM
Enviado por: msr em 29 de Abril de 2015, 14:50
StartRider, no Keil e IAR usas o editor do próprio IDE ou um à parte? Nunca dei grande uso a nenhum dos dois, mas o editor de ambos sempre me arrepiou, falta de features que considero básicas ou presença delas mas muito fracas, como autocomplete e navegação fácil no código (ctrl+click nas funções, por ex)
Título: Re: Iniciar-me em ARM
Enviado por: LuísR.A. em 29 de Abril de 2015, 15:07
No IAR e no Eclipse basta fazeres CTRL+Space para sugestões de completação.

Para navegar nos source files tambem há atalhos mas eu costumo fazer right click na função e escolher a opção para ir para chamadas, definições, navegar para header, etc
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 29 de Abril de 2015, 15:37
StartRider, no Keil e IAR usas o editor do próprio IDE ou um à parte? Nunca dei grande uso a nenhum dos dois, mas o editor de ambos sempre me arrepiou, falta de features que considero básicas ou presença delas mas muito fracas, como autocomplete e navegação fácil no código (ctrl+click nas funções, por ex)

Boas,

Estou a usar o IDE µVision V5.14.0.0 e o ARMCC (compilador da ARM) V5.05

Sim, tem autocomplete de qualquer identificador (classe, func, var, membro, etc) assim com
dos parâmetros no caso de ser uma func ou membro de uma classe. Pode ser pelas teclas
CTRL+Space ou por timer (popup com passagem do rato).

Tem "GotoFunc" por rato, opção de menu ou por teclas ... está lá tudo.

Mas a grande diferença está no resto, nas potencialidades do compilador em si e na forma
como este gera código e optimizações, na forma como o IDE gere as coisas mais triviais e
que acabam por ser problemáticas com outras toolchains (initcode, setup dos clocks, gestão
do stack e heap, etc, etc) e nas facilidades fornecidas pelas packages especificas para cada 
MCU.

Sou do tempo do Edlin (para quem não conhece o Edlin era um editor de linhas que vinha
com o MS-DOS) ... e dou mais valor ao que realmente me importa, como a qualidade do
compilador e demais libs, do que ao facto de ter um editor todo cheio de "features".
Neste campo, e basta fazerem uma procura na net das comparações entre o ARMCC e o GCC
e vão perceber que quando se trata de uma utilização profissional o Keil bate qualquer um.

Abraços,
PA
Título: Re: Iniciar-me em ARM
Enviado por: metRo_ em 29 de Abril de 2015, 16:01
Tens autocomplete para funções mas sem a indicação dos argumentos, certo?
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 29 de Abril de 2015, 17:09
Tens autocomplete para funções mas sem a indicação dos argumentos, certo?

Boas,

Tens as duas coisas, aqui ficam uns printscreen de exemplo:

Autocomplete de uma função (aparece uma lista de funções com a mascara do que
já escreveste, neste caso todas as funções que começam por "LED_S*"), podes
continuar a escrever ou seleccionar a função da lista:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.microastro.com%2Ffotos%2FKeil%2Fkeil_autocomplete_01.jpg&hash=c194b391ece4ba245ba6108030f23b36f814a544)

Autocomplete dos parâmetros para uma função:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.microastro.com%2Ffotos%2FKeil%2Fkeil_autocomplete_02.jpg&hash=a6492e2d711278f8dd433dc0a4379ebfd0af9f9c)


Isto é também valido para todos os outros identificadores, sejam classes, membros, vars
estruturas/unions/classes ou membros destas, etc.

Abraços
PA


Título: Re: Iniciar-me em ARM
Enviado por: senso em 29 de Abril de 2015, 18:53
O Attolic usei-o faz anos, provavelmente uns 5 anos, com um LPCExpresso do EmbeddedArtists ou lá como os gajos se chamam actualmente, estupidamente limitado para Eclipse+arm-gcc+stdLib sem qualquer add-on, usei Yagarto, andei a compilar toolchains em alguns sabores de linux, openOCD/Versaloon, isto como digo á alguns anos atrás, não fiz nenhum avião com nenhuma dessas toolchains, andava a testar águas e a testar o que era mais versátil, e digo já que não pesco nada de make/cmake, tecnicamente tenho umas guerras por resolver com o cmake e o FindOpenCV.cmake, uns atrofios no tempo do opencv2.1/2.2.

Sei usar minimamente bem vi(m)/gvim no lado do Windows, mas não aprecio linux no geral, enquanto não souber usar menos processador que o windows e usar menos bateria no portatil não o uso tanto quanto isso.

Desliguei de ARM's durante 2 anos, porque o mundo não é preto e branco e existem muitos processadores interessantes.

Actualmente uso Coocox em Windows para perder o tempo com ARM's porque a moda deve ficar por uns aninhos, e são relativamente baratos para o que trazem.
Mas partilho a opinião do Njay em relação ao mundo PSoC, tendo meia duzia de dev-boards com vários sabores de PSoC's, e repetindo o que já disse, não sou pessoa que gosta de andar á martelada para montar uma toolchain, sim, é algo bom de se saber, mas meh, não aprecio software assim tanto..

Apesar de tudo, seja caviar, salsichas, azeitonas ou uma alheira, continua a ser enlatado, e se usas um IDE pago, espera-se que a qualidade esteja lá, ou não?
Acho piada a estes atrofios que vou tendo contigo, dá-me ideia de levares a coisa muito a sério.

E sim, sou burro que nem uma porta, mas sou feliz assim.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 30 de Abril de 2015, 11:32
Não me estou a entender muito bem com a instalação disto.

No CooCox depois de instalar saquei o GNU Tools for ARM Embedded Processors daqui https://launchpad.net/gcc-arm-embedded/+download e não consegui adicionar no Toolchain path. dá erro porque diz que o ficheiro não existe

Para o eclipse instalei o java runtime environment e depois o Eclipse IDE for C/C++ Developers. que plugins tenho que instalar? não sei como adicionar o compilador

Obrigado pela ajuda prestada até agora
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 06 de Maio de 2015, 17:56
Boas,
já consegui com o CooCox fazer umas brincadeiras com os leds da board.
alguém utiliza o Coocox e consegue fazer login no IDE?
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 11 de Maio de 2015, 19:09
mas não aprecio linux no geral, enquanto não souber usar menos processador que o windows e usar menos bateria no portatil não o uso tanto quanto isso.

_OFF TOPIC_

Senso, faz backups e começa a preparar ai uma formatação! :D

"Linux 4.1 Power Consumption Appears To Improve For Intel Users"
"A Red Hat developer mentioned to us at Phoronix that they're seeing "drastically improved battery life" in some cases with the Linux 4.1 kernel to the extent that it's up to 2~4 hours of extra battery life"
http://www.phoronix.com/scan.php?page=article&item=linux-41-power&num=1 (http://www.phoronix.com/scan.php?page=article&item=linux-41-power&num=1)
Título: Re: Iniciar-me em ARM
Enviado por: senso em 11 de Maio de 2015, 19:24
Não preciso, tenho sempre espaço reservado para o linux, mas é hilariante ter 4h de bateria(com um i7) em Windows e menos de 2h em linux, é completamente parvo, se o linux começar a fazer park aos cores como o windows, será interessante.  ;D
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 14 de Maio de 2015, 15:37
boas,
estou a tentar fazer um web server com o stm32f4 discovery + dm-stf4bb. O IDE que estou a utilizar é o Coocox.
quando faço ping para o web server ele encontra o stm32f4 discovery mas quando vou ao browser não conecta com a página. alguém sabe o porquê?
alguém me consegue ajudar?
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 15 de Maio de 2015, 09:30
Como podem ver pela imagem em anexo eu faço ping para o ip 192.168.0.10 e tem conexão. Mas quando vou ao browser não tem ligação.
alguém me pode ajudar? alguém já tentou ou fez um web server?
Título: Re: Iniciar-me em ARM
Enviado por: jm_araujo em 15 de Maio de 2015, 10:48
Como podem ver pela imagem em anexo eu faço ping para o ip 192.168.0.10 e tem conexão. Mas quando vou ao browser não tem ligação.
alguém me pode ajudar? alguém já tentou ou fez um web server?
Se tens resposta a ping implica apenas que tens a camada de rede (IP) da stack TCP/IP a funcionar, com respostas ICPM.

Páginas web implica teres também a camada de transporte (TCP/UDP) e de aplicação (HTTP) a funcionar.

Que estás a fazer errado? Impossível saber, não disseste quase nada para além que não está a funcionar.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 29 de Maio de 2015, 16:39
Obrigado pessoal pela ajuda.
já consegui implementar o server+usart
Título: Re: Iniciar-me em ARM
Enviado por: jm_araujo em 29 de Maio de 2015, 17:09
E afinal qual era o problema? Assim podes ajudar quem tiver o mesmo problema no futuro.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 29 de Maio de 2015, 17:20
Mudei de IDE porque encontrava mais suporte para o IAR Embedded.. e depois um dos problemas foi também ter o wireless do pc ligado enquanto estava a aceder ao webserver
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 11 de Setembro de 2015, 18:09
Boas,
Neste momento estou a utilizar o IDE IAR e a placa de desenvolvimento STM32F4 Discovery.
Tenho um vetor criado com 500 posições e que guarda o que recebe pela UART.
Até aqui tudo bem.
Quando tento aumentar o mesmo vetor por exemplo para 1000 posições e faço pausa no debbug, ele encontra-se parado em void HardFault_Handler(void). Alguém me consegue ajudar a perceber a razão?

(já estive a pesquisar e não consegui chegar a nenhuma solução)
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 11 de Setembro de 2015, 19:43
Boas,
Neste momento estou a utilizar o IDE IAR e a placa de desenvolvimento STM32F4 Discovery.
Tenho um vetor criado com 500 posições e que guarda o que recebe pela UART.
Até aqui tudo bem.
Quando tento aumentar o mesmo vetor por exemplo para 1000 posições e faço pausa no debbug, ele encontra-se parado em void HardFault_Handler(void). Alguém me consegue ajudar a perceber a razão?

(já estive a pesquisar e não consegui chegar a nenhuma solução)

Possivelmente algum erro no teu codigo que esta a corromper memoria. Pasta o codigo para vermos.
Título: Re: Iniciar-me em ARM
Enviado por: Sérgio_Sena em 11 de Setembro de 2015, 20:48
Boas,
Neste momento estou a utilizar o IDE IAR e a placa de desenvolvimento STM32F4 Discovery.
Tenho um vetor criado com 500 posições e que guarda o que recebe pela UART.
Até aqui tudo bem.
Quando tento aumentar o mesmo vetor por exemplo para 1000 posições e faço pausa no debbug, ele encontra-se parado em void HardFault_Handler(void). Alguém me consegue ajudar a perceber a razão?

(já estive a pesquisar e não consegui chegar a nenhuma solução)


Podeser passagem de pagina de memoria, verifica se acontece com 511 e 513.


Título: Re: Iniciar-me em ARM
Enviado por: Addax em 15 de Setembro de 2015, 15:48
Sérgio_Sena, não há nenhum problema no 511 e 513.. fui aumentando aos poucos o tamanho do vetor e verifiquei que com 800 ainda dá e 850 já não dá.
alguém sabe o que pode ser?
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 15 de Setembro de 2015, 15:55
Sérgio_Sena, não há nenhum problema no 511 e 513.. fui aumentando aos poucos o tamanho do vetor e verifiquei que com 800 ainda dá e 850 já não dá.
alguém sabe o que pode ser?

Possivelmente algum erro no teu codigo que esta a corromper memoria. Pasta o codigo para vermos.

Auto citacao :)
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 15 de Setembro de 2015, 16:14
código: https://copy.com/1kYkY3Bd3Nsfw4le
se me poderem ajudar agradecia
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 15 de Setembro de 2015, 18:33
código: https://copy.com/1kYkY3Bd3Nsfw4le
se me poderem ajudar agradecia

Addax, nao consigo ajudar, porque:
- o ficheiro que colocaste 'e um zip de 7.5MB
- decompressed sao 21.9 MB
- o pacote tem 3 pastas e 166 files.
- Todos os utilizadores deste foram que te queiram ajudar vao ter de fazer download de 7.5MB, descompactar e procurar em 3 pastas e 166 files onde estara o problema.

Da para colocar aqui no forum acessivel a todos apenas a parte do codigo que interessa ver?
Título: Re: Iniciar-me em ARM
Enviado por: senso em 15 de Setembro de 2015, 18:35
Deve estar no main.c
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 15 de Setembro de 2015, 23:06
KammutierSpule, peço desculpa.. Sim está no main.c

Amanhã coloco o main.c individualmente.
Obrigado

edit: já coloquei o main.c em anexo.
quando aumento o array e faço stop no debbug o código está parado em void HardFault_Handler(void) que se encontra no ficheiro stm32f4xx_it.c
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 16 de Setembro de 2015, 09:51
O codigo eh muito complexo e dificil de seguir.
Penso que nao precisarias de ter um buffer para fazer o que pretendes, mas sim uma maquina de estados bem feita.
Como estas so a enviar informacao estatica (constante) basta passar o ponteiro e ir incrementando, ou passar isso para um buffer, mas mais pequeno.

Para fazer a recepcao, depende do q querias receber, mas parecem ser comandos pequenos, logo o melhor 'e uma maquina de estados em vez de guardar as coisas em memoria.

O codigo em geral esta muito complexo e confuso (coisas muito misturadas) == propicio a existirem um grande numero de bugs e dificil de encontrar os erros.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 16 de Setembro de 2015, 10:17
eu estou a refazer o código
numa das uart a receção pode ser de muitos comandos. são tantos comandos que as 800 posições não são suficientes e por isso é que tenho que aumentar o vetor.
numa das partes (no switch) já tem uma máquina de estados
Título: Re: Iniciar-me em ARM
Enviado por: jm_araujo em 16 de Setembro de 2015, 10:37
eu estou a refazer o código
numa das uart a receção pode ser de muitos comandos. são tantos comandos que as 800 posições não são suficientes e por isso é que tenho que aumentar o vetor.
numa das partes (no switch) já tem uma máquina de estados
Não vi o código, mas guardar uma série de comandos no buffer de texto de receção não faz muito sentido. Processa-os e guarda-os numa lista. Ocupa muito menos memória e é mais eficiente.
Como estás a fazer se quiseres implementar um protocolo de deteção de erros só vais dar por ela muito mais tarde, vai ser complicado pedir uma retransmissão...
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 16 de Setembro de 2015, 11:47
eu estou a refazer o código
numa das uart a receção pode ser de muitos comandos. são tantos comandos que as 800 posições não são suficientes e por isso é que tenho que aumentar o vetor.
numa das partes (no switch) já tem uma máquina de estados

Mas qual o motivo dos comandos? precisas de guardar / analisar / processar esses dados posteriormente?

Geralmente nesse tipo de aplicacoes o que tu pretendes 'e executar comandos ou receber parametros, nao precisas de guardar as mensagens ou comandos pois sao processados em tempo real ah medida que chegam.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 16 de Setembro de 2015, 11:55
eu estou a refazer o código
numa das uart a receção pode ser de muitos comandos. são tantos comandos que as 800 posições não são suficientes e por isso é que tenho que aumentar o vetor.
numa das partes (no switch) já tem uma máquina de estados

Mas qual o motivo dos comandos? precisas de guardar / analisar / processar esses dados posteriormente?

Geralmente nesse tipo de aplicacoes o que tu pretendes 'e executar comandos ou receber parametros, nao precisas de guardar as mensagens ou comandos pois sao processados em tempo real ah medida que chegam.
eu não preciso de guardar ou analisar.. eu posso receber e enviar em tempo real à medida que recebo.
qual a melhor forma para fazer isso?
Título: Re: Iniciar-me em ARM
Enviado por: jm_araujo em 16 de Setembro de 2015, 12:23
Maquina de estados no ciclo principal do programa (correndo o risco de repetir o que já foi dito algumas vezes)
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 16 de Setembro de 2015, 15:22
quando referes uma máquina de estados bem feita é por exemplo:
Código: [Seleccione]
int conta=1;
void contaEstado(){
   conta++;
}
void main(){
switch(conta){
   case 1: printf("1"); contaEstado(); break;
   case 2: printf("2"); contaEstado(); break;
   default: printf("Nenhum");
}
tu referis-te fazer listas.. eu não sei fazer, é melhor aprender e implementar?
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 16 de Setembro de 2015, 15:42
alguns pdf q encontrei numa pesquisa:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-01sc-introduction-to-electrical-engineering-and-computer-science-i-spring-2011/unit-1-software-engineering/state-machines/MIT6_01SCS11_chap04.pdf (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-01sc-introduction-to-electrical-engineering-and-computer-science-i-spring-2011/unit-1-software-engineering/state-machines/MIT6_01SCS11_chap04.pdf)
http://www.adampetersen.se/Patterns%20in%20C%202,%20STATE.pdf (http://www.adampetersen.se/Patterns%20in%20C%202,%20STATE.pdf)
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.94.2987&rep=rep1&type=pdf (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.94.2987&rep=rep1&type=pdf)

este livro deve ser bom, tenho que arranjar:
https://www.google.co.uk/search?q=Design+Patterns+for+Embedded+Systems+in+C:+An+Embedded+Software+Engineerin&ie=utf-8&oe=utf-8&gws_rd=cr&ei=aX_5VY3HGObm7gaZmZmAAg#q=Design+Patterns+for+Embedded+Systems+in+C:+An+Embedded+Software+Engineering (https://www.google.co.uk/search?q=Design+Patterns+for+Embedded+Systems+in+C:+An+Embedded+Software+Engineerin&ie=utf-8&oe=utf-8&gws_rd=cr&ei=aX_5VY3HGObm7gaZmZmAAg#q=Design+Patterns+for+Embedded+Systems+in+C:+An+Embedded+Software+Engineering)

Precisas de implementar um parser com uma maquina de estados. o que isso faz 'e descodificar o protocolo, validar as entradas etc e podes chamar os eventos quando recebes determinado comando q pretendas.
Título: Re: Iniciar-me em ARM
Enviado por: KammutierSpule em 16 de Setembro de 2015, 15:47
outra sugestao:
o teu codigo nao esta modular / em camadas.

numa impementacao correcta nao podes misturar "aplicacao e codigo do MCU" no mesmo ficheiro
tens de criar as camadas para leitura / escrita serie por exemplo e outro ficheiro / modulo implementa as comunicacoes usando essas funcoes.
PAra alem de ser perceber melhor o codigo, isso permite que testes individualmente as funcoes. para nao haver a duvida: "isto nao funciona porque o MCU esta mal configurado e estou a implementar mal as coisas ou e' a minha aplicacao que esta com problemas?"
Título: Re: Iniciar-me em ARM
Enviado por: Njay em 16 de Setembro de 2015, 16:27
Em vários sítios tens "variável = variável;" é para quê?
A indentação que usas é má, considera usar pelo menos 4 espaços, em todos os níveis o mesmo número de espaços.
Dentro de cada linha também está tudo muito encavalitado, mais difícil de ler.
Os estados devem ter nomes e não números, podes criar um enumerado para isso.
Em vez de coisas como "ch[k-1]=='\n' && ch[k-2]=='\r' && ch[k-3]=='K' && ch[k-4]=='O'" podes usar a função strncmp().
Como disse o kammutier precisas de separar mais os níveis; criar abstrações, enfiar coisas esquisitas especificas do MCU em macros ou funções com nomes de jeito. Por exemplo não se mete "GPIOD->BSRRL |=((0x01<<15));" no meio de um main sem sequer um comentário; o correcto seria definir uma macro ou função inline com um nome muito sugestivo e usá-la.
Para mim é estranho teres uma interrupção de UART e ainda teres que fazer uma espera activa no inicio da interrupção antes de fazer a leitura; ou estás usar mal, ou é um workaround para um bug de hw, ou a UART desse chip é uma treta.
Também acho estranho teres que fazer, num ARM, um delay de ms com ciclos activos; ainda por cima o código não está feito para se ajustar automaticamente à frequencia do CPU.
Tens 2s a 3s de delays no ciclo principal que processa comandos, ia dizer que não me admira que tenhas que os guardar para não perderes, mas as coisas parecem-me mais complicadas do que isso e não vi bem, com as 2 UARTs mas o mesmo apagaRecebe(), não sei o q se passa aí.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 16 de Setembro de 2015, 16:57
Obrigado KammutierSpule e Njay.. Vou ter em atenção ao que vocês disseram e vou tentar reconstruir o código.
-"variavel=variavel;" não serve para nada.. era na altura em que estava a fazer debug para para naquele ponto
- não percebi este comentário "A indentação que usas é má, considera usar pelo menos 4 espaços, em todos os níveis o mesmo número de espaços."
- o "GPIOD->BSRRL |=((0x01<<15));" era só mesmo para piscar enquanto o código corre
- "Para mim é estranho teres uma interrupção de UART e ainda teres que fazer uma espera activa no inicio da interrupção antes de fazer a leitura" como é que posso fazer de outra forma? quando entra na interrupção da uart eu tenho forma de guardar os dados sem ter a espera da flag?
- o delay é porque como mudo logo de estado depois de enviar pela uart, coloco um delay para não ir logo para a função de receber
Título: Re: Iniciar-me em ARM
Enviado por: Njay em 16 de Setembro de 2015, 18:01
Esquece a parte "em todos os níveis o mesmo número de espaços", desculpa vi mal.

Nas interrupções faz-se o mínimo de trabalho. Ler o byte (ou bytes) da UART e avisar o ciclo principal que há um byte novo, apenas isto; o ciclo principal é que faz o processamento todo. Não devia ser preciso esperar por nada na interrupção, pois a interrupção serve mesmo para avisar que (pelo menos) um byte foi recebido e está pronto a ser lido (ou que se pode enviar um byte). Não conheço esse chip (nem sei o que programa é suposto fazer) pelo que não posso opinar sobre como usar os periféricos.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 17 de Setembro de 2015, 12:22
agora é que eu vejo que o código estava uma grande confusão..
tenho uma dúvida que talvez me possam ajudar.. tenho por exemplo a seguinte string1 "OLA LUSOROBOTICA", pretendo comparar com outra string mas não na totalidade.. ou seja, existe já alguma função numa biblioteca que permita procurar na string1 a existência por exemplo de "ROBOTICA"?
ou o melhor é fazer eu uma função para isso?
obrigado

(não sei se me fiz entender)
Título: Re: Iniciar-me em ARM
Enviado por: jm_araujo em 17 de Setembro de 2015, 13:00
Vá lá... o Google não é uma ferramenta tão complicada de usar :D

http://www.google.com/search?q=C+search+substring (http://www.google.com/search?q=C+search+substring)

Quaisquer dos primeiros resultados tem a solução.
Título: Re: Iniciar-me em ARM
Enviado por: artur36 em 17 de Setembro de 2015, 13:06
Não sei se existe uma opção melhor mas aqui vai o "meu" algoritmo (devo ter lido algures pelas "internet"):
Corres a string maior comparando cada letra com a primeira da string a comparar, se encontrares uma correspondência testas a letra seguinte com a segunda letra a comparar, se também esta for igual contínuas até ter uma correspondência completa. Se pelo meio não corresponder tens de voltar à letra imediatamente a seguir à primeira que encontras-te e recomeçar daí a busca.
Espero que dê para perceberes, entretanto logo quando chegar ao PC tento escrever um pseudocódigo melhor que agora estou no telemóvel
Título: Re: Iniciar-me em ARM
Enviado por: jm_araujo em 17 de Setembro de 2015, 13:09
Para quem teve preguiça de abrir o link acima, tens a função "strstr" na biblioteca "strings.h"  ::)

http://www.cplusplus.com/reference/cstring/strstr/ (http://www.cplusplus.com/reference/cstring/strstr/)
Título: Re: Iniciar-me em ARM
Enviado por: StarRider em 17 de Setembro de 2015, 22:04

"Born to code in C" ... mais alguém leu ?

Grande livro, na altura (1989) em que nem sequer net existia, pelo menos para
os "civis" ...

Addax, pelo menos dá uma vista de olhos pelo "string.h" ... é o mínimo que
se pede a quem realmente quer saber programar em C.

Abraços
PA
Título: Re: Iniciar-me em ARM
Enviado por: Njay em 17 de Setembro de 2015, 22:49
Nunca li esse livro, li o C do K&R e deve ser o melhor livro que já li sobre uma linguagem (confesso que li muito poucos), é relativamente pequeno, dá gosto ler e dispensa leitura de qualquer outro.
Título: Re: Iniciar-me em ARM
Enviado por: Addax em 18 de Setembro de 2015, 09:25
muito obrigado a todos pelas respostas e conselhos ;)
já fiz o que pretendia e vou estudar melhor essas ferramentas