avros
ATMEL AVR CPU的Unix样嵌入式微粒OS
用16K RAM在Atmega1284p上运行
特征:
- 使用消息传递设施,大多数OS服务(“流程”管理,文件系统,设备驱动程序)的最小微粒由单独的任务(服务器)与客户(用户任务)进行通信以及彼此通过消息传递实现
- 当前实现的OS实体类似于Unix,带有熟悉的系统调用,OS实体主要由OS服务任务(服务器)定义
- 多个OS实体可以在同一CPU上共存,共享相同的微粒
- 基于合作和/或计时器中断的先发制人多任务处理
- 带有UNIX PIPES的虚拟文件系统 - (尚未实现文件名和文件夹 - 您必须使用其各自的设备/Inode Number Duets,例如语法:'2/1'引用每个文件)
- 设备驱动程序作为单独的任务(线程)运行,包括管道设备
- 统一设备驱动程序界面
- 通过USARTS访问Shell,可以在初始化时产生多个会话。
存储库
main.c:第一个任务和主函数 - OS首先执行此任务。它按顺序创建服务器(TS,VFS,ES,PM,请参见下文),含义),设置设备,注册可执行文件,然后最终分配“ INIT”,这是每个用户任务的根任务。
内核:Microkernel和HAL(硬件抽象层)源代码
- 基本功能:任务创建和调度(优先循环),消息传递,中断处理,内存分配(内存管理器服务器正在开发中,请参见MISC/)
- idletask-没有其他运行时运行 - 停止CPU,直到下一个中断以节省电源
USR
src/apps.c:
- 盖蒂
- 登录
- 回声
- 猫
- 上限(将较低的案例字母转到首都,仅用于测试)
- 睡觉
- Xargs
- 重复(仅用于测试)
- 正常运行时间
- 统计
- grep(只有弦匹配,没有通配符)
- Mknod
src/sh.c:shell
- 分别用'<'and'>'的stdin / stdout重定向到 /从文件。
- 用'|'的管道
- 带有'&'的背景工作
- 具有';'的多个工作
- 评论“#”
- 忽略“ '前缀”下一个字符
src/init.c:init任务,重生会议
服务器:
- PM:过程管理器 -
进程层次结构,僵尸进程,exit(),wait(),exec(),spawntask() - VFS:虚拟文件服务器 - 文件描述符,菲尔普表,inodes,open(),colles(),read(),write(),dup(),pipe(),mkdev(),mknod(),fstat(),fstat(),et eet等...
- SEMA:简单的信号服务器(当前未使用)-P(),V()
- TS:时间服务器 - 计时器中断处理程序,Sleep(),正常运行时间,实时时间
- 例如:executables服务器 - 寄存器运行的应用程序,并在任务调用exec()(AVR是哈佛架构CPU)时将其提供给PM
司机:
- TTY_USART0:USART 0设备的中断驱动的TTY驱动器
- memfile:带有Inode管理的内存驱动器设备
- Pipedev:管道设备(多阅读,多织理)
文档:文档(与DIA查看:https://wiki.gnome.org/apps/dia/)
lib:src/queue.c:双重链接列表