Add sensor, modify makefile

This commit is contained in:
Zhao_Jiasheng
2021-06-09 16:24:37 +08:00
parent cb87bea665
commit e37efc70ce
26 changed files with 1598 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
SRC_FILES := xiuos/xiuos.c xiuos/userspace.c
include $(KERNEL_ROOT)/compiler.mk

View File

@@ -0,0 +1,131 @@
/*
* Copyright (c) 2020 AIIT XUOS Lab
* XiUOS is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
/**
* @file transform.h
* @brief Interface function declarations required by the framework
* @version 1.0
* @author AIIT XUOS Lab
* @date 2021.06.04
*/
#ifndef TRANSFORM_H
#define TRANSFORM_H
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NAME_NUM_MAX 32
#define BAUD_RATE_2400 2400
#define BAUD_RATE_4800 4800
#define BAUD_RATE_9600 9600
#define BAUD_RATE_19200 19200
#define BAUD_RATE_38400 38400
#define BAUD_RATE_57600 57600
#define BAUD_RATE_115200 115200
#define BAUD_RATE_230400 230400
#define BAUD_RATE_460800 460800
#define BAUD_RATE_921600 921600
#define BAUD_RATE_2000000 2000000
#define BAUD_RATE_3000000 3000000
#define DATA_BITS_5 5
#define DATA_BITS_6 6
#define DATA_BITS_7 7
#define DATA_BITS_8 8
#define DATA_BITS_9 9
#define STOP_BITS_1 1
#define STOP_BITS_2 2
#define STOP_BITS_3 3
#define STOP_BITS_4 4
#define PARITY_NONE 1
#define PARITY_ODD 2
#define PARITY_EVEN 3
#define BIT_ORDER_LSB 1
#define BIT_ORDER_MSB 2
#define NRZ_NORMAL 1
#define NRZ_INVERTED 2
#ifndef SERIAL_RB_BUFSZ
#define SERIAL_RB_BUFSZ 128
#endif
struct SerialDataCfg
{
uint32_t serial_baud_rate;
uint8_t serial_data_bits;
uint8_t serial_stop_bits;
uint8_t serial_parity_mode;
uint8_t serial_bit_order;
uint8_t serial_invert_mode;
uint16_t serial_buffer_size;
};
enum IoctlCmd
{
SERIAL_CFG_SETS = 0,
SERIAL_CFG_GETS,
};
/**********************mutex**************************/
int32_t PrivMutexCreate(void);
void PrivMutexDelete(int32_t mutex);
int32_t PrivMutexObtain(int32_t mutex, int32_t wait_time);
int32_t PrivMutexAbandon(int32_t mutex);
/*********************semaphore**********************/
int32_t PrivSemaphoreCreate(uint16_t val);
int32_t PrivSemaphoreDelete(int32_t sem);
int32_t PrivSemaphoreObtain(int32_t sem, int32_t wait_time);
int32_t PrivSemaphoreAbandon(int32_t sem);
int32_t PrivSemaphoreSetValue(int32_t sem, uint16_t val);
/*********************task**************************/
struct utask
{
char name[NAME_NUM_MAX];
void *func_entry;
void *func_param;
int32_t stack_size;
uint8_t prio;
};
typedef struct utask UtaskType;
int32_t PrivTaskCreate(UtaskType utask);
int32_t PrivTaskStartup(int32_t id);
int32_t PrivTaskDelete(int32_t id);
void PrivTaskQuit(void);
int32_t PrivTaskDelay(int32_t ms);
int PrivOpen(const char *path, int flags, ...);
int PrivRead(int fd, void *buf, size_t len);
int PrivWrite(int fd, const void *buf, size_t len);
int PrivClose(int fd);
int PrivIoctl(int fd, int cmd, void *args);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,43 @@
#include <stdio.h>
#include <stdint.h>
extern int main(void);
//extern void UserTaskQuit(void);
extern uintptr_t _ustext;
extern uintptr_t _uetext;
extern uintptr_t _ueronly;
extern uintptr_t _usdata;
extern uintptr_t _uedata;
extern uintptr_t _usbss;
extern uintptr_t _uebss;
typedef int (*main_t)(int argc, char *argv[]);
typedef void (*exit_t)(void);
struct userspace_s
{
main_t us_entrypoint;
exit_t us_taskquit;
uintptr_t us_textstart;
uintptr_t us_textend;
uintptr_t us_datasource;
uintptr_t us_datastart;
uintptr_t us_dataend;
uintptr_t us_bssstart;
uintptr_t us_bssend;
uintptr_t us_heapend;
};
const struct userspace_s userspace __attribute__ ((section (".userspace"))) =
{
/* General memory map */
.us_entrypoint = (main_t)main,
//.us_taskquit = (exit_t)UserTaskQuit,
.us_textstart = (uintptr_t)&_ustext,
.us_textend = (uintptr_t)&_uetext,
.us_datasource = (uintptr_t)&_ueronly,
.us_datastart = (uintptr_t)&_usdata,
.us_dataend = (uintptr_t)&_uedata,
.us_bssstart = (uintptr_t)&_usbss,
.us_bssend = (uintptr_t)&_uebss,
};

View File

@@ -0,0 +1,124 @@
/*
* Copyright (c) 2020 AIIT XUOS Lab
* XiUOS is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
/**
* @file xiuos.c
* @brief Converts the framework interface to an operating system interface
* @version 1.0
* @author AIIT XUOS Lab
* @date 2021.06.07
*/
#include "transform.h"
/**************************mutex***************************/
int32_t PrivMutexCreate(void)
{
return 0;
}
void PrivMutexDelete(int32_t mutex)
{
return;
}
int32_t PrivMutexObtain(int32_t mutex, int32_t wait_time)
{
return 0;
}
int32_t PrivMutexAbandon(int32_t mutex)
{
return 0;
}
/**********************semaphore****************************/
int32_t PrivSemaphoreCreate(uint16_t val)
{
return 0;
}
int32_t PrivSemaphoreDelete(int32_t sem)
{
return 0;
}
int32_t PrivSemaphoreObtain(int32_t sem, int32_t wait_time)
{
return 0;
}
int32_t PrivSemaphoreAbandon(int32_t sem)
{
return 0;
}
int32_t PrivSemaphoreSetValue(int32_t sem, uint16_t val)
{
return 0;
}
/**************************task*************************/
int32_t PrivTaskCreate(UtaskType utask)
{
return 0;
}
int32_t PrivTaskStartup(int32_t id)
{
return 0;
}
int32_t PrivTaskDelete(int32_t id)
{
return 0;
}
void PrivTaskQuit(void)
{
return;
}
int32_t PrivTaskDelay(int32_t ms)
{
return 0;
}
/*********************fs**************************/
int PrivOpen(const char *path, int flags, ...)
{
return 0;
}
int PrivRead(int fd, void *buf, size_t len)
{
return 0;
}
int PrivWrite(int fd, const void *buf, size_t len)
{
return 0;
}
int PrivClose(int fd)
{
return 0;
}
int PrivIoctl(int fd, int cmd, void *args)
{
return 0;
}