OS One
一个自制的树莓派操作系统,OS One 这个名字来自于电影 《Her》。
特性
- 提供 GPIO 处理函数;
- GUI 界面,有窗体 demo, 窗体可对鼠标操作做出相应;
- 默认分辨率 1440×900;
- 可显示 bmp 24 位色(true color)图片;
- 支持鼠标键盘输入设备;
- 多任务,默认最多 16 个任务;
- 时间片轮转调度;
- 任务间通信;
- 任务阻塞,挂起;
- 支持动态申请内存;
- 系统最多支持 255 个 timer 定时器;
- 支持 UART 通信。
编译
硬件:Raspberry Pi B+ (其他版本树莓派没有测试)
Host:Linux version 3.13.0-44-generic (buildd@lamiak) #73-Ubuntu SMP Tue Dec 16 00:22:43 UTC 2014
工具链:arm-none-eabi-
V4.8.2
kernel.img
make
= make kernel.img
-编译最终产生的 kernel.img
make clean
-清理项目
make install
-将 kernel.img 复制到 SD 卡,复制之前确认请修改 Makefile 里的设备名称和路径
minocom for OS One
树莓派输入设备(鼠标键盘)用串口通信,所以必须运行串口程序。
先 make
,然后 make install
<千万不要./configure
!!!>。
使用
- 接上树莓派串口线,两个 LED 灯分别连接到 GPIO16 和 GPIO19。这两个等会显示内核状态信息(不接这两个 LED 不影响系统运行);
- 编译运行 minocom for OS One;
- 编译 kernel.img 并复制到 SD 卡,覆盖原来的 kernel.img (原来的 kernel.img 要备份);
- 加电运行;
- 可以试着移动鼠标,拖动窗口;
- 屏幕左上角显示 Task1 和 Task2 的通信状态;
- 屏幕右上角显示四个 Timer 的状态;
- 窗口显示 kernel status。分别有任务栈适用情况,鼠标键盘状态,空闲堆内存大小;
- 可以试着按键,窗口上 input status 中的 key 会显示按键的 ASCII 码;
- 移动鼠标,单机右击窗口都有显示。
已知漏洞
暂无。
参考资料
- 《操作系统设计 Xinu 方法》
- 《30 天自制操作系统》
- 《嵌入式实时操作系统 uc/os III》
- 《linux 内核设计的艺术》
- 《Linux 0.01 内核分析与操作系统设计》
项目主页:OS One 主页
GitHub(国外):https://github.com/iBreaker/OS-ONE.git
Coding(国内):https://coding.net/breaker/OS-ONE.git
Breaker
[email protected]
2015-03-12 15:05:14
效果预览
- 下面的是树莓派,没有写好显示驱动的时候就用那个灯调试。因为树莓派的输出只有这个灯,通过这个灯的亮灭来判断要被调试的某个值的大小。树莓派通过 HDMI 线和显示器连接。开发环境 backtrack5:
- 实现简单的 UI 库后,做出的一个 360 风格的窗口:
- 简单的进程管理器,显示当前多进程的信息,以及内存和鼠标键盘的状态: