差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

上一修订版两侧同时换到之后的修订记录
digi:arm-embedded:linux:dey:rt_preempt [2018/11/26 13:21] – 创建 - 外部编辑 127.0.0.1digi: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://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/ RT补丁下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
  
-注意DEY1.6 ~ 2.4不同的版本对应的内核版本也不尽相同,请根据您的DEY内核版本选用RT补丁。RT补丁用法请参考[[https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/preemptrt_setup#howto-setup-linux-with-preempt_rt-properly|RT官方文档]]。+注意DEY1.6 ~ 4.0不同的版本对应的内核版本也不尽相同,请根据您的DEY内核版本选用RT补丁。RT补丁用法请参考[[https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/preemptrt_setup#howto-setup-linux-with-preempt_rt-properly|RT官方文档]]。(DEY 3.0~3.2已验证过能顺利应用RT-Preempt补丁) 
 + 
 +本文以DEY-4.0和ConnectCore MP133为例,来演练为Linux打上RT-Preempt实时补丁的全过程。 
 + 
 +从Digi官方https://github.com/digi-embedded/meta-digi/tree/kirkstone/meta-digi-arm/recipes-kernel/linux可以查得对应DEY-4.0 Kirkstone平台Linux内核版本大版本号。但这不足以找到最接近的,所以还需要通过 
 +<code> 
 +bitbake -c menuconfig virtual/kernel 
 +</code> 可以看到内核信息是v 5.15.118 
 + 
 +首先要了解哪些地方是系统内核配置文件 
 +<code> 
 +find . -name .config -type f -print 
 +find . -name defconfig -type f -print 
 +</code> 
 +可以看到有两个是内核根目录下最有可能的配置文件,查看一下相关的PREEMPT配置 
 +<code> 
 +cat ./tmp/work/ccmp13_dvk-dey-linux-gnueabi/linux-dey/5.15-r0/build/.config |grep PREEMPT 
 +# 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 ./tmp/work/ccmp13_dvk-dey-linux-gnueabi/linux-dey/5.15-r0/defconfig |grep PREEMPT 
 +CONFIG_PREEMPT=y 
 +</code> 
 +如果要用bitbake,就要改这defconfig,如果是在devshell内编译,则只需要改动.config 
 + 
 +如果我们改动了内核配置,担心改得不对,恢复的方法是: 
 +<code> 
 +bitbake -c cleanall virtual/kernel 
 +这样会清除内核目录:./tmp/work/ccmp13_dvk-dey-linux-gnueabi/linux-dey/5.15-r0/ 
 +用bitbake -c compile virtual/kernel重新生成一套默认的内核文件源码 
 +</code> 
 +真正的内核源码在 ./tmp/work/ccmp13_dvk-dey-linux-gnueabi/linux-dey/5.15-r0/git下,这链接文件git指向tmp/work-shared/ccmp13-dvk/kernel-source 
 + 
 +===保存原始的源码树=== 
 +为了保存开发过程中的一些变动,采用git的方式对变更进行版本管理: 
 +1. 建立linux源码库和变更的版本控制和管理 
 +首先,初始化一个tmp下的版本库,把默认的内核文件源码 作为git 初始提交文件,然后新建一个RT分支,以便后续开始更改。整个过程如下: 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +----以下内容已过时----新内容见上
  
 下面以ccim6sbc为例,用不同的方法具体演练几个版本的实时补丁应用方法: 下面以ccim6sbc为例,用不同的方法具体演练几个版本的实时补丁应用方法: