68K ou coisa assim, again

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Mensagempor mastk » 15 Out 2009 16:37

WIP, sistema esta montado, devidamente alimentado, clock pulsando como esperado e apos isso, nao vejo o codigo de loop simples sendo execuldado.

Novamente um:

org 0
0000 1000
0000 0400


org 0400
inicio:
bra inicio
Imagem

Imagem
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 15 Out 2009 18:14

tem um manual deles bom para o MCF5270, eh o MCF5271EC.pdf, tem um checklist bom de coisas para lembrar na pagina 8:

- capacitores de 33uF, 0.1uF e 0.01uF em cada alimentacao
- sequencia de ativacao da alimentacao (normalmente o regulador de 1.5V ligado para frente do regulador de 3.3V)
- verificar as tabelas do que requer pull-up! as vezes pode ser apenas a JTAG ativada quando nao deveria.
- verificar CLKOUT
- verificar RSTOUT

se vc esta sem osciloscopio, pode dar uma improvisada com um ou dois 74F93 e um mcu para fazer um contador de pulsos. joga a saida de CLKOUT em um par de 74F93, vc divide por 256 (nao lembro se era 16MHz o clock!) e daih vc tem um sinal de 62.5KHz que injeta facil em qq timer de mcu para calcular a frequencia.

se tem CLKOUT, ele tem q conseguir pelo menos ativar RSTOUT. eu vi que vc colocou um oscilador TTL, tem q ver se ele nao roda apenas com cristal :)

no caso do RSTOUT, vc pode puxar as saidas do primeiro 74F93, ou seja, vc reseta o sistema, o primeiro 74F93 tem q contar exatamente 1 pulso. se ele estiver saindo seguido, eh pq tem algum poblema na alimentacao e ele esta resetando sozinho.

se ambos estao ok, monitora o chip-select da FLASH para ver se ele esta realmente lendo alguma coisa... e dae vai monitorando sinal por sinal, as vezes por algum erro de configuracao ele pode estar tentando subir com uma largura errada ou alguma configuracao divergente.

se ele estiver ativando o chip-select, vc pode tentar fixar o valor no bus de dados com resistores e tirar as FLASHes, assim ele vai ler uma instrucao fixa, porem eu acho que nao existe mais a combinacao 0x0000!

tem que ser um 0x0080, quer dizer ele vai setar o SP para 0x0080, o PC para 0x0080 e comecar a ler apenas 0x0080... e nisso ele vai incrementando o address bus continuamente. se ele restar, eh pq tem algum problema de alimentacao ainda.

como o core roda a 1.5V apenas, essa tensao tem q ser bem limpa e sem ruidos! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 16 Out 2009 10:22

Como o Marcelo já disse, mas recomendando também, use varios capacitores em paralelo com valores diferentes. De preferencia a capacitores cerâmicos de desacoplamento. Na fonte e proximo dos terminais da CPU, coloque 100nf, 10nf, 22nf, 47nf, 1nf(ou conforme diz o datasheet e/ou frequencia a desacoplar a terra). Em paralelo e proximo de cada CI, como memorias, logicas TTL, coloque um de 100nf, e dependendo da quantidade de CIs na placa é bom colocar alguns de 100uF em alguns pontos da placa. Sem isso o circuito fica instavel, as vezes o software tá correto, mas sem estes desacoplamentos a placa fica instavel.
enigmabox
 

Mensagempor mastk » 25 Out 2009 00:12

De fato pessoal, o problema era a configuracao durante o boot, nesse momento o loop de LOOP: BRA LOOP, esta funcionado, curioso eh que o coldfire pare 8 bytes antes de retornar (chego a essa conclusao por ver ate o A2 sendo pulsado no barramento rs), eh o fecth da CPU acredito, e fica ate uma curiosidade, se o cache fica-se habilitado a CPU nao iria mais acessar o barramento, ja que toda a aplicacao cabe no cache ne?

Outra coisa que precisso pesquisar, eh uma IDE para me adequar ao hardware, nesse momento, gostaria de algo pratico de eficiente, como o Easy68K eh, e ate certo ponto posso usa-lo para via conversores de asm, as opçoes que tenho hj sao o CW, que parece muito bom, mas o projeto criado por ele eh um estrutura pronta e apenas em C, ou entao GCC, mas nao quero ter montar outro computador para usar linux (dual boot nao vira), ha um ou dois anos atras conseguir montar o eclipse mas nao cheguei a ver nada sobre debuguer ou simulador e era pesadissimo, fazia meu antigo atlhon XP travar legal na compilacao.

This is sparta :wink:
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 25 Out 2009 02:27

mastk escreveu:De fato pessoal, o problema era a configuracao durante o boot, nesse momento o loop de LOOP: BRA LOOP, esta funcionado, curioso eh que o coldfire pare 8 bytes antes de retornar (chego a essa conclusao por ver ate o A2 sendo pulsado no barramento rs), eh o fecth da CPU acredito, e fica ate uma curiosidade, se o cache fica-se habilitado a CPU nao iria mais acessar o barramento, ja que toda a aplicacao cabe no cache ne?


tanto a cache quanto o chip-select vc tem q configurar durante o boot. veja q ele boota com a pior configuracao de chip-select possivel e com todas as caches desligadas. o bom seria desenvolver algumas bibliotecas extras, para a serial por exemplo, assim vc pode ver o seu sistema bootando... daih se vc reconfigura o chip-select de boot para algo mais otimizado e liga as caches, vc visualiza bem a diferenca!

o bichinho eh realmente muito rapido e dah gosto de trabalhar com ele: mesmo operando com um bus mais estreito de 16 bits, a performance jah nao eh afetada em funcao da maioria das instrucoes terem 16 bits de largura... e com as caches on-chip fica melhor ainda! :)

Outra coisa que precisso pesquisar, eh uma IDE para me adequar ao hardware, nesse momento, gostaria de algo pratico de eficiente, como o Easy68K eh, e ate certo ponto posso usa-lo para via conversores de asm, as opçoes que tenho hj sao o CW, que parece muito bom, mas o projeto criado por ele eh um estrutura pronta e apenas em C, ou entao GCC, mas nao quero ter montar outro computador para usar linux (dual boot nao vira), ha um ou dois anos atras conseguir montar o eclipse mas nao cheguei a ver nada sobre debuguer ou simulador e era pesadissimo, fazia meu antigo atlhon XP travar legal na compilacao.

This is sparta :wink:


vc pode usar o virtualbox! eu uso ele no OSX para rodar o codecomposer (windows xp) e o xilinx ise (linux)... funciona muito bem! :)

por outro lado, se for apenas para rodar o gcc e tools de compilacao cross para 68k, realmente vc nao precisa de muita coisa e poderia usar o devcpp:

http://csjava.occ.cccd.edu/~gilberts/devcpp5/

obviamente o compilador e tools sao configuraveis, de modo que vc pode trocar facil mingw.x86 pelo gcc-68k.

efetivamente, eh apenas front-end burro... se vc abrir um arquivo assembler, eh soh mandar compilar com o gcc q ele se vira, ou seja, o gcc detecta o formato e compila corretamente, enquanto a ide fica soh olhando hehehe
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 10 Dez 2009 10:55

WIP:

Led piscando, apos uma busca achei uma IDE razoavel e free para coldfire, WinIDE da pemicro, limitada em 64K, no momento me serve, passei por muitas opcoes, comecei usando os velhos compiladores DOS para 680x0, muitos deles suportam instrucoes como a MOVEC, que julgava nescessaria naquele ponto, passando a limpo a inicializacao da MCU vi que nao era, por default os perifericos ja tem endereco valido, nesse ponto voltei a usar o bom easy68k para testes aqui e ali, tendo cuidado com os modos de enderamento ele funciona muito bem.

Porem entretanto, agora gostaria de usar a SRAM interna, e usando o seguinte codigo, nao tenho sucesso, que estou fazendo de errado?

move.l $20000001,D0
movec D0,RAMBAR

loop:
move.l $20000000,A1
move.l #PODH,A0
move.b #$40,D0
move.b D0,(A1)
move.b (A1),D0
move.b D0,(A0)
bra loop

PODH, eh o DATAH, iniciado e testado como saida, E sai 0 em todos os pinos nesse codigo o que nao deveria, tenho a impressao que estou um enderecao nao implementado.

Como vai indo as coisas Sam e Enigma?
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 10 Dez 2009 17:34

opa! nao eh um movec.l ? ele pode estar copiando apenas 16 bits ao inves de 32 bits... mas diz o manual q ele transfere sempre 32 bits no coldfire, entao nao deveria ser isso.

bom, eu tava parado ateh terca-feira passada, por causa do mestrado! :P nunca estudei tanto na vida... mas agora quero ver se retomo o 5270 agora no fim do ano ou comeco do ano que vem.

uma coisa q eu vi agora pouco: o set de instrucoes tem rambar0 e rambar1 para movec. acho que se nao colocar rambar1, ele acaba compilando como rambar0.

a instrucao codificada tem um 0x5c no meio, q eh o offset do rambar1.

mastk escreveu:WIP:

Led piscando, apos uma busca achei uma IDE razoavel e free para coldfire, WinIDE da pemicro, limitada em 64K, no momento me serve, passei por muitas opcoes, comecei usando os velhos compiladores DOS para 680x0, muitos deles suportam instrucoes como a MOVEC, que julgava nescessaria naquele ponto, passando a limpo a inicializacao da MCU vi que nao era, por default os perifericos ja tem endereco valido, nesse ponto voltei a usar o bom easy68k para testes aqui e ali, tendo cuidado com os modos de enderamento ele funciona muito bem.

Porem entretanto, agora gostaria de usar a SRAM interna, e usando o seguinte codigo, nao tenho sucesso, que estou fazendo de errado?

move.l $20000001,D0
movec D0,RAMBAR

loop:
move.l $20000000,A1
move.l #PODH,A0
move.b #$40,D0
move.b D0,(A1)
move.b (A1),D0
move.b D0,(A0)
bra loop

PODH, eh o DATAH, iniciado e testado como saida, E sai 0 em todos os pinos nesse codigo o que nao deveria, tenho a impressao que estou um enderecao nao implementado.

Como vai indo as coisas Sam e Enigma?
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 09 Jan 2010 17:47

Sam, negocio do RAMBAR era que o compilador suportava a instrucao, mas nao a montava corretamente, nada que forçando em hexa nao resolva :)

WIP:

Trabalhei no portatil, mas to andando com o coldfire, ja testei os perifericos que precisso e estou trabalhando com video novamente, dessa vez nao vou me ausentar de usar força bruta, do que tenho agora ja ta bom, o que ta no buffer vai para tela, tem alguns erros para serem corrigidos e circuito para serem implementados, mas agora eh questao de tempo rs.

Imagem
Imagem
Imagem
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 09 Jan 2010 20:39

q componente programavel eh aquele da xilinx? :D
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 12 Jan 2010 11:44

XV9536XL

Mais uma vez, um sinal de alta frenquencia, com 20cm de comprimento, chega la deformado nos primeiros 4 clocks e depois se estabeliza.

E agora? Termino? Bufferizo? Vamos ver...
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 12 Jan 2010 12:49

tem tb um negocio que eh a terminacao em serie, chamada de source termination:

http://web.cecs.pdx.edu/~greenwd/xmsnLine_notes.pdf

eh bem simples, basicamente um resistor em serie na linha, do lado do transmissor do sinal. eu sempre vi os caras usando, mas nao entendia muito bem como funcionava. no final desse pdf tem uma explicacao boa e a vantagem desse metodo eh que consome menos corrente que as terminacoes normais no fim da linha.

aqui no item 5.5.4 para frente tem mais algumas ideias:

http://www.compliance-club.com/archive/ ... 991005.htm

mastk escreveu:XV9536XL

Mais uma vez, um sinal de alta frenquencia, com 20cm de comprimento, chega la deformado nos primeiros 4 clocks e depois se estabeliza.

E agora? Termino? Bufferizo? Vamos ver...
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 12 Jan 2010 20:18

Marcelo,

Como anda o seu projeto do Dual Core 68k? Desistiu o está em banho maria?

Mastk,

Acho que a unica maneira ter ter uma boa placa de video é usar um CPLD de bastante perninhas...hehe ou partir para um FPGA....
É o que estou pensando em fazer.....
enigmabox
 

Mensagempor msamsoniuk » 13 Jan 2010 14:51

esta parado, como tudo lah em casa! ontem eu cheguei 21h em casa, cai na cama e dormi! anda dificil arrumar tempo para mexer :)

enigmabox escreveu:Marcelo,

Como anda o seu projeto do Dual Core 68k? Desistiu o está em banho maria?

Mastk,

Acho que a unica maneira ter ter uma boa placa de video é usar um CPLD de bastante perninhas...hehe ou partir para um FPGA....
É o que estou pensando em fazer.....
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 13 Jan 2010 16:39

Marcelo,

Eu tb estou sem tempo, tive que estudar estes ultimos meses para a Fuvest, agora estou mais tranquilo, penso em breve retornar com o projeto.
Bom, acho que somente o Mastk que deve estar com o Coldfire em funcionamento.....
enigmabox
 

Mensagempor msamsoniuk » 13 Jan 2010 21:21

pois eh, fui inventar de comecar um mestrado e acabei matando o tempo livre q eu nao tinha! hehehe dureza, passei muitos fins de semana acordado direito na frente do computador fazendo coisas do mestrado... agora tou tentando matar todos os projetos q estao pendentes no trampo, pq em marco recomeca o mestrado e dae o negocio vai apertar novamente! :)

enigmabox escreveu:Marcelo,

Eu tb estou sem tempo, tive que estudar estes ultimos meses para a Fuvest, agora estou mais tranquilo, penso em breve retornar com o projeto.
Bom, acho que somente o Mastk que deve estar com o Coldfire em funcionamento.....
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

AnteriorPróximo

Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

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

x