作为向ARM平台移植的基线版本,经过三个多月的努力,Hello China V1.76终于完成并发布。相对原来发布的V1.75版本,该版本主要做了如下修改:

彻底去掉了原来版本源代码中的C++特性,采用纯C语言实现

V1.75以前的版本,不论是内核还是GUI/网络等外围模块,都是采用C++语言编写的。虽然仅仅使用了诸如函数名重载/自定义对象类型等初级特性,但是在迁移到其它非VC开发环境的时候,发现还是困难重重。于是在V1.76版本的实现中,全部去掉了C++特性,完全采用纯C语言实现。

这样修改之后,顺利移植到MDK/GCC等开发环境上。由此也事实上证明,用C++语言实现操作系统的内核,还是有难度的。

增加了串口驱动程序及内置的基于串口的shell

原来版本虽然也具备串口通信功能,但串口驱动并未纳入Hello China的驱动程序框架。在V1.76内核的实现中,把串口作为基础的调试接口,为之编写了完整的驱动程序,并纳入统一的驱动程序框架。这样,一台运行Hello China的计算机,就无需有物理屏幕和键盘了,可以由另外一台计算机通过串口进行操作。比如,在我的老旧的DELL电脑上运行Hello China,在另一台上网本上运行超级终端,就可操作DELL计算机了。前提是,使用交叉串口线,把DELL计算机和上网本连接起来,同时设置串口波特率为9600,无奇偶校验,8位数据位,一个停止位,即最常用的串口默认设置。由于Hello China V1.76版尚未加入USB驱动程序,因此必须具备物理串口。

下图是运行Hello China V1.75的DELL笔记本,当然,如果有屏幕和键盘,也可直接通过计算机自己的键盘来操作Hello China。

下图是运行在另外一台笔记本电脑上的超级终端软件。绝大部分通过物理键盘和显示器能够完成的操作,通过超级终端都能完成。一些超级终端无法支持的按键输入,比如“CTRL + ALT + DELETE”,就无法处理了。

统一了设备访问接口

应用程序可通过访问文件的接口,来访问任何驱动程序。比如,用户可以采用下列代码来直接访问串口设备:

#defineTARGET_FILE_NAME “\\\\.\\COM1”

hCom1 = IOManager.CreateFile(

(__COMMON_OBJECT*)&IOManager,

TARGET_FILE_NAME,

0,

0,

NULL);

if(NULL== hCom1)

{

PrintLine("ComDebug: Can not open COM1 interface.");

goto__TERMINAL;

}

else

{

PrintLine("ComDebug:Open COM1 interface successfully.");

if(IOManager.WriteFile((__COMMON_OBJECT*)&IOManager,

hCom1,

strlen(pData),

pData,

&dwWriteSize))

{

PrintLine("Writedata to COM1 interface successfully.");

}

else

{

PrintLine("Cannot write data to COM1 interface.");

}

PrintLine("ComDebug:Try to read data from COM interface...");

if(!IOManager.ReadFile((__COMMON_OBJECT*)&IOManager,

hCom1,

1,

(LPVOID)&buff[0],

NULL))

{

PrintLine("Cannot read COM interface.");

}

else

{

PrintLine("ReadCOM interface sucessfully.");

}

}

访问串口的代码与访问普通文件的代码一样。只要把上述代码中的文件名,修改为一个普通文件,上述代码就完成了普通文件的读写功能。

定义了统一的消息输入框架

不论是键盘输入,还是通过串口的输入,甚至是其它具备主动输入能力的输入,都被统一处理,遵循统一的消息传递路径,把消息传递给应用程序或shell。这样的好处是,不论我的操作方式是什么,是串口也好,是键盘和鼠标也好,甚至是基于网络的telnet,应用程序统统不用关心,只要统一调用GetMessage来处理消息队列中的消息即可。这样就最大程度的保证了应用程序的可移植性。

其他一些改进

除此之外,还做了一些其它的修改和改进,比如代码的规范性,注释,修改了几个导致内存泄漏的地方,进一步优化了程序框架,使得整个内核可配置可裁剪,等等。

V1.76版已成功移植到MDK编译开发环境,顺利通过编译链接。但由于目标硬件尚未定义好,故尚未完成移植。接下来的工作将分两步进行(同步):

第一步:增加GPRS/3G等无线网络支持功能和Zigbee通信功能,基于PC构筑一个智能家居控制系统;

第二步:启动向STM32平台上的移植。

V1.76版的内核源代码(其他模块,比如GUI等,无变化),可从下列链接下载:

http://download.csdn.net/detail/hellochina15/6399069

转载于:https://www.cnblogs.com/fengju/p/6174206.html

物联网操作系统Hello China V1.76(PC串口版)版本发布相关推荐

  1. CSDN论坛学习工具(CSDN Study v1.0.0.2版)发布

    CSDN论坛学习工具(CSDN Study v1.0.0.2版)发布了(下载),主要增加了一下几个功能: 1.增加截图功能.截图可以自动上传到CSDN相册,可以直接在回复和发布帖子中使用. 2.增加自 ...

  2. 侠客博客v1.0 正式版版本发布

    欢迎来到本页面,我猜想您一定是带着疑问进来的,那么首先我来介绍一下 侠客博客 这个软件吧.他是一款能帮助SEO人士自动做外链的软件.目标是在未来几个月发展成为类似虫虫一样庞大的外链软件.帮助站长提高网 ...

  3. MiCO物联网操作系统漫谈

    摘要 电脑联网成了互联网,手机联网成了移动互联网,物物联网成了物联网.近些年来物联网发展非常迅速,上海庆科在物联网领域积累了多年的经验,从无线模块到操作系统.从开发平台到院校合作,到创客项目,在不断地 ...

  4. AliOS Things物联网操作系统

    AliOS Things 发布于2017年杭州云栖大会, 是HaaS家族中 面向 IoT 领域的.高可伸缩的物联网操作系统,目前已经开源到3.1版本. 系统集成大量物联网云服务连接能力,云端钉一体开发 ...

  5. 超信Linux版(超信 for Linux下载) v1.3.0官方版

    2019独角兽企业重金招聘Python工程师标准>>> 软件名称:超信Linux版(超信 for Linux下载) v1.3.0官方版 版本:1.3.0 大小:36.04 MB 软件 ...

  6. Access数据库重复记录删除器 V1.04免费注册版

    名称:Access数据库重复记录删除器 V1.04免费注册版 版本:1.04 软件大小:1.8M 软件语言:中文 软件授权:共享版 应用平台:WinAll Access数据库重复记录删除器是一款非常好 ...

  7. 物联网操作系统HelloX V1.88版功能描述

    经过HelloX开发团队近一年的努力,在HelloX V1.86版本基础上,增加许多功能特性,并对V1.86版本的一些特性进行了进一步优化之后,正式形成HelloX V1.88版本.经相对充分的测试和 ...

  8. 物联网操作系统HelloX V1.85发布公告

    经过HelloX开发团队近半年的努力,在HelloX V1.83版本基础上,增加许多功能特性,并对V1.83版本的一些特性进行了进一步优化之后,正式形成HelloX V1.85测试版本.经相对充分的测 ...

  9. 物联网操作系统再思考-Hello China操作系统的运营商网络协同机制

    Hello China定位为物联网操作系统,在我们以前关于物联网操作系统的系列描述文章中,已经总结出物联网操作系统区别于其它操作系统的两大核心机制:物联网相关的特性支持和运营商网络的紧密协同.所谓物联 ...

最新文章

  1. 有一个1亿结点的树,已知两个结点, 求它们的最低公共祖先!
  2. 7-Zip 19.00 正式版发布,修正 Win10 1809(17763) 可能无法正常使用大内存页
  3. C++ 多线程编程总结
  4. 2015年最好的PHP框架调查统计
  5. Hadoop2.x编程入门实例:MaxTemperature
  6. custom Idp sapdev 申请用户
  7. python封装一个函数并调用_python - 函数的封装与调用
  8. 当当年中庆典,力度超前,花120买300的硬核书
  9. POJ 3537 Nim游戏
  10. String类型直接赋值与构造赋值
  11. Redis(二)原理以及主从复制的实现
  12. 力扣 27.移除元素 关于数组的存储是连续的问题
  13. 基于LAMP的cacti安装和配置问题处理(一)
  14. python进阶12 Redis
  15. 没有GPS模块无人机无法解锁解决方法测试及其他无法解锁APM疑难杂症
  16. python主函数_python main函数
  17. 7、微信小程序-wxs脚本
  18. 精品丨DAX性能优化问题
  19. 报错:Torch not compiled with CUDA enabled看这一篇就足够了
  20. 新员工如何快速融入新的工作环境

热门文章

  1. php mysql数据库删除数据_PHP 操作Mysql数据库删除数据示例
  2. java中对象清空值_对象的引用和清除_Java语言程
  3. 接收list参数_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅...
  4. gcc编译c文件 python.h 未找到
  5. java 0xf0_java 中类似js encodeURIComponent 函数的实现案例
  6. onenote 思维导图_学生党做笔记,我为什么更推荐OneNote?看后你就明白了
  7. python分类算法的应用_Python基于sklearn库的分类算法简单应用示例
  8. (数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度
  9. 数组经典题之杨辉三角变形
  10. thrift oneway的问题