mirror of
https://github.com/isometimes/rpi4-osdev
synced 2024-11-24 19:20:40 +00:00
Added better progress indicators for the cores in kernel.c
This commit is contained in:
parent
0e540533d9
commit
84f7ebfae8
1 changed files with 41 additions and 5 deletions
|
@ -158,8 +158,31 @@ void playaudio_cpu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void initProgress(void)
|
||||||
|
{
|
||||||
|
drawRect(0, 0, 301, 50, 0x0f, 0);
|
||||||
|
drawString(309, 21, "Core 0", 0x0f, 1);
|
||||||
|
|
||||||
|
drawRect(0, 60, 301, 110, 0x0f, 0);
|
||||||
|
drawString(309, 81, "Core 1", 0x0f, 1);
|
||||||
|
|
||||||
|
drawRect(0, 120, 301, 170, 0x0f, 0);
|
||||||
|
drawString(309, 141, "Core 2", 0x0f, 1);
|
||||||
|
|
||||||
|
drawRect(0, 180, 301, 230, 0x0f, 0);
|
||||||
|
drawString(309, 201, "Core 3", 0x0f, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawProgress(unsigned int core, unsigned int val) {
|
||||||
|
// val should be 0-100
|
||||||
|
if (val == 0) drawRect(1, (60 * core) + 1, 300, (60 * core) + 49, 0x00, 1);
|
||||||
|
if (val > 0) drawRect(1, (60 * core) + 1, (val * 3), (60 * core) + 49, 0x33, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void core2_main(void)
|
void core2_main(void)
|
||||||
{
|
{
|
||||||
|
unsigned int core2_val = 0;
|
||||||
|
|
||||||
clear_core2(); // Only run once
|
clear_core2(); // Only run once
|
||||||
|
|
||||||
debugstr("Playing on CPU Core #2 using DMA... ");
|
debugstr("Playing on CPU Core #2 using DMA... ");
|
||||||
|
@ -168,34 +191,47 @@ void core2_main(void)
|
||||||
|
|
||||||
debugstr("core2_main() running still... ");
|
debugstr("core2_main() running still... ");
|
||||||
while (*(dma+DMA_CS) & 0x1) { // Wait for DMA transfer to finish - we could do anything here instead!
|
while (*(dma+DMA_CS) & 0x1) { // Wait for DMA transfer to finish - we could do anything here instead!
|
||||||
wait_msec(0x47FFFF);
|
wait_msec(0x7FFFF);
|
||||||
debugstr("o"); // Print an o roughly every 4.5 seconds
|
drawProgress(2, core2_val);
|
||||||
|
if (core2_val < 100) core2_val++;
|
||||||
}
|
}
|
||||||
debugstr(" ----> finished");
|
debugstr("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
void core1_main(void)
|
void core1_main(void)
|
||||||
{
|
{
|
||||||
|
unsigned int core1_val = 0;
|
||||||
|
|
||||||
clear_core1(); // Only run once
|
clear_core1(); // Only run once
|
||||||
|
|
||||||
debugstr("Playing on CPU Core #1... ");
|
debugstr("Playing on CPU Core #1... ");
|
||||||
playaudio_cpu();
|
playaudio_cpu();
|
||||||
debugstr("done"); debugcrlf();
|
debugstr("done"); debugcrlf();
|
||||||
|
|
||||||
|
core1_val = 100;
|
||||||
|
drawProgress(1, core1_val);
|
||||||
|
|
||||||
start_core2(core2_main); // Kick it off on core 2
|
start_core2(core2_main); // Kick it off on core 2
|
||||||
}
|
}
|
||||||
|
|
||||||
void core0_main(void)
|
void core0_main(void)
|
||||||
{
|
{
|
||||||
|
unsigned int core0_val = 0;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
wait_msec(0x100000);
|
wait_msec(0x100000);
|
||||||
debugstr("x"); // Print an x roughly every 1 second
|
drawProgress(0, core0_val);
|
||||||
|
if (core0_val < 100) core0_val++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
fb_init();
|
fb_init();
|
||||||
|
initProgress();
|
||||||
|
|
||||||
|
unsigned int i=0;
|
||||||
|
while (i++<30) debugcrlf();
|
||||||
|
|
||||||
debugstr("Initialising audio unit... ");
|
debugstr("Initialising audio unit... ");
|
||||||
audio_init();
|
audio_init();
|
||||||
|
|
Loading…
Reference in a new issue