#include "embiosapp.h"
void main();
EMBIOS_APP_HEADER("Test application", 0x4000, main, 127)
void main()
{
/* Switch to FASTBUS mode => GCLK = HCLK */
asm volatile(
"mrc p15, 0, r0,c1,c0 \n\t"
"bic r0, r0, #0xc0000000 \n\t"
"mcr p15, 0, r0,c1,c0 \n\t"
::: "r0"
);
/* PCLK = HCLK */
*((uint32_t volatile*)0x3c50003c) &= ~0x200;
/* FCLK_CPU = OFF, HCLK = PLL0 / 4 */
*((uint32_t volatile*)0x3c500000) = ((*((uint32_t volatile*)0x3c500000)) & ~0xFF00FF00) | 0x80003300;
long oldtime = read_usec_timer();
int i;
for (i = 0; i < 1000; i++) displaylcd(0, 175, 0, 131, NULL, 0);
long newtime = read_usec_timer();
/* FCLK_CPU = PLL0, HCLK = PLL0 / 2 */
*((uint32_t volatile*)0x3c500000) = ((*((uint32_t volatile*)0x3c500000)) & ~0xFF00FF00) | 0x20003100;
/* PCLK = HCLK / 2 */
*((uint32_t volatile*)0x3c50003c) |= 0x200;
/* Switch to ASYNCHRONOUS mode => GCLK = FCLK_CPU */
asm volatile(
"mrc p15, 0, r0,c1,c0 \n\t"
"orr r0, r0, #0xc0000000 \n\t"
"mcr p15, 0, r0,c1,c0 \n\t"
::: "r0"
);
cprintf(3, "Needed %d usecs for %d frames\n", newtime - oldtime, i);
}