Página 1 de 1

Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 12:59
por Guri
Olá, amigos,

Estou com um problema, preciso converter ou melhor dizendo, gerar um arquivo de texto da seguinte forma, vou tentar se o mais claro possível:

Esse bytes estão organizados em 8bits cada no arquivo de texto:
LSB MSB LSB MSB
0xF1, 0xF2, 0xF3, 0xF4,

Quero converter eles para 32bits no arquivo de texto:
0xF2F1F4F3

Eu tentei fazer isso no WINHEX, bom não consegui ter êxito total, o máximo que consegui fazer foi "inverter" o LSB com o MSB, agora eu queria gerar o TEXTO na ordem acima "0xF2F1F4F3", sendo que só conseguir gerar o texto no WINHEX para grupos de 1byte, ou seja 0xF2, 0XF1, 0XF4, 0XF3 enquanto o desejo final seria gerar o texto 0xF2F1F4F3

Alguém sabe como fazer isso?

O motivo de eu querer gerar esse arquivo dessa forma é porque quero usar uma matriz em memória e ocupar os 32bits de cada posição de memória do STF32F. Porque se eu utilizar apenas um byte por posição de memória, irei perder as outras 3 posições dentro da posição de 32bits...

O motivo de usar o WINHEX é por causa da facilidade de geração do arquivo de texto em C, já com o formato correto, ai é só colar...

Espero ter sido claro...
Obrigado

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 13:09
por Rodrigo_P_A
Você está enganado, se vc quer converter para salvar em const na FLASH do STM32 basta fazer: const char seusdados[]={0xF1,0xF2....}

não vai perder 3 bytes, o compilador vai gerar o código para gravar na flash e ocupar toda memória.

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 13:45
por Guri
Obrigado pela resposta, deixa me ver se eu entendi, talvez eu não tenha explicado direito, até eu estou confuso :lol:

Vamos supor que eu esteja no endereço 0 da memória de programa, ok.

Eu tenho 4 bytes de "8bits", Ex.: 0xF1, 0xF2, 0xF3, 0xF4

O barramento do STM é de 32 bits, ok.

Se eu fizer: const char dado[] = { 0xF1, 0xF2, 0xF3, 0xF4};

O compilador vai montar a seguinte sequencia na memória de programa:
Endereço 0 = 0xF1
Endereço 1 = 0xF2
Endereço 2 = 0xF3
Endereço 3 = 0xF4

Ou seja eu usei 4 endereços de memória para armazenar essas variáveis, até ai esta tudo certinho. Mas o Barramento do ARM é de 32bits, portanto eu quero armazenar essas 4 variaveis no byte de 32bits, e para fazer isso tenho que enviar o seguinte código ao compilador:

const unsigned long dado[] = {0xF1F2F3F4};
Agora sim estou ocupando os 32bits da posição 0 da memória flash.

No WINHEX, ele gera um aquivo de texto com os dados, só que em 8bits, tipo: 0xF1, 0xF2, 0xF3, 0xF4. E eu preciso que seja gerado o arquivo assim: 0xF1F2F3F4.

Quando eu disse "perder dados" não foi necessariamente isso que me referi ao pé da letra e sim quero ocupar os 32bits da posição de memória.
Obrigado

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 13:57
por Red Neck Guy
A memoria do ARM eh acessar em bytes.

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 14:04
por Guri
O meu problema não esta na programação do STM...

O problema esta em como fazer um texto: 0xF1, 0XF2, 0XF3, 0XF4
Ficar assim : 0xF1F2F3F4

:roll:

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 14:10
por Guri
Eu peço perdão por não ter tido clareza: Vejam aqui com maior clareza o que eu desejo.

Eu tenho esse texto que foi gerado no WINHEX:

0xB5, 0x7E, 0x6A, 0x6A, 0x6B, 0x77, 0xDE, 0x94, 0xFC, 0x80, 0xD3, 0x50, 0xB4, 0x74, 0x12, 0x99,

Preciso de um programa ("ou se o winhex faz isso, como?" ) que faça a conversão desse texto para:

0xB57E6A6A, 0x6B77DE94, 0xFC80D350, 0xB4741299,

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 15:19
por vtrx
Posta o arquivo que o WInhex gerou.

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 15:24
por KrafT
Bom, eu faria de uma das três formas:

1- Se fosse para uma única vez e o arquivo fosse pequeno: Editaria no Notepad e daria um Replace de ", 0x" por nada, cuidando para manter ", 0x" os que devem permanecer;

2- Eu usaria o Dev C++ ou Visual Studio + C# para fazer isso por manipulação de strings, ou LINQ;

3- Se estivesse num momento masoquista, eu faria a própria aplicação mandar o texto para uma serial e capturaria num terminal já formatado, e colaria de volta no código :evil:

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 17:13
por Guri
kkk.... :lol: Essa foi boa kraft,

Essa foi de lascar, né.

Eu achei uma solução :idea:

Como o arquivo é pequeno, umas 100 linhas, vou fazer na mão :x

Re: Dúvida Sobre Conversão

MensagemEnviado: 09 Set 2018 17:28
por KrafT
Guri escreveu:Como o arquivo é pequeno, umas 100 linhas, vou fazer na mão :x


O que é a minha sugestão 1.

A propósito, quanto queres pelo kit Z80? Só por curiosidade, pq já torrei a verba disponível.

Re: Dúvida Sobre Conversão

MensagemEnviado: 10 Set 2018 18:53
por Rodrigo_P_A
Guri escreveu:Eu peço perdão por não ter tido clareza: Vejam aqui com maior clareza o que eu desejo.

Eu tenho esse texto que foi gerado no WINHEX:

0xB5, 0x7E, 0x6A, 0x6A, 0x6B, 0x77, 0xDE, 0x94, 0xFC, 0x80, 0xD3, 0x50, 0xB4, 0x74, 0x12, 0x99,

Preciso de um programa ("ou se o winhex faz isso, como?" ) que faça a conversão desse texto para:

0xB57E6A6A, 0x6B77DE94, 0xFC80D350, 0xB4741299,


Veja o exemplo abaixo, você está confundindo plataforma 32 bits com endereçamento da memória.

Veja por ser litle endian, os dados são armazenados assim:
ex-arm-mem.png

Re: Dúvida Sobre Conversão

MensagemEnviado: 11 Set 2018 08:00
por tcpipchip
Aquino escreveu:A memoria do ARM eh acessar em bytes.


Aquino já esta falando com sotaque americano!

Re: Dúvida Sobre Conversão

MensagemEnviado: 11 Set 2018 08:31
por tronico
Você falou em arquivo de texto, não seria um arquivo binário ?

Um ótimo software para manipular os bytes de um arquivo é o HxD https://mh-nexus.de/en/hxd/.

Fiquei um poco confuso com sua dúvida! ... Um arquivo ou a memória do micro armazenam informações de 8 bits. O que muda é como esses bytes serão representados no seu programa.
Você pode acessar ou ler essa informação de outra forma não necessariamente byte a byte, com uso de ponteiros por exemplo, em forma de estrutura, ...!

Re: Dúvida Sobre Conversão

MensagemEnviado: 11 Set 2018 22:32
por Guri
Gostei desse editor, ele é bem parecido com o winhex...

Obrigado pelas dicas :D