共4条
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 开发
共4条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度被打赏22分 | |
【换取手持数字示波器】STM32F4驱动RPR-0521RS照度、接近一体型传感器被打赏23分 | |
宏定义和const关键字定义被打赏5分 | |
【分享开发笔记,赚取电动螺丝刀】几个单片机I2S外设的BLCK时钟对比被打赏20分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 |