自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (4)
  • 收藏
  • 关注

原创 【xenomai3内核解析】文章大纲

xenomai内核解析本博客为本人学习linux实时操作系统框架xenomai的一些记录,主要剖析xenomai内核实现,以及与linux相关的知识。方便读者定位具体文章,现列出本博客大纲,后续会陆续将大纲中缺少部分填充完整,感兴趣的读者敬请关注!版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。第一章 认识xenomai1. 嵌入式实时linux概述2. xenomai的组成结构第二章 构建xenomai内

2020-10-18 18:25:36 2473 8

原创 有利于提高xenomai/PREEMPT-RT 实时性的一些配置建议

本文讲述一些有利于提高xenomai 实时性配置建议,其中,一些是通用的,一些是针对某个架构的,希望对你有用。一、影响因素硬实时操作系统应具备的最重要特性之一是可预测性,系统应该保证满足所有关键时序约束。然而,这取决于一系列因素,这些因素涉及硬件的架构特征、内核中采用的机制和策略,以及用于实现应用程序的编程语言。1.硬件硬件方面,第一个影响调度可预测性的是处理器本身。处理器的内部特性是不确...

2020-06-19 22:38:43 6111 20

原创 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 11819 26

原创 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 8270 2

原创 EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统

本文探讨IgH EtherCAT Master针对Linux/Windows/RTOS等不同操作系统的移植。

2024-06-20 22:19:42 670

原创 【原创】不同RTOS中POSIX接口的实现差异

以精确定时为例,精确定时是我们常用的操作系统服务之一,比如工业以太网(ECAT、PN...)中的通信周期,通信周期的准确控制离不开精确定时;在无线基站和终端的slot调度中,精确定时确保了数据传输的有序与高效;在实时仿真中,仿真步长的精确控制更是模拟真实场景的关键等等,这些都离不开POSIX定时接口。本文首先简要概述POSIX标准,随后深入剖析POSIX定时接口在常用开放内核源码的RTOS(实时操作系统)上的上的实现原理做简单介绍。通过本文的介绍,希望能为读者在实际应用中提供有价值的参考,避免在RTOS中使

2024-05-09 09:00:34 838

转载 跟我一起写Makefile(重制版)

跟我一起写Makefile》是陈皓发表在其CSDN博客上的系列文章。该系列文章翻译整理自,一直受到读者的推荐,是很多人学习Makefile的首选文档。目前网络上流传的PDF版本多为祝冬华整理的版本。这个版本的排版一般,代码部分没有做任何语法高亮。2010年初学Makefile的时候,读了前几章皮毛,一直用到了现在。最近想着重新学习一下Makefile,顺便学习一下Sphinx,重新制作一个更精美的PDF版本。书的文字部分来自于Andriki提供的Mediawiki源码;使用Sphinx制作文档。

2024-02-29 22:27:10 146

原创 【原创】为什么 Linux 不是实时操作系统

简单介绍为什么Linux不是实时操作系统

2024-01-24 22:05:49 1180

原创 开源工业以太网现场总线协议栈汇总

https://github.com/ethercrab-rs/ethercrab 一个纯rust语言编写的全新etehrcat主站,目前功能不完善。https://github.com/ribalda/ethercat 基于官方,功能更为全面的igh etehrcat主站。https://github.com/leducp/KickCAT 一个C++写的全新etehrcat主站,目前功能不完善。CanFestival开源库网址:https://hg.beremiz.org/

2023-12-13 09:00:07 672

原创 虚拟化技术及实时虚拟化概述

虚拟化是一种可以在一台物理机上运行多个操作系统和应用程序,从而提高资源利用率和灵活性的技术。实时虚拟化技术是一种针对实时应用场景的虚拟化技术,如工业控制、汽车电子、无线通信、航空航天等领域,它要求在保证虚拟化优势的同时,满足严格的时间约束和高可靠性要求。本系列文章文将对实时虚拟化技术进行介绍,分析其原理、特征、关键技术和难点,以及应用场景。

2023-07-16 20:51:55 1160

原创 xenomai内核解析--xenomai实时线程创建流程

本文介绍了linux硬实时操作系统xenomai pthread_creta()接口的底层实现原理,解释了如何在双内核间创建和调度一个xenomai任务。本文是基于源代码的分析,提供了详细的流程和注释,同时给出了结论部分,方便读者快速了解核心内容。

2023-07-02 18:04:15 2375 12

原创 【原创】浅谈EtherCAT主站EOE(上)-EOE网络

Ethernet over EtherCAT (EoE) 是一种通信协议,它允许通过网络连接访问从站设备的参数,以便配置和诊断从站设备。EoE 允许将常见的互联网协议(如 HTTP、FTP 等)的数据插入到 EtherCAT 协议数据中,而不影响 EtherCAT 过程数据 ,那ETherCAT主站是如何让实现的呢?

2023-05-28 10:07:27 1548 2

转载 【转载】Fortran - 快速指南

要定义派生数据type,请使用类型和end type语句。。type语句定义一个新的数据类型,为您的程序提供多个成员。类型语句的格式是这样的 -end type以下是您声明Book结构的方式 -type Books。

2023-04-04 08:30:27 1641 2

原创 【原创】Ubuntu22.04安装 PREEMPT-RT(Ubuntu Pro RealTime linux/realtime Ubuntu)

以往我们开发实时Linux内核PREEMPT-RT,需要开发者自己打补丁-配置-编译构建安装,实时性暂且不谈,可靠性、稳定性完全没有保障,现在Ubuntu官方提供PREEMPT-RT支持啦。实时 Ubuntu 于2023 年 2 月 14 日基于Ubuntu 22.04 LTS发布,支持旨在为关键电信基础设施提供性能、超低延迟和安全性。基于 Linux 内核的 5.15 版本集成了 x86 和 Arm架构的树外PREEMPT_RT补丁。有了ubuntu官方支持,可靠性、稳定性有保障,赶快来安装体验一下。

2023-04-01 23:44:48 3598 3

原创 【原创】实时linux如何printf输出不影响实时性?

本文介绍为什么linux实时任务不能直接调用printf(),首先简单介绍一下终端输出原理,然后如何实现终端输出不影响实时任务实时性给出一个方案,最后介绍xenomai中是如何做到完美printf()的。

2023-01-16 01:02:02 888 6

原创 Ftrace使用及实现机制

ftrace 即function tracer,最初是用来 trace 内核中的函数。现在 ftrace 的功能不仅仅是function tracer,更加丰富了,可观测内核很多信息。本文分为两个部分,第一部分介绍ftrace的使用,大部分来源于Linux内核ftrace文档ftrace.rst,第二部分介绍ftrace的实现原理。

2023-01-02 22:15:37 392

原创 【原创】xenomai UDD介绍与UDD用户态驱动示例

本文介绍linux实时操作系统xenomai UDD原理和相关代码,并给出一个基于UDD的用户态操作GPIO的示例,以及xenomai RTNet协议栈收发网络包与UDD用户态驱动操作网卡收发包的CPU耗时对比。

2022-09-03 15:00:01 1105 4

转载 【转载】AF_XDP技术详解

XDP 定义了一个受限的执行环境(a limited execution environment),运行在一个 eBPF 指令虚拟机中,由网络数据事件触发eBPF虚拟机执行XDP程序指令,使用XDP 提供的 XDP_REDIRECT 操作,可以将将接收的网络包重定向到其他启用 XDP 的设备发送出去或者重定向到其他CPU处理。 AF_XDP是一个基于XDP实现的协议族(例如AF_NET),主要用于高性能报文处理。...

2022-08-27 09:44:15 634

原创 【原创】CPU性能优化小记

嵌入式业务应用运行导致系统sys CPU使用率飚高,本文记录本次性能分析定位过程,包括一些常用工具使用等。

2022-08-22 21:42:38 1828

转载 [转] DSP缓存机制

本文主要以DSP讲解cache原理,但原理与CPU是相通的,故转载,原文地址:https://blog.csdn.net/qq_39376747/article/details/112794096DSP 缓存机制注:本文说明的DSP基于TI c6000系列的C66x DSP1.Cache基础一般来说我们的代码往往是存放在我们的磁盘设备中(EMMC、SSD、Flash等),当我们运行程序的时候,我们需要将代码加载到我们的内存(DDR)中去运行,之后CPU再从内存中加载代码执行...

2022-05-09 08:39:08 1772 1

翻译 【机翻】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 1812 5

原创 【原创】linux实时操作系统xenomai x86平台基准测试(benchmark)

一、前言benchmark 即基准测试。通常操作系统主要服务于应用程序,其运行也是需要一定cpu资源的,一般来说操作系统提供服务一定要快,否则会影响应用程序的运行效率,尤其是实时操作系统。所以本文针对操作系统来做一些基准测试,看看在低端x86平台上,xenomai提供我们平时常用的服务所需要的时间,清楚地了解该平台上一些xenomai服务的消耗,有时能有利于我们进一步优化程序。目前大多商业实时操作系统会提供详细benchmark测试,比如VxWorks,目前xenomai没有这类的方式,所以借鉴VxWo

2022-04-21 16:37:02 2697 6

原创 【原创】xenomai+linux双内核下的时钟管理机制

clock是操作系统正常运行的发动机,系统利用时钟中断维持系统时间、促使任务调度,以保证所有进程共享CPU资源;那你是否好奇xenomai cobalt内核和Linux内核双内核共存的情况下,时间子系统是如何工作的?一个硬件时钟如何为两个操作系统提供服务的?

2022-04-05 19:59:29 780

原创 xenomai 在X86平台下中断响应时间测试

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/本文主要讲述xenomai 在X86平台上的中断响应时间测试。1.中断响应时间实时操作系统的意义就在于能够在确定的时间内处理各种突发的事件,而中断这些事件、系统抢占调度的触发点,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑是中断响应时间。中断延迟时间是指从接收到中断信号到操作系统做出响应,并完成进入中断服务例程所需要的时间。中断延迟时

2021-10-10 22:16:43 1189 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 745

原创 EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文

文章目录1 启动脚本1.1 start1.2 stop2 主站实例创建2.1 Master Phases2.2 数据报与状态机数据报状态机2.3 master状态机及数据报初始化2.4 初始化EtherCAT device2.5 设置IDLE 线程的发送间隔:2.6 初始化字符设备3 网卡4 IDLE阶段内核线程版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/1 启动脚本igh通过脚本来启动,可以是sys

2021-02-22 23:41:16 9102 11

转载 【转】DSP 缓存机制

本文主要以DSP讲解cache原理,但原理与CPU是相通的,故转载,原文地址:https://blog.csdn.net/qq_39376747/article/details/112794096文章目录DSP 缓存机制1.Cache基础1.1 Cache命中和缺失1.2 Cache line1.3 Cache分类1.3.1 直接映射缓存(Direct-Mapped Caches)1.3.2 组相连缓存( Set-Associative Caches)1.3.3 全相连缓存(Full associativ

2021-01-30 16:15:09 614

原创 X86_64 GNU汇编、寄存器、内嵌汇编

文章目录一、汇编语言二、指令数据传输指令栈操作指令pushpop运算指令位操作比较操作指令标志寄存器流控制指令三、伪指令.equ.rept.endr.lcomm.globl.type.ascii.byte.section变量四、X86_64寄存器五、常见汇编结构1. 函数调用传参使用寄存器传参使用栈传参2. 变量赋值3. 指针4. 结构5. 循环6. if语句7. 浮点数使用六、C嵌入汇编1.基本内嵌2.扩展内嵌汇编2.1汇编模板2.2操作数2.3 Clobber列表2.4 Volatile2.5 常用约

2021-01-17 21:46:06 1844

原创 中断子系统-ARM GPIO中断处理流程

版权声明:本文为本文为博主原创文章,转载请注明出处https://blog.csdn.net/qq_22654551。如有问题,欢迎指正。文章目录第一部分 GIC中断控制器的注册1. GIC驱动分析2.GIC驱动流程分析第二部分 device node转化为platform_device第三部分:platform_device注册添加第四部分 GPIO控制器驱动第五部分 引用GPIO中断的节点的解析第六部分 GPIO中断处理流程本文以AM5728 GPIO中断为例,简单介绍有关从注册GIC中断到 驱动使

2021-01-10 16:05:01 2444

原创 X86中断-异常-APIC

文章目录1 异常向量(vector)2 高级可编程中断控制器(APIC)2.1 Local APIC(LAPIC)**寄存器**优先级中断类型中断发送流程中断接收流程2.2 IO APIC寄存器2.3 扩展xAPIC(extended APIC)x2APIC2.4 MSI(Message Signaled Interrupt)Message Address RegisterMessage Data Register优点缺点2.5 MSI-X3 中断/异常处理3.1 IDT3.2 中断/异常处理流程3.3

2020-11-29 11:54:13 1559

原创 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 748

原创 Linux下如何使用X86 CPU的GPIO

文章目录1.前言2.linux pinctrl子系统3. pin controller driver4.手动构造device1.前言在arm嵌入式开发中,各个外设具有固定的物理地址,我们可以直接通过芯片手册来编写驱动配置后使用。但是在x86中有所不同,所有外设控制器集成在PCH(曾经的南桥)中,每个外设都是作为一个PCI设备挂在PCH的PCI总线上,PCH再通过DMI与CPU相联。对于标压处理器H/K系列(也就是我们台式机),南桥还在主板上,对于x86移动处理器(Y/U结尾系列),已将PCH和CPU集成

2020-10-31 22:19:52 2036 2

原创 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 1979 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 967

原创 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 2273 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 2241 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 1339 5

原创 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 1360 2

原创 xenomai与VxWorks实时性对比(资源抢占上下文切换对比)

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/(下面数据,仅供个人参考)可能大部分人一直好奇VxWorks与xenomai对比,实时性孰优孰劣,正好笔者最近要做一个这方面的对比。声明:下面数据,仅供个人参考,有不对的地方还请指出。本文继上一篇文章【原创】xenomai与VxWorks实时性对比(Jitter对比),主要对比VxWorks与xenomai两个硬实时操作系统在对各类资源操作时,任务抢占切换的

2020-08-20 21:35:45 1419 2

原创 xenomai内核解析---内核对象管理—xnregistry(重要组件)

版权声明:本文为本文为博主原创文章,转载请注明出处。写的粗糙,如有错误,欢迎指正。文章目录1. 概述2. 命名内核对象管理3. 未命名内核对象管理4. xnregistry初始化流程5. xnregistry总结1. 概述上篇文章xenomai内核解析–同步互斥机制(一)–优先级倒置讲到,对于所有内核对象:xnregistry:保存内核对象,提供内核对象存储和快速检索。xnsynch:资源抽象,提供线程与资源的同步互斥管理机制。举个应用例子,有两个xenoami任务,使用semaphore做互斥

2020-07-22 23:51:14 476

UcOS-III全家桶.7z

uCOS全家桶PDF文档和源码,全部组件canopen、uc-fs、uc-tcp、uc-usb-host、uc-usb-device、uc-LCD、uc-Modbus.

2020-06-22

SeggerEval_WIN32_MSVC_MinGW_GUI_V538.zip

SeggerEval_WIN32_MSVC_MinGW_GUI_V538 WIN32模拟器,版本5.38,已配置好VS2017环境

2018-04-26

SeggerEval_WIN32_MSVC_MinGW_GUI_V544

SeggerEval_WIN32_MSVC_MinGW_GUI_V544最新,Visual Studio 2017下正常运行

2018-04-26

周立功的smartCortex M3-1788开发板资料

周立功的smartCortex M3-1788开发板资料 包含硬件原理图,UART\DMA\AD\Timer等外设例程,

2017-11-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除