PIC 32 - quais as vantagens?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor xultz » 14 Set 2009 17:19

Blackmore, explicando um pouco da ira do Rodrigo (que é a mesma de quase todo mundo que usaou o MPLab e ICD).
O MPLAB é a IDE da Microchip. Por anos a fio, ele só compilava programas em assembly, e não era lá aquelas coisas (sim, até compilador de assembly prá assembly conseguiam fazer ruim). Daí prá programar em C tinha que usar um compilador comprado a parte, que tentava se integrar ao MPLab, mas sempre ficou meio tosca esta integração. Eu usei bastante o CCS sem integrar no MPLab, e usava o MPLab só prá ler o .hex e gravar o PIC. Tanto que a Microchip lançou o gravador PicKit, que tem um programa próprio para gravar (pode ser chamado de dentro do MPLab também), que fica analizando o .hex, s eo compilador atualizou o arquivo ele sozinho abre e já grava o PIC. A Microchip fez isso de tanta gente reclamar do MPLab, que usava ele só prá gravar, etc. Ou seja, é tudo gambiarrado.
Recentemente a Microchip comprou a empresa Hitech que fabrica compilador C prá PIC, porque ficar só com compilador assembly não tem mais cabimento no mercado. E o compilador C que ela tentou fazer era tão ruim quanto seus PICs... Só que a coisa continua confusa, o PICC18 continua tentando se integrar ao MPLab e a porcaria continua a mesma.

Quanto ao ICD, essa é a maior porcaria do mundo. A questão é que debugar microcontrolador começou a ficar a coisa mais importante do mundo. Daí bons fornecedores, como Motorola, Atmel, Texas, implementaram dentro do core hardware prá fazer debug, que consegue parar o processador, ler memória, registradores, se comunica com o IDE, etc e tal. O que a brilhante Microchip fez? Implementou isso em firmware! E chamou de In Circuit Debuger.
O que ele faz: quando você ativa o ICD no teu projeto, ele grava na parte alta da flash uma rotina que desvia quando você seta um break point, e por firmware ele se comunica com a IDE. As capacidades do ICD são mínimas, ele come um pedaço da flash e perde uam interrupção. É uma tosquice.

Tudo isso trouxe uma imagem bem ruim prá Microchip: ambiente IDE ruim, core ruim (do PIC de 8 bits) com uma miséria de instruções, e ferramentas de debug ruins, que é o que o engenheiro mais precisa no desenvolvimento. Com o PIC32 o core é bom (por ser MIPS), ele tem Jtag prá debug, o compilador é bom (por ser o gcc) mas a imagem da Microchip já não inspira mais nenhuma confiança.
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

Mensagempor proex » 14 Set 2009 17:42

Vc esqueceu de dizer que o ICD muitas vezes passa a não mais reconhecer o chip que estava debugando. Ai tem que jogar o chip fora pois fica inutilizado.

Ou seja, o ICD é a unica ferramenta de debuger que eu conheço que consegue danificar o chip que estiver debugando.
.
Editado pela última vez por proex em 14 Set 2009 18:20, em um total de 1 vez.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor austrax » 14 Set 2009 18:12

O ICD é feito nas "coxas". Remendo de projeto mal feito para não ficar atrás dos concorrentes. Já perdi uns pic´s por causa dele quando ainda usava esses carinhas.
Avatar do usuário
austrax
Byte
 
Mensagens: 139
Registrado em: 04 Mai 2007 20:10

Mensagempor Vonnilmam » 14 Set 2009 23:21

Olá a todos...

Olha só! eu vou por minha mão nessa "cumbuca" a favor da microchip!

Porque será que os pics, foram tão popularizados mundialmente, ele chegou no mercado meio misterioso (quem não se lembra quando ele chegou por aquí, era um mistério interessante, tratava-se do primeiro microcontrolador utilizando flash a um custo muito baixo "famoso F84").

Eu compreendo muito bem que os pics tem suas limitações, que não é diferente dos outros fabricantes que também tem suas limitações. Cada qual com suas vantagens e desvantagens.

Eu acho uma crueldade vcs massacrarem os pics, na minha visão são chips interessantes, bem completos de perifericos internos e são baratos demais....são faceis de migrar entre as familias e o melhor são muito difundidos no mundo (quem não ouvir falar de um PIC no mundo da eletrônica)....

Eu comecei a estudar a linha AVR da atmel, achei muito melhor que a linha 16 do pic, o que mais me interessou foi a velocidade...nem por isso vou detonar o pic,

Até os dias de hoje é o pic meu companheiro de projetos, já fiz muitas coisas com pic e estão funcionando numa boa. Sou muito grato a Deus por me ajudar a entender os pics e outros mcus também. Não poderia ficar de sem sair em defesa da microchip em especial dos pics 16..

Estou aprendendo C, estou adorando essa linguagem, nem por isso falo mal do assembler, o qual vem me ajudando nos trabalhos a anos. E também gosto muito de programar em assembler, porque não?
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor msamsoniuk » 14 Set 2009 23:22

bom, eh q eu estou falando de processadores de verdade, dae a conta eh por ae mesmo... e ateh q eu chutei bem perto:

http://www.phys.uu.nl/~steen/web08/powerpc.html

fabim escreveu:nussa veio, agora tem uC de 30.000.000.000. bom melhor que o do proex de 2.5 quadrilhões de ciclos por segundo..

pômeu.
Terminologia mip do inglês
MIPS = Milion of instructions per second

Arquitetura MIP do português
MIP = Mideixa Indamais Puto// cada nome sô..

ninguém vai corrigir nada aí não ?

Fabim
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor fabim » 15 Set 2009 08:21

Marcelo Samsoniuk escreveu:bom, eh q eu estou falando de processadores de verdade, dae a conta eh por ae mesmo... e ateh q eu chutei bem perto:

http://www.phys.uu.nl/~steen/web08/powerpc.html

fabim escreveu:nussa veio, agora tem uC de 30.000.000.000. bom melhor que o do proex de 2.5 quadrilhões de ciclos por segundo..

pômeu.
Terminologia mip do inglês
MIPS = Milion of instructions per second

Arquitetura MIP do português
MIP = Mideixa Indamais Puto// cada nome sô..

ninguém vai corrigir nada aí não ?

Fabim


Retirado do seu link.

Código: Selecionar todos
One PowerPC 970 MP should therefore have a theoretical peak performance of 27.6 Gflop/s. The floating-point units also perform square-root and division operations.

Apart from the floating-point and vector functional units two integer fixed-point units and two load/store units are present in addition to a conditional register unit and a branch unit. The latter uses two algorithms for branch prediction that are applied according to the type of branch to be taken (or not). The success rate of the algorithms is constantly monitored. Correct branch prediction is very important for this processor as the pipelines of the functional units are quite deep: from 16 for the simplest integer operations to 25 stages in the vector ALU. So, a branch miss can be very costly. The L2 cache is integrated and has a size of 1 MB. To keep the load/store latency low, hardware-initiated prefetching from the L2 cache is possible and 8 oustanding L1 cache misses can be tolerated. The operations are dynamically scheduled and may be out-of-order. In total 215 operations may be in flight simultateously in the various functional units, also due to the deep pipelines.\\ The two cores on a chip have common arbitration logic to regulate the data traffic from and to the chip. There is no third level cache between the memory and the chip on the board housing them. This is possible because of the moderate clock cycle and the rather large L2 cache.


Sendo assim um ARM7, que faz 32*32 e guarda em um 64, tem quantos gigahertz ?

Estranho esse tipo de comparação dos fabricantes, isso é tipo o PMPO de som... sei lá de onde esses cabras "fabricantes" tiram estas coisas do demo.
Po meu, se um processador dual, atinge 27G flops, sabe lá deus o que querem dizer por 27G flops.
Será que é o numero de flip flop utilizado em uma palavra de instrução, vezes quantas vezes é possivel executar em 1 Segundo ?
Tipo 64 flip flops * 500mhz na velocidade de clock de execução de máquna, daria 32gflops..

Bom, é bem estranho essas comparações que os malas dos fabricantes fazem.
um DSP de 54 bits com clock de maquina de 192mhz, intão pode ser comparado a um dual 2.5ghz ? não né.
Um processador de PC, tipo do ruwindows tem um task bem grande e fica perdendo uma pa de tempo cuidando e executando cada um deles, ou aquele que sinalizou algo, ou seja....
Agora um DSP só faz aquilo, serve pra aquilo e tem aquilo necessario para executar aquilo....
Sendo assim a performance em tempo de execução de um dual 1.8 pra tratar audio em tempo real, não chega na bota de um DSP de 192mhz..

Como o xultz disse em outra tread.. Isso é coisa do Demo, e o cramuleão que deixa funcionar, enquanto os fabricantes endemoniados fazem mensões idiotas e mentirozas.....

Abração Tchelo !!! Desculpa alguma coisa que ficou meio arredia !!!

Abraços

Fabim
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!!!?

Mensagempor xultz » 15 Set 2009 08:55

Vonnilmann, eu concordo com várias coisas que você disse. Quando o F84 entrou no mercado ele realmente era inovador e meu primeiro projeto foi com ele. E o primeiro projeto a gente nunca esquece.
Há 10 anos atrás PICs eram o que havia de mais legal. E muitos aprenderam a mexer com ele naquela época, alguns desses viraram professores e nas faculdade ensinam PIC até hoje porque é tudo que conhecem.
O problema é que a concorrência evoluiu muito mais que os PICs, e hoje os PICs não têm performance, e principalmente não têm mais preço, os PICs não são nada competitivos. Então, se você pretende desenvolver um novo produto, tem que avaliar todas as opções e escolher a melhor. Assim, não dá prá ficar bitolado nos PICs, porque o F84 era sensacional. No nosso ramo, não dá mesmo prá viver de passado, que nem o Coritiba.
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

Mensagempor B-EAGLE » 15 Set 2009 10:30

Djalma Toledo Rodrigues escreveu:
Marcelo Samsoniuk escreveu: ... novos horizontes:

- coldfire
- blackfin
- powerpc

A desvantagem é que se postar algo aqui no Fórum terá que aguardar o
Marcelo Samsoniuk aparecer. :D :D
.



nada, o cara tem que fazer um puxadinho no fundo da casa do Marcelo, virar aprendiz dele.... ehaueaheua
B-EAGLE
Word
 
Mensagens: 847
Registrado em: 19 Out 2006 14:12
Localização: Campo Grande - MS

Mensagempor fabim » 15 Set 2009 10:43

B-EAGLE escreveu:
Djalma Toledo Rodrigues escreveu:
Marcelo Samsoniuk escreveu: ... novos horizontes:

- coldfire
- blackfin
- powerpc

A desvantagem é que se postar algo aqui no Fórum terá que aguardar o
Marcelo Samsoniuk aparecer. :D :D
.



nada, o cara tem que fazer um puxadinho no fundo da casa do Marcelo, virar aprendiz dele.... ehaueaheua


tu mexe com o que maninho ?
E o dj ?
e varios outros ?

Hoje um cara aqui do forum, me perguntou no msn que esta com problemas e se poderia ajudalo em uma solução.
Tinha que chavear um troço de 12V com um transistor, só que o pic saia só 5V, se eu tinha algum esquema de 5V para 12V....
Mandei ele ir se F¨$#%$ e bloquiei ele do msn...
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!!!?

Mensagempor proex » 15 Set 2009 11:01

XMOS !
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor msamsoniuk » 15 Set 2009 11:44

hehehe o raciocinio eh exatamente esse fabim, mas soh funciona com hardware especial!

imagine que vc tem pixels de 8 bits e vc pode realizar operacoes de 32 bits. a cada ciclo vc consegue, em teoria, tratar 4 pixels ao mesmo tempo. isso eh particularmente verdade no caso de movimentacao de blocos e operacoes logicas em blocos, onde vc pode tratar os pixels em grupos sem problemas.

mas quando vc precisa fazer operacoes aritmeticas, pode ir tudo por agua abaixo! por exemplo, vc poderia aumentar a luminosidade de 4 pixels ao mesmo tempo somando uma constante dos 4 pixels ao mesmo tempo:

pixel_block += 0x01010101;

se vc tinha uma sequencia de pixels 0x12345678, vc passa a ver 0x13355779, que sao os valores esperados. mas imagine que vc tinha os pixels 0x123456ff, daih com a soma vc obtem 0x13456800... note que o valor do pixel 0xff somando 1 ficou 0x100 e foi um carry para o pixel vizinho. entao um arm7 nao conseguiria quadriplicar a performance fazendo isso, pq vc precisaria testar e tratar esse caso. no fim das contas, acaba saindo mais lucro fazer a operacao byte a byte. no caso do altivec de um powerpc, eh possivel justamente desligar o carry entre as unidades, permitindo fazer operacoes atirmeticas de forma vetorial.

outra diferenca eh que a unidade vetorial do powerpc trabalha com ponto flutuante (daih os MFLOPS), onde os numeros sao calculados com mantissa e expoente. em principio pode parecer pouca a diferenca: um arm7 pode fazer operacoes com inteiros de 32 bits e um altivec vai deslanchar fazendo operacoes de ponto flutuante de 32 bits. efetivamente eh a mesma quantidade de informacao, mas quando vc trabalha em ponto flutuante vc faz duas contas ao mesmo tempo e com isso vc troca precisao absoluta por precisao relativa: com inteiro de 32 bits vc faz operacoes entre -2G/0/+2G, enquanto que com ponto flutuante de 32 bits vc faz operacoes em uma faixa muito mais vasta: -2^127/-2^-127/0/2^-127/2^127

em termos de processamento, um powerpc com altivec eh bem cavalar, motivo pelo qual eh comum encontrar sistemas powerpc multiprocessados trabalhando exclusivamente com processamento de sinais, ou seja, fazendo funcoes de um DSP! a diferenca, no meu ponto de vista, entre um processador destes (ou um DSP) e um PC eh justamente na forma como o sistema eh construido. em termos de arquitetura o PC eh muito mal construido e fica dificil pensar em tempo real nele.

compare a baderna que eh a arquitetura do PC com o XMOS (simples e organizado) que o proex tanto ama e vc vai entender pq ele consegue ser melhor que um PC potente na hora de tratar realtime.

e mesmo comparando a performance bruta, cuidado: um potente PC de mesa pode efetivamente render menos MIPS que um DSP avancado com clock bem menor... ainda mais se considerar que hoje um PC de mesa na realidade nao possui um clock tao alto quando se espera! :)

fabim escreveu:
Sendo assim um ARM7, que faz 32*32 e guarda em um 64, tem quantos gigahertz ?

Estranho esse tipo de comparação dos fabricantes, isso é tipo o PMPO de som... sei lá de onde esses cabras "fabricantes" tiram estas coisas do demo.
Po meu, se um processador dual, atinge 27G flops, sabe lá deus o que querem dizer por 27G flops.
Será que é o numero de flip flop utilizado em uma palavra de instrução, vezes quantas vezes é possivel executar em 1 Segundo ?
Tipo 64 flip flops * 500mhz na velocidade de clock de execução de máquna, daria 32gflops..

Bom, é bem estranho essas comparações que os malas dos fabricantes fazem.
um DSP de 54 bits com clock de maquina de 192mhz, intão pode ser comparado a um dual 2.5ghz ? não né.
Um processador de PC, tipo do ruwindows tem um task bem grande e fica perdendo uma pa de tempo cuidando e executando cada um deles, ou aquele que sinalizou algo, ou seja....
Agora um DSP só faz aquilo, serve pra aquilo e tem aquilo necessario para executar aquilo....
Sendo assim a performance em tempo de execução de um dual 1.8 pra tratar audio em tempo real, não chega na bota de um DSP de 192mhz..

Como o xultz disse em outra tread.. Isso é coisa do Demo, e o cramuleão que deixa funcionar, enquanto os fabricantes endemoniados fazem mensões idiotas e mentirozas.....

Abração Tchelo !!! Desculpa alguma coisa que ficou meio arredia !!!

Abraços

Fabim
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor fabim » 15 Set 2009 12:04

poisé tchelo, eu ja sabia disso e foi exatamente isso que eu disse..rs
Isto é o basico em quem fuça com pc e uControladores.RS
Não desmerecendo sua informação, de forma alguma.
Eu entrei apenas no quesito de confusão de utilizadores de sistemas uprocessados ou controlados.
á tem 16Gflops. Nossa senhora, que é isso!!
Argg, isso não é mercadoria nenhuma.
o que manda é, a média de instruções e aritmérica por segundo.
Aí sim sabe-se os mips, ou quantos mião de instrução por second!!..
O pessoal confunde muito isso.
Veja em um simples exemplo.
Dual core 3.2, 64 bits
Teoricamente são 128 bits batenco a cuca serializados no paralelo.
3.2GHZ * 128 flip flops = 409 600 000 000
409.6Gflops.
Grande mercadoria isto,...
Agora coloca um DSP com 192mhz e 54bits apenas tratando audio..

hehehe

Bom

Xmos
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!!!?

Mensagempor vtrx » 15 Set 2009 13:31

Interessante,compararam C Com asm,oque pra min é o mesmo que comparar uma linguagem de 'resultados' com uma de 'montagem'..
Depois compararam velocidade de processamento com Bits...
Acho que a função de um microcontrolador é tornar um projeto mais 'embarcado',caso queira velocidade de processamento etc não seria melho um processador?
Pode ser porque tem gente que usa a eletronica como se estivesse programando num Pc e outros usam como se estivessem 'fazendo 'o Pc...lol
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor fabim » 15 Set 2009 14:10

vtrx escreveu:Pode ser porque tem gente que usa a eletronica como se estivesse programando num Pc e outros usam como se estivessem 'fazendo 'o Pc...lol


XMOS |o|
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!!!?

Mensagempor msamsoniuk » 15 Set 2009 14:57

nao, nao eh assim nao fabim... vc nao multiplica frequencia pelo numero de bits, vc multiplica frequencia pelo numero de unidades paralelas. ninguem esta fazendo uma conta de um jeito para o arm e de outro jeito para o powerpc, a realidade eh que um arm tipico realmente eh infinitamente mais fraco pq contem menos hardware. e isso vai ser assim sempre que o fabricante achar que pode dar uma economizada.

pegue um arm tipico, capaz de rodar uma instrucao por clock (vamos imaginar hipoteticamente q possa ser multiplicacao ou soma). chuta um clock de 1GHz e ele certamente faria 1000 MIPS. ele soh tem uma ALU, entao nao dah para querer quebrar uma multiplicacao 32x32 em 4 operacoes 8x8 independentes. se vc nao possui unidade de ponto flutuante, qq multiplicacao vai ficar duas operacoes no minimo: uma soma e uma multiplicacao. e portanto o maximo que vc vai chegar eh em 500 MFLOPS com precisao simples (32 bits) e cair para uns 250MFLOPS para precisao dupla (64 bits). se for pensar em MAC/s, vc precisa de uma soma e uma multiplicacao, entao vai ter 500 MMAC/s.

agora, quando vc tem um hardware maior por baixo, a coisa muda de figura. se vc pega um powerpc tipico, superescalar, ele jah de saida conseguiria rodar 2 instrucoes por clock, o que rende 2000 MIPS. com uma unidade de ponto flututante convencional poderia fazer multiplicacoes de precisao dupla ou simples em 1 unico clock, o que permite atingir a marca dos 1000MFLOPS. e com uma unidade vetorial o bicho passa a fazer 2 operacoes de precisao dupla por clock, 4 de precisao simpes e 8 com pixels (16 bits), o que renderia soh na unidade vetorial a performance de 2000MFLOPS, 4000MFLOPS e 8000MIPS. e como os operandos de 16 bits podem ser suficientes para processamento de sinal, se a ALU vetorial suportar instrucao MAC, vc vai conseguir 8000MMAC/s.

obviamente nao eh uma competicao nada justa: um powerpc tem muito mais hardware para fazer muito mais com o mesmo clock. como se nao bastasse, os maiores powerpcs rodam com clocks maiores e mais cores: os da ibm sao tipicamente encontrados em videogames populares com 3 cores de 3.2GHz, enquanto os da freescale possuem 8 cores de 1.5GHz e muito hardware de networking em volta... dependendo da aplicacao, nao existe dsp que faca o que eles fazem.

agora, eu concordo que o PC tipico nao responde como deveria. em teoria a intel esta mais a frente (ou fala que esta) do que os proprios powerpcs. mas o que se ve em termos de resultado nao bate... tecnologicamente deveria ser equivalente, mas como eu nao entendo de x86, nao coloco a minha mao no fogo por eles :)

e dae voltamos aquele chipinho do proex: sem toda uma parafernalha de hardware dedicado de um bicho do tamanho do powerpc, adianta fazer 1500 MIPS e depois ter q gastar proessamento para fazer o q o outro faz direto por hardware? :)

soh te digo uma coisa...

PowerPC! :)

fabim escreveu:poisé tchelo, eu ja sabia disso e foi exatamente isso que eu disse..rs
Isto é o basico em quem fuça com pc e uControladores.RS
Não desmerecendo sua informação, de forma alguma.
Eu entrei apenas no quesito de confusão de utilizadores de sistemas uprocessados ou controlados.
á tem 16Gflops. Nossa senhora, que é isso!!
Argg, isso não é mercadoria nenhuma.
o que manda é, a média de instruções e aritmérica por segundo.
Aí sim sabe-se os mips, ou quantos mião de instrução por second!!..
O pessoal confunde muito isso.
Veja em um simples exemplo.
Dual core 3.2, 64 bits
Teoricamente são 128 bits batenco a cuca serializados no paralelo.
3.2GHZ * 128 flip flops = 409 600 000 000
409.6Gflops.
Grande mercadoria isto,...
Agora coloca um DSP com 192mhz e 54bits apenas tratando audio..

hehehe

Bom

Xmos
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

AnteriorPróximo

Voltar para PIC

Quem está online

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

cron

x