共9条
1/1 1 跳转至页
基于定制nios2系统的uClinux开发讨论帖,编译问题答疑。[原创]
有很多朋友在自己的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 开发
你好,我在用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 提供的库有问题?或者说是不是哪里需要特殊设置一下?还请楼主和大家们给予帮忙,项目比较急,卡在这了,又到处找不到相关资料,谢谢大家~~
共9条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |