Rtems Source Code
Rtems 源码阅读
RTEMS(Real‑Time Executive for Multiprocessor Systems)是一款始于 1988 年、1993 年正式发布的开源实时操作系统,专为多处理器嵌入式环境设计,支持 POSIX 和 BSD 套接字等开放标准 API,并可运行于 ARM、PowerPC、SPARC、MIPS、RISC‑V 等 18 种处理器架构及近 200 个 BSP(Board Support Package)上。它以库形式发布,应用程序与内核静态链接为单一映像,采用单地址空间、无用户/内核隔离设计,从而简化资源管理并确保确定性响应。2025 年 1 月 22 日发布的 6.1 版本全面将构建系统由 GNU Autotools 切换到基于 Python 的 Waf,大幅提升了构建速度并优化了依赖管理,同时引入了改进的调度算法和增强的 SMP 支持。
本文章用于记录阅读 Rtems 内核源码的笔记,尝试理解其中的逻辑。Rtems 内核的版本是 6.1,在线代码网站见 https://rtems.davidingplus.cn/lxr/source/。
tips
本文总结了工作过程中可能遇到的各种问题的解决方法的链接。
typora破解版下载链接:https://blog.csdn.net/weixin_43580824/article/details/131371951
code的c++的代码规范格式
c++插件设置搜索format,C_Cpp: Clang_format_fallback Style中填入,详见clang-format-fallback-style目录的config.json
参考文档:
使用 git
本文是一个使用 git 的简要总结。
- 准备工作,git 配置 ssh:https://blog.csdn.net/lqlqlq007/article/details/78983879
- 第一次拉取,以 github 服务器为例,其他服务器将 github.com 替换成为对应的 IP 或者域名:git clone git@github.com:xxx/xxx.git 前面写用户名,后面写仓库名称;拉取之后会把 github 上的目录拉取到本地,在目录当中会有一个 .git/ 隐藏文件夹,不要动它,这是自动生成的配置
Block Device Drivers
块设备是与字符设备并列的概念,这两类设备(一共三类,还有一类是网络设备)在 Linux 中的驱动结构有较大差异。总体而言,块设备驱动比字符设备驱动复杂得多,在 I/O 操作上也有极大的不同。缓冲、I/O 调度、请求队列等都是与块设备驱动相关的概念。
块设备的 I/O 操作特点
块设备 I/O 操作与字符设备的不同之处如下:
- 块设备只能以块为单位接收输入和返回输出,而字符设备则以字节为单位。大多数设备是字符设备,因为它们不需要缓冲而且不以固定块大小进行操作。
- 块设备对于 I/O 请求有对应的缓冲区,故它们可以选择以什么顺序进行响应,而字符设备无须缓冲且被直接读写。对存储设备而言,调整读写的顺序作用巨大,因为在读写连续的扇区的存储速度比分离的扇区更快。
- 字符设备只能顺序读写,而块设备能随机访问。