cancel
Showing results for 
Search instead for 
Did you mean: 

FOTA

welcome2zia
Associate II
Posted on May 12, 2014 at 13:19

i want to change firmware of my stm32 controller through ''Firmware over the air''.stm32 controllers have BOOT0 and BOOT1 pins for boot selection but i can not use these pins as i want to program it remotely. may any body help how may i change my firmware through GSM.

3 REPLIES 3
chen
Associate II
Posted on May 12, 2014 at 14:04

Do you understand the complexity of what you want to do?

''i want to change firmware of my stm32 controller through ''Firmware over the air''''

'' i change my firmware through GSM.''

That means you need a GSM module. If I am not mistaken, that means you need a mobile number to call and receive the firmware upgrade over.

That means, you will have to understand the many protocol layers for

a) talking to a GSM module,

b) call handling,

c) data exchange.

Finally, you need to write you own Firmware upgrade module.

Good luck.

Trev
Associate II
Posted on May 12, 2014 at 15:01

Start by familiarising yourself with the ''In Application Programming'' (IAP) app note for the particular processor in question (you didn't state what it is). The process of updating firmware is the same whether the new firmware comes to you by GSM modem, USB, I2C, CAN etc. . You can then look to design a way of getting this firmware by GSM modem. The best way is to connect to a server over the Internet and download the firmware -- dialling things up over GSM is best avoided these days for many reasons.

Posted on May 12, 2014 at 16:07

The System Loader really isn't going to help you in this situation. You will need to implement your own boot loader, or in-application update. There are several IAP examples for STM32 parts, using USART, Ethernet, etc, as indicated earlier you should review these to get a sense of things.

Ideally you want to download and stage the firmware somewhere, like an SD Card, or other memory. You can go directly to FLASH, but writing to it will stall execution of the processor if it is running any other code from FLASH. This can be addressed by running code from RAM, but this makes things more complicated, especially if you have little experience in this space.

Using GSM/CDMA modems I've use HTTP to download firmware updates, you need good flow control on the modem/serial to do this, as the stalling of the CPU will otherwise cause over/under runs on the USART. For serial updates from a terminal, things like XMODEM work very well as they have inherent flow control and pacing.

HTTP GET is a fairly simple TCP/IP based protocol, I know others who have used FTP, it depends a lot of your familiarity with the protocols, methods, and sockets. If you have little, or no familiarity, I would suggest experimenting with socket programming on a PC before trying to migrate to embedded and modem based solutions.
Tips, buy me a coffee, or three.. PayPal Venmo Up vote any posts that you find helpful, it shows what's working..