tag 标签: 嵌入式微系统

相关博文
  • 热度 28
    2014-11-25 19:52
    1358 次阅读|
    0 个评论
    这两个周,应河池学院彭建盛老师的邀请,为他们刚成立的广西系统与控制重点实验室讲学,主要的内容是msOS。 彭老师跟我认识在我做手机开发模块的时候,对我的人才培养理念比较认同,也积极的把企业这一套应用到高校,并且经常自掏腰包给学生买一些仪器设备开发板之类的,2011年邀请我来他们学校给他们学生讲学过一次。 河池学院在广西宜州,地方比较偏,交通也不好,学校资源有限,高水平老师较少,学生基础也相对较差,算是典型的二三线高校。就这样的一个高校,能有彭老师这样为学生的年轻老师,真是难得。 今年年初彭老师告诉我他努力想学校申请了一个大的实验室,并且获得学校的一笔资金,想请我来负责这个实验室的教学,因为他深感自己虽然长期培养学生,但这么多年都没有传承,沉淀下什么东西来,需要借助企业的力量实现传承,而我,恰恰非常重视传承,并且我开发的msOS很适合他们的实验室,所以初步答应了下来。 到了年中彭老师专门来到深圳跟我面谈实验室的事情,我就问了他一个问题,你还这么年轻,有大把的机会在企业赚钱,也可以去更好的学校教书,你留在河池这类学校干什么?他说他想做点事情,当个好老师,我被他感动了,中国还是有不少很好的老师的,看到他我就想到一直支持我的兰州大学的周庆国老师,所以我告诉他,我全力支持你,并且将投入较大的精力和资金,把这个实验室办好。 我公司计划提供每年10万元的资助,包括学生补贴和实验设备等,并且每年过来一定时间的培训。这个实验室的教学完全由我负责,彭老师主要负责监督学生作用。来之前的几个月中,实验室学生基本上了解了msOS-Mcu51版本,有一些技术入门,我这次过来主要抓三方面:英语、软件、硬件 1、进实验室的学生,一律要背单词,每天100个,进入实验室的第一件事情,就是背单词,用“百词斩”背,不要求强记,但必须要浏览100个,还要打卡。二三线高校学生,英语学校要求不高,导致普遍很差,而编写程序和阅读datasheet是必须要英语的,所以英语是基础,必须要学好。   2、软件基于msOS-Stm32培训,通过一年的msOS推广,很多学生反应msOS在系统类软件中,入门容易,很多概念相对容易懂,通过学习msOS之后,学习其它软件,比如uC/OS非常容易,在应聘面试中获得很好的效果,比较容易取得高薪,河池学院去年就尝到了这个甜头,所以非常支持msOS的培训,整个实验室都在学msOS,把其它的都抛弃了。   3、硬件方面基于我的认知来学,因为硬件涉猎很广泛,所以大算围绕msPLC和开关电源来展开,通过穿插很多物理知识,作为科普。让他们的知识面尽可能的广泛。   因为这是一个重点实验室,学生有20来人,都是挑选的,虽然基础不算好,但都是真正喜欢嵌入式的人员,热情很高。加上前期的准备工作,有个别学生在简单的讲解一遍后,初步掌握了msOS,让我很欣慰。而现在我们采用较严格要求的培训方式,同学们都非常积极的配合,考虑到避开正常上课时间,一般培训都在夜里进行,从9点到12点,培训后同学们经常继续讨论学习到深夜1、2点钟,很值得佩服。   我希望河池学院这个实验室,是我新的起点,把msOS推广起来,让更多的人受益。
  • 热度 18
    2014-10-28 17:02
    1466 次阅读|
    1 个评论
    清华、北大,是国人心中神圣的殿堂,可惜高考离他们太远。大学毕业后,经兰州大学周庆国老师介绍来到半导体所,在谢亮研究员组工作,期间经考进清华研究生的校友王艳龙推荐,协助清华朋友设计一些项目,近距离的接触了清华,心中已经没有这层遥不可及的感觉,但毕竟没有在其中经历过,内心总有一层遗憾。 这两年都在设计“嵌入式微系统msOS”,并开源加以推广,获得广大网友的支持,三个月前,我把我做嵌入式微系统的进展跟周庆国老师讲了一下,恰好,他负责清华第二届开源操作系统技术年会的嵌入式版面,推荐我参加。说实在一听说在清华的学术性演讲,我心里咯噔了一下,毕竟msOS偏向应用、需求的,技术上没什么可讲的。于是我跟周老师再一次沟通之后,他觉得是可以的,思路比较新颖,他对我很信任,相信我做的东西,肯定有价值,就这样,参加了这次会议。 临近年会时间,组委会发来邮件,内容如下:   王总,您好: 我是清华大学计算机系的XX,目前在筹备OS2ATC2014会议。 您做的中低端通用嵌入式架构平台在业界很有影响,很值得我们学习! 但您的报告(通过周老师)给会议筹备组专家看后,觉得与OS技术专题有点距离,我们建议您有两种选择: 1 中低端通用嵌入式架构平台只参加展示环节。 2 请您做报告,但由于嵌入式系统报告较多,您的报告靠后一些,时间也会压缩一下。由嵌入式操作系统系统技术专题主席周老师具体把握。   您看您更希望是选择哪种方式? 盼回复。谢谢!   我看到这个回复,虽然早想到会有这么一回事,认同组委会的安排,但心里还是很不舒服,最后考虑到很多网友要前来参观,选择了第二个方案,还是要参加演讲。 我是提前2天去的北京,先去半导体所谢亮研究员哪儿,给他讲解了msOS,获得他的认同,第二天又去嵌入式前辈何立民老师那边,向他请教一些嵌入式的理念,尤其是平台思维,获得他的认可,之后又给谢亮的学生讲解了一番嵌入式微系统,算是作为清华演讲的预演。 10月18日是年会日,一早在同学王艳龙的帮忙下在FIT楼展示产品,我把自己得意的“电阻电容电感样品本”,“手机开发模块”和“msPLC”演示系统都摆出来,一开场生意就很好,忙不过来,让我信心十足。因为就我一个人去的北京,人手不足,多亏王艳龙的帮忙,忙前忙后的,等到中午,msOS群中的网友也陆续到来助威,很感谢大家对我的支持。 我一直认为,人若努力,天都相帮,本来嵌入式组人员比较多,六个人,有一位因故缺席,这样时间就不是很紧张,我在3点钟附近进场先听前面的两位演讲,其中一位的OS写的技术性很强,让我更加认识到,想靠技术来演讲,不可能有大的效果,虽然之前我就决定基于故事性质来演讲,听了他们的演讲后让我认识到这个故事,应该要以老板的角色来演讲,而不是技术人员角色来演讲,这样更加有效。而事实证明,我从老板角色,紧抓深圳的创业条件,讲解msOS,获得听众的普遍认可,会后要求了解msOS的人较多,纷纷加入msOS QQ群中,并且跟在场的朋友合影留念。 这个演讲效果让主办方也改变了对msOS的态度:   王总,您好:   我觉得您确实走出了一条与众不同的路,且很成功。希望你发展顺利!   这次的演讲,完成了我心中的遗憾,感谢周庆国老师对我长期的信任,没有他的支持,也就没有这张入场券,也感谢同学王艳龙,是他在我需要帮助的时候,及时出现,更感谢长期对msOS支持的网友,是你们的认可,到场助威,让我在收到组委会邮件之时没有退路,只能硬着头皮上。当然,这一切的一切,还需要感谢自己长期的努力与坚持,写出一个符合实际需求,又与众不同的OS。
  • 热度 17
    2014-10-6 21:46
    867 次阅读|
    0 个评论
    感谢网友对msOS的支持,因为大家的支持,让msOS获得参选资格参加在清华大学举办的第二届开源操作系统年度大会,敬请各位关注!这段时间都在写msOS的书,把msOS推广开,于是年底可以发布! 网址: http://soft.cs.tsinghua.edu.cn/os2atc2014/rc.html
  • 热度 18
    2014-8-24 22:55
    1156 次阅读|
    0 个评论
    msOS设计的本意是为电子类设备及PLC设计的,一开始想着仿造西门子的S7-300来设计一套基于CAN通讯的分布式PLC,然而当设计了几个硬件模块之后就发现,这个需求定义超出了我的个人能力,自己的综合知识还没有上到这个层面,所以开始退而求其次,仿照普通的PLC,结合华禹工控及俊知机械的需求设计了一款简单的嵌入式PLC,取名为msPLC-Demo。    msOS开发过程中的调试都是用msPLC-Demo的,msPLC-Demo也经历了3个版本,逐渐完善成熟,通过对msPLC-Demo的完善,让我更清楚工业设计的需求,对PLC更加理解,比如我们自己建立系统,可以不需要标准PLC那么复杂,接口部分最后演化为共阳输入光耦隔离,**率共阴输出直接驱动,可以直驱继电器类驱动器,简单、易用。 基于msPLC Demo,做了不少项目,比如400~1200度的红外激光测温仪的校准台,测温仪与高频感应加热设备的控制器,这两个都需要一套PID算法,于是就开发了一套面向对象的PID库,简单设置一下温度值就搞定了温度控制。机械自动化里面,经常需要控制步进电机,于是基于德国公司高性能的TMC262步进控制器,编写了步进电机驱动库。    msOS开发过程中,我就建了一个QQ群:291235815,并且在博客上发表了要做msOS的信息,把需求描述了一下,感兴趣的网友加入了进来,其中最主要的群体是原基于Mcu51的“实用单片机系统”MS3的客户群体,他们就是从MS3入门嵌入式的,所以他们一开始就对msOS产生了很强烈的兴趣,在他们的热情下,加速了msOS的推动。在开发完成msOS之后,庞大的MS3用户群体让我认识到需要把这个群体引导到msOS中,于是把MS3按msOS风格改写,为了区分两个系统,改写后的MS3,命名为msOS-Mcu51,而原来的msOS,命名为msOS-Stm32,加上之后的无OS精简版本msOS-Lite,形成了一个完整的系列。 群内网友积极参与,有些看了msOS代码之后,写了一些读后感,比如“独钓千古愁”写了不少关于“设备”、“抽象”、“面向对象”方面的文章。有些基于msOS系列开发产品后,共享了代码,也有些把msOS移植到msp430、AVR中,也共享了代码。我公司基于msOS开发的产品,部分的共享了代码,比如PID库,步进驱动库等。 为了进一步普及,想做一个低成本的msPLC,但最后发现黑白字库屏的成本下不来,考虑到很多网友都有通用的评估板,于是想着做一个PC机端的界面,虚拟LCD屏,代替真实的LCD屏,并且采用C#来开发,这样形成一套PC上位机的C#开发模版,支持串口等常用功能。因为我没有太多的精力,群内“Claude”恰好会一些C#,于是他负责了这个项目,通过短短几个星期,给出了一个模版,我做了优化,“南方的风”增加了ISP功能后,形成了一个比较不错的上位机C#模版,取名为msMenu,真正实现嵌入式与PC端统一开发的风格,感谢“途客”推荐C#开发环境“SharpDevelop”,非常好用。    msOS的开发成功,统一了我公司嵌入式设备的开发,主要的几个负责人,包括硬件负责人都在第一时间都掌握了编程技巧,通过代码相互检查,编码质量显著提高,有效的降低了公司的软件成本。并且硬件人员也可以轻松修改软件,对于相对不是很复杂的软件,硬件人员也可以参考模版完成。 我公司现在的人才招聘,现在都在群内招聘,而通过这样知根知底的招聘方式,有效的降低了公司经营的成本,人员稳定性也大。有一位在华为工作多年的软件高手“蓝色雪狐”看中msOS的价值,加盟我公司,今后由他来负责msOS的后续应用及推广,开发更多的电子设备和自动化设备,比如火花放电加工设备和俊知的机械自动化控制设备,目前都在开发之中,之后把这些应用中的经验融合到msOS中,写成书让更多的人受益。 msOS到今天算是告一段落,因为二代高频机的深入研究需要FPGA技术,自己设计精准控制芯片,所以最近我都在学习FPGA。幸运的是,刚开始学习,就获得我本科大学同学的支持,他是清华研究生,一直在某著名芯片设计公司工作,当我把我的这套思路跟他讲了之后,他非常认同,希望能在FPGA上建立一套通用的编程模版,暂时取名叫msFPGA吧,若开发完成后,争取实现开源共享。 msOS从一开始,就获得我公司众多高手的支持,后来广大网友参与进来,让msOS快速成长,目前QQ群已经接近1000人满员,这个速度还是基本上没有做规模推广下获得的,因为我想着主要靠口碑来传递。 最后感谢对msOS做出重要贡献的几位网友,他们分别是Tomsu、剑客、侯德平、独钓千里行、传说中的火*手、Claude、彭娟及南方的风,更感谢各媒体在msOS开发过程中的长期支持
  • 热度 16
    2014-8-24 17:21
    1067 次阅读|
    0 个评论
    2014年春节里的一天上午,msOS QQ群里面讨论的很激烈,“传说中的火*手”认为msOS-Mcu51已经很好了,对于msOS-Stm32引入uC/OS-II意见比较大。虽然他也用过uC/OS-II,但并不喜欢,有一种不确定感,所以很喜欢裸奔。但他的观点受到群内不少RTOS用户网友的反驳,以“独钓千古愁”为代表,持续了将近半个多小时,我一直在旁围观。 通过这次辩论,双方都把各自的观点表达的非常清晰、明了。RTOS有它的优点,但确实存在很明显的缺点,这个无可争议,尤其是大家提出RTOS的几个问题: 1、 带RTOS系统,不便于移植,这个对msOS的跨硬件平台推广是很不利的。 2、 嵌入式工程师,往往有强烈的掌控欲,而理解透彻RTOS有一定的难度,有一种把握不住的感觉而拒绝RTOS。 3、 现实中绝大多数嵌入式项目,只要通过合理的设计,不需要RTOS。 4、 带RTOS的系统,在任务调度时进入临界态,这个时候无法响应中断,不适合应用于实时性要求高的地方。 以上四个原因,让我认识到需要推出一个msOS的无RTOS版本,但还要实现类似RTOS的双任务功能,把业务逻辑与菜单界面分离。在讨论中,“传说中的火*手”有一句话提醒了我,他提到他自己有一套类似MS3(msOS的前身)的架构,他用了一个中断处理各种消息,而这个时候,我也在想着如何改造uC/OS-II的任务切换软中断,实现双任务,思路完全一致,他的话说明了这个方案是可行的。 后来的一段时间,忙着msOS文档,进一步完善msOS代码,一直没有着手写。直到三月份才开始按照软中断方式,粗粗的写了一个无OS的双任务版本msOS,实现了这个功能,但因为当时对Stm32的中断系统理解不深,所以放到群内让大家一起分析,寻找bug,这个时候,“独钓千古愁”对无OS版本msOS提出了很多建议,并且直接在这个版本基础上修改,完全的丢弃了汇编代码,移植非常容易,其中部分处理方式引用了他跟“传说中的火*手”交流时提供的代码。我再在“独钓千古愁”提供的版本基础上进一步优化,统一风格,定型后在群内发布,当“传说中的火*手”看到最终版本,就觉得有他的影子存在。 这个无OS版本的msOS,最终的命名是“Tomsu”起的,他参考软件的命名习惯,因为这是一个无OS简化版本,所以推荐为msOS-Lite版本,Lite的意思是“精简”。可以说,msOS-Lite版本,是整个msOS群大家参与讨论出来的,虽然有几个相对重要的网友积极推动,但其它网友的贡献是不能抹杀的,集体的力量是强大的。我对这个版本非常满意,因为它准确的反应了msOS理念:简单、易用。 无RTOS实现双任务,甚至多任务,本质上讲跟RTOS方法类似的,只是RTOS是把一个main大循环斩成多个具有优先级的小循环,消息触发决定在最高优先级的小循环中执行。因为是小循环,死循环,一直循环下去,所以必须要有触发进入条件和等待资源挂起条件,否则这个小循环一直执行下去,别的小循环就执行不了了。 无RTOS版本多任务,把中断看作是任务,因为中断优先级高于main大循环,建立一个最低优先级的,可以被消息触发的软中断来实现任务,但因为在中断中,所以建立的这个任务不是一个死循环,而是执行完毕就跳出的。而这一点恰好符合msOS的业务逻辑中的消息机制,执行完消息就退出的特点,不需要死循环等待在哪儿。 多个中断,就实现多个任务,尤其是systick系统节拍中断,有很多事务在系统节拍中例行处理,类似任务,虽然这个任务不是严格意义上的,功能不强大,但够我们用了,尤其是对msOS来说,只需要两个任务,恰好合适。 为了跟uC/OS-II兼容,选择了软中断PendSV,把优先级设置为最低。              其次,宏定义形式定义软中断PendSV的触发指令,只要EnterInterrupt这个宏指令被调用,就激活PendSV中断。这部分代码“独钓千古愁”和“传说中的火*手”提供的,写的非常好,原来这部分在汇编中的,移到了C语言中,这样子msOS-Lite就没有了汇编代码。             再次,编写PendSV的中断响应代码,考虑到有多个消息源同时抛出消息,但响应中断只有一次,所以在中断响应中必须要把消息队列中的消息处理完,否则会导致后续的消息因为中断此前被占用而不会再次产生中断标记而无法重入的问题。这儿增加了CheckMessage函数来实现。             最后,改写抛出消息入队列函数,调用EnterInterrupt触发PendSV中断。              至此,无RTOS的msOS-Lite版本完成,非常感谢msOS QQ群的所有网友的支持与合作