项目简介
SynestiaOS是一个开源的、基于标准的物联网设备软件平台,适用于智能手表、电视以及汽车信息娱乐平台等。它能对硬件设备进行统一管理和控制,还为开发者提供了丰富的应用程序接口(API)。
项目的主要特性和功能
- 模块化设计:将硬件抽象层(HAL)和应用程序接口(API)分离,便于硬件和软件独立开发。
- 硬件支持:支持树莓派等多种嵌入式系统硬件平台。
- 图形用户界面(GUI)支持:具备基础图形用户界面库,支持2D和3D图形处理。
- 多线程支持:支持多线程编程,提供互斥锁、自旋锁和信号量等同步机制。
- 内存管理:提供内核级内存管理,涵盖堆、栈和向量等数据结构管理。
- 系统调用和中断处理:提供系统调用和中断处理机制,支持多种硬件和软件中断。
- 测试框架:有一套用于测试内核数据结构和功能的测试框架。
安装使用步骤
环境准备
推荐使用Clion作为开发环境,安装Docker用于构建内核。
- 若使用Docker,在项目目录下运行docker-compose up -d dev-prebuilt
。
- 若使用Linux,运行sudo bash Scripts/SetupLinux.sh
。
- 在Clion中,设置Settings->Build,Execution,Deployment->Toolchain
,添加远程主机,用户名为root
,密码为password
。
编译内核
在Docker容器中,进入Build
目录,运行cmake .. && make
。若使用Mac,需指定交叉编译工具链:cmake -DCMAKE_TOOLCHAIN_FILE=${PATH_TO_THIS_PROJECT}/SynestiaOS/CMake/ToolchainArmMac.cmake .. && make VERBOSE=1
。
格式代码
在项目目录下,运行docker-compose run dev-prebuilt bash run-clang-foramt.sh
。
运行和调试
- 运行内核:在
Build
目录找到内核镜像,根据不同平台运行相应命令: - 树莓派2和arm32:
qemu-system-arm -M raspi2 -kernel bin/Kernel.img -nographic -serial mon:stdio
- 树莓派3和arm64:
qemu-system-aarch64 -M raspi3 -kernel bin/Kernel.img -nographic -serial mon:stdio
- 调试内核(以arm32为例):
- 终端1:
qemu-system-arm -M raspi2 -kernel Kernel.img -s -S -nographic
- 终端2:
gdb-multiarch Kernel.img (gdb) target remote :1234 (gdb) display/i $pc (gdb) break _start (gdb) c (gdb) si
运行测试
在测试文件夹中,运行make
编译测试程序,使用./tests
运行测试。
注意:以上步骤需根据实际项目目录和代码结构进行调整。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】