Olá,
Estou tentando fazer o flash de uma placa STM32F103 via SWD com uma placa de descoberta STM32F407. Infelizmente não funciona apenas com a placa STM32F103.
st-flash
Saída:
st-flash write prog.bin 0x8000000
2017-01-24T18:44:14 INFO src/stlink-common.c: Loading device parameters....
2017-01-24T18:44:14 INFO src/stlink-common.c: Device connected is: F1 High-density device, id 0x10036414
2017-01-24T18:44:14 INFO src/stlink-common.c: SRAM size: 0x10000 bytes (64 KiB), Flash: 0 bytes (0 KiB) in pages of 2048 bytes
Como você pode ver, dá algo inesperado como
Flash: 0 bytes (0 KiB) in pages of 2048 bytes
st-info --probe
Found 1 stlink programmers
serial: 303030303030303030303031
openocd: "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31"
flash: 0 (pagesize: 2048)
sram: 65536
chipid: 0x0414
descr: F1 High-density device
Alguém sabe como resolver.
Agradeço antecipadamente.
Resolvido com o utilitário ST Link.
a placa estava _protegida contra gravação_
Obrigado pelo seu relatório, acho que vou adicionar isso aos documentos para que outras pessoas não falhem com isso.
Oi, você pode me ajudar nisso? Como posso desativar a proteção contra gravação? Estou usando Mac OSX. A ferramenta oficial do utilitário St-link é apenas para Windows, certo?
Você provavelmente poderia apagar em massa primeiro e eu pensei que a proteção contra gravação fosse limpa então. Ou com alguns comandos do openocd (tem mais recursos que o texane/stlink).
Obrigado pela sua resposta rápida. Eu tentei apagar o flash, funcionou. No entanto, a questão permanece. Vou tentar usar algum computador com windows para ver o que acontece. :\
Você já viu isso no README?
https://github.com/texane/stlink/commit/0f9e4990ba0cdc295875b219b354fdf42f30a9aa
Ao usar o OpenOCD, você provavelmente poderia invocar os comandos monitor stm32f1x unlock 0
(não testados). Consulte http://openocd.org/doc/html/Flash-Commands.html.
Executei o utilitário ST-LINK (no Windows) e fui em Target > Option Bytes... > Disable Read Out Protection (combo box). Pronto, problema resolvido.
Eu poderia encontrar pistas sobre como desativar a proteção de leitura usando o openOCD seguindo este link: http://www.openstm32.org/forumthread562. Estou usando a Blue Pill Stm32F103c8t6 uma placa chinesa. Basta adicionar a linha "monitor flash protect 0 0 11 off" ao script de inicialização do openOCD. [Não testado]
Oi, eu tive sucesso ao desbloquear bluepills stm32 usando os seguintes comandos na sessão do terminal openocd:
redefinir parada
bancos de flash
stm32f1x mass_erase 0
stm32f1x desbloquear 0
Depois disso, o dispositivo estava pronto para ser programado novamente.
@jeroavf Obrigado! Isso funcionou para mim e --probe
agora retorna 65536
(parece que eu tenho um dos poucos modelos de 64kb), além de piscar corretamente.
Engraçado, ao fazer o passo mass_erase
ele até pensa que é 128kb, mas deixa pra lá.
STM32 flash size failed, probe inaccurate - assuming 128k flash
flash size = 128kbytes
Obrigado, consegui desbloquear alguns STM32F437 com um apagamento completo do chip com o utilitário Windows ST-Link, agora isso está funcionando novamente no linux st-link :-)
Comentários muito úteis
Oi, eu tive sucesso ao desbloquear bluepills stm32 usando os seguintes comandos na sessão do terminal openocd:
Depois disso, o dispositivo estava pronto para ser programado novamente.