这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 基于定制nios2系统的uClinux开发讨论帖,编译问题答疑。[原创]

共9条 1/1 1 跳转至

基于定制nios2系统的uClinux开发讨论帖,编译问题答疑。[原创]

菜鸟
2006-12-04 01:40:55     打赏
有很多朋友在自己的nios2工程中编译uClinux遇到问题。 基于nios2的uClinux开发包,是由microtronix公司发起,并移植的。目前,nios2处理器已经正式纳入uClinux.org发行的uClinux开发包中。开发方式共有两类: 1.基于cygwin下的开发包。特色:安装简单,但是速度较慢. 2.基于linux平台的标准开发包,需要从uClinux.org下载标准源码包,并且打补丁,安装交叉编译环境,安装较为繁琐。但是速度较快,并且原汁原味。 下面介绍cygwin平台下在定制nios2系统中uClinux开发。 (建议先阅读开发包中quick start手册。) microtronix的uClinux中自带几个针对Altera官方开发板的配置文件。使用这些配置文件直接对自己工程编译时是通不过的。下面将介绍其中猫腻,如果有问题可以把编译信息贴出来。 [URL=http://http://bbs.eepw.com.cn/dispbbs.asp?boardID=41&ID=72636&page=1]http://bbs.eepw.com.cn/dispbbs.asp?boardID=41&ID=72636&page=1[/URL] 本文的实验工程基于Dragoon_1CX开发平台:。由杭州穿山甲电子提供 [URL=http://www.epangolin.com]www.epangolin.com[/URL] 接下来,我们通过分析www.epangolin.com 修改的源码包,来说明nios2的uClinux编译方式。 源代码安装目录为:\altera\kits\nios2\bin\eclipse\plugins\com.microtronix.nios2linux.kernel_1.4.0\linux-2.6.x 其中在linux-2.6.x\arch\nios2nommu\s\目录下为nios2-quartus工程的ptf文件适配脚本,用来生成uClinux源码中定义的设备结构,每次编译都会重新产生system.h傀儡文件。 要让uClinux编译通过,就必须直接修改目录下的脚本。 我们举一个altera_avalon_timer.pm例子来说明:(请参照注释) package altera_avalon_timer; use base qw(BasicModule); use strict; sub required_class_name { "altera_avalon_timer"; } sub required_module_names { "timer0" } //必须与sopc-builder下同名,不然编译出错,timer0是用来做uClinux系统调度的时钟触发,必备硬件 sub print_prefix { my ($class, $system) = @_; print "\n"; print "#ifndef __ASSEMBLY__\n"; print "#include \n"; print "#endif\n"; print "\n"; } sub base_address_cast { "np_timer" } //重命名timer数据结构与内核保持一致 # only timers with a non-fixed-period are valid sub is_module_valid { my ($class, $system, $module_name) = @_; my $module = $system->getModule ($module_name); my $fixed_period = $module->getWSAAssignment ('fixed_period'); //一个小陷阱,如果您的工程timer不是制定分辨率,例如 if ($fixed_period eq '0') { //10ms,则编译报错。很多人都卡在这里。:-) return 1; } else { return 0; //可以改成return 1; 则不检测timer中设定的值与预定义是否相符 } } sub run { altera_avalon_timer->run2 (@_); } 1; 从上面可以看出,如果不是用altera官方开发板中的nios2工程编译时会给初学者带来很多麻烦。 下图是,已经被www.epangolin.com 修改过的源码包,用于Dragoon_1CX开发板: [IMG]http://www.epangolin.com/productpic/menuconfig.gif[/IMG] [IMG]http://www.epangolin.com/productpic/uClinux-uart.gif[/IMG] 总之编译问题多种多样,有些是自己疏忽,大家可以把编译输出信息贴出来,一起讨论。 关于linux编译环境的建立,还在整理当中。 目前我们开发小组,使用集中式服务器,用ssh-client,samba连接linux服务器。ARM,nios2,Leon的linux编译环境都在linux服务器上。 项目管理使用CVS。 代码编辑器凭个人喜好,SourceInsight居多,微软的studio2005也不错。 [align=right][color=#000066][此贴子已经被作者于2006-12-8 13:21:31编辑过][/color][/align]



关键词: 基于     定制     nios2     系统     uClinux     开发    

菜鸟
2006-12-04 03:53:00     打赏
2楼
[IMG]http://www.epangolin.com/productpic/dragoon_1C12xt.gif[/IMG] [IMG]http://www.epangolin.com/productpic/dragoon_dcard_0.gif[/IMG] [align=right][color=#000066][此贴子已经被作者于2006-12-4 9:34:30编辑过][/color][/align]

菜鸟
2006-12-04 23:03:00     打赏
3楼
来真家伙了~~

菜鸟
2006-12-05 04:07:00     打赏
4楼
如果大家在nios2的uClinux开发中遇到任何困难,请将代码文境贴出,一起讨论。我会尽力回答。

菜鸟
2006-12-15 05:55:00     打赏
5楼
你是郭越还是郭任????

菜鸟
2006-12-24 07:02:00     打赏
6楼

柳老师,好久不见,最近怎么没看到你的msn,是不是换了


菜鸟
2007-05-31 03:34:00     打赏
7楼

你好,我在用NIOS II IDE 编译UCLINUX APPLICATION 的时候,出现了问题, 我安装的是NIOS II IDE 6.0,并且安装了microtronix nios2linux 1.4 .目前内核和文件系统都已经移植到板子上了,现在正建立UCLINUX APPLICATION 来做一些应用,但是在编译的时候出现了问题,当只引用普通的C的头文件例如 STDIO.H 编译就会通过,当使用UCLINUX的头文件,例如 linux/config.h linux/interrupt.h 的时候就无法通过编译,错误信息中提示某些头文件不存在或者某些变量没有声明.比如说config.h 下调用了autoconf.h(大概是这个名字没记清不好意思)但是在:\altera\kits\nios2\bin\eclipse\plugins\com.microtronix.nios2linux.Uclib_1.4.0\linux-2.6.x里确实找不到该文件.但在KERNEL项目里的INCLUDE文件夹下可以找到这个文件,我曾经尝试挨个文件找到后把他们复制到:\altera\kits\nios2\bin\eclipse\plugins\com.microtronix.nios2linux.Uclib_1.4.0\linux-2.6.x里再进行调用,文件不存在的问题到是可以解决,但是变量没有声明的问题依然存在,我现在实在是搞不明白为什么会这样,难道说microtronix nios2linux 1.4 提供的库有问题?或者说是不是哪里需要特殊设置一下?还请楼主和大家们给予帮忙,项目比较急,卡在这了,又到处找不到相关资料,谢谢大家~~


菜鸟
2010-06-05 09:45:59     打赏
8楼

楼主,我在安装的时候发现遇到了问题:
make menuconfig时说没有规则可以创建“menuconfig”文件。我用git --vision  结果显示 bash:git:command not found,这是为什么啊,急!!!!! 


工程师
2010-06-05 22:52:00     打赏
9楼
楼主看来对uClinux有一定的造诣啊!~

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]