• 嵌入式Real-time Linux开发


    大家常用的Linux系统基本是分时系统,任务调度比较慢,当处理紧急的任务的时候可能就会捉襟见肘了。比如,EtherCAT。之前公司使用和Linux非常类似的QNX操作系统,实时性较好,不过昂贵的费用却让小公司望而却步。这里给大家介绍免费的嵌入式Real-time Linux开发的方案,就是PREEMPT_RT Linux项目,这个也是开源Linux项目之一。

    给嵌入式设备开发实时内核的话,首先确定设备的内核版本。

    查看Linux内核版本命令:

    root@myir:~# cat /proc/version

    Linux version 5.4.31 (oe-user@oe-host) (gcc version 9.3.0 (GCC)) #1 SMP PREEMPT Tue Nov 2 07:05:34 UTC 2021

    root@myir:~# uname -a

    Linux myir 5.4.31 #1 SMP PREEMPT Tue Nov 2 07:05:34 UTC 2021 armv7l armv7l armv7l GNU/Linux

    然后,在开源Linux项目网站上找对应的内核补丁包。

    有两个git存储库托管着Linux主线内核版本的源代码,并附加了PREEMPT_RT补丁。
    http://git.kernel.org/cgit/linux/kernel/git/rt/linux-rt-devel.git
    http://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git
    第一个补丁包含当前开发的PREEMPT_RT补丁和相应的Linux主线源代码。当焦点切换到下一个主线版本时,特定版本的开发通常会停止。一旦一个新的稳定的候选者被释放,这种情况就会发生。在此之后,开发版本被转移到第二个存储库,并由Steven Rostedt维护。第一个git库的维护者是Sebastian Siewior和Thomas Gleixner。

    PREEMPT_RT补丁的不同版本还可以作为tar球使用。它们托管在kernel.org网站上。
    https://cdn.kernel.org/pub/linux/kernel/projects/rt/

    下载好实时内核补丁以后,针对嵌入式arm板的内核源码打实时补丁。可以使用patch,或者手动修改源码。

    配置内核

     

     

    交叉编译内核,解决编译问题。下载验证。

    将编译生成的内核文件,拷贝到arm板对应的目录下面。注意加rt补丁号。比如:5.4.31-rt20  

     

    可以看到驱动模块成功加载,并且版本名字也改为实时Linux版本。

     注意:

    不要把实时内核里面的文件拷贝到之前的内核文件夹中,比如5.4.31。否则会有模块无法加载的问题。执行sudo dmesg命令,会有disagrees about version of symbol module_layout的错误。

     

  • 相关阅读:
    google colab上让 python 视觉化套件 matplotlib 显示中文
    23.8.18 牛客暑期多校10部分题解
    CSS笔记(黑马程序员pink老师前端)选择器,字体,文本属性,Emmet语法,元素显示模式,CSS背景
    服务器与客户端交互小栗子(java代码实现最基本的服务器实例)
    如何一键重装Win7系统 Win7系统重装的方法教程
    Salesforce OmniStudio顾问备考攻略
    http 跨域资源共享详解
    GFS分布式文件系统
    AI写真教程:Stable Diffusion 之 IPAdapter-FaceId
    Java 基础知识梳理
  • 原文地址:https://blog.csdn.net/xikangsoon/article/details/126098669