差别
这里会显示出您选择的修订版和当前版本之间的差别。
上一修订版两侧同时换到之后的修订记录 | |||
digi:arm-embedded:linux:dey:rt_preempt [2018/11/26 13:21] – 创建 - 外部编辑 127.0.0.1 | digi:arm-embedded:linux:dey:rt_preempt [2024/04/10 23:33] – robin | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====DEY如何优化成实时操作系统==== | + | ====DEY如何优化成实时操作系统(更新中...)==== |
RT-Preempt Patch是在Linux社区kernel的基础上,加上相关的补丁,以使得Linux满足硬实时的需求。 | RT-Preempt Patch是在Linux社区kernel的基础上,加上相关的补丁,以使得Linux满足硬实时的需求。 | ||
行 5: | 行 6: | ||
RT补丁下载地址:https:// | RT补丁下载地址:https:// | ||
- | 注意DEY1.6 ~ 2.4不同的版本对应的内核版本也不尽相同,请根据您的DEY内核版本选用RT补丁。RT补丁用法请参考[[https:// | + | 注意DEY1.6 ~ 4.0不同的版本对应的内核版本也不尽相同,请根据您的DEY内核版本选用RT补丁。RT补丁用法请参考[[https:// |
+ | |||
+ | 本文以DEY-4.0和ConnectCore MP133为例,来演练为Linux打上RT-Preempt实时补丁的全过程。 | ||
+ | |||
+ | 从Digi官方https:// | ||
+ | < | ||
+ | bitbake -c menuconfig virtual/ | ||
+ | </ | ||
+ | |||
+ | 首先要了解哪些地方是系统内核配置文件 | ||
+ | < | ||
+ | find . -name .config -type f -print | ||
+ | find . -name defconfig -type f -print | ||
+ | </ | ||
+ | 可以看到有两个是内核根目录下最有可能的配置文件,查看一下相关的PREEMPT配置 | ||
+ | < | ||
+ | cat ./ | ||
+ | # CONFIG_PREEMPT_NONE is not set | ||
+ | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
+ | CONFIG_PREEMPT=y | ||
+ | CONFIG_PREEMPT_COUNT=y | ||
+ | CONFIG_PREEMPTION=y | ||
+ | CONFIG_PREEMPT_RCU=y | ||
+ | CONFIG_DEBUG_PREEMPT=y | ||
+ | 和 | ||
+ | cat ./ | ||
+ | CONFIG_PREEMPT=y | ||
+ | </ | ||
+ | 如果要用bitbake,就要改这defconfig,如果是在devshell内编译,则只需要改动.config | ||
+ | |||
+ | 如果我们改动了内核配置,担心改得不对,恢复的方法是: | ||
+ | < | ||
+ | bitbake -c cleanall virtual/ | ||
+ | 这样会清除内核目录:./ | ||
+ | 用bitbake -c compile virtual/ | ||
+ | </ | ||
+ | 真正的内核源码在 ./ | ||
+ | |||
+ | ===保存原始的源码树=== | ||
+ | 为了保存开发过程中的一些变动,采用git的方式对变更进行版本管理: | ||
+ | 1. 建立linux源码库和变更的版本控制和管理 | ||
+ | 首先,初始化一个tmp下的版本库,把默认的内核文件源码 作为git 初始提交文件,然后新建一个RT分支,以便后续开始更改。整个过程如下: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ----以下内容已过时----新内容见上 | ||
下面以ccim6sbc为例,用不同的方法具体演练几个版本的实时补丁应用方法: | 下面以ccim6sbc为例,用不同的方法具体演练几个版本的实时补丁应用方法: |