From 2f1b451cfebe1b2d8f26823a07f4549033f01bab Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Mon, 11 Apr 2022 15:57:22 +0800 Subject: [PATCH] feat(*): update readme, add platform --- README.md | 46 ++++++++++++++++----- SUMMARY.md | 5 +++ programing-manual/platform/i386.md | 37 +++++++++++++++++ programing-manual/platform/k210.md | 47 ++++++++++++++++++++++ programing-manual/platform/qemu_riscv64.md | 34 ++++++++++++++++ 5 files changed, 159 insertions(+), 10 deletions(-) create mode 100644 programing-manual/platform/i386.md create mode 100644 programing-manual/platform/k210.md create mode 100644 programing-manual/platform/qemu_riscv64.md diff --git a/README.md b/README.md index 13fa831..9d9ab93 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,48 @@ 如果您在文档中发现了问题或者想参与文档的编写,可以在文档仓库提出 issuse 或者提交 pr : [nxos-doc](https://gitee.com/BookOS/nxos-documentation) -# NXOS 简介 +# 一、NXOS 简介 `NXOS`是`Next XBook Operating System`的意思,是一个跨平台的简洁、高性能、高稳定性的支持多核的混合内核,它将应用于桌面操作系统领域,服务器操作系统领域以及移动终端操作系统领域。 我们以简洁、高效、稳定为核心,用比较简洁且高效的方式去实现一些功能,去掉一些复杂,冗杂的功能,化繁为简。 -## NXOS 概述 +`NXOS` 是一个分时多进程/多线程(也支持实时优先级),支持 `MMU` 的现代操作系统,它和 `Linux` 内核, `WindowsNT` 内核是同一个数量级的。 -`NXOS`是一个分时多进程/多线程(也支持实时优先级),支持 `MMU` 的现代操作系统,它和 `Linux` 内核, `WindowsNT` 内核是同一个数量级的。 +`NXOS`采用混合内核架构,即宏内核和微内核相结合。优势是减小内核代码,增加功能可扩展性,功能模块是独立的进程,添加和删除模块就是进程的创建和关闭。 -## 许可协议 +# 二、内核功能 + +`NXOS` 支持 `SMP` 多核,多架构,多平台。 + +| 功能 | 描述 | +| ------- | ---------- | +| 物理内存管理 | buddy伙伴算法 | +| 虚拟内存管理 | heapCache算法 | +| 线程管理 | 以线程为最小调度单元 | +| SMP多核调度 | 支持线程绑定核,处理器均衡负载 | +| 支持中断管理 | 中断管理框架,以及延迟中断队列机制 | +| 支持定时器 | 基于ticks实现的定时器,基于线性链表实现 | +| 支持虚拟地址 | 在MMU的基础上对内核和进程进行隔离 | +| 支持进程 | 可以运行用户态的程序 | +| 支持串口输入输出 | 可以通过串口输出调试,也可以通过串口输入按键 | +| 支持vfs | 虚拟文件系统,目前支持cpio只读文件系统实现 | +| 支持gdb调试内核 | qemu平台支持gdb调试,并搭配了vscode图形化调试 | +| 彩色日志输出 | 支持配置日志输出时间,格式,名称,颜色,消息等级等 | +| 其他功能正在开发中,敬请期待! | ... | + +# 三、平台支持 + +| ARCH | PLATFORM |STATUS | +| ------- | ---------- | ---------- | +| x86 | [i386](programing-manual/platform/i386.md) | DOING | +| riscv64 | [qemu](programing-manual/platform/qemu_riscv64.md) | DOING | +| riscv64 | [k210](programing-manual/platform/k210.md) | DOING | +| x86_64 | amd64 | TODO | +| arm64 | qemu | TODO | +| arm32 | qemu | TODO | +| longarch| qemu | TODO | + +# 四、许可协议 `NXOS`采用 `Apache-2.0` 开源协议,可以自由的复制和修改代码,只需要保留版权说明即可,无潜在的商业风险。 - -## NXOS 的架构 - -`NXOS`采用混合内核架构,即宏内核和微内核相结合。优势是减小内核代码,增加功能可扩展性,功能模块是独立的进程,添加和删除模块就是进程的创建和关闭。 - -[访问文档目录](SUMMARY.md) diff --git a/SUMMARY.md b/SUMMARY.md index d24012c..03801fd 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -26,6 +26,11 @@ - 内核移植 - [riscv架构移植](programing-manual/port/riscv/riscv.md) + - 平台支持 + - [i386](programing-manual/platform/i386.md) + - [qemu_riscv64](programing-manual/platform/qemu_riscv64.md) + - [k210](programing-manual/platform/k210.md) + - 用户接口 - [API设计](programing-manual/user/api.md) diff --git a/programing-manual/platform/i386.md b/programing-manual/platform/i386.md new file mode 100644 index 0000000..9e2b86a --- /dev/null +++ b/programing-manual/platform/i386.md @@ -0,0 +1,37 @@ +# i386平台简介 + +x86 架构首度出现在 1978 年推出的 Intel 8086 CPU。Intel 之后又推出了包括 80186、80286、80386 以及 80486。 +从 1985 年 80386 开始,Intel 通过对 x86 架构进行 32 位的扩展,实现了 32 位 CPU,而之前的都是 16 位。 + +32位的PC电脑基本都是x86架构,而最早的一款处理器就是i386。因此,几乎所有的32位电脑都兼容i386。 + +# 功能支持 + +- [x] GRUB2引导 +- [x] 内存管理 +- [x] 上下文切换 +- [x] 定时器时钟 +- [x] 原子操作 +- [x] 内存屏障 +- [ ] SMP多核 +- [x] MMU支持 +- [x] 中断管理 +- [x] 系统调用支持 +- [x] 执行用户态程序 +- [x] 串口输入输出 +- [x] 通过单元测试和集成测试 +- [x] gdb调试 + +# 运行方法 + +```bash +# 1. 进入nxos源码,打开终端。 +# 2. 初始化环境 +source setup.sh # linux +setup.bat # windows +# 3. 获取默认配置 +make defconfig +# 4. 编译运行 +make run -j8 # -jN是多线程编译 +# 5. ctrl + a z 退出qemu +``` diff --git a/programing-manual/platform/k210.md b/programing-manual/platform/k210.md new file mode 100644 index 0000000..372293e --- /dev/null +++ b/programing-manual/platform/k210.md @@ -0,0 +1,47 @@ +# k210平台简介 + +勘智Kendryte K210是嘉楠科技公司推出的基于RISC-V架构的64位双核SOC。 + +* 双核 64-bit RISC-V RV64IMAFDC (RV64GC) CPU / 400MHz(可超频到600MHz) +* 双精度 FPU +* 8MiB 64bit 片上 SRAM(6MiB通用SRAM+2MiB的AI专用SRAM) +* 神经网络处理器(KPU) / 0.8TFLOPS +* 音频处理器(APU) +* 可编程 IO 阵列 (FPIOA) +* 双硬件512点16位复数FFT +* SPI, I2C, UART, I2S, RTC, PWM, 定时器支持 +* AES, SHA256 加速器 +* 直接内存存取控制器 (DMAC) + +# 功能支持 + +- [x] RustSBI固件 +- [x] 内存管理 +- [x] 上下文切换 +- [x] 定时器时钟 +- [x] 原子操作 +- [x] 内存屏障 +- [x] SMP多核 +- [x] MMU支持 +- [x] 中断管理 +- [x] 系统调用支持 +- [x] 执行用户态程序 +- [x] 串口输入输出 +- [x] 通过单元测试和集成测试 +- [ ] gdb调试 + +# 运行方法 + +```bash +# 1. 进入nxos源码,打开终端。 +# 2. 初始化环境 +source setup.sh riscv64-k210 # linux +setup.bat riscv64-k210 # windows +# 3. 获取默认配置 +make defconfig +# 4. 编译运行 +make run -j8 UART=/dev/ttyUSB0 # linux: -jN是多线程编译, UART是串口设备,需要在设备列表查看是哪个设备,默认是/dev/ttyUSB0,可以不写。 +make run -j8 UART=com3 # windows: -jN是多线程编译, UART是串口设备,需要在设备管理器查看,k210的设备是哪个串口。 + +# 5. ctrl + ] 退出k210的运行 +``` diff --git a/programing-manual/platform/qemu_riscv64.md b/programing-manual/platform/qemu_riscv64.md new file mode 100644 index 0000000..b640e59 --- /dev/null +++ b/programing-manual/platform/qemu_riscv64.md @@ -0,0 +1,34 @@ +# qemu_riscv64平台简介 + +QEMU是一种通用的开源计算机仿真器和虚拟器。本平台就是qemu对riscv64架构的仿真支持。 + +# 功能支持 + +- [x] OpenSBI固件 +- [x] 内存管理 +- [x] 上下文切换 +- [x] 定时器时钟 +- [x] 原子操作 +- [x] 内存屏障 +- [x] SMP多核 +- [x] MMU支持 +- [x] 中断管理 +- [x] 系统调用支持 +- [x] 执行用户态程序 +- [x] 串口输入输出 +- [x] 通过单元测试和集成测试 +- [x] gdb调试 + +# 运行方法 + +```bash +# 1. 进入nxos源码,打开终端。 +# 2. 初始化环境 +source setup.sh riscv64-qemu_riscv64 # linux +setup.bat riscv64-qemu_riscv64 # windows +# 3. 获取默认配置 +make defconfig +# 4. 编译运行 +make run -j8 # -jN是多线程编译 +# 5. ctrl + a z 退出qemu +``` -- Gitee