鄙人很少能够很深入去了解RTOS,内核之类的云云更是两眼一抹黑。
可以毫不夸张的说,我把第一次献给了μTenux
.
凭借着一点点的c语言基础和热情,我开始了μTenux之旅。
接触μTenux也有一段时间了,下面从应用的角度,扒一扒一个菜鸟的看法,欢迎各路大神各种拍砖。
让板砖飞舞得更加猛烈些吧。
编程语言。c语言是必须的,特别是指针和结构体。打开μTenux工程,就能发现大量的这些玩意儿。
几乎和任务相关的所有参数都是使用的结构体类型,参数的传递也基本上都是基于指针的运算。
我不禁想起大学c语言老湿的一句话:学习c,不会用指针,你就相当于没学c。
想想,学java的童鞋多幸福啊。
开发板。必备一块,μTenux支持的芯片很多,我手头上除了sam3s4c外,还有LM4F和STM32F407都能够正常运行μTenux。
学习μTenux之前,恶补了一下μCOSII的内容,发现任哲的那本《嵌入式实时操作系统μC/OS-II原理及应用》一书中,把μCOSII在DOS下进行了移植(可能是移植到x86架构的CPU吧),直接在windows操作系统下用Borland C就能够运行μCOSII,对于手头上没有EK的童鞋可是一大福音。
第一次接触μTenux的时候,觉得这货真恐怖,包含的文件多得让人咋舌。
后来仔细看了一下,发现悠龙真的很用心在做这个系统。
工程文件虽然是很多,但是包含了近20种MCU芯片的在三大编译平台(MDK、IAR、Eclipse,μT-studio应该属于Eclipse范畴吧)下的工程文件。
后来出的v1.6又为各个MCU建立了独立的工程文件,眼睛一下轻松了很多。
起初研究μTenux觉得代码好臃肿,太罗嗦。其实学习到后来,发现这真是个很好的习惯。啰嗦的直接好相处就是代码的可读性很强。
想想也是,看看VHDL和verilog,为什么在严谨、复杂的项目环境中,还是建议采用VHDL,一样的道理。
从个人的角度来看,可以预计,μTenux其实可以应用到一些要求比较高的项目环境中。
慢慢进入系统的实验环节,悠龙的实验也是做得很傻瓜,代码结构清晰明了,就连我这种菜鸟都能很轻松的读懂,基本上只要你认识汉字,就能够根据教程完成实验。
不要觉得简单,有些实验的思考题,还是要静下心来好好思考并尝试一番才能得到答案。
关于学习的方法。μTenux是个很庞大的c语言程序,各种函数,各种参数,想学完了再去应用μTenux是不现实的。个人的办法是,在使用μTenux的时候,同时打开内核规范,一边用一边翻查内核规范。还要注意预编译的情况,不要把预编译的代码误读成正常运行的代码,这点也是偶有切肤之痛的地方。还有c语言的基本功,不懂的地方,还是得多请教大神。
和其他操作系统的差异。据文件记载,μTenux暂不支持虚拟内存的管理,只能管理物理内存。
换句话说MMU是不被支持的。MMU是个双刃剑,Linux支持它,能够很大程度上提高系统的可靠性和安全性,可以运行很大的app;但MMU的存在,使得应用程序的运行时间变得不可控,这可是RTOS的致命缺陷啊。
据说μTenux今后的中间件会支持MMU哟。
在μCOSII中,有一个信号量集的东东。
意思是说,某个任务的状态可能由多个信号量才能确定,这多个信号量就组成一个信号量集,完成对某个任务的控制。
而μTenux没有信号量集的概念,不过它的事件标志和μCOSII的信号量集似乎有些相似,估计可以看做等效吧。
μCOSII邮箱好像每次只能容纳1条信息,而μTenux能够收取多条信息,μCOSIII里面直接就取消了邮箱。
貌似和内核实现的机制有关,内核还不是偶研究的对象
.虽然有些了解,就不拿出来贻笑大方了。
关于FPU。浮点运算单元是现在很多MCU都具备的东东,目前μTenux还没有支持FPU吧。
一点想法。能推出Proteus仿真不?这话抛出来估计要被大神们鄙视
。现在Proteus8.0已经包含TI的LM3S的MCU了,我也见过不少在Proteus中仿真μCOS的例程,各种基础实验、μCGUI,有板有眼,做得的确不错。
同时也发现,好多大学的童鞋买不起板,就在Proteus下玩μCOS相当带劲。
要是有,我第一个报名做试验品
.
内核规范手册已经对系统相关函数作了很详实的解释,但是内核的一些静态变量,还是比较难找到准确的含义。
想想,如果把这些东西都解释一遍,那内核规范得要多少页啊......
以上个人看法,如有雷同,不胜荣幸,如有异议,欢迎拍砖。