Orangepi(香橙派)提高实时性

article/2025/9/18 5:35:34

Orangepi实时性能优化

  • 提高实时性的方法
    • 打内核 RT 补丁、使用 wiringpi 包 解决卡顿问题
    • 使用 "isoclpus =xx" 禁用核心 解决卡顿问题
    • 问题解析!
      • cmdline.txt问题
      • 写入 /proc/cmdlline 文件出错

提高实时性的方法

首先,本人使用的是 orangepi one (就像下面的一样) 使用的是 Linux系统。
orangepi

我们都知道 Linux 系统并不是硬实时系统,有时系统会先处理一些其他的事情从而暂缓处理用户的程序,而我最近想用 orangepi one 来调试 MPU6050,发现程序一直发现卡卡的,如果我用 stm32 来处理当然容易, 几个中断,再分配一下优先级基本就解决卡顿的问题了,但是现在使用的是Linux系统,所以我就在网上搜索如何增加 Linux 系统的实时性。Orangepi 的同类产品当然就是树莓派啦!于是我就在网上搜索"如何提高树莓派的实时性"。
给出的答案是这样的

  1. 第一种方法:在 /boot/cmdline.txt 最后一行里面添加 isolcpus=xx(你想要禁用的核心) 然后把你需要的任务安排在禁用的核心上,这样你的任务就绑定了一个独立 CPU 核心。意味着这个 CPU 核心基本就只执行你这个任务啦,这样就达成了提高实时性的需求。
  2. 第二种方法打内核 RT 补丁。据说是这样的,他们提供一个最底层的精简的调度器,然后每有一个实时任务的时候,就会打断正在执行的任务从而转向执行实时任务,然后执行完成后,其他任务再执行。
  3. 第三种方法使用wiringpi包,这个包简单来说就是改变了当前进程的调度策略及优先级。使用 import wiringpi 来给你的 python 代码添加这个包。

基本上就是以上这三种方法来提高实时性了。其实把,我觉得只有第一种方法能够最大限度地提升程序的运行效率诶。因为你看这块芯片都给你让出一个核心了,意味着你的程序不需要和别人抢饭吃了(好耶!)

打内核 RT 补丁、使用 wiringpi 包 解决卡顿问题

因为我没用过,所以不写这段了,你们可以去看看其他博主的文章吧

使用 “isoclpus =xx” 禁用核心 解决卡顿问题

首先,如果看过 orangepi 的用户指南,那么应该对 orangepiEnv.txt 文件不陌生,因为开 i2cuart 的接口都是要在这个文件里面写上一段解锁代码的,然后你的板子就能够在特定的接口识别到外部设备了。我起初以为这个文件也可以控制 CPU 的核心调度,于是我就在 orangepiEnv.txt 文件下加了一段 isoclpus =3(0 ~ 3分别代表1 ~ 4),这里表示我想要禁用 CPU 的核心4,但是重启后发现没用…。👇👇你看下面的图👇👇,四个核心都有在运行任务啊~。看来,失败了。

在这里插入图片描述
然后我就继续寻找解决办法,在一片博客下面发现,要在 boot 文件夹下的 cmdline.txt 中加上 isoclpus = xx 才能够成功禁用核心!好耶!我立马就去看!然后发现在orangepi oneboot 文件夹下并没有 cmdline.txt 文件,我反复看了几遍后确定没有这个文件👇

在这里插入图片描述

后面经过我不懈的努力,终于在 /proc 文件夹下发现了 cmdline 文件,虽然没有 .txt 的后缀,但是应该不影响,然后我就直接,sudo vim cmdline,然后在最后加上了 isoclpus = 3,后面发现保存失败了!👇👇并且报错这个👇👇

E45: ‘readonly’ option is set (add ! to override)

检查后发现这个文件是只读的!没关系。我用 sudo chmod a+w cmdline 这条语句给他加上权限!然后继续 sudo vim cmdline,但是依旧失败了!👇👇他说这个👇👇

“cmdline” E667: Fsync failed
WARNING: Original file may be lost or damaged
don’t quit the editor until the file is successfully written!

原来这个文件是个空的文件啊!!!这个文件可能已经被删除了!?

但是,依旧别伤心!我直接去官网看!👇👇在 orangepi 的官网我发现了这么一段话。👇👇
在这里插入图片描述
官方的意思大概是这样的,这个版本的 uboot 支持 boot.scr ,…巴拉巴拉讲一堆…, 然后最后一段最重要的话的意思是: boot.scr 包含了加载 script.bin、内核所需的 uboot 命令。 initrd(可选),设置内核参数和引导。 也许我们可以将我们的 isoclpus = 3 放进去?也许有用??让我们试一下吧!
经过我的不断试错,我直接告诉你们答案:首先你得去 /boot 目录下 然后你们需要把 isolcpus = xx 放进 boot.cmd 中的 setenv bootargs 的任意一个位置里。👇👇就像下面的一样👇👇。

在这里插入图片描述

然后和官网的操作一样,运行这一段话进行编译!!然后 reboot 重启看看

mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

惊喜!!!好像成功了!我把第四个核心禁用了,果然在 htop 里面第四个核心没有任务正在进行!!

在这里插入图片描述

问题解析!

cmdline.txt问题

首先引导分区中的文件 “cmdline.txt”(在引导系统中显示为文件夹)是树莓派的东西,而不是linux的标准(该文件由 树莓派的引导加载程序读取,这是树莓派的板子独有的)。 Linux 中的文本文件没有任何“.txt”扩展名。

写入 /proc/cmdlline 文件出错

/proc/cmdline 是由内核创建的只读和虚拟文件,用于以简单的方式与应用程序通信数据,就像 /proc/sys 中的所有其他内容一样,编辑器无法读取它,我们也是无法更改它的!

不同的设备有不同的方式来启动 Linux 系统,orangepi 官方提供了文档让我观看,发现把我的命令添加到boot.cmd,然后执行编译将文本文件转换为 boot.scr 文件。重启,解决!

下一阶段就开始编写程序并把它放在第四核心上运行!试一下是不是真的实时!!


http://chatgpt.dhexx.cn/article/qv9V7Gpf.shtml

相关文章

深入理解Linux网络——内核是如何接收到网络包的

文章目录 一、相关实际问题二、数据是如何从网卡到协议栈的1、Linux网络收包总览2、Linux启动1)创建ksotfirqd内核线程2)网络子系统初始化3)协议栈注册4)网卡驱动初始化5)网卡启动 3、迎接数据的到来1)硬中…

banana pi 香蕉派资源站点

banana pi 香蕉派公共号:SINOVOIP-BPI banana pi 香蕉派中文创客论坛: http://www.banana-pi.org.cn banana pi 英文社区: http://www.banana-pi.org banana pi 产品网站: http://www.banana-pi.com banana pi 工厂网站&#xff1…

- 英语 -

一:什么是词根词缀? 1:词根是表明词的根本意思,看到什么就知道和什么相关 2:词缀分为前缀和后缀:词缀可点缀也可不点缀,主要体现单词的完整性 前缀:主要跟词根一起构成词的大概意思 …

可编程的,协议独立的软件交换机(论文阅读)

PISCES:可编程的,协议独立的软件交换机 摘要 虚拟机监视器使用软件交换机来引导数据包进出虚拟机(vm)。这些交换机经常需要升级和定制,以支持新的协议头或用于隧道和覆盖的封装,以改进测量和调试功能,甚至添加类似于…

web3分享

文章目录 前言一、web 3.0是什么?1-2-3 二、核心思想、价值初衷发展 三、彳亍前行大而不倒重放攻击新旧链之争 四、全景生态结构纵向切分-加密网络的结构 总结 前言 1989年伯纳斯提出万维网的概念,于今已有三十多年。万维网发展至今,已形成一…

Linux网络数据包接收处理过程

因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话&…

网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解

目录 前文链接(系列助学, 也为后文学习做铺垫, 可按需读取) 一. 再谈HTTP再理解 二. HTTP对比学习HTTPS HTTP和HTTPS的区别如下: 三.TCP协议 (三次握手四次挥手细节过程理解在之前的博文中有详细图解) tcp缓冲区概念的引入 (解释流量控制): 确认…

服务器网卡支持万兆单模么,万兆网卡可以用网线吗

公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。 话题:万兆网卡 可以用网线吗回答:只要是电口那就必须用网线,实测国标5e 60米可以达到万兆90%,2米可以达到万兆95%,也就是9500Mbps/s。其实,即便是7类速度也只能在90-99%之间。回答问题不要只搬书本上的东西,…

图解Linux网络包接收过程

作者:张彦飞 链接:https://zhuanlan.zhihu.com/p/256428917 因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销&…

家庭网络知识普及

一、先说说现在国内主流网络结构吧,一般家庭网络是由光网络终端ont,也就是光猫接入,也是目前比较成熟的接入场景。 1、光猫接入统称为pon(Passive Optical Network:无源光纤网络,源即电源,指传输过程中不需…

计算机网络知识(个人笔记)共十六张,希望可以帮到各位。

目录 共十六张图片 内容包括:计算机五大部件,工作原理,计算机辅助系统,计算机特点,计算机分类,计算机如那件系统,计算机硬件系统,计算机内部单位,病毒的种类及特点&…

网络布线基础知识

目录 一、信号与传输介质 二、信号的分类(区别) 三、双绞线 双绞线的分类 双绞线的链接规范 四、光纤的概述 五 、以太接口 光纤接口的分类 六、小结 一、信号与传输介质 1.信号包括信息、数据、信号。 信息是人对现实世界存在方式或某种运动状态的认识; 数据是描述…

图神经网络在知识图谱中的应用

文章目录 1. 知识图谱1.1 无处不在的图结构1.2 知识图谱介绍1.3 知识图谱概念1.4 知识图谱构建流程1.4.1 知识抽取1.4.2 知识融合1.4.3 知识加工1.4.4 知识更新 1.5 知识图谱应用 2. 图神经网络2.1 图数据与其他数据区别2.2 图数据2.3 图2.3 图任务2.4 图神经网络2.5图卷积神经…

HCIP高级网络知识整理(十分详细)

目录 HCIP --- 华为认证体系下高级网络工程师 计算机间信息传递原理: 规定计算机系统互联的组织: 核心思想 --- 分层 TCP/IP模型 --- TCP/IP协议簇 封装和解封转 PDU --- 协议数据单元 交换机的转发原理 路由器的工作原理 2,DHCP服…

ZigBee无线传感器网络知识点总结

第一章 无线传感器网络 Wireless Sensor Network (WSN) 1 无线传感器网络定义 无线传感器是一种 大规模、自组织、多跳、无基础设施支持的无线网络,网络节点是同构的、成本较低,体积和耗电量较小。大部分节点不移动,被…

网络入门—家庭组网介绍基本网络知识

目录 一、家庭网络规划: 二、网络设备知识: 1、网络设备接口介绍 : 2、并发连接数: 3、吞吐率(背板带宽) 4、光缆与尾纤: 三、网线分类: 四、家庭组网弊端: 五…

6G网络知识图谱技术研究

6G简介 近年来,随着5G、人工智能(AI, artificial intelligence) 和大数据技术的不断革新,智能移动物联网业务的兴起和迅速发展引发了新一轮信息技术革命浪潮,“万物互联”对海量业务数据即时获得、分析和交换的需求日益增长。为支撑海量连接…

网络相关知识总结-就挺全的

theme: juejin 一、网络 7 层架构 [PS 之前发在掘金了 直接搬过来吧] 7 层模型主要包括: ①物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由 1、…

网络基础知识(理论)

传输介质简介 网络是什么? 网络就是通过介质把终端互连而成的一个规模大、功能强的系统,从而使得众多的终端可以方便地互相传递信息,共享信息资源。 两个终端,用一条能承载数据传输的物理介质(也称为传输介质&#xf…