Add full automotive RTOS project
Add kernel (Cortex-M0/M3/M4, Tricore, S32K, RISC-V ports), drivers, middleware (CAN stack, diagnostics, safety), applications, board support, build/test tooling, and documentation.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
/**
|
||||
* @file kernel.h
|
||||
* @brief Core kernel definitions and types for Automotive RTOS
|
||||
* @author Automotive RTOS Team
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
#ifndef KERNEL_H
|
||||
#define KERNEL_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Kernel Version */
|
||||
#define KERNEL_VERSION_MAJOR 1
|
||||
#define KERNEL_VERSION_MINOR 0
|
||||
#define KERNEL_VERSION_PATCH 0
|
||||
|
||||
/* Configuration Constants */
|
||||
#define MAX_TASKS 32
|
||||
#define MAX_PRIORITY_LEVELS 16
|
||||
#define MAX_TASK_NAME_LENGTH 16
|
||||
#define IDLE_TASK_PRIORITY (MAX_PRIORITY_LEVELS - 1)
|
||||
|
||||
/* Task States */
|
||||
typedef enum {
|
||||
TASK_SUSPENDED = 0,
|
||||
TASK_READY = 1,
|
||||
TASK_RUNNING = 2,
|
||||
TASK_BLOCKED = 3,
|
||||
TASK_TERMINATED = 4
|
||||
} TaskState_t;
|
||||
|
||||
/* Task Priority Type */
|
||||
typedef uint8_t TaskPriority_t;
|
||||
|
||||
/* Task Handle */
|
||||
typedef struct TaskControlBlock* TaskHandle_t;
|
||||
|
||||
/* Task Function */
|
||||
typedef void (*TaskFunction_t)(void* parameters);
|
||||
|
||||
/* Time Types */
|
||||
typedef uint32_t TickType_t;
|
||||
typedef uint32_t TimeOut_t;
|
||||
|
||||
/* Error Codes */
|
||||
typedef enum {
|
||||
KERNEL_OK = 0,
|
||||
KERNEL_ERROR = -1,
|
||||
KERNEL_INVALID_PARAMETER = -2,
|
||||
KERNEL_OUT_OF_MEMORY = -3,
|
||||
KERNEL_TASK_NOT_FOUND = -4,
|
||||
KERNEL_PRIORITY_INVALID = -5,
|
||||
KERNEL_TIMEOUT = -6,
|
||||
KERNEL_RESOURCE_BUSY = -7
|
||||
} KernelStatus_t;
|
||||
|
||||
/* Task Creation Parameters */
|
||||
typedef struct {
|
||||
const char* name;
|
||||
TaskFunction_t function;
|
||||
void* parameters;
|
||||
uint32_t stack_size;
|
||||
TaskPriority_t priority;
|
||||
TickType_t period_ticks; /* 0 for aperiodic tasks */
|
||||
} TaskConfig_t;
|
||||
|
||||
/* Task Statistics */
|
||||
typedef struct {
|
||||
uint32_t execution_count;
|
||||
TickType_t last_execution_time;
|
||||
TickType_t max_execution_time;
|
||||
TickType_t total_execution_time;
|
||||
uint32_t stack_high_water_mark;
|
||||
uint32_t deadline_misses;
|
||||
} TaskStatistics_t;
|
||||
|
||||
/* Kernel Core Functions */
|
||||
KernelStatus_t kernel_init(void);
|
||||
KernelStatus_t kernel_start(void);
|
||||
void kernel_stop(void);
|
||||
TickType_t kernel_get_tick_count(void);
|
||||
KernelStatus_t kernel_delay(TickType_t ticks);
|
||||
|
||||
/* Task Management Functions */
|
||||
TaskHandle_t task_create(const TaskConfig_t* config);
|
||||
KernelStatus_t task_delete(TaskHandle_t task);
|
||||
KernelStatus_t task_suspend(TaskHandle_t task);
|
||||
KernelStatus_t task_resume(TaskHandle_t task);
|
||||
KernelStatus_t task_set_priority(TaskHandle_t task, TaskPriority_t new_priority);
|
||||
TaskPriority_t task_get_priority(TaskHandle_t task);
|
||||
TaskState_t task_get_state(TaskHandle_t task);
|
||||
KernelStatus_t task_get_statistics(TaskHandle_t task, TaskStatistics_t* stats);
|
||||
|
||||
/* Scheduler Control */
|
||||
void scheduler_yield(void);
|
||||
void scheduler_lock(void);
|
||||
void scheduler_unlock(void);
|
||||
TaskHandle_t scheduler_get_current_task(void);
|
||||
|
||||
#endif /* KERNEL_H */
|
||||
Reference in New Issue
Block a user