uclinux移植教程
- 格式:pdf
- 大小:1.96 MB
- 文档页数:24
软件架构能用到的linux基本的操作有:VirtualBox 共享设置一、VirtualBox在winxp下虚拟ubuntu在winxp下虚拟ubuntu,在ubuntu下访问win的共享文件夹时出现如下错误:/sbin/mount.vboxsf: mounting failed with the error: No such device1,若要使用共享文件夹功能,必须安装linux guest additions,安装增强功能,这一步得注意不然没戏2,lsmod | grep vboxvfs,确保加载了vboxvfs模块,若没有,使用sudo modprobe vboxvfs 加载3,新建一个文件夹,sudo mkdir /home/js/dxn4,sudo mount -t vboxsf xuni /home/js/dxn 即:sudo mount -t vboxsf “共享文件夹名” “虚拟机共享文件夹目录”5,cd /home/js/dxn中途可能出现错误yacc -d grammar.ymake: yacc:命令未找到make: *** [grammar.c] 错误 127需要安装yaccinux下是用flex和bison来分别代替lex和yacc的,安装直接使用命令:sudo apt-get install bisonLinux切换root用户问题命令模式下直接用su,然后输入密码就可以了,像ubuntu如果还没有为root设置密码的话,可以用第一个用户(它默认有权使用sudo命令)来设置密码,sudo passwd root。
添加路径: export PATH=$PATH:路径名检查路径: echo $PATH桌面有光驱图标,这是加载linux系统增强工具的软件,打开:里面有个autorun.sh然后打开,在终端中运行在终端中运行,输入密码,稍等片刻。
之后出现以下界面,回车退出,工具安装完成。
Uclinux内核编译傻瓜教程插曲:SDT下程序调适经验在SDT工程下面的.alf文件都是库文件,有了这些库文件后与之相对应的.c 原文件就不需要加载进入工程,否则会导致工程调试时出现程序跑飞的情况。
比方说如果已经加入了44blib.alf文件,则不需要再加入44blib.c文件,如果加入程序通过jtag调试必然跑飞,去掉则没有问题!当然在ADS中是没有.alf库文件的,那么就需要加入相应的.c文件!!内核的编译过程我想大家都知道了,就是make menuconfig进入内核配置菜单进行删改,结束保存后进行make depmake cleanmake lib_onlymake user_onlymake romfsmake imagemake基本上按照立宇泰给的uclinux内核文件和交叉编译器就能够完成整个编译内核的工作,只不过也许由于内核版本不同会产生一些不同的结果,主要还是功能方面的!此次编译内核需要完成的功能包括文件系统ext2的挂载,网络驱动,基本的cash命令,lcd frambuffer功能,串口功能。
当然你也可以实现更多的文件系统的挂载识别和更多驱动功能,但是内核及文件系统必然增大,这里只是实现基本的一些驱动功能,希望借此给各位一些帮助!1.编译armsys-c的uclinux内核及文件系统。
原先armsys-c的uclinux内核文件说明如下:没有经过压缩的内核文件大小为1.8M;经过压缩的内核为0.9M,其经过解压后进入SDRAM区后应该还是具有1.8M大小;文件系统大小为0.8M左右。
这里要注意的是必须按照手册上说的地址下载,否则uclinux无法启动,原因应该是其编译生成的内核文件及文件系统文件在编译过程中已经加入了ro-base及rm-base,所以程序启动的时候会相应寻找其地址,如果不对则无法启动。
不过我会通过重新编译内核时更改其值,验证设想!以下是下载imageram.bin的过程,内核下载后再下载romfsimag.bin即完成整个下载过程,并让程序Pc指向内核起始地址启动uclinux!启动好了的内核及文件系统:对内核进行删改,并于原内核进行比对,发现一些问题。
niosII 硬件架构在开始之前,我总是想多说点,因为看了很多的教程,中间也很辛酸,要达到无师自通的境界,在这种领域有些困难,每每遇到问题,总是喜欢百度一下,当找不到符合自己的情况的时候才是最头疼的时候,我们有点懒,有点想走捷径~~~做做笔记,同时也做做教程,在摩尔定律走不下去的时候,我们就会想起FPGA,我们乐此不疲,因为前途无量,当我们轻车熟路,请不要忘了给我们经验的前辈,同时有好的经验的时候,写写教程,小则帮助一二像我们一样的人,大则为中国的科技兴国做做贡献,无所求,只为心里踏实。
这个教程分两部分,一个是硬件架构,另一个是软件架构,不免会有错误,希望指正,所需硬件要求:cpu包含硬件乘法器,timer,串口,至少8M SDRAMusb blaster , pc一台所需软件要求:此番硬件架构大体分为以下内容:1.建立quartusII 工程。
2.利用sopc 工具搭建niosII软核处理器。
3.建立锁相环。
4.编译工程,分配引脚,重新编译。
5.提取所需的ptf文件。
1.建立工程:选择File -> New Project Wizard...会点英文的,或者是用过别的软件的都会知道,wizard是向导的意思,我们就喜欢向导,因为它会给我们剩下很多工作。
这个不用管它,点next,向下。
这个对话框就有用啦,看第一行,翻译过来就是你要把工程放到哪个文件夹下,然后点"..."选吧,选择你要放的位置,但是我要提醒一点就是,因为这是个外国人用的软件,它的路径里不能有中文,否则当你用niosII IDE软件的时候会有莫名奇妙的错误,这个就是我的经验,免费告诉大家啦。
我设置的路径是D:\quartus_pro\uclinux_nios2,然后点击:打开。
看第二个框。
工程名字,这次的有点特殊了,我们要同时看看第三个框了,第三个是顶层实体的名字,如果知道硬件描述语言,那么肯定会明白我说的意思,这里的工程名字必须和顶层实体的名字相同,我在工程名字填上uclinux_nios2。
学习开发套件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 IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。
关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M。
描述Linux内核的移植过程
Linux内核的移植过程可以分为以下几个步骤:
1. 确定目标平台:首先需要确定要将Linux内核移植到哪个目标平台上,这个平台可以是嵌入式设备、服务器、桌面电脑等。
2. 获取源代码:从Linux官网或其他开源代码库获取Linux内核的源代码。
3. 配置内核:根据目标平台的硬件特性和需求,对内核进行配置。
可以使用make menuconfig、make xconfig或make config等命令进行配置。
4. 编译内核:使用交叉编译工具链对内核进行编译。
交叉编译工具链是一组针对特定平台的编译器、链接器、调试器等工具,可以在开发主机上编译生成目标平台上的可执行文件。
5. 生成镜像文件:将编译生成的内核、设备树、启动程序等文件打包成一个镜像文件。
镜像文件的格式可以是uImage、zImage、vmlinux等。
6. 烧录镜像文件:将生成的镜像文件烧录到目标平台的存储设备上,例如闪存、SD卡、硬盘等。
可以使用dd、fastboot、flash等命令进行烧录。
7. 启动内核:将目标平台连接到开发主机,通过串口或网络连接进行调试和启动。
可以使用bootloader或者直接从存储设备启动内核。
8. 调试内核:在目标平台上运行内核时,可能会遇到各种问题,例如驱动不兼容、内存泄漏、死锁等。
需要使用调试工具对内核进行调试,例如gdb、kgdb、strace等。
以上就是Linux内核的移植过程,需要根据具体的目标平台和需求进行调整和优化。
学习开发套件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 IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。
关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:注意:如果右键菜单中没有Configure Kernel项,请在IDE菜单Windows->show view-> navigator, 在navigator窗口下使用右键便可。
后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M(对于8M的Flash大小不能超过2M)。
因此在这里要去掉没用到的选项:按空格键 取消或者选择General 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 --->:注:如果Flash是intel公司生产的需要在Device Drivers>Memory Technology Device<MTD> RAM/ROM/Flash chip drivers 在这里选上support for intel/sharp flash chips。
默认情况是不支持intel公司的Flash。
AMD公司Flash:AM29系列。
Intel公司Flash:JS28F、E28F等。
设置完这里后其它便可使用默认,然后esc退出保存。
4.2 修改两个脚本文件D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nios2lin ux.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.nios2lin ux.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可以根据具体情况设置),如下图:五..完成后编译内核:经过相当长时间的等待便可看到编译生成的内核vmlinux.bin二进制文件:六.用flash programer下载此内核到flash中的从0地址开始:七.建立文件系统:7.1 在IDE中 File->new->projectNext 输入名字:继续Next:NEXT:点击Install Minimal:Finish后有警告,不管,确定后完成。
7.2 编译此文件系统后生成romfs.bin文件,同上面烧写内核的方法,把此文件烧写到flash 中去,注意offset地址为:0x100000(注:对于8M的flash这里的偏移量为0x200000,偏移地址为多少是根据上面那两个根本文件中对flash的设置而定。
客户也可以根据自己的实际需要做修改)此图中我把romfs.bin文件拷到了C盘,所以file中是:c:\romfs.bin八.ok下载成功后,接上USB (或者串口),打开串口调试工具,按一下板子上的reset 键后可看到串口工具接收窗中显示如下信息:linux系统便启动成功了。
输入命令:ls bin九.建一个LED闪动程序。
9.1 在IDE中File->New->project:一路next到finish.9.2. 建一个C文件:在弹出的对话窗输入文件名:hello.c注意要加.c后缀:9.3 把…altera/kits/nios2/examples/software/linux/apps 目录下samples/hello 文件夹里的makefile复制到my_app工程下。
注意:makefile文件的选择是有讲究的。
具体请参阅:在目录..altera\kits\nios2_51\documents\linux\ 下的Linux Reference Guide.pdf 文档第19页。
在hello.c中输入以下程序:#include <stdio.h>main(){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工程:选择如下图:在弹出以下对话窗:点Ceate完成。
9.5.右键my_app工程:选择如下图:开始编译程序。
9.6 编译完成后没问题的话就可生成hello.exe运行文件:9.7.把生成的hello.exe文件复制到文件系统目录下的BIN文件夹,如下图:9.8.编译此文件系统:9.10.最后把生成的文件系统romfs.bin用flashprogramor下载到flash中。
方法和上面烧写文件系统到flash相同。
十.于是我们便完成了整个linux的移植和简单开发过程。
运行结果:插好USB线,打开串口调试工具,按一下reset:输入ls bin 回车。
输入hello 回车此时便可看到核心板上两个LED交替闪动。
linux系统移植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目录,把我们的编译工具的目录加到系统的命令路径里去,输入命令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生成与系统相关的头文件七、输入命令make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- menuconfig配置系统的内核:Device Drivers ---> Character devices ---> Serial drivers --->选择你的串口,我这里用的是jtag uart,如果你用的是一般的串口,你要选择Nios serial support,同时关闭下面的那个jtag uart。