RT-Thread创始人熊谱翔: 我和Linux、嵌入式实时操作系统RT-Thread

2023-05-16

本文转载至:http://www.rt-thread.org/dynamic/78.html


接触Linux

说起Linux应该从我在校园时期说起。我是在山城——重庆邮电学院念的书,1998年时宿舍伙伴一起凑的钱买的电脑,因为对各种软件感兴趣,所以也装了各种操作系统,DOSWindowsLinuxFreeBSD等都装过,当时觉得能够在Dos/Windows之外接触到一种全新的操作系统非常兴奋,特别是(带源码的)软件还这么多,记得最初接触的是SlackwareLinux,并且是在电脑城卖光盘的地方翻出来的。


重庆邮电学院是邮电类院校,所以很早的就有了校内电话,然后还在校内开通了几个公开上网电话,经由学校的Internet出口,记得当时总出口只有128kbps,而当时我还自己购买了一个36.6kbps的小猫用来上网。因为上网的电话号码就这么几个,所以开通后不久就演变成大家去抢号上网,我记忆中最深的就是用Linux去拨号上网,因为它有自动重播的功能,所以一般总能够抢到:-)


当然因为要在Linux下上网的缘故,我也加入了Linux早期的中文化道路,中文显示,中文输入等。当然随之而来的驱动问题很困扰,网卡如何驱动,显卡/声卡如何驱动。也是KDE桌面环境最早的一批玩家,当KDE1.0(还是beta版本?)发布时,从国外先弄个什么远程上传工具把KDE软件包传回国内,然后再把它拖到教育网来,那个时候这些(特别是国外)数据流量可是硬生生的钱啊!穷学生都把钱拿去上网了……

初创RT-Thread

毕业后我的工作也基本上是和设备打交道,从最初在上海贝尔阿尔卡特时的VxWorks,到后来的NucleusPlus/ThreadX,可以说基本处于嵌入式设备及实时操作系统环境中,当然在这个过程中依然关注着Linux,关注着开源的发展。


后来因为朋友项目的缘故,于2005年时动了自己写一个嵌入式实时操作系统的念头。为什么自己写?当时的实时系统情况是:

商业的VxWorks,价格昂贵,个人使用可能性太低;

开源的ecosrtems等。但这类开源操作系统对编译器依赖性太强,导致想使用硬件仿真器太麻烦了。另外ecosC++代码对编译器会更挑;rtems其实是一套相对庞大的系统,对于小资源的芯片(例如微控制器类芯片)资源占有太过厉害。

半开源的商业性ucos-ii操作系统;ucos-ii在国内用得非常多,功能简单基本上可以认为是一个实时核心。因为我习惯于Linux/Unix的代码风格,所以对ucos-ii的代码风格极为强烈的不习惯,所以完全可以说,如果不是因为个人更喜欢Linux/Unix代码风格的习惯,或许就不会有RT-Thread诞生了。


RT-Thread最初的目标是一个开放、开源的嵌入式实时操作系统:

简单,小巧;

觉得这句话说得非常好:Simplethings should be simple, complex things should be possible. RT-Thread中,如果能够以一个简单的方式来实现绝不把它弄复杂了;相应的,RT-Thread的一些组件也按照这样的方式实现,并不是耦合在一起。当一个个简单的组件组合在一起时,能够实现复杂的功能:小,可以适配一些资源有限的芯片,大,可以满足一定的功能性需求。

开放,社区化的系统;

RT-Thread首先是一个面向开发者的系统,它是以社区化方式进行推动、发展演化。同样的,能够把开发者们认为适合的,方便的,优秀的东西放在里面,让开发者们用得顺手!因为这个也在开发者中留下不错的口碑。

再续Linux的梦想

Linux是一个伟大的操作系统,很多地方都充满着魅力,工作以来也一直遗憾没有更多的机会接触到LinuxKernel。在Marvell的时光则是做基带处理器的系统软件平台。现代手机芯片多是基带处理器+应用处理器的架构,在应用处理器中跑着Linux/Android,并提供完备的支撑;而基带处理器则运行着实时操作系统。


这类主要从几个方面考虑:

1. Linux的实时性并不好,包括打上实时补丁的Linux同样如此,顶多只能称为软实时,并且实时指标也非常不理想。

2. Linux的功耗并不容易控制,应用处理器的功耗同样也比较高。


当然Linux也带来了很多的优点,例如很好的生态环境,完善的功能等。


由于企业方面的需求,同时包括我们也有想法尝试下这个方向(希望能够更多的接触到一些LinuxKernel),所以我们最终也在RTOS+ Linux的方向上进行了大量的深度挖掘,并最终得以用于实际产品中。


1. 单核双系统;

最初的考虑是以单核双系统的方式进行,并以QEMU能够模拟执行的ARMCortex-A8做为最初的平台进行汇编级,指令级的调试。


由于实时性是主要考虑的方面,所以类似于在单核上是让RT-Thread来主管整个系统,中断也完全由RT-Thread来进行接管,而Linux下类似于看到的是虚拟的中断系统(当然它最终也会反映到实际的中断控制器上)。整体架构上来说,是把Linux这个OS整体做为一个低优先级的任务放在RT-Thread的实时调度环境中执行起来,两个操作系统间的资源(内存,外设驱动等)隔离访问。当需要进行两个操作系统的数据交互时,通过一套我们自行实现的双系统间通信进制VBUS来进行。

2. 双核双系统;

单核双系统相对来说,对Linux Kernel的修改还是比较大(又有说,相对Linux实时补丁,Xenomai等实现,这些修改不过九牛一毛),特别是在中断处理上。这种方式也估计就是Linux实时补丁的麻烦之处吧,维护性会很成问题。当单核双系统实现之后,实际上双核双系统也就水到渠成了,当然这个的核心所在则是双系统间通信的VBUS机制。


双核双系统是在双核或多核上同时运行两个操作系统,相互之间运行相对独立,把一个双核的芯片独立的拆分成两个单独的芯片来使用。这种方式对LinuxKernel来说几乎无修改,例如Zynq上的SMP双核Cortex-A9,在上面执行RT-Thread/Linux只需要加入一个Linux Kernel Module即可,而完全不需要修改LinuxKernel代码。

不管是单核双系统还是双核双系统,其中的VBUS是共用的,VBUS被实现成一个数据包复用通信系统,让不同的系统服务能够在上面进行通信、沟通,同时VBUS上也实现了QoS的机制,让高优先级的数据能够先行送达到对端。这样在VBUS之上可以搭建起RT-ThreadLinux间的桥梁,例如分布式的文件系统,虚拟网络驱动等。

再泛一些,通过VBUS也能够实现类似板载CPU+ MCU的分离式多系统结构。这类异系统架构方式,为实时控制提供了一种简洁的解决方案,由Linux处理富功能性,RT-Thread处理实时控制部分。而依据不同的芯片情况,实时控制部分可以保持在1us– 10us的实时抖动范围内。这种方式依然遵循着我们最初的目标:简单,高维护性的目标!

RT-Thread未来的思考

RT-Thread经过近10年的发展,它已经演变成了一套成熟的内核系统、系统软件平台,被一些企业所接受,其中不乏一些大公司,被用于多种产品并经过大量产品出货量验证。有的时候也感叹,无心插柳柳成荫,希望RT-Thread能够在以后的历史长河中留下一笔。


未来,RT-Thread依然会按现有的步伐,以社区方式发展,以每年一个大版本的方式往前推进,同时每个季度追加补丁小版本的方式进行发布。而VBUS也希望有机会能够进入到Linux Kernel Upstream中,让LinuxRT-Thread能够更融洽的相处,紧密合作。


物联网,智能设备是目前及未来的发展方向,摩尔定律也会在这类芯片上发挥作用。如百度IoT战略说的:“连接”是IoT的基础;“数据”是IoT的价值;“智能”是IoT的核心。RT-Thread会在物联网中以自身的特点,在资源有限的MCU/MPU环境中提供多连接性支持,提供智能化支持。今年(2015年)年末,RT-Thread的新版本也将提供更完备的POSIX兼容接口支持,让一些类Linux/Unix应用(特别是一些网络相关的开源软件)能够在轻型的,芯片资源要求更低的RT-Thread系统上执行起来。RT-Thread将会是物联网世界中Linux外的一个有益补充!


欢迎关注Linuxer —— Linux开发者的自媒体。我们的特点是:没有资金,没有稿费,没有回报!just for fun!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RT-Thread创始人熊谱翔: 我和Linux、嵌入式实时操作系统RT-Thread 的相关文章

随机推荐

  • 转贴:黑客高手必懂基础内容 (发在这里只为娱乐大家)

    转贴 xff1a 黑客高手必懂基础内容 发在这里只为娱乐大家 黑客高手必懂基础内容 一楼 xff1a DOS命令大全 二楼 xff1a TCP端口 作用 漏洞 操作详析 三楼 xff1a 开始 运行 命令 集锦 四楼 xff1a IPC 空
  • 大数据平台架构设计探究

    近年来 xff0c 随着IT技术与大数据 机器学习 算法方向的不断发展 xff0c 越来越多的企业都意识到了数据存在的价值 xff0c 将数据作为自身宝贵的资产进行管理 xff0c 利用大数据和机器学习能力去挖掘 识别 利用数据资产 如果缺
  • ros 解析激光点云的强度信息

  • 国外程序员整理的 C++ 资源大全

    转 xff1a http www csdn net article 2014 10 24 2822269 c 43 43 C 43 43 是在C语言的基础上开发的一种集面向对象编程 泛型编程和过程化编程于一体的编程语言 应用较为广泛 xff
  • Oracle、MySQL、SQL Server数据库的jdbc连接驱动配置

    Oracle MySQL SQL Server数据库的jdbc连接驱动配置 Oracle jdbc driver 61 oracle jdbc driver OracleDriver 或者 oracle jdbc OracleDriver
  • PID调参详解1

    PID调参详解1 xff08 比例环节 xff09 PID控制中有P I D三个参数 xff0c 只有明白这三个参数的含义和作用才能完成控制器PID参数调整 下面我们分别通过实例来分析比例微分积分三个环节对系统输出的影响 上式为PID控制器
  • NVIDIA NX刷机,配置深度学习环境

    买来的NVIDIA NX自带了一个sd卡和一个ssd卡 xff0c 刚开始按照sdkmanager去安装系统 xff0c 结果安装后发现装到了sd卡上 xff0c 后又根据视频教程在ssd上安装了系统 xff0c 最后配置了深度学习的环境
  • 串口调试助手VC源程序及详细编程过程

    串口调试助手VC源程序 及编程详细过程 作者 xff1a 龚建伟 可以任意转载 xff0c 注明作者和说明来自 龚建伟技术主页 目次 xff1a 1 建立项目 2 在项目中插入MSComm控件 3 利用ClassWizard定义CMSCom
  • linux 下 pytorch 安装

    我的显卡是gtx 730M 已经安装linux版本的驱动 xff0c 安装环境centos8 xff0c 内核版本Linux localhost localdomain 4 18 0 305 19 1 el8 4 x86 64 1 xff0
  • 章文嵩:怎样做开源才有意义?

    转至 xff1a http www infoq com cn interviews how to make open source meaningful utm campaign 61 infoq content amp utm sourc
  • seL4 构建和测试

    转载至 xff1a https source2014 hackpad com seL4 IJItb9IDncR 取得核心程式碼 預先設定好 Toolchain http sel4 systems Download DebianToolCha
  • [小技巧] ping 的时间间隔

    ping 可以选择间隔一段时间的间隔值 使用 i 命令 参考 xff1a 隔一秒钟ping一次 ping i 1 127 0 0 1 PING 127 0 0 1 127 0 0 1 56 84 bytes of data 64 bytes
  • [R语言] quantmod 包获取国内的股票数据

    2016 05 09追加 xff1a 对应的quantmod包相关说明参考 http www quantmod com quantmod 包默认是访问 yahoo finance 的数据 xff0c 其中包括上证和深证的股票数据 xff0c
  • 文件名日文乱码处理

    文件名出现日文乱码的话可以用如下命令解决 xff1a convmv r t utf 8 notest path to dir 另外 xff0c 压缩的 zip 解压时使用如下命令 xff1a unzip Ocp932 path to zip
  • can 总线介绍

    CAN xff0c 全称为 CONtroller Area Network xff0c 即控制器局域网 xff0c 是国际上应用最广泛的现场总线之一 最初 xff0c CAN被设计作为汽车环境中的微控制器通讯 xff0c 在车载各电子控制装
  • python 的 do ~ while 语法

    本文摘至 http ama ch hatenablog com entry 20080425 1209110237 Python不支持do while语法 while xff08 无限循环 xff09 和break组合起来替换 do whi
  • 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门研究

    本文转载至 xff1a http www cnblogs com littlehann p 3700357 html 目录 1 802 11标准简介 2 802 11协议格式 3 Wi Fi认证过程 4 802 11标准中的数据安全加密协议
  • Make 命令教程

    转载至 xff1a http www ruanyifeng com blog 2015 02 make html 作者 xff1a 阮一峰 日期 xff1a 2015年2月20日 代码变成可执行文件 xff0c 叫做编译 xff08 com
  • Python中用于计算对数的log()方法

    本文转载至 xff1a http www jb51 net article 66130 htm 这篇文章主要介绍了Python中用于计算对数的log 方法 是Python入门基础中的必会的方法 需要的朋友可以参考下 log 方法返回x的自然
  • RT-Thread创始人熊谱翔: 我和Linux、嵌入式实时操作系统RT-Thread

    本文转载至 xff1a http www rt thread org dynamic 78 html 接触 Linux 说起 Linux应该从我在校园时期说起 我是在山城 重庆邮电学院念的书 xff0c 1998年时宿舍伙伴一起凑的钱买的电