2015-05-28 11:23 AM
I want to enter the Bootloader on STM32F429 Discovery and reprogram the internal flash via I2C.
I read AN2606 and then connected the following pins from my I2C master: SDA <-> PB9 SCL <-> PB6 GND <-> GND BOOT0 <-> 3v Is this correct? I get no serial output on the microusb port anymore, so *something* has happened. i2cdetect detected nothing on the bus. Should it have been able to detect the bootloader if it had started? Assuming I eventually get into this bootloader. Is there a ready implementation of the i2c-bootloader protocol for linux out there? Should be able to write it myself, but have no real desire to do it :) #stm32f429discovery #stm32 #i2c #bootloader2015-05-28 12:29 PM
You could try confirming it's in the boot-loader mode via the serial port, and what version you have. It takes no time to enter the System Loader, but I haven't looked at the criterion for entering/sensing I2C bus activity, or which version of the loader implemented such.
With the I2C you're going to have to craft your own app that implement's ST's protocol, I doubt some chip finding app is going to probe it in a meaningful way, short of confirming it gets an ACK from a specific I2C address.The constituency of Linux users programming the STM32 via I2C, I would guess is pretty small.2015-05-28 11:54 PM
Thanks for the reply.
I use the micro usb for debugging now. It is a Virtual ComPort on normal boot, but nothing when I try to start from bootloader. I suspect the serial port you mean is the uart? The bootloader will output something there on start? Will likely, as you say, have to craft something myself. I see there is some i2c-loading in https://code.google.com/p/stm32flash/, but haven't gone into details yet.2015-05-29 05:40 AM
The System Loader supports serial connectivity via USART1 and USART3 on specific pins as I recall.
You send an 0x7F byte at 8E1 and expect to see an 0x79 response. The chip is silent otherwise.2015-06-02 12:15 PM
This actually kinda works. For some reason it does not enter the bootloader each time I power on, but it does so about 3 out of 4 times. That is enough for me for prototyping my bootloader.
I've managed to read versions and load new software via the i2c bootloader now. What remains is to figure out why I always get a nack on mass erase of the flash, even though it actually manages to do the erase (at least of the bank I use) :)