cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F407 BOOTLOAD options? URGENT!

christopher
Associate II
Posted on May 17, 2013 at 08:47

This is a continuation of my other thread on JTAG, but shifting topics slightly. I need to understand boot up and firmware loading/updating options better. I'm using the BGA version of this device in my product design. I have to use the SW debug mode because there arent enough available pins for the full JTAG implementation. I'm told this should just work and should be straight forward.

Can someone advise me on the typcial volume production programming methods for this device? Certainly for design/debugging I will use the SW interface. I have a third party company providing me with some driver libraries and they will also be helping me inplement some of their stuff on my product. They are supposedly familiar with these devices and told me in passing that they can set it up to load firmware from the SD card interface on my product. Does this make sense?

There is a section in the user manual form this device that talks about boot modes, and mentions that ''It is used to reprogram the Flash memory by using USART1, USART3, CAN2 or USB OTG FS in Device mode''. Are these really the only options for using the bootloader, or is it possible to have it pull from the SDIO interface? I'm putting a HS USB interface on my product. Aparently only the FS USB interface can do the DFU mode? I could potentially bring one of the above mentioned peripherals out to spare pins on my planned programming header, but I'd really like a sure path forward and not be in the dark about this.

Also, I always have a hard time finding the information on the states of the two boot pins, and how they map to the ''boot modes''.

Any help/insignt would be appreciated.

Thanks!

Chris
1 REPLY 1
Posted on May 17, 2013 at 12:52

Salient Points:

With JTAG/SWD how the device boots internally is usually irrelevant, unless your code breaks the interface early in the boot. Programming occurs by pushing flashing code into RAM and running it. Payloading primary code in via an SDCard simply requires pushing in some code, less than 16KB, and having it run. Works great for multiple MB on to NAND devices.

The BOOTx pins are latched at reset and control the INTERNAL memory mapped at ZERO int the memory map, and consequently where the CPU starts execution.

Exposing USART1/USART3 pins, either headers, test point, edge connectors, along with BOOTx and RESET permits the use of the internal system loader.Always provide your self this means of programming/debugging.  This can also inject data into RAM or FLASH, and allow execution. Expose USB too if that floats your boat. The path to running data out of SDCard is also reasonably short, again by injecting code into RAM. Serial programing can be very quick and cheap, at least an order of magnitude less than JTAG.

In production SDCards will wear out, and be left in devices under test, have plenty of them.
Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..