Select Git revision
config_uncmd_spl.h
Forked from
Reform / reform-boundary-uboot
Source project has a limited visibility.
-
Ilya Yanok authored
This patch adds support for networking in SPL. Some devices are capable of loading SPL via network so it makes sense to load the main U-Boot binary via network too. This patch tries to use existing network code as much as possible. Unfortunately, it depends on environment which in turn depends on other code so SPL size is increased significantly. No effort was done to decouple network code and environment so far. Signed-off-by:
Ilya Yanok <ilya.yanok@cogentembedded.com> Acked-by:
Joe Hershberger <joe.hershberger@ni.com> Signed-off-by:
Tom Rini <trini@ti.com>
Ilya Yanok authoredThis patch adds support for networking in SPL. Some devices are capable of loading SPL via network so it makes sense to load the main U-Boot binary via network too. This patch tries to use existing network code as much as possible. Unfortunately, it depends on environment which in turn depends on other code so SPL size is increased significantly. No effort was done to decouple network code and environment so far. Signed-off-by:
Ilya Yanok <ilya.yanok@cogentembedded.com> Acked-by:
Joe Hershberger <joe.hershberger@ni.com> Signed-off-by:
Tom Rini <trini@ti.com>
update.c 1.78 KiB
#include <common.h>
#include <exports.h>
extern unsigned long __dummy;
void do_reset (void);
void do_updater(void);
void _main(void)
{
int i;
printf("U-Boot Firmware Updater\n\n\n");
printf("****************************************************\n"
"* ATTENTION!! PLEASE READ THIS NOTICE CAREFULLY! *\n"
"****************************************************\n\n"
"This program will update your computer's firmware.\n"
"Do NOT remove the disk, reset the machine, or do\n"
"anything that might disrupt functionality. If this\n");
printf("Program fails, your computer might be unusable, and\n"
"you will need to return your board for reflashing.\n"
"If you find this too risky, remove the diskette and\n"
"switch off your machine now. Otherwise press the \n"
"SPACE key now to start the process\n\n");
do
{
char x;
while (!tstc());
x = getc();
if (x == ' ') break;
} while (1);
do_updater();
i = 5;
printf("\nUpdate done. Please remove diskette.\n");
printf("The machine will automatically reset in %d seconds\n", i);
printf("You can switch off/reset now when the floppy is removed\n\n");
while (i)
{
printf("Resetting in %d\r", i);
udelay(1000000);
i--;
}
do_reset();
while (1);
}
void do_updater(void)
{
unsigned long *addr = &__dummy + 65;
unsigned long flash_size = flash_init();
int rc;
flash_sect_protect(0, 0xFFF00000, 0xFFF7FFFF);
printf("Erasing ");
flash_sect_erase(0xFFF00000, 0xFFF7FFFF);
printf("Writing ");
rc = flash_write((uchar *)addr, 0xFFF00000, 0x7FFFF);
if (rc != 0) printf("\nFlashing failed due to error %d\n", rc);
else printf("\ndone\n");
flash_sect_protect(1, 0xFFF00000, 0xFFF7FFFF);
}