学习开发套件V3.0中嵌入Uclinux的步骤和方法
在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram.
开发环境:SOPC学习开发套件V3.0,型号EP1C6。QII5.1+SP2,NiosII IDE5.1+SP1。
一 .安装nios2linux开发包nios2linux-1.4 二 .建立硬件系统
1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。如下图:
注意为防止不必要的麻烦,这里尽量使用默认名字。
如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。 我们的工程中是两个口都接了,使用串口或者USB口都行。 三.建立软件环境
打开NIOSII IDE 3.1 建立linux内核
file-> new-> project 后如下图:
Page 1 of 1
鸿翔电子www.mcuhx.com
注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:
1)、打开cmd,在 开始->运行 那里输入cmd
2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:
3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:
Page 2 of 2
鸿翔电子www.mcuhx.com
这是在New->Other那里你就可以看到那个linux的目录项了。关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字
按next:
finish完成 四. 构建内核:
4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:
Page 3 of 3
鸿翔电子www.mcuhx.com
注意:如果右键菜单中没有Configure Kernel项,请在IDE菜单Windows->show view-> navigator, 在navigator窗口下使用右键便可。 后进入如下界面:
因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M(对于8M的Flash大小不能超过2M)。因此在这里要去掉没用到的选项:
按空格键 取消或者选择
Page 4 of 4
鸿翔电子www.mcuhx.comGeneral setup:
processor type and features:这里选择的是Microtronix Cyclone board support,不是Altera
在Device drivers除以下默认及保留串口外,其它都去掉 Generic Driver Options --->
Memory Technology Devices (MTD) ---> Block devices --->
串口位置及设置如下:
Device drivers--ÆCharacter devices --->Serial drivers --->:
Page 5 of 5
鸿翔电子www.mcuhx.com注:如果Flash是intel公司生产的需要在Device Drivers>Memory Technology Device AMD公司Flash:AM29系列。 Intel公司Flash:JS28F、E28F等。 设置完这里后其它便可使用默认,然后esc退出保存。 4.2 修改两个脚本文件 D:\\altera\\kits\\nios2_51\\bin\\eclipse\\plugins\\com.microtronix.nios2linux.kernel_1.4.0\\linux-2.6.x\\arch\\nios2nommu\\kernel\\ vmlinux.lds.inc文件以及同目录下的vmlinux.lds.S文件 改成如下以符合我们的2Mflash: (注:如果是8M Flash不必修改,使用默认即可) 在 D:\\altera\\kits\\nios2_51\\bin\\eclipse\\plugins\\com.microtronix.nios2linux.kernel_1.4.0\\linux-2.6.x\\drivers\\mtd\\maps\\ 中找到microtronix.c文件,修改以下画线部分以及把BUSWIDTH 由2改为1(2表示16位总线,1表示8位总线,请根据开发板具体情况修改,V3.0实验板上的flash使用8位总线所以这里要改为1。注表:开发板版本V2:16位,V3:8位,V4:16位,V5:8位。以下的两个文件是内核文件和文件系统文件在Flash中的映射,如果是8M的flash使用默认即可,如果不是8M可以根据具体情况设置),如下图: Page 6 of 6 鸿翔电子www.mcuhx.com 五..完成后编译内核: 经过相当长时间的等待便可看到编译生成的内核vmlinux.bin二进制文件: Page 7 of 7 鸿翔电子www.mcuhx.com 六.用flash programer下载此内核到flash中的从0地址开始: Page 8 of 8 鸿翔电子www.mcuhx.com七.建立文件系统: 7.1 在IDE中 File->new->project Next 输入名字: 继续Next: NEXT:点击Install Minimal: Page 9 of 9 鸿翔电子www.mcuhx.comFinish后有警告,不管,确定后完成。 7.2 编译此文件系统后生成romfs.bin文件,同上面烧写内核的方法,把此文件烧写到flash 中去,注意offset地址为:0x100000 (注:对于8M的flash这里的偏移量为0x200000,偏移地址为多少是根据上面那两个根本文件中对flash的设置而定。客户也可以根据自己的实际需要做修改) 此图中我把romfs.bin文件拷到了C盘,所以file中是:c:\\romfs.bin 八.ok 下载成功后,接上USB (或者串口),打开串口调试工具,按一下板子上的reset键后可看到串口工具接收窗中显示如下信息:linux系统便启动成功了。 Page 10 of 10 鸿翔电子www.mcuhx.com 输入命令:ls bin 九.建一个LED闪动程序。 9.1 在IDE中File->New->project: Page 11 of 11 鸿翔电子www.mcuhx.com 一路next到finish. 9.2. 建一个C文件: 在弹出的对话窗输入文件名:hello.c注意要加.c后缀: 9.3 把…altera/kits/nios2/examples/software/linux/apps 目录下 Page 12 of 12 鸿翔电子www.mcuhx.comsamples/hello 文件夹里的makefile复制到my_app工程下。 注意:makefile文件的选择是有讲究的。具体请参阅:在目录 ..altera\\kits\\nios2_51\\documents\\linux\\ 下的Linux Reference Guide.pdf文档第19页。 在hello.c中输入以下程序: #include int i; char led=0x1; while(1) { for(i=0;i<100000;i++); * (int*) 0x80202040=led; //0x80202040是led灯的地址 led=~led; } } 说明:其它外面地址在内核工程nios2_system.h中定义,如下图 9.4 右键my_app工程:选择如下图: Page 13 of 13 鸿翔电子www.mcuhx.com 在弹出以下对话窗: 点Ceate完成。 9.5.右键my_app工程:选择如下图:开始编译程序。 Page 14 of 14 鸿翔电子www.mcuhx.com 9.6 编译完成后没问题的话就可生成hello.exe运行文件: Page 15 of 15 鸿翔电子www.mcuhx.com9.7.把生成的hello.exe文件复制到文件系统目录下的BIN文件夹,如下图: 9.8.编译此文件系统: 9.10.最后把生成的文件系统romfs.bin用flashprogramor下载到flash中。方法和上面烧写文件系统到flash相同。 十.于是我们便完成了整个linux的移植和简单开发过程。 运行结果: 插好USB线,打开串口调试工具,按一下reset: 输入ls bin 回车。 Page 16 of 16 鸿翔电子www.mcuhx.com 输入hello 回车 此时便可看到核心板上两个LED交替闪动。 Page 17 of 17 鸿翔电子www.mcuhx.comlinux系统移植uclinux到EP1C6的过程如下:(仅供参考) nios2linux-1.4开发包仅支持到QuartusII6.0版本,且一直没有更新,在使用QII更高版本时以上移植就行不通了,以下是传输的移植方法,适合与任何QII版本,但仅供参考,不保证肯定其正确性。 一、 首先我们用SOPC builder建立一个nios2的系统,在QuartusII里面分配好引脚和编译生成我们 CPU核的工程。其中的nios_c.ptf就是我们等会儿用来在linux下面生成我们这个cpu系统相关信息的文件。 二、 在linux系统下面,我用的是Feodra4+vmware5.0,其他的发行版本也可以的。下面是操作的具 体步骤: 三、 以一般用户的身份进入linux,在系统目录下面用mkdir download命令建立一个叫做download的 目录,去niosforum那里下载nios2linux-1.4.zip文件和build0411.zip文件(由Hippo提供),把这两个文件放在linux的~/download,用命令unzip build0411.zip 解压缩build0411.zip文件,里面有一些补丁和脚本文件,然后输入./build运行build这个脚本,如果你的网络不行的话可以自己修改这个脚本,把wget那些命令屏蔽掉,然后自己下载到download目录下面。 四、 运行完这个脚本之后在~/目录下有这些文件: 在建立buildroot的时候有一些软件下载不了的可以自己先下载,然后放在~/download目录下面。 五、cd 到linux-2.6.x目录, Page 18 of 18 鸿翔电子www.mcuhx.com 把我们的编译工具的目录加到系统的命令路径里去,输入命令PATH=$PATH:~/buildroot/build_nios2/staging_dir/bin,或者在~/.bash_profile那里添加也可以的,设置完 了可以用命令nios2-linux-uclibc-gcc –v来测试是否成功。 六、把我们第一步生成的project.ptf (project是你的nios2系统工程的名字)拷贝到~/linux-2.6.x,用命令: make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- hwselect SYSPTF=project.ptf生成与系统相关的头文件 Page 19 of 19 鸿翔电子www.mcuhx.com Page 20 of 20 鸿翔电子www.mcuhx.com 七、输入命令make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- menuconfig配置系统的内核: 在这个目录下面有一个.config文件,他是系统最小的配置,你可以自己添加需要的功能,一般要注意的几个地方是:Device Drivers ---> Character devices ---> Serial drivers --->选择你的串口,我这里用的是jtag uart, Page 21 of 21 鸿翔电子www.mcuhx.com如果你用的是一般的串口,你要选择Nios serial support,同时关闭下面的那个jtag uart。 另一个地方是Processor type and features-->(0x00500000) Link address offset for booting,这个主要是你用zImage来运行的时候要用到,是压缩文件zImage放置到ram的地址,我这个系统的ram是8M的基地址是0x0。Flash是2M的,基地址是0x800000。 八、用命令make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- zImage生成我们的系统的内核 拷贝arch/nios2nommu/boot/zImage 到window下面,用nios2的sdk把这个kernel下载到我们的板子里面去 九、打开nios2的SDK程序 Page 22 of 22 鸿翔电子www.mcuhx.com 先下载我们的nios2系统到板子上面去,命令是nios2-configure-sof test3.sof(test3.sof是我的nios系统的文件名字): 下载zImage到板子上面去,命令是nios2-download –g zImage: Page 23 of 23 鸿翔电子www.mcuhx.com 输入命令nios2-terminate.exe打开终端窗口。 启动信息如下: Page 24 of 24 因篇幅问题不能全部显示,请点此查看更多更全内容