
xenomai内核解析
文章平均质量分 94
xenomai应用、内核源码学习记录
沐多
若检索本博客内容后仍未能解决您的问题,本人可提供xenomai相关技术付费支持,若有需要,请私信。(注:用户ID与QQ无关)
展开
-
【xenomai3内核解析】文章大纲
xenomai内核解析本博客为本人学习linux实时操作系统框架xenomai的一些记录,主要剖析xenomai内核实现,以及与linux相关的知识。方便读者定位具体文章,现列出本博客大纲,后续会陆续将大纲中缺少部分填充完整,感兴趣的读者敬请关注!版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。第一章 认识xenomai1. 嵌入式实时linux概述2. xenomai的组成结构第二章 构建xenomai内原创 2020-10-18 18:25:36 · 2955 阅读 · 8 评论 -
xenomai3+linux 构建linux实时操作系统-基于X86_64和arm
文章目录一、概要一、环境准备1. 安装内核编译工具2. 准备内核及补丁文件4. 打ipipe补丁5. 添加xenomai内核6. xenomai 内核配置7.内核编译与安装a) 编译构建xenomai内核debian安装包b) 分步编译内核并安装8.编译安装实时库libcobalta) 编译构建xenomai库debian安装包b) 分步编译安装xenomai库9.xenomai实时性测试10.arm架构安装xenomai参考链接:最近接触实时系统Xenomai,该文章整理记录X86环境下xenomai原创 2020-05-10 16:42:28 · 15655 阅读 · 29 评论 -
xenomai内核解析--xenomai初探
文章目录一、xenomai 3二、xenomai3 结构这是第二篇笔记。一、xenomai 3从xenomai3开始支持两种方式构建linux实时系统,分别是cobalt 和 mercury。cobalt :添加一个实时核,双核结构,具有实时内核cobalt、实时驱动模型RTDM、实时应用POSIX接口库libcobalt,基于libcobalt的其他API skins,如Alche...原创 2020-05-05 21:58:05 · 9937 阅读 · 5 评论 -
xenomai内核解析--嵌入式实时linux概述
Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。虽然Linux系统功能强大、实用性强...原创 2020-05-03 15:25:27 · 3186 阅读 · 2 评论 -
有利于提高xenomai/PREEMPT-RT 实时性的一些配置建议
本文讲述一些有利于提高xenomai 实时性配置建议,其中,一些是通用的,一些是针对某个架构的,希望对你有用。一、影响因素硬实时操作系统应具备的最重要特性之一是可预测性,系统应该保证满足所有关键时序约束。然而,这取决于一系列因素,这些因素涉及硬件的架构特征、内核中采用的机制和策略,以及用于实现应用程序的编程语言。1.硬件硬件方面,第一个影响调度可预测性的是处理器本身。处理器的内部特性是不确...原创 2020-06-19 22:38:43 · 8872 阅读 · 0 评论 -
关于xenomai3 RTnet的一点记录
TCP/IP本就不是实时的,xenomai3全部用rtnet实现可用性太低,但在实际实时以太网应用中,基本只用到二层实时网络收发,不涉及三层及以上协议,所以xenomai4中evl核中基于linux扩展,实时只支持raw packet是非常正确的做法!在一些应用场合我们需要控制phy,或者读写phy寄存器信息,但rtnet ioctl没有linux的ioctl全面,没有相关接口,这类接口需要自己在socket.c中添加,同时网卡驱动中同步增加。linux发送时,直接通过rtnet网卡发送。原创 2025-01-05 11:30:36 · 933 阅读 · 0 评论 -
ARM64平台实时linux操作系统xenomai4(EVL)构建安装简述-基于RK3588
本文简要记录在瑞芯微RK3588(ARM64)构建安装实时linux操作系统xenomai4的过程,及实时性测试。原创 2024-12-15 19:23:24 · 1732 阅读 · 0 评论 -
linux实时操作系统xenomai看门狗(watchdog)机制及作用介绍
本文介绍linux实时操作系统xenomai中的watchdog机制及用途。原创 2024-11-26 22:23:44 · 1230 阅读 · 0 评论 -
xenomai内核解析--xenomai实时线程创建流程
本文介绍了linux硬实时操作系统xenomai pthread_creta()接口的底层实现原理,解释了如何在双内核间创建和调度一个xenomai任务。本文是基于源代码的分析,提供了详细的流程和注释,同时给出了结论部分,方便读者快速了解核心内容。原创 2023-07-02 18:04:15 · 3493 阅读 · 12 评论 -
【原创】实时linux如何printf输出不影响实时性?
本文介绍为什么linux实时任务不能直接调用printf(),首先简单介绍一下终端输出原理,然后如何实现终端输出不影响实时任务实时性给出一个方案,最后介绍xenomai中是如何做到完美printf()的。原创 2023-01-16 01:02:02 · 1459 阅读 · 6 评论 -
【原创】xenomai UDD介绍与UDD用户态驱动示例
本文介绍linux实时操作系统xenomai UDD原理和相关代码,并给出一个基于UDD的用户态操作GPIO的示例,以及xenomai RTNet协议栈收发网络包与UDD用户态驱动操作网卡收发包的CPU耗时对比。原创 2022-09-03 15:00:01 · 1891 阅读 · 4 评论 -
【机翻】xenomai RTnet – 灵活的硬实时网络框架
文章目录RTnet – 灵活的硬实时网络框架0 摘要1 介绍2 基础服务2.1 数据包管理2.2 UDP/IP 实现2.3 Driver Layer2.4 应用程序接口2.5 捕获扩展3 实时媒体访问控制3.1 可插拔 MAC 层3.2 TDMA 学科4 实时配置服务5 火线的整合5.1 火线概述5.2 FireWire 堆栈和 RTnet 集成6 应用协议和框架6.1 netRPC——远程实时过程调用6.2 RTPS 协议6.3 实时控制框架6.4 CANopen7 总结与展望8 rtnetproxy1.翻译 2022-04-26 21:32:53 · 3024 阅读 · 5 评论 -
【原创】xenomai+linux双内核下的时钟管理机制
clock是操作系统正常运行的发动机,系统利用时钟中断维持系统时间、促使任务调度,以保证所有进程共享CPU资源;那你是否好奇xenomai cobalt内核和Linux内核双内核共存的情况下,时间子系统是如何工作的?一个硬件时钟如何为两个操作系统提供服务的?原创 2022-04-05 19:59:29 · 1237 阅读 · 0 评论 -
xenomai 在X86平台下中断响应时间测试
版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/本文主要讲述xenomai 在X86平台上的中断响应时间测试。1.中断响应时间实时操作系统的意义就在于能够在确定的时间内处理各种突发的事件,而中断这些事件、系统抢占调度的触发点,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑是中断响应时间。中断延迟时间是指从接收到中断信号到操作系统做出响应,并完成进入中断服务例程所需要的时间。中断延迟时原创 2021-10-10 22:16:43 · 1460 阅读 · 4 评论 -
X86 linux异常处理与Ipipe接管中断/异常
文章目录一、回顾二、X86 linux异常中断处理1. 中断门及IDT2. 初始化门描述符2.1 早期异常处理2.2 start_kernel中的异常向量初始化一2.3 idtentry宏(DB异常为例)2.4 start_kernel中的异常初始化二-trap_init()2.5 初始中断门描述符2.5.1 IRQ2.5.2 early_irq_init2.5.3 init_IRQ三、linux x86_64中断/异常处理总结四、ipipe接管中断处理版权声明:本文为本文为博主原创文章,转载请注明出处。原创 2021-06-06 22:58:55 · 1033 阅读 · 0 评论 -
ARM平台内存和LL cache对xenomai实时性的影响
版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。文章目录1. 问题概述2. stress 内存压力原理2. cache 因素2.1 未加压2.2 加压(cpu/io)3. 内存管理因素3.1 内存分配/释放3.2 MMU拥塞4 总结1. 问题概述对ti am5728 xenomai系统latency测试时,在测试过程中发现,内存压力对latency影响极大,未添加内存压力下数据如下(注:文中所有测试使用默认gr原创 2020-11-07 11:54:56 · 1072 阅读 · 0 评论 -
【原创】linux实时操作系统xenomai x86平台基准测试(benchmark)
一、前言benchmark 即基准测试。通常操作系统主要服务于应用程序,其运行也是需要一定cpu资源的,一般来说操作系统提供服务一定要快,否则会影响应用程序的运行效率,尤其是实时操作系统。所以本文针对操作系统来做一些基准测试,看看在低端x86平台上,xenomai提供我们平时常用的服务所需要的时间,清楚地了解该平台上一些xenomai服务的消耗,有时能有利于我们进一步优化程序。目前大多商业实时操作系统会提供详细benchmark测试,比如VxWorks,目前xenomai没有这类的方式,所以借鉴VxWo原创 2022-04-21 16:37:02 · 3173 阅读 · 6 评论 -
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。文章目录1.概述1.概述xenomai内核解析–实时IPC概述xenomai与普通linux进程之间通讯XDDP(一)–实时端socket创建流程xenomai与普通linux进程之间通讯XDDP(二)–实时与非实时关联(bind流程)前面两篇文章我们看了xddp在xenomai内核里涉及的数据结构、RTDM对于协议类实时设备的管理方式,以及实时端创建一个XD原创 2020-10-17 21:36:42 · 2380 阅读 · 6 评论 -
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(二)--实时与非实时关联(bind流程)
版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。文章目录1.概述2.1 xnpipe介绍2.2 xnpipe与xddp_socket关联3. xnpipe设备注册流程3.1 xnpipe初始化与设备创建3.2注册rtpipe设备3.3 注册xnpipe_wakeup_apc1.概述上篇文章介绍了实时端socket创建和配置的流程,本篇文章来看bind操作,实时端与非实时端是如何关联起来的?XDDP通讯的底层设备原创 2020-10-08 20:56:19 · 1311 阅读 · 0 评论 -
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程
版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。文章目录1.概述3.解析socket函数3.1 RTDM Protocol Devices3.2 rtdm_fd_index1.概述上篇文章xenomai内核解析–实时IPC概述中介绍了RTIPC,从这篇文章开始开始深入xenomai内核,解析RTIPC的具体实现。XDDP、IDDP和BUFP由于应用场景不一样,所以底层不一样,但也区别不大。XDDP用于xeno原创 2020-10-01 18:55:18 · 2906 阅读 · 2 评论 -
xenomai内核解析--实时IPC概述
版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。文章目录1.概述2.Real-time IPC2.内核配置3.应用编程接口socket()close()setsockopt()bind()sendto()与recvfrom()recvmsg()与sendmsg()1.概述Linux系统中常见的进程间通讯方式有管道、FIFO、共享内存、信号、套接字等方式。但在xenomai内核加入后,一个实时任务与非实时(普通Li原创 2020-10-01 16:57:26 · 2514 阅读 · 1 评论 -
解BUG-xenomai内核与linux内核时间子系统之间存在漂移
版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。一、问题起源何为漂移?举个例子两颗32.768kHz晶振C1C_1C1和C2C_2C2,由于制造工艺原因或者使用时温度、辅助元件参数等影响,与他们的实际频率一定不是相同的,与32.768kHz有不同的偏差,假如C1C_1C1实际使用时频率32.766kHz,C2C_2C2实际频率32.770kHz。假如有那么两个电子手表,使用32.768kHz晶振,每来一原创 2020-09-13 18:10:51 · 1485 阅读 · 5 评论 -
xenomai与VxWorks实时性对比(资源抢占上下文切换对比)
版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/(下面数据,仅供个人参考)可能大部分人一直好奇VxWorks与xenomai对比,实时性孰优孰劣,正好笔者最近要做一个这方面的对比。声明:下面数据,仅供个人参考,有不对的地方还请指出。本文继上一篇文章【原创】xenomai与VxWorks实时性对比(Jitter对比),主要对比VxWorks与xenomai两个硬实时操作系统在对各类资源操作时,任务抢占切换的原创 2020-08-20 21:35:45 · 1641 阅读 · 2 评论 -
xenomai内核解析---内核对象管理—xnregistry(重要组件)
版权声明:本文为本文为博主原创文章,转载请注明出处。写的粗糙,如有错误,欢迎指正。文章目录1. 概述2. 命名内核对象管理3. 未命名内核对象管理4. xnregistry初始化流程5. xnregistry总结1. 概述上篇文章xenomai内核解析–同步互斥机制(一)–优先级倒置讲到,对于所有内核对象:xnregistry:保存内核对象,提供内核对象存储和快速检索。xnsynch:资源抽象,提供线程与资源的同步互斥管理机制。举个应用例子,有两个xenoami任务,使用semaphore做互斥原创 2020-07-22 23:51:14 · 640 阅读 · 0 评论 -
xenomai内核解析--双核系统调用(三)--如何为xenomai添加一个系统调用
文章目录一、添加系统调用二、Cobalt库添加接口三、应用使用一、添加系统调用下面给xenomai添加一个系统调用get_timer_hits(),用于获取应用程序运行CPU的定时器中断产生的次数,类似于VxWorks里的tickGet()。需要说明一下VxWorks是采用周期tick的方式来驱动系统运作,tickGet()获取的也就是tick定时器中断的次数,但xenomai使用的tickless,即定时器不是周期产生tick的。所以get_timer_hits()用于获取定时器中断次数,get_ti原创 2020-07-19 09:47:04 · 1052 阅读 · 0 评论 -
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
版权声明:本文为本文为博主原创文章,转载请注明出处。如有错误,欢迎指正。1. 引出问题上一篇文章xenomai内核解析–双核系统调用(一)以X86处理器为例,分析了xenomai内核调用的流程,读了以后可能会觉得缺了点什么,你可能会有以下疑问:系统中的两个内核都是POSIX接口实现系统调用,那么我写一个POSIX接口的应用程序,怎样知道它调用的内核,或者说怎样成为运行在cobalt内核的RT应用,而不是普通linux应用?对于同一个POSIX接口,可能我的程序中,既需要xenomai内核提供服务(原创 2020-07-18 23:08:21 · 1456 阅读 · 3 评论 -
xenomai内核解析--信号signal(二)---xenomai信号处理机制
版权声明:本文为本文为博主原创文章,转载请注明出处。如有错误,欢迎指正。xenomai信号上篇文章讲了linux的信号在内核的发送与处理流程,现在加入了cobalt核,Cobalt内核为xenomai线程提供了信号机制。下面一一解析xenomai内核的信号处理机制。1 双核下的信号分类我们已经知道,每个用户空间的xenomai线程在内核空间都有两个调度实体,一是在linux内核中的task_struct,另一个是称为linux空间的一个影子(shadow)的xnthread。它们表示的是同一个线程,原创 2020-07-18 17:40:49 · 932 阅读 · 0 评论 -
xenomai内核解析--信号signal(一)---Linux信号机制
文章目录1. Linux信号1.1注册信号处理函数1.2 信号的发送1.3 信号的处理2. linux 线程信号1. Linux信号涉及硬件底层,本文以X86平台讲解。信号是事件发生时对进程的通知机制,是操作系统提供的一种软件中断。信号提供了一种异步处理事件的方法,信号与硬件中断的相似之处在于打断了程序执行的正常流程,例如,中断用户键入中断键(Ctrl+C),会通过信号机制停止应用程序。信号的几种产生方式:按键产生 当用户按某些按键时,引发终端产生的信号。 ctrl+C产生 SIGINT原创 2020-07-17 20:20:48 · 1365 阅读 · 0 评论 -
xenomai内核解析--实时内存管理--xnheap
版权声明:本文为本文为博主原创文章,转载请注明出处。如有错误,欢迎指正。文章目录一、 xenomai内存池管理1.xnheap2. xnpagemap3. xnbucket4. xnheap初始化5. 内存块分配5.1 小内存分配流程(<= 2*PAGE_ZISE)1.分配1Byte2.分配50Byte3.分配1000 Byte4. 分配5000字节5.2 大内存分配(> 2*PAGE_ZISE)1. 分配10000字节6. 内存释放页内块释放页连续的块释放7. 总结一、 xenom原创 2020-08-21 22:32:25 · 2143 阅读 · 2 评论 -
xenomai内核解析--同步互斥机制(一)--优先级反转/优先级倒置
版权声明:本文为本文为博主原创文章,转载请注明出处。如有错误,欢迎指正。文章目录一、xenomai 任务资源管理简要二、优先级倒置1. 什么是优先级倒置2. 优先级反转解决办法一、xenomai 任务资源管理简要同步:任务间的直接制约关系,A要继续执行需要B完成某一个操作操作才能继续进行。互斥:任务间的间接制约关系,A访问了资源B就不能去访问,必须等A访问完了才行。操作系统提供了任务间的同步互斥机制,如信号量信号量(sem)、互斥锁(mutex)、条件变量(cond)等,抽象来说这些同步互斥锁本都原创 2020-07-06 22:41:13 · 1337 阅读 · 0 评论 -
xenomai内核解析--双核系统调用(一)
版权声明:本文为本文为博主原创文章,转载请注明出处。如有错误,欢迎指正。文章目录xenomai 内核系统调用一、32位Linux系统调用二、32位实时系统调用三、 64位系统调用五、 实时系统调用表cobalt_syscalls六、实时系统调用权限控制cobalt_sysmodes参考xenomai 内核系统调用解析系统调用是了解内核架构最有力的一把钥匙,在这之前先搞懂xenomai与linux两个内核共存后系统调用是如何实现的。为什么需要系统调用linux内核中设置了一组用于实现系统功能的子程原创 2020-06-18 23:43:24 · 3156 阅读 · 4 评论 -
xenomai与VxWorks实时性对比(Jitter对比)
版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。下面数据,仅供个人参考可能大部分人一直好奇VxWorks与xenomai对比,实时性孰优孰劣,正好笔者最近要做一个这方面的对比,本文以实时系统其中一个重要指标—Jitter来进行简单对比。一、环境简单介绍一下环境:硬件平台:双核cortex-A15处理器,CPU频率1.5GHZ,内存2GB。xenomai:Linux-4.19+xenomai 3.1,具体配置:略;VxWorks:VxWorks 7,具体配置:略;二、时钟原创 2020-06-07 10:32:13 · 2850 阅读 · 2 评论