我们来聊聊为什么要使用Mbed OS。
因为使用MbedOS 感觉不错,不免向别人推荐它,我们遇到的程序员有两种类型:
1 没有嵌入式程序设计经验的人,比如大学生,或者是学校的教师。
他们问的问题大多数是。是否流行?是否有教材?并不关心是否好用,对他们是否合适。
2 已经具有Cortex-M 嵌入式处理器编程经验的人,企业中的程序员许多是裸机编程的程序员。
他们已经习惯于裸机状态下编写程序,编写新程序的项目并不多,主要是修改原有的产品软件。他们觉得裸机写程序也不错,为什么要去学习一个不太收悉的OS。而且有些程序员也使用过OS,比如freeOS,uCOS等等。
所以,总的看来,Mbed OS 并不受人待见。
其实不需要急于去争论,而是去思考一个问题-我们选择OS的标准到底是什么?
我觉得OS也好,编程语言也罢,都是编写应用程序的工具和运行程序的平台。人们开发不同的OS和程序设计语言的主要目的就是提高程序设计的效率。如果说运行效率而言,也许使用使用汇编语言的效率最高。但是开发软件的效率太低了。而且容易出错。我们的软件越来越复杂,我们需要开发越来越多的软件。软件的研发成本逐年增长。所以如何提高软件的生产力,降低软件的生产成本非常重要。
如果我们在比以往更快地编写出软件,无论是对公司,或者个人而言,都是具有竞争能力的。如果认同我的这一观点,我就告诉你,使用Mbed OS 可以使你编写嵌入式软件的效率倍增。
1 摆脱了硬件的细节
尽管arm 公司和众多的芯片公司为底层硬件抽象层做了许多的工作,例如COMSIS库,ST 公司的HAL库等等。但是还是没有彻底地摆脱硬件的细节。其中GPIO_Init(),TIM,SPI,PWM,UART 初始化都是大段天书。一不小心就会莫名其妙的地出错。一个应用程序的开发过程中,真正应用的算法实现花费的时间并不长,而搞定那些配置程序却搞得人筋疲力尽。
Mbed OS 平台上开发应用程序基本上摆脱了硬件的魔咒。使你专心致志于应用算法的开发。程序的长度大大缩短了。
嵌入式OS 主要是提供了一个RTOS 的内核,为应用软件提供了线程的运行环境。这是不够的,就像google的android OS 它采用了linux 内核,但是它为应用程序提高了丰富的支撑。mbed OS 和其它嵌入式OS 也完全不同,它做的更多。
我们不能被名词术语蒙蔽了双眼,沉浸在过去的经验中不可自拔。不愿意去了解和尝试新技术的魅力。化一两个晚上时间,了解细节,你会得出不一样的看法。
2 提高了软件的可读性
一个软件如果是可读的,更适合开源和分享,对于个人和公司而言,可读性同样重要,它提高了程序的可用性,一个程序员离职造成的损失远远大于硬件工程师离职。因为后续的工程师往往读不懂前任的源代码,个人也是如此,过了一段时间,连自己都看不懂了,只能重新编写。
3 更多可直接引用的程序库
Mbed OS 的社区提供了程序员分享代码的场所,目前已经可以获得许多有用的,可以直接使用的代码库和应用程序了。
我们已经进入了一个崇尚创新的时代,几乎人人都有造物的冲动。有想法需要迅速地实现原型,验证你的想法,如果原型机的研发需要花费太多的人力物力和时间的话,往往会泯灭许多创新的点子。Mbed OS 降低了原型机开发的门槛,具有一定C语言经验的程序员就能够开发出硬件原型机,这是一件令人兴奋的事情。同样地,我身边的硬件工程师同样也非常兴奋,他们不再要听软件工程师吆五喝六了。自己将程序编写了出来。发现软件原来并不那么神秘和牛逼。只要逻辑搞清楚了,写代码不是遥不可及的.
经过一段时间后,我发现身边的javascript 前端工程师,硬件工程师都在摆弄Mbed 小程序。世界真的变了。
当然,对于我这样资深的嵌入式程序员来讲,原来需要一周才能编写的程序,现在只需要一个晚上就能出原型。也是十分快乐的。让嵌入式程序员不再痛苦,享受造物的快乐。
我使用Mbed OS 的主要理由是提高了编写嵌入式程序的效率,实现了快速原型设计,快速递交产品。