A micro-kernel operating system that is friendly to AI frameworks.
西电OS操作系统是应用于微处理器上的一个小巧玲珑的操作系统,它可以根据具体的应用场景以去定制化功能,具有较强的可拓展性和可移植性。同时具有一套面向AI模型的标准化框架,可对接多种AI后端推理方案,为用户提供统一的接口。
作为一个可定制化的操作系统中间件,位于components目录下,若有使用需要可自行添加至工程目录中。
AI Framework目的在为多种不同的神经网络推理后端提供统一的使用接口,只需要对应的插件就可以运行。其中使用Microinfer推理框架,可针对不同芯片平台和模型,一键式直接生成定制化的插件,让用户无需关注模型推理的底层实现。
模型注册: xd_ai_register
模型查找: xd_ai_find
模型初始化: xd_ai_init
模型运行: xd_ai_run
模型输出: xd_ai_output
位于AI_Framework文件夹下的app.c展示了如何使用API去运行mnist模型
打开XidianOS->board->ALIENTEK_STM32F103_NANO/keil下的工程
编译下载程序至开发板中,可以看到三个LED灯以不同频率交替闪烁:
并再观察串口助手(波特率115200),可以运行shell命令:
打开XidianOS->board->WEACT_STM32H750/keil下的工程,编译下载程序至开发板中,可以看到LED灯一直在闪烁,再观察串口助手(波特率115200),可以运行shell命令:
初步计划支持以下功能:
- 信号量
- 互斥锁
- 消息队列
- 邮箱
- 支持malloc
初步计划支持以下架构:
- cortex-m3
- cortex-m4
- cortex-m7
- cortex-a (MMU)
初步计划实现以下组件:
- shell
- letter-shell
- tensorflow
- lvgl
- tensorflow-lite micro
- nnom
- onnx
- microinfer
- 需添加时间片轮转机制
- 添加定时器
- 需修改systick中处理延时的方式
- 简洁的创建静态和动态线程的机制
- 类似于fork的创建线程的机制
- 对线程pid号进行管理的机制
- 使用Cubemx工具,针对目标处理器和外设生成keil工程
- 添加kernel目录下的.c文件及对应arch下的.c和.s文件,并指定编译所需的头文件路径
- 自行实现uart.c中的串口打印函数以及中断处理函数
- 需要根据具体硬件自己实现
void xd_kprint_port(xd_uint8_t *ch)
函数,该函数用于内核输出函数void xd_kprintf(const char *fmt, ...)
- 在stm32xxx_it.c中在
void PendSV_Handler(void)
前添加__weak
- 根据项目需要添加components下的组件