物联网操作系统HelloX V1.79发布公告
经过HelloX开发团队近半年的努力,在HelloX V1.78版本基础上,增加许多功能特性,并对V1.78版本的一些特性进行了进一步优化之后,正式形成HelloX V1.79测试版本。经相对充分的测试和验证之后,现正式发布。相关代码,已全部上载到github上(github.com/hellox-project/HelloX_OS),欢迎对HelloX感兴趣的朋友下载测试和试用,并进一步反馈问题。
除继续保持V1.78所有特性之外,V1.79版本主要对下列特性进行了支持或优化:
1. 支持完整的USB功能,包括对USB1.0/1.1(OHCI/UHCI)控制器的支持,对USB2.0(EHCI)控制器的支持,以及对USB3.0(xHCI)控制器的支持。同时,还支持符合HID规范的USB接口键盘和鼠标功能;
2. 成功移植到基于Intel ATOM芯片组的MinnowBoard MAX开发板上。这包括对板载USB控制器和外设的支持,以及对板载千兆以太网芯片Realtek 8111的良好支持;
3. 网络功能进一步增强。在TCP/IP协议栈和网卡驱动程序之间,插入了一个网络管理器的内核组件。在此组件基础上,系统可以同时支持多个网卡,以及多个网络层协议栈(比如同时支持IPv4协议栈和IPv6协议栈)。同时,可以通过扩展,方便的支持其它通信协议;
4. 软硬件兼容性有了进一步改进。在硬件上,增加了对ARM,MIPS等RISC架构CPU的支持机制,增强了对PCI总线,CACHE,对齐等硬件特性的兼容和支持。在软件开发环境上,所有内核代码成功移植到基于Linux+GCC的编译开发环境;
5. 以可加载模块形式,实现了对物联网管理平台的动态支持。开发者可以根据需要,实时在线更新物联网后台代码。基于这一套机制,完整实现了与中国移动OneNET物联网平台的对接和集成;
6. 内核机制得到进一步增强和完善。内存分配算法效率更高,增加了内存对齐分配功能。实现了线程堆栈异常检测,高频异常中断扼杀,线程消息队列监视等保证内核安全和可靠的特性。同时内核启动时间大大提升,可在10ms级别内完成内核加载和初始化。
开发团队中的Mr. Tywind Huang充分发挥其高超的编程技术和丰富的经验,主导完成了MinnowBoard MAX开发板的移植,Realtek8111网络驱动的开发,物联网平台集成开发等工作,以及其它一些测试或优化工作,在整个HelloXV1.79版本的开发中做出了重大贡献。在MrGaojie的持续努力下,内核代码成功迁移到Linux+GCC的编译开发环境。Mr. Erwin Wang则在GUI模块代码的规范化(C++修改为C),USB功能的诊断测试等方面,做出了大量工作。Mr Blade Luo基于HelloX的网络框架,移植了BSD IP协议栈,为高性能网络支持奠定了基础。同时,开发团队中的Mr Haojie和Mr Wangyu,在编码规范,内核优化等方面,给出了卓有成效的支持。HelloX讨论群组中的很多朋友,都对最新的版本进行了实际测试和试用,给出了很多改进优化建议,在此统一表示感谢。
在HelloX开发过程中,我们始终坚持“稳定可靠,不留问题死角”为原则,所有代码都经过了详细深入的内部测试,并在实际网络环境中经受了大量考验。现举几个典型的例子:
1. 为了对HelloX USB功能进行测试,我们反复采用USB盘引导,并进行持续的读写操作,曾经进行过连续三天的USB读写,没有出现任何异常。在这个过程中,我们用坏了四五块USB盘。为了测试对USB输入设备的支持,我们对一个USB鼠标进行了物理上的破坏,使得它可以以最高频率自动连续的进行输入。我们把它接到运行HelloX的笔记本电脑上,运行了48个小时,无任何异常;
2. 所有的矛盾和问题,都出现在资源紧张的情况下。这在Realtek 8111网卡驱动的开发过程中,表现得尤其明显。最开始的时候,网络功能单独开发,没有与USB功能集成在一起。这时一切正常。但当把网卡驱动和USB功能集成到一起的时候,问题出现了。最开始的问题是,一旦接入到网络(一个实际的企业网络),MinnowBoard MAX单板就无法完成启动,停在USB初始化过程中。我们几乎查看了所有的代码,包括网络代码,USB代码,内核调度程序,内存分配,等等,都没有发现问题。后来,在Realtek 8111网卡驱动的中断处理程序中,增加了一行输出代码,发现了问题。原来中断处理程序漏了一个条件判断,这个条件在网卡的接收缓冲区溢出时会引发。因USB初始化较慢(要扫描USB设备),同时优先级很高,导致网卡接收的报文不能被系统及时处理。这时候一旦接入一个真正的网络,大量的广播等报文,会迅速占满网卡缓冲区,进而引发缓冲区溢出中断。由于中断程序中没有清除该中断,导致中断循环引发,使得系统一直处于中断程序执行中,便产生了停止响应的现象。通过增加一个接收缓冲队列,该问题得到解决。同时基于该经验而增加的“高频中断扼杀”功能,也会对类似问题进行防范;
3. 另外一个实际问题,也是与网络相关。通过增加接收缓冲队列对接收的网络报文进行排队,在合适的时机,系统会处理该队列。但最开始的时候,缓冲队列并没有限制长度,每当网卡接收到一个报文,就会申请一片内存,把数据拷贝到内存中,并排到缓冲队列中。大多数情况下,这是没有问题的。但是在实际测试中,系统还是有偶尔无法启动的情况,甚至初始化时出现崩溃。从错误输出看,是由于内核内存耗尽引起。经深入分析,问题被发现。具体过程是,我们接入的网络,是一个庞大的企业广播网络,流量非常大。而USB初始化比较慢,一旦网络流量太大,会导致大量报文排队,进而导致内核内存耗尽,从而导致内核无法正常工作。基于此,我们限制了网络接收队列的长度,一旦超出一个固定的长度,则新进入的报文就会被丢弃。该机制有效解决问题。
虽然这些问题及解决办法,看起来很细小,但正是这些细节上的完善和优化,使得系统趋向稳定和成熟。在操作系统开发中,也是“细节决定一切”。同时,在定位和处理这些问题时,整个内核的代码,都会被重新审视和检查,这对内核来说,也是一种进一步的确认。虽然这些问题的原因很简单,但其定位过程却是痛苦和繁杂的,很多时候,需要把内核代码翻来覆去好几遍。相信处理过bug或问题的朋友深有体会。
作为物联网操作系统,HelloX将始终聚焦物联网领域的应用,为物联网量身定制一套最优的系统软件解决方案。我们认为,只有一个内核的支撑,是远远不够的。物联网和智能硬件的有效发展和壮大,需要更多技术的支持,比如人工智能,分布式计算,机器学习,等等。但一个稳定可靠和可扩展的物联网操作系统,是这些技术的最好生存土壤。后续我们在进一步完善内核的同时,将在这些领域进行探索和研究,并依托HelloX进行落地实现,真正构筑一套支撑未来网络的软件数字神经。
2015年已经过去,新的一年已经来临。整个物联网产业依然处于培育发展阶段,但前景逐渐明朗。我们的物联网操作系统项目,也越来越壮大和稳定。我们遵循“稳中有进,同步发展”的策略,与整个物联网产业的发展保持步调一致。借用***主席2016新年贺辞中的话,与朋友们共勉:“只要有付出,总会有收获。只要坚持,梦想一定会实现!”。希望在新的一年里,我们共同努力,一起坚持,最终实现民族基础软件腾飞的梦想。
HelloX物联网操作系统开源社区正在筹建,并取得了一些社会团体和企业的支持,欢迎有志于物联网和系统软件开发的人士加入。具体的细节,欢迎加入QQ群讨论:38467832
QQ/微信:89007638
对HelloX和物联网操作系统的进一步信息,请关注blog:blog.csdn.net/hellochina15
物联网操作系统HelloX V1.79发布公告的更多相关文章
- 物联网操作系统HelloX V1.77(beta)版本发布
物联网操作系统HelloX V1.77发布 经过近半年的努力,物联网操作系统HelloX V1.77版本正式完成,源代码已上载到github(github.com/hellox-project/Hel ...
- 物联网操作系统HelloX V1.80测试版发布
经过HelloX开发团队近半年的努力,在HelloXV1.79版本基础上,增加许多功能特性,并对V1.79版本的一些特性进行了进一步优化之后,正式形成HelloX V1.80测试版本.经相对充分的测试 ...
- 物联网操作系统HelloX V1.78测试版正式发布
经过HelloX开发团队近四个月的努力,在HelloX V1.77版本基础上,增加许多功能特性,并对V1.77版本的一些特性进行了进一步优化之后,正式形成HelloX V1.78测试版本,经相对充分的 ...
- 基于物联网操作系统HelloX的智慧家庭体系架构
基于物联网操作系统HelloX的智慧家庭体系架构 智慧家庭是物联网的一个分支应用,是一个被广泛认同的巨大IT市场空间.目前市场上已经有很多针对智慧家庭的产品或解决方案,但与移动互联网不同,智慧家庭至今 ...
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
- 物联网操作系统HelloX开发者入门指南
HelloX开发者入门指南 HelloX是聚焦于物联网领域的操作系统开发项目,可以通过百度搜索"HelloX",获取详细信息.当前开发团队正在进一步招募中,欢迎您的了解和加入.如果 ...
- 物联网操作系统HelloX开发人员入门指南
HelloX开发人员入门指南 HelloX是聚焦于物联网领域的操作系统开发项目,能够通过百度搜索"HelloX".获取具体信息. 当前开发团队正在进一步招募中,欢迎您的了解和添加. ...
- 物联网操作系统HelloX应用编程指南
HelloX操作系统应用编程指南 HelloX应用开发概述 可以通过三种方式,在HelloX操作系统基础上开发应用: 1. 以内部命令方式实现应用,直接编译链接到HelloX的内核she ...
- 基于.Net Core开发的物联网平台 IoTSharp V1.5 发布
很高兴的宣布新版本的发布, 这次更新我们带来了大量新特性, 最值得关注的是, 我们逐步开始支持分布式, 这意味着你可以通过多台服务器共同处理数据, 而不是原来的单机处理, 我们也将遥测数据进行分开存储 ...
随机推荐
- POJ 2182
#include <iostream> #define MAXN 8005 using namespace std; int _m[MAXN]; int main() { //freope ...
- uva 12589 - Learning Vector
思路: 容易知道加向量的顺序是按向量斜率的大小顺序来的.由于数据不是很大,可以用背包解决!! dp[i][j]:加入最大面积为i时,加入了j个向量. 代码如下: #include<iostrea ...
- C#中的 序列化和反序列化
什么是序列化和反序列化? 序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用. 我想最主要的作用有: 1.在进程下次启动时读取上次保存的对象的 ...
- 传说中的WCF(2):服务协定的那些事儿
上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于 ...
- C++函数默认参数
C++中允许为函数提供默认参数,又名缺省参数. 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一 double sqrt(double f ...
- 天使投资、VC 以及 PE 的区别是什么?
如果满足于“阶段不同”这个简单的回答,那你可能错过了一个思考资本与企业发展之间关系的机会. 首先要交待一下,在大众语境中,angel/VC/PE三者都可认为是VC,也就是人们常说的风险投资,在国内官方 ...
- 什么是边界扫描(boundary scan)?
边界扫描(Boundary scan )是一项测试技术,是在传统的在线测试不在适应大规模,高集成电路测试的情况下而提出的,就是在IC设计的过程中在IC的内部逻辑和每个器件引脚间放置移位寄存器(shif ...
- x11vnc
http://cisight.com/how-to-setup-vnc-server-remote-desktop-in-ubuntu-11-10-oneiric/ Install VNC serve ...
- Delphi对象变成Windows控件的前世今生(关键是设置句柄和回调函数)goodx
----------------------------------------------------------------------第一步,准备工作:预定义一个全局Win控件变量,以及一个精简 ...
- 浅析c语言中的变量(局部变量,外部变量,静态变量,寄存器变量)[转]
c语言中变量分为四类,分别是 1.auto 自动变量 2.static 静态存贮分配变量(又分为内部静态和外部静态) 3.extern 全程变量(用于外部变量说明) 4.register ...