嵌入式系统中应用操作系统已经很普遍了,linux/uClinux是我们一个很好的选择,在NIOS II IDE上目前主要有两个操作系统可供选择ucOs II和uClinux,ucOs II相对简单些,实时性强,但配套软件不足,许多系统需要自己去开发。uClinux相对来说复杂,但开源代码众多,资源丰富,是一个不错的选择,但它规模较大,理解掌握难度相对大,开发难度也相应的增大,但熟练后应用很广,明知虎山险偏向虎山行。uClinux系统在nios ii上的移植版本是Microtronix uClinux。自由电子科技(http://www.freefpga.com)会在论坛不断推出各种uClinux系统下开发的相关课题,欢迎大家共同探讨讨论。 首先,gnu的开发工具很多都用到make工具,可以这么说吧,Makefile框架是软件的组织架构,理解一个程序也许不复杂,要有效的把程序加入到这个体系中去需要一些精力。 Make以及Makefile是一个非常灵活的工具,和windows下使用开发习惯有些差异,在做uClinux的具体开发以前,先熟悉一下make和Makefile的相关知识很有必要。 make和Makefile本身是一个特殊的编程环境,能容纳变量、规则和命令等,通过和shell下各种工具的结合,衍生出强大的处理功能,如何理解Makefile以及如何调试Makefile相关的动作是我们必须掌握的能力,没有孙悟空的本领,不钻到铁扇公主的肚子里,是不可能比较彻底的掌握和理解Makefile的。在这里我们先介绍一招:在Makefile把相关的信息送到文件中。这样我们就可以借以理解Makefile解释运行时的具体情况,方法如下: 1、先备份Makefile文件 2、在Makefile文件前面加语句: FREEDEV_FILE := $(shell pwd)/free_debug $(shell echo "debug file=[$(FREEDEV_FILE)]" >> $(FREEDEV_FILE)) $(shell echo "------------------Makefile Debug Begin----------------">$(FREEDEV_FILE)) 3、在需要显示信息的地方加,下列语句,注意KBUILD_OUTPUT是变量,你可以任意写需要的变量: $(shell echo "KBUILD_OUTPUT=[$(KBUILD_OUTPUT)]">>$(FREEDEV_FILE))这样我们就可以看到相关信息了:)。OK,马上行动观察Makefile的运行吧。 书本是人类进步的阶梯,买书时我从不吝啬,在书店看看linux的书可谓汗牛充栋,找一本好书不容易,更何况针对不断变化的对象,可以这么说,没有一本书,一种资料可以恰好针对你的在学习Nios II上的uClinux。需要脚踏实地的去观察、调试和理解,学习microtronix uClinux就是如此,很多书本是针对Arm版本的,只有借鉴作用,要理解,还是靠基本的知识。耐心是必要的。Microtronix uClinux的主Makefile和其他版本的Makefile并不一致,所以需要用上述方法,逐步的去判读和理解,在我们耐心细致基础上,将展现这个神秘领地的绚丽色彩。
[此贴子已经被作者于2006-11-19 9:57:54编辑过] |