ROLO - Enable multiboot firmware
I never added multiboot awareness to ROLO When a new firmware file was loaded [Bootdata] would not be copied to the new instance resulting in the firmware running off the internal drive till next reboot Bootloaders shares the rb-loader code but should not be affected by the removal of static from write_bootdata() Change-Id: Iccb18eebeee5c59f9534df51eb6826876c441762
This commit is contained in:
parent
adce547e13
commit
d7b9eb6b63
2 changed files with 15 additions and 1 deletions
|
@ -36,7 +36,7 @@
|
|||
* Returns payload len on success,
|
||||
* On error returns EKEY_NOT_FOUND
|
||||
*/
|
||||
static int write_bootdata(unsigned char* buf, int len, unsigned int boot_volume)
|
||||
int write_bootdata(unsigned char* buf, int len, unsigned int boot_volume)
|
||||
{
|
||||
struct boot_data_t bl_boot_data;
|
||||
struct boot_data_t *fw_boot_data = NULL;
|
||||
|
|
|
@ -48,6 +48,11 @@
|
|||
#define LOAD_FIRMWARE(a,b,c) load_rkw(a,b,c)
|
||||
#else
|
||||
#include "rb-loader.h"
|
||||
#if defined(HAVE_BOOTDATA) && !defined(SIMULATOR)
|
||||
#include "bootdata.h"
|
||||
#include "crc32.h"
|
||||
extern int write_bootdata(unsigned char* buf, int len, unsigned int boot_volume); /*rb-loader.c*/
|
||||
#endif
|
||||
#define LOAD_FIRMWARE(a,b,c) load_firmware(a,b,c)
|
||||
#endif
|
||||
|
||||
|
@ -236,6 +241,15 @@ int rolo_load(const char* filename)
|
|||
filebuf = core_get_data(rolo_handle);
|
||||
|
||||
err = LOAD_FIRMWARE(filebuf, filename, filebuf_size);
|
||||
#if defined(HAVE_BOOTDATA) && !defined(SIMULATOR)
|
||||
/* write the bootdata as if rolo were the bootloader */
|
||||
unsigned int crc = 0;
|
||||
if (strcmp(filename, BOOTDIR "/" BOOTFILE) == 0)
|
||||
crc = crc_32(boot_data.payload, boot_data.length, 0xffffffff);
|
||||
|
||||
if(crc > 0 && crc == boot_data.crc)
|
||||
write_bootdata(filebuf, filebuf_size, boot_data.boot_volume); /* rb-loader.c */
|
||||
#endif
|
||||
|
||||
if (err <= 0)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue