RT-Thread发布最新的2.1.0 beta版本

2015-10-17 15:33 [复制链接] 6 4510

2015年快要到年底了,今年半导体企业出了很多的事情,做为运行在芯片上的嵌入式实时操作系统RT-Thread,希望国内芯片厂家多多发力。而RT-Thread也会大力支持国内(32位)芯片厂家,让BSP分支列表里出现越来越多的国内芯片。这次发布的这个版本应该是年底RT-Thread v2.1.0正式版前的最后一个版本了,这个版本相对上一个版本更多的是一些bug修正,然后就是更多的分支移植支持。/ F: Y, Q% U: \3 d- ^7 p  w
* G1 h$ k2 D3 D) \( i2 l: J" d

1 ]* E) i) r7 @7 ^6 ]
: n& U4 r& V5 B  _  N4 r3 r3 jv2.1.0分支情况
( K+ E5 |1 Y4 o- I" B& Z( |
, {# S* E. X0 ^* o2 i4 xv2.1.0 beta这个版本加入了对龙芯1C300处理器的支持,而使用龙芯1C300处理器的智龙v2开发板分支主要由南京chinesebear来负责,包括了多个串口的支持等。后续还会在智龙v2开发板上与开源龙芯进行多项合作,包括硬件驱动、内核优化、功能扩展等功能,希望能够成为龙芯处理器平台上的专用安全、硬实时操作系统版本。
7 q# g/ y4 V: Y) B7 f! b9 h: H% ]! O' t6 O  C0 H. p1 j/ n
" u9 b. _4 w2 g3 _- i
9 N, Q# @; y; X, K
另外一份新加的移植是针对新的ARM Cortex-M7芯片(stm32f7-disco)移植。这份移植最初由小农提交,后经过Arda和bernard的整理而成。在Cortex-M7上确实出现了一些和M3/4不一样的东西,例如cache相关的操作。因为cache的存在,它既带来了外存极大的性能提升,也带来了一些特殊操作(例如DMA)上需要对cache额外注意以避免数据一致性的问题。由于ST官方开发板stm32f7-disco功能比较齐全(SDRAM、RJ45以太网、TF卡、4.3寸液晶电容触摸屏、音频等),并且价格也还不错,所以后续在stm32分支上,可能主要会侧重到stm32f7-disco硬件平台上。在这份平台上,会把开发板上相关的硬件驱动配置完全,所以如果您有stm32f7-disco,可以一起来开发这个平台!6 n7 V1 E! W# G$ x* K; }
/ g+ N5 ^1 B  {8 f' n
和MPU(微处理器)相关的,还有由weety贡献的dm365移植。同时也可以预披露下后续会有一份针对网络摄像头芯片方案的移植(应该还是v2.1.0这个分支)出现。这份分支也用到了POSIX相关的接口(例如pthread),POSIX兼容接口又一次体现出了它的作用,为移植一些原来和Linux程序有一定关系的程序移植提供了便利性。不管是龙芯1C,stm32f7-disco还是dm365,以及后续的网络摄像头分支,都是微处理器方面的体现。它们都不再仅仅是一个微控制器,而是在当前SoC大背景下,性能、资源、成本的体现,摩尔定律依然在半导体领域发挥着指挥棒的作用!' N9 ?3 N1 N% r3 a+ x5 O
, O+ e9 Y. Y# M' o( F* h% x* X2 h9 s
版本的具体更新情况可以参见github上的更改记录文件。因为这次也修正了几个比较重要的bug,所以这次也发布了RT-Thread 1.2.5升级版(有关于DFS文件操作出错时的fd处理bug;mkdir/lseek出错时的fd处理bug;以及lwIP移植中的的保护问题)和2.0.2升级版。如果您还在使用RT-Thread 1.2.x系列版本,请记得升级。
/ F) t3 O* h* a8 C- b5 x* A
% G! g- _3 P" N& G3 d. ]随着时间推移到下半年,今年的2.1.0开发分支也将逐渐收尾,按照这个分支预先设立的roadmap情况,依然还有如下的特性未完成:0 X8 k& @5 \4 W  `7 `( ^- G
      v1 i0 Z' ]' T" g) W
    更全的POSIX兼容接口支持。当前beta版本主要解决的是read/write操作不能够用于BSD socket的问题。当然除了这个之外也有一部分接口不能兼容,例如没有POSIX signal接口。signal这个接口可能会是一个比较犯难的问题,这个依赖于要在RT-Thread线程管理基础上进行安全的实现。而system接口,目前已经支持了(虽然RT-Thread是一款线性地址空间的实时操作系统,但它确实支持了这类似执行外部应用的API接口:-) )。[/*:m]
    ( B" F1 ~+ O5 y 完善的select接口。目前select接口还仅局限于BSD socket接口,如果要让select也去对设备文件描述符进行操作,它就抓瞎了。所以后续的完善点也主要是针对设备文件描述符进行支持和完善。[/*:m]
    & f  _: S7 I1 L" R) Z. J 完善的termios、stdin功能接口。让命令行操作终端能够和一个标准的TTY更兼容(不是社区小伙伴也移植了vi编辑器么!)。[/*:m][/list:u]
    0 R' a8 g3 G. S2 k( [5 Y' D/ S7 }0 `: x
    因为这些POSIX兼容接口的关系,可能部分功能特性会和编译器相关了,例如:如果您需要更多的POSIX特性,那么请使用GNU GCC编译及其内置的newlib C库。如果是armcc、iar编译器,大约可以保留一份基本的POSIX特性(例如pthread、文件系统接口以及BSD socket接口等)。通过类似的方向调整,当使用GNU GCC编译时,RT-Thread也许可能成为MPU(微处理器)上需要RTOS时的最佳开源嵌入式实时操作系统之一!当然明年依然还会在这个POSIX方向上继续走得更深入些:如何在降低资源占用率上,也能够有比较齐全的POSIX特性等。我们还会力求RT-Thread操持着小巧,启动速度快等的优点。# q8 T0 z: e6 a! o

    5 {: \" U: t. F0 n2 c, ?! z$ Z  e双核双系统
    : n: Q3 J  i4 `8 s+ R' T  Q9 P  ~
    # e7 p3 X, ]7 |: ^+ s% |双核双系统是一个令人感兴趣的方向,所以今年6月份在深圳的嵌入式沙龙上围绕着双系统做了一个《Gemini》的主题介绍。目前放出来的Gemini更多说的是SoC的双核或多核,两者通过共享内存、VBUS组件的方式进行通信。如果更泛泛些,其实也可以是板载的分离多芯片系统,例如ARM Cortex-A8 + Cortex-M3/4 MCU等。这个时候多片系统可以通过SPI、USB、双口RAM等方式连接起来进行双方的通信、交互。
    ( X: T6 Y5 p7 A& h# H7 ]! ~
    % r2 q* t! T, C; S1 p" D8 f在这个过程中,wrtnode团队也恰好有这样的多芯片创客开发板,在经过双方团队接触后,wrtnode确定在MCU上运行一份RT-Thread,然后另外一颗CPU芯片运行着linux openwrt系统,双方通过SPI的方式连接起来。wrtnode团队已经在这样的架构上进行了部分的开发:stm32 @ wrtnode2r 希望这份wrtnode2r能够尽快面世!
    3 \7 Z# a7 u7 r- g/ P/ u8 C/ _% I! e$ ~( |! z( {1 W. t
    明年的方向# B; o) S( h1 u$ |2 n3 q5 l

    + @1 n+ p4 L. Y/ @7 Q随着今年快结束,在抓紧完成今年预定目标的情况下,也在考虑着明年的方向。. }2 V0 U# J& @& m9 E
    & U" M* v% `- s1 l) d2 x" T8 q3 c
    物联网; r5 g; P) u: v

    ! f6 J7 {' }$ V! Y1 P物联网将是今后的重要方向,在未来,到2020年,预计将有数十亿,甚至上百亿的设备上线,设备不再是单纯的设备,而是一个个网络化设备。单纯的设备只能完成孤立的简单工作,联网的设备则能够产生无数的数据,并让人、物连接起来进行互动。类似百度IoT战略说的:连接是基础,智能是关键,数据是价值!
      n8 z, v9 Y" H6 l* @/ A9 q; E- O/ h" K, ^1 E. h" Z- t
    毫无疑问,物联网方向将是明年的重点方向,不管是基于目前的MPU架构还是MCU架构,RT-Thread都将能够提供快速启动,多连接支持方式,智能交互、语音交互、图像交互的基础系统软件平台。& c' b; s5 ?- U  n* _$ E% y) |
    3 k- y- Q9 N  v6 h5 F
    门槛
    , S9 ?# J1 }% R5 h' s5 m- z, Q
      I, ?1 v9 ~- e, W1 z4 Y' q, d门槛这个词依然需要反复提及到,今年原计划push更多的网络端辅助工具,不过还是不给力!这个必然得是再加强才是。今年下半年主要做的是对原有rt-thread.org网站的一次大幅改版,把老旧的网站替换成蝉知,新的网站风格。同时针对初学者的《玩转嵌入式多任务程序设计》书籍也在推进过程中,希望纸质书籍能够在明年通过出版社正式面世。
    , U  g3 }% c5 ?+ I+ i* C7 `% o4 p- U! a+ P  Y2 ?8 O- ~6 b! ?& Q: F

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2015-10-17 15:34:47 | 显示全部楼层

RT-Thread发布最新的2.1.0 beta版本

下载链接:. R3 S% Q& t  O+ E) }5 g
http://pan.baidu.com/s/1gdIaAQ3
使用道具 举报 回复
发表于 2015-10-18 13:26:54 | 显示全部楼层

RT-Thread发布最新的2.1.0 beta版本

只想说,能看到STM32F7的支持,真是感觉很开心,实验室新到了两块这样的开发板板,虽然项目紧张还没有时间去玩。但接下来的闲暇终于有玩的方向了。
  e5 M2 s6 z0 t) r- b5 z5 J
$ x# Z$ F9 C: h9 ~* M' x; e# E支持你们!
使用道具 举报 回复
发表于 2015-10-21 08:20:43 | 显示全部楼层

RT-Thread发布最新的2.1.0 beta版本

看到有STM32F7的支持,真是非常高兴,手里有一块F7-Discovery的板子。迅速下载了百度云盘上的压缩包,打开发现这个F7的Bsp部分好像没有完成哦, main() 函数里面,只有一行 return 0。  这个是否是打包时忽略了? 谢谢!
使用道具 举报 回复
发表于 2015-10-21 08:29:27 | 显示全部楼层

RT-Thread发布最新的2.1.0 beta版本

main函数是添加你自己的功能,默认当然也就return 0了
使用道具 举报 回复
发表于 2015-10-22 08:21:49 | 显示全部楼层

RT-Thread发布最新的2.1.0 beta版本

自己来结贴吧。原来是没有看到这里, 引述MDK5的Help中的文档,摘录如下:; w# l. h3 ]2 E5 n
Use of $Super$$ and $Sub$$ to patch symbol definitions
  T: ^8 r4 R) j8 j# x% C3 bNon-Confidential   ARM DUI0377E
3 V$ s$ q2 l7 z. @! F5 VARM? Compiler v5.04 for ?Vision armlink User Guide  Version 5
- V3 `5 X$ d, D
1 s$ v! q* V$ K# X1 c2 F) j' hHome > Accessing and Managing Symbols with armlink > Use of $Super$$ and $Sub$$ to patch symbol definitions
9 C2 B4 L5 w& ^' M1 y4 C! y- l/ V, y3 }
6.24 Use of $Super$$ and $Sub$$ to patch symbol definitions
% B" D% B( {% a" ~0 T- P7 cThere are special patterns you can use for situations where an existing symbol cannot be modified.4 S# g) z% b3 p- v- C! A( P: x
* _- A. b! _! @- @! \2 E7 b0 s
An existing symbol cannot be modified, for example, if it is located in an external library or in ROM code. In such cases you can use the $Super$$ and $Sub$$ patterns to patch an existing symbol.
  a$ I, B4 H, h" y! H6 FExamples
9 d1 Z# v7 t: J9 ~, x+ {% gTo patch the definition of the function foo():; ]) V1 {3 z# \2 F
$Super$$foo
2 P% M2 A2 L+ ~; O1 Y1 W# eIdentifies the original unpatched function foo(). Use this to call the original function directly.
; g  @: O: a7 ]; s$Sub$$foo
: a: L- G; l! DIdentifies the new function that is called instead of the original function foo(). Use this to add processing before or after the original function.* `& @' U# g, a5 q
Note3 Y/ q+ i; J+ U( I
The $Sub$$ and $Super$$ mechanism only works at static link time, $Super$$ references cannot be imported or exported into the dynamic symbol table.* j$ |- n+ S" @9 V( }) l2 t
The following example shows how to insert a call to the function ExtraFunc() before the call to the legacy function foo().. |" I; P8 o2 `$ h
Using $Super$$ and $Sub$$
  1. extern void ExtraFunc(void);
  2. extern void $Super$$foo(void):
  3. /* this function is called instead of the original foo() */
  4. void $Sub$$foo(void)
  5. {
  6.   ExtraFunc();    /* does some extra setup work */
  7.   $Super$$foo();  /* calls the original foo() function */
  8.                   /* To avoid calling the original foo() function
  9.                    * omit the $Super$$foo(); function call.
  10.                    */
  11. }
复制代码
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表