How does to implement the firmware upgrade feature by serial boot mode? Could Freescale release FW upgrade application sample code on MPC5748G?
Hi,
The latest version of RAppID bootloader already supports MPC5748G:
https://www.nxp.com/webapp/Download?colCode=RAPPID_BOOTLOADER_UTILITY
Please notice that RAppID supports only RBF algorithm in case of MPC57xx devices. That means it is necessary to program the RBF to flash memory using third party tool (JTAG programmer) and after that it is possible to use RAppID graphical interface. This is different against MPC56xx devices that support RBA algorithm, so it is possible to program blank device using BAM and SCI or CAN interface (JTAG programmer is not necessary).
You can also develop own bootloader using serial boot. BAF module on MPC5748G searches for valid boot header in flash after reset. If there’s no boot header, serial boot starts. We are able to load code to RAM memory (not to flash) using this serial boot procedure. If we want to load the code to flash memory, it is necessary to develop secondary bootloader. That means secondary bootloader will be loaded to RAM memory using BAF and then the secondary bootloader will be executed. The secondary bootloader then will be responsible to load data from somewhere and program them to flash.
As mentioned above, the serial boot starts only if there’s no valid boot header in flash. Once user application is loaded to flash, serial boot is not executed anymore. It would be necessary to erase the boot header.
MPC56xx devices used pins like FAB and ABS to invoke the serial boot. This is not implemented on MPC5748G. But there’s similar option: it is possible to use SER_BOOT_CBACK as described in chapter “57.4.6.5 SER_BOOT_CBACK – BAF serial boot DCF client”. The expectation is that the customer will use this callback to check the state of a pin (or any other indication) to determine if normal flash boot or Serial boot is required. This function written by customer should return value 0x00 (to boot from flash) or 0x01 (to use serial boot). This is similar to FAB pin but it is not so straightforward.
And the last option is to use flash resident bootloader. For example, Vector provides ready solution:
https://vector.com/vi_flashbootloader_en.html?markierung=bootloader
I have also shared draft of my application note here on community:
https://community.freescale.com/servlet/JiveServlet/download/427962-279359/bootloader.zip
It describes how to create flash resident bootloader. It was written for MPC56xx devices and SW example is written for MPC5634M. But the principle is still the same.
Regards,
Lukas