
Dear Sirs,
I am trying to implement a memory and CPU demanding standalone application on the beagleboard by hacking U-Boot.
To my surprise, the U-Boot program is ten times slower than the same program running under Linux on the beagleboard.
This test loop when inserted in u-boot/common/main.c.main_loop takes 8.9 s with caches enabled and 10.1 s with caches disabled:
Unsigned long *p;
long i, error;
p = 0x81000000;
printf("filling:\n");
for (i = 0; i < 25000000; i++) *(p+i) = i;
printf("testing:\n");
error = 0;
for (i = 0; i < 25000000; i++)
{
if (*(p+i) != i)
{
error = i+1;
break;
}
}
printf("error=%ld\n",error);
The same loop (with p = malloc( 25000000 * 4) takes less than a second on Angstrom Linux on the beagleboard.
The routine cpy_clk_code in lowlevel_init.S that copies the go_to_speed routine to SRAM is executed at start-up but the go_to_speed code apparently never gets executed. I have verified this by inserting hang loops in cpy_clk_code() and go_to_speed().
Beagleboard version = C4
U-Boot version = u-boot-2010.09