|
|
View previous topic :: View next topic |
Author |
Message |
Oli Guest
|
Multiple bootloaders using PCD? |
Posted: Wed Aug 05, 2009 7:56 am |
|
|
Hi All,
I'm currently developing a project where we would ideally like two things:
1/ The ability to update the firmware of the device over USB
2/ The ability to update the device over the air
For number 1, microchip have a HID USB bootloader that could be used. The PC side is taken care of then since it has already been written. This bootloader will be entered upon power up, but only executes if a button is pressed when being powered up.
For number 2 though, I know I can get the .hex file over the air to off-chip flash memory without a problem (so assume the .hex is available on this flash memory). Writing this to the program memory though would mean heavily modifying the microchip USB bootloader to talk to the flash memory over SPI, examining flags etc. all in C30 which I've never really used before.
So I was thinking about the possibility of using a second bootloader written in CCS C (based on the PCD serial bootloader as a start) which upon power up, checks a flag on the flash memory to see if there is new firmware, if there is, copies the new firmware from the flash memory. This flag would be set once the main application has downloaded the new firmware and verified it.
So power up would go something like:
1/ enter microchip HID bootloader. If button is being pressed, execute the bootloader. If not, go to the second bootloader
2/ check to see if there is new firmware on the external flash memory (by checking flag). If so, update the firmware from the flash memory. If not, go to the main program
Does this sound reasonable? Are there any flaws to this plan?
EDIT: I am using the PIC24FJ256GB110 and PCD 4.096 |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Wed Aug 05, 2009 9:01 am |
|
|
It sounds reasonable, generally. I don't exactly understand how the Microchip C30 HID bootloader project sets the vector table. Is the bootloader working without any interrupts or do they remap the vectors to the application?
Did you already succeed in combining the bootloader with your application, including interrupts (not considering the intended second bootloader)?
I think, there's a serious problem, that PCD doesn't support some operations required for full control of the vector table and remapping of interrupts. |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|