关注rt-thread已经两年多了,从2017年的第一次接触到现在已经能够熟练的使用这个操作系统工具了。现在我想谈一谈嵌入式与操作系统的理解,将自己的想法和大家分享。
本文主要描述树莓派64位的编译及运行方式,并且通过在qemu上运行仿真体验一下rt-thread 的64位效果。对于手上没有树莓派但是又想体验一下树莓派64位的朋友来说非常方便。当在qemu上运行通过后,再下载到真实的树莓派3b的板子上运行,效果一致。通过这种方式可以方便调试程序。
随着芯片技术的发展,嵌入式已经不再是传统的单片机开发模式,需要一些硬件操作的板子,现在qemu这种模拟硬件的手段非常好,通过直接在电脑上仿真后,然后再移植到真实的设备上,这样大大减少了下载程序的时间,同时也方便问题的定位和分析,通过这种方式,进行业务逻辑层的开发更加的高效合理。本文主要介绍在qemu上搭建树莓派3b的开发环境。
在一次项目中, 需要进行嵌入式操作系统选型, 需求就是选择一款OS,既能满足当下项目的需要,又要考虑公司未来对物联网应用的扩展能力,对比了目前市面上流行的开源操作系统,诸如FreeRTOS,RTX,UCOS,RT-Thread,contiki等, 最终确定了一款IoT OS:RT-Thread(遵循 Apache License 2.0 开源许可协议)。事实证明,这款操作系统也为公司物联网产品设计提供了很大便利,这里介绍其中一个我认为非常有用的组件FinSH,也正是深刻体会到了FinSH在程序应用开发中的便利, 使我下定决心将其移植到Linux平台,为我在linux平台的项目添上一个炫酷的操作接口,在此对整个过程进行总结。
众所周知,硬实时的概念,其核心并非追求速度的极致,而是确保系统能在预定的、可重复的时间范围内给予确定的响应。这意味着,实时系统的正确性不仅在于计算逻辑的正确,更在于结果的产生时间是否符合预期。以汽车为例,当发生碰撞时,安全气囊必须在极短的时间内弹开,否则可能无法起到应有的保护作用。
从0~99的范围专供实时进程使用, nice的值[-20,19]则映射到范围100~139
[导读] 前文描述了栈的基本概念,本文来聊聊堆是怎么会事儿。RT-Thread 在社区广受欢迎,阅读了其内核代码,实现了堆的管理,代码设计很清晰,可读性很好。故一方面了解RT-Thread内核实现,一方面可以弄清楚其堆的内部实现。将学习体会记录分享,希望对于堆的理解及实现有一个更深入的认知。
双十一来了,你准备好了吗?不管你是否准备完毕,我们带来了全网首发的 PowerBI 秒级实时大屏展示方案,你可以直接用来展示双十一的实时状况。
这是本文的下半部分,本文的上半部分以一个演示视频介绍了该人脸识别方案,并介绍了方案的软硬件环境和框架。
以上纯属娱乐。下面步入正题,这个元旦假期,由于北京疫情,公司不让出京,前几天核酸筛查,刚做了2020年第3次核酸检测,这几天不出意外都应该是宅在家里。本来是不打算写年终总结的,但是想着这一年过得太不容易了,就多多少少的唠两句,整理出了一篇总结,这是我第一次写个人年终总结,也希望以后能保持这个习惯,总结这一年的得失与感悟,以及对下一年的期待。分为以下几个部分回顾吧:
实时虚拟化听起来有点矛盾,但是它确实是有用的(在某些条件下),并且为 Linux 内核的灵活性又提供了一个强有力的证明。KVM2015 论坛的前两个演讲就详细的讨论了实时虚拟化。第一个演讲者是 Rik
导语 | 最近一段时间,笔者重新梳理了一下go知识点,并深入地看看了它的源码,在实践中又有了新的沉淀,于是写下这篇文章和大家分享一下。 在上一篇文章《来了!Go的2个黑魔法技巧》中,笔者分享了go中两个有意思的技巧。 而最近一段时间,笔者重新梳理了一下go知识点,并深入地看看了它的源码,在实践中又有了新的沉淀,于是写下这篇文章和大家分享一下。 一、魔法:最小化运行时(minimal runtime) 我们知道,go有一层很重的运行时(runtime),包括内存管理、goroutine 调度等重要组件;这些
本文为Linux-RT内核应用开发教程的第一章节——Linux-RT内核简介、Linux系统实时性测试,欢迎各位阅读!本期用到的案例板子是创龙科技旗下的A40i工业级别开发板,是基于全志科技A40i处理器设计,4核ARM Cortex-A7的高性能低功耗国产开发板,每核主频高达1.2GHz。
操作系统中的经典定义: 进程:资源分配单位。 线程:调度单位。 操作系统中用PCB(Process Control Block, 进程控制块)来描述进程。Linux中的PCB是task_struct结构体。
版权声明:本文主要内容基于“北京盟通科技有限公司”授权提供的文件,由“创龙科技”进行整理得出。感谢“盟通科技”的慷慨支持,让更多人了解Linux系统的“实时拓展”选择知识。
在 【Linux 内核】实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 ) 博客中 , 简单介绍了 实时调度类 rt_sched_class 结构体 , 下面开始分析该结构体的具体字段含义 ,
在 linux-5.6.18\include\linux\sched.h 头文件中 task_struct " 进程描述符 " 结构体 中定义的 sched_class 字段 ,
本篇博客中 , 开始分析 struct sched_class rt_sched_class 结构体变量 中的各个 函数指针 指向的 函数源码 ;
喜欢折腾的同学,会豪气如何升级 Debian Stretch 的内核到新版。遗憾的是现在能搜到的升级 Debian Linux 内核的文章多数是使用Ubuntu的deb安装包,其实这样装上去是有问题,常见的问题是,总会提示需要 apt --fix-broken install 。
Ftrace设计作为一个内部的tracer提供给系统的开发者和设计者,帮助他们弄清kernel正在发生的行为,它能够调式分析延迟和性能问题。对于前一章节,我们学习了Ftrace发展到现在已经不仅仅是作为一个function tracer了,它实际上成为了一个通用的trace工具的框架
在工业应用场景中,从信号输入到任务处理的时间确定性一般都需要满足一定的要求,且越来越多的设备需要更低的任务延时和更小的抖动要求。例如,在一个机械臂进行加工时,如果控制指令的更新时间大于2ms,机械臂可能就无法在准确位置停下,从而降低了产品的加工精度。
RT-Linux(Real-Time Linux)亦称作实时Linux,是Linux中的一种硬实时操作系统,它最早由美国墨西哥理工学院的V.Yodaiken开发。
本文为Linux-RT内核应用开发教程的第三章节——rt_input案例,欢迎各位阅读!本期用到的案例板子是创龙科技旗下的A40i工业级别开发板,是基于全志科技A40i处理器设计,4核ARM Cortex-A7的高性能低功耗国产开发板,每核主频高达1.2GHz。
sudo apt install build-essential git libssl-dev libelf-dev
中 , 简单介绍了 进程优先级概念 , 本篇博客中开始介绍 Linux 内核中优先级相关源码 ;
现在我们常见的一些关于Linux的系统很多,但是使用的更多的一般都是CentOS和Ubuntu,今天我就来记录一下关于centos下java的安装和环境变量的配置。
" 实时进程 " 优先级 高于 " 普通进程 " , 如果当前 Linux 系统的执行队列中有 " 实时进程 " , 调度器 会 优先选择 " 实时进程 " 进行调度 ;
因而内核提供了两个调度器主调度器,周期性调度器,分别实现如上工作, 两者合在一起就组成了核心调度器(core scheduler), 也叫通用调度器(generic scheduler).
上一篇博客 【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity ) 引入了 实时调度实体 sched_rt_entity 结构体源码 , 在 Linux 内核源码的 linux-5.6.18\include\linux\sched.h 头文件中 ;
上一篇已经介绍了关于Ubuntu18.04 实时内核的安装,此处介绍Ubuntu16.04的实时内核具体安装情况。
在 【Linux 内核】实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_list、timeout、watchdog_stamp、time_slice 字段 ) 博客中 , 简单介绍了 在 linux-5.6.18\include\linux\sched.h 头文件中定义的 实时调度实体 sched_rt_entity 源码 ,
本文带来的是基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),Linux-RT内核的硬件GPIO输入和输出实时性测试及应用开发案例的分享。本次演示的开发环境如下:
编译器将编写的C程序代码进行翻译,变成机器可以执行的程序,这个大致上可以分为四个步骤:预编译、编译、汇编、链接。
RT-Preempt Patch是在Linux社区kernel的基础上,加上相关的补丁,以使得Linux满足硬实时的需求。下面是编译RT linux内核的流程,以内核3.18.59为例。
简要 接下来做一个专辑《rt-thread驱动框架分析》,我会按照自己的理解来描述每一个驱动。有不对的欢迎随时来怼我。 rt-thread的版本分为两大类,一个是完整版本,一个是nano版本。而驱动框架是相对于完整版本的。所以要了解驱动框架,只能在完整版上了解。 rt-thread提供了很多驱动框架,比如常见的外设驱动:I2C, SPI等。还有网络相关的WLAN驱动等。 驱动框架分析,主要以STM32来分析。 驱动分析 API简要说明 rt-thread的pin驱动为上层应用提供两套不同的API,一套是对接
0x00 前言 朕身居高位,才知,高处不胜寒,不是所有事都可以随心所欲的,身不由己的事情甚多。 比如这次,各地大臣、各位王爷、各个藩国,为了尽臣子之心而讨朕龙颜之悦,搜尽天下之美人儿上京进贡。 朕不怪这些臣子,他们有此心意,朕心甚慰。因朕自即位以来,爱民如子,操劳国事,又不荒淫无度,目前后宫除了皇后也没啥人了。比起历史上的各位皇上的确是寒碜了不少。这不,各位大臣一定要让朕多用些宫女,盛情难却啊。 这事说起来也是好事,而且是朕也不能让大臣们都寒了心了,最关键的一点,各地藩国的美人儿都送到家门口了,你能不收吗,
Linux 中采用了两种不同的优先级范围,一种是 nice 值,一种是实时优先级。在上一篇粗略的说了一下 nice 值和实时优先级,仍有不少疑问,本文来详细说明一下进程优先级。linux 内核版本为 linux 2.6.34 。
实时系统要求对事件的响应时间不能超过规定的期限,响应时间是指从某个事件发生到负责处理这个事件的进程处理完成的时间间隔,最大响应时间应该是确定的、可以预测的。
本篇文章主要讲解嵌入式板卡中Linux系统是如何正确测试、使用的,其中内容包含有U-Boot编译、U-Boot命令和环境变量说明、Linux内核编译、xtra驱动编译、系统信息查询、程序开机自启动说明、NFS使用说明、TFTP使用说明、TFTP + NFS的系统启动测试说明、inux设备驱动说明等,其中案例源码部分公开。
Linux进程的调度优先级数字会在好几个地方出现:内核,用户,top命令。他们各自都有自己的表示法。
实时分为硬实时和软实时,硬实时要求绝对保证响应时间不超过期限,如果超过期限,会造成灾难性的后果,例如汽车在发生碰撞事故时必须快速展开安全气囊;软实时只需尽力使响应时间不超过期限,如果偶尔超过期限,不会造成灾难性的后果.
1.PREEMPT-RT:PREEMPT-RT是一个基于Linux内核的实时补丁,也被称为Real-Time(RT)补丁。它通过增加内核的可抢占性,使得Linux内核能够实现实时性能。PREEMPT-RT补丁提供了可配置的实时选项,可以根据应用程序的需求进行调整。这个版本跟内核的版本匹配很细致,几乎每一个内核的小版本都有配套的补丁。
本文将为各位工程师演示全志T507-H工业评估板(TLT507-EVM)基于IgH EtherCAT控制伺服电机方法,生动说明Linux-RT + Igh EtherCAT的强大之处!
Linux 基金会编辑总监 Jason Perlow(JP)采访了 Linux 基金会研究员、Linutronix GmbH 首席技术官、PREEMPT_RT[1]实时内核补丁集项目负责人 Thomas Gleixner(TG)。
实时优先级范围是0到MAX_RT_PRIO-1(即99),而普通进程的静态优先级范围是从MAX_RT_PRIO到MAX_PRIO-1(即100到139)。值越大静态优先级越低。
领取专属 10元无门槛券
手把手带您无忧上云