Beispiel #1
0
/*!
 * First kernel function (after boot loader loads it to memory)
 */
void k_startup ()
{
	extern console_t K_INITIAL_STDOUT, K_STDOUT;
	extern console_t *k_stdout; /* console for kernel messages */

	/* set initial stdout */
	k_stdout = &K_INITIAL_STDOUT;
	k_stdout->init (0);

	/* initialize memory subsystem (needed for boot) */
	k_memory_init ();

	/*! start with regular initialization */

	/* interrupts */
	arch_init_interrupts ();

	/* detect memory faults (qemu do not detect segment violations!) */
	arch_register_interrupt_handler ( INT_MEM_FAULT, k_memory_fault );
	arch_register_interrupt_handler ( INT_UNDEF_FAULT, k_memory_fault );

	/* switch to default 'stdout' for kernel */
	k_stdout = &K_STDOUT;
	k_stdout->init (0);

	kprintf ( "%s\n", system_info );

	/* enable interrupts */
	enable_interrupts ();

	stdio_init (); /* initialize standard output devices */

	/* start desired program(s) */
	hello_world ();
	segm_fault ();

#if ( TURN_OFF == 0 )
	kprintf ( "\nSystem halted!\n" );
#ifdef PL190
	/* testing uart (arm) interrupts */
	void uart0_echo_test_start ();
	uart0_echo_test_start ();
	suspend();
#endif
	halt ();
#else
	/* power off (if supported, or just stop if not) */
	kprintf ( "Powering off\n\n" );
	power_off ();
#endif
}
Beispiel #2
0
static void run_all ( char *argv[] )
{
	kprintf ( "\nStarting program: hello_world\n\n" );
	hello_world (argv);

	kprintf ( "\nStarting program: timer\n\n" );
	timer (argv);
#if 0
	kprintf ( "\nStarting program: keyboard\n\n" );
	keyboard (argv);

	kprintf ( "\nStarting program: segm_fault\n\n" );
	segm_fault (argv);
#endif
	kprintf ( "\nStarting program: arguments\n\n" );
	char *args[] = { "first", "second", "third", NULL };
	arguments (args);
}