Skip to content

kernel_start_ru

Serge Vakulenko edited this page Aug 26, 2015 · 1 revision

Старт системы

При старте системы вызывается функция пользователя uos_init(), которая посредством task_create() создает необходимое количество задач. После завершения функции uos_init() запускается планировщик задач, открываются прерывания и наиболее приоритетная из созданных задач получает управление.

Функция uos_init()

#include "kernel/uos.h"

void uos_init (void);

Функция пользователя, вызываемая системой на этапе инициализации. Ваша программа должна содержать ровно одну функцию uos_init(). Главная её цель -- создать необходимое количество задач. К этому моменту механизм синхронизации задач еще не функционирует, поэтому единственная функция ядра, которую можно (и нужно) вызывать -- это task_create(). Функция uos_init() не должна вызывать никакие другие функции ядра (task_xxx(), mutex_xxx()) ни непосредственно, ни посредством вызова других модулей. В частности, нельзя инициализировать и обращаться к модулю управления памятью (mem_alloc() и пр.).

Во время работы uos_init() прерывания запрещены.

После завершения функции uos_init() запускается планировщик задач, открываются прерывания и наиболее приоритетная из созданных задач получает управление.

Пример

#include "runtime/lib.h"
#include "kernel/uos.h"

char stack [400];

void hello (void *data)
{
    debug_puts ("Hello, World!\n");
    uos_halt ();
}

void uos_init (void)
{
    task_create (hello, 0, "hello", 1, stack, sizeof (stack));
}

Функция uos_halt()

#include "kernel/uos.h"

void uos_halt (void);

Завершение работы отлаживаемой системы. Используется при отладке про управлением инструментальной операционной системы, например MS-DOS или Linux. При работе в целевом процессоре не выполняет никаких действий.

Пример

#include "runtime/lib.h"
#include "kernel/uos.h"

char stack [400];

void hello (void *data)
{
    debug_puts ("Hello, World!\n");
    uos_halt ();
}

void uos_init (void)
{
    task_create (hello, 0, "hello", 1, stack, sizeof (stack));
}
You can’t perform that action at this time.