收藏 分销(赏)

uClinux交叉编译环境的搭建.doc

上传人:pc****0 文档编号:7794567 上传时间:2025-01-17 格式:DOC 页数:46 大小:2.73MB
下载 相关 举报
uClinux交叉编译环境的搭建.doc_第1页
第1页 / 共46页
uClinux交叉编译环境的搭建.doc_第2页
第2页 / 共46页
点击查看更多>>
资源描述
第八章 目录 第八章 1 8.1案例简介 2 8.2 搭建MicroBlaze硬件平台 3 8.3 在EDK中配置项目软件环境 11 8.4 uClinux交叉编译环境的搭建 18 8.4.1 建立共享文件夹 18 8.4.2 建立交叉编译环境 20 8.5 uClinux基本配置 22 8.6 添加网页素材 37 8.7 应用程序验证 38 本章描述了在V2PRO开发板上进行基于WEB的系统的设计,完成了WEB SERVER的功能,可以利用网络访问该服务器的内容。 8.1案例简介 本案例实现远程主机通过Web网络对终端开发板进行操作和控制, 1. 功能描述 。 。 本应用具有实时性,高效性,信息传递稳定精确,误操作少和系统功耗低等性能特点,并具有友好的用户界面。 2. 开发环境 1) 硬件环境与工具 FPGA开发板及其相关附件(V2PRO) 硬件连线:RS232串口线,RJ45网线 网络设备:以太网集线器(HUB) 2) 软件环境与工具 EDK 8.2i(不可选用其他版本或其升级版本如8.2.03i) Fedora Core 4(或RedHat9 Linux)操作系统 虚拟机VMware 5.0.0 build-13124 3. 本案例所使用的资源请参考/Chapter8/目录: /Doc:本案例的操作指导文档 /Src:源代码与web网页所需资源,以及LED、DIP驱动源文件 /Tools:本案例中使用的工具。包含uClinux配置文件uclinux_v1_00_d文件夹,交叉工具链microblaze-elf-tools-20060213.tar.gz,uClinux源码包uClinux-dist-20060803.tar.bz2。 8.2 搭建MicroBlaze硬件平台 1. 启动XPS 8.2i,软件系统弹出如下对话框: 选中Base System Builder Wizard,新建一个MicroBlaze硬件平台,点击OK,进入硬件平台搭建向导。 2. 在弹出的对话框中,点击browse,选择一个目标磁盘并建立一个自己的工程文件夹,双击进入自己的工程文件夹后,点击保存,系统会自动为此项目命名为system。点击OK,进入BSB欢迎对话框。 3. 在欢迎对话框内,选择I would like to creat a new design,点击next。 4. 进入开发板选择对话框后,进行如下的系统配置: Board Vendor: Xilinx Board Name: XUP Virtex-II Pro Development System Board Revision: C 点击next。 (如果Board Name没有出现如上所示选项,请先安装XUP Virtex-II Pro开发板的支持包,具体操作如下:将Xilinx_XUP_V2P开发板支持包拷贝到EDK软件目录下的board->Xilinx->boards文件夹下) 5. 进入处理器选择对话框,选择MicroBlaze处理器,点击next。 6. 进入MicroBlaze配置对话框,如下图所示,确认选择No Cache,在后续步骤中选择DDR 512MB作为内存。点击next。 7. 进入I/O端口配置对话框。选择打开RS232端口及以太网端口的中断服务,波特率设为115200,其他采用默认设置。点击next。 8. 继续配置I/O端口。如下图所示,打开所有外设端口的中断服务。点击next。 9. 由于案例中使用了操作系统,所以需要添加定时器,点击Add Periperals,在弹出的对话框中选择OPB_TIMER,点击OK。 10. 接下来的对话框显示了Timer的配置参数,这里,我们只需要一个Timer,并把中断打开。点击next。 11. 在Software Setup中只选择Memory Test,取消Peripheral selftest。 12. 余下的设置均采用默认配置即可,直至出现如下对话框,点击Generate。 13. 点击finish。系统会弹出窗口如下,选择Start using Platform Studio。 14. 此时系统会出现如下界面,即Xilinx Platform Studio的操作界面。 8.3 在EDK中配置项目软件环境 1. 由于此次实验中,我们需要在MicroBlaze处理器上需要运行uClinux,所以首先要把uClinux的配置文件uclinux_v1_00_d文件夹拷贝到EDK->sw->lib->bsp文件夹下。否则后续的配置工作将会遇到很大问题。 2. 启动EDK,打开刚才搭建的MicroBlaze硬件系统工作目录文件夹下的system.xmp文件。 3. 在打开MicroBlaze系统文件后,可以在EDK开发环境中看到相关系统信息,如下图所示。首先我们切换到Bus interface,看到MicroBlaze系统中各个模块与总线的连接情况。 4. 这里,我们需要对此系统做出如下修改。把窗口切换到port,点开debug module,点开interrupt中的net选项,选择debug module interrupt。 5. 接着点开port选项中的opb_inct_0,双击L to H。 6. 系统会弹出如下对话框。 7. 我们需要把debug module interrupt加入到connected interrupt栏中,具体方法是选中debug module interrupt,点击加号,debug module interrupt会被加入到connected interrupt栏中。如图所示。 8.添加完成后,系统提示如下。 9. 接下来进行软件平台配置,点击Software菜单,启动Software Platform Setting,如图所示。 10. 系统会弹出软件平台的配置窗口,如下图所示,可以看到共有四个可配置项:Software Platform,OS and Libraries,Drivers,Interrupt Handle。 11. 首先,我们对Software Platform进行配置,点击Software Platform,在窗口右侧为可配置参数。在OS&Library settings子窗口中,打开OS的下拉菜单,由于我们选择使用的操作系统为uClinux,所以这里选择uClinux。特别值得注意的是如果第一步没有完成,那么在点开OS的下拉菜单后,将没有uClinux选项。 12. 完成如上配置后,选中OS and Library可配置选项,这里完成开发板对uClinux的BSP进行配置,包括FLASH与MEMORY以及输入输出调试端口的配置,我们主要对以下参数进行修改: Main memory bank:0 Main memory:DDR_512M_64M*64 Stdin:RS232_Uart_1 Stdout:RS232_Uart_1 13. Drivers及Interrupt Handle两项不需要进行配置。点击OK,退出。至此,基于uClinux的MicroBlaze软件平台配置完成,下一步是根据软件平台的配置生成针对MicroBlaze处理器的BSP与库,使uClinux与开发板的信息交互成为可能。 14. 进入EDK的Device Configuration菜单,点击Update Bitstream,XPS会进行硬件平台的生成和软件库的生成以及应用程序的编译。现在我们就可以在MicroBlaze硬件系统工作目录文件夹下的microblaze_0/ libsrc/ uclinux_v1_00_d文件夹内找到auto-config.in文件。 8.4 uClinux交叉编译环境的搭建 首先在linux下建立uClinux交叉编译环境,这需要将交叉编译器microblaze-elf-tools和内核源码包uClinux-dist解压到指定的目录下。 说明:以下假定Windows主机的D盘下有个文件夹share,这个文件夹下包括所需的交叉工具链和uClinux的压缩包。 8.4.1 建立共享文件夹 在这一步里,我们需要建立一个可以在windows与linux之间进行共享的文件夹,这里我们通过虚拟机VMware来建立。从VMware5开始,VMware支持直接将windows下的文件夹mount到linux的/mnt/hgfs/目录下,从而完成windows与linux间的共享问题。 1.运行虚拟机VMWare软件,点击菜单VM中的Settings选项。 2.在出现的设置页面中,选择Shared Folders,确认以下内容:虚拟机中设置的Windows主机共享文件夹名称为share,指向包含交叉工具链和uClinux压缩包的文件夹D:\share。系统启动后,虚拟机中会把这个共享文件夹挂接到/mnt/hgfs中。在虚拟机中的Linux系统中,用户可通过/mnt/hgfs/share/访问到Windows文件夹。 由下图可以看出已经在hgfs下出现了share文件夹 8.4.2 建立交叉编译环境 1. 在虚拟机中以用户名root登陆,在/home下建立embed文件夹,然后在embed文件下建立microblaze-elf-tools文件夹。输入命令: >cd /home >mkdir embed >cd embed >mkdir microblaze-elf-tools 2.从Windows主机中将交叉工具链(microblaze-elf-tools-20060213.tar.gz)复制到指定的目录(如D:\share)下。在虚拟机终端中输入命令: >cp /mnt/hgfs/share/microblaze-elf-tools-20060213.tar.gz /home/embed/microblaze-elf-tools 3.解压交叉工具链的压缩包。输入命令: >tar -zxvf microblaze-elf-tools-20060213.tar.gz 4.打开当前用户的.bash_profile文件,修改/root目录下的该文件。输入命令: >vi ~/.bash_profile 把microblaze交叉工具链所在的路径加到PATH中,即 PATH=/home/embed/microblaze-elf-tools/bin:$PATH 5.执行如下命令,使路径设置生效: >source ~/.bash_profile 执行如下命令,检查路径设置是否已经生效: >echo $PATH 6.显示MicroBlaze交叉工具链的版本信息。输入命令: >mb-gcc –v 将出现以下画面: 则说明MicroBlaze交叉工具链安装成功。 7.接下去,需要安装uClinux源码包。首先将uClinux源码包(uClinux-dist-20060803.tar.bz2)复制到指定的目录(如/home/embed)下。 >cp /mnt/hgfs/share/uClinux-dist-20060803.tar.bz2 /home/embed 切换到用户目录/home/embed中,解压uClinux源码包。使用命令: >cd /home/embed >tar –jxvf uClinux-dist-20060803.tar.bz2 切换到uClinux目录下。输入命令: >cd uClinux-dist 然后显示uClinux的目录结构,输入命令: >ls –l 将出现以下画面: 则说明uClinux源码包已经安装好了。 8.5 uClinux基本配置 1.将FPGA工程文件夹下\microblaze_0\libsrc\uclinux_v1_00_d \autoconfig.in文件拷贝到uClinux-dist下的linux-2.4.x/arch/microblaze/platform/uclinux-auto目录下。 >cd uClinux-dist >cp /mnt/hgfs/share/autoconfig.in linux-2.4.x/arch/microblaze/platform/uclinux-auto 2.转换autoconfig.in的格式。输入命令: >vi linux-2.4.x/arch/microblaze/platform/uclinux-auto/autoconfig.in 将出现vi的编辑界面,在vi的命令行模式输入以下命令: >:set ff=unix 然后保存退出。输入命令: >:wq 这样,就完成了autoconfig.in的导入工作。 3.将驱动程序文件(/Chapter8/Src/下的xup_v2pro_led.c和xup_v2pro_dip.c)复制到指定的目录(linux-2.4.x/drivers/char)下,并切换到指定的目录。 4.修改当前目录(linux-2.4.x/drivers/char)下的Config.in文件,加入以下语句: tristate ‘LED’ CONFIG_DRIVER_LED tristate ‘DIP’ CONFIG_DRIVER_DIP 修改后,保存退出。 5.修改当前目录(linux-2.4.x/drivers/char)下的Makefile文件,加入以下语句: obj-$(CONFIG_DRIVER_DIP) += xup_v2pro_dip.o obj-$(CONFIG_DRIVER_LED) += xup_v2pro_led.o 并保存退出。 6.确认当前目录是uClinux-dist。输入命令: >pwd 7.清除以前的编译记录。输入命令: >make mrproper –i 来彻底清楚各种不稳定的中间编译结果。 8.启动uClinux图形配置界面。输入命令: >make menuconfig 将出现以下界面: 9.进入Vendor/Product Selection菜单。在Vendor中选择Xilinx,在Xilinx Product中选择uclinux-auto。 然后选择Exit,退到Main Menu。 10.在MainMenu选择Kernel/Library/Defaults Selection选项,进入子菜单。在Kernel Version中选择linux-2.4.x,在Libc Version中选择uClibc;另外,需要选中Customize Kernel Settings和Customize Vendor/User Settings两个选项。 然后选择Exit,退到Main Menu。在Main Menu里选择退出,会出现以下界面: 选择yes,保存新的kernel配置。 11.期间会出现如下图所示的询问,LED和DIP均选择m,表示以module模块方式加载LED及DIP驱动 12.接着,会弹出kernel个性化设置的界面。 15.在Main Menu里选择Processor type and features选项。进入Processor type and features子菜单后,选择Console on UARTLITE和Ethernet driver,然后退到Main Menu。 16.进入Memory Technology Devices(MTD)子菜单,然后进入RAM/ROM/Flash chip drivers 取消Detect flash chips by Common Flash Interface(CFI) probe与Detect JEDEC JESD21c compatible flash chips项的选择。 17.然后退出到Memory Technology Devices(MTD)菜单,进入Mapping drivers for chip access菜单: 在Mapping drivers for chip access子菜单中,确认Generic uClinux RAM/ROM filesystem support项被选中,而其他选项均没选中。 然后选择Exit,退出Main Menu。 18.在Main Menu中,进入Block devices菜单,确认Initial RAM disk(initrd) support的选项没有被选中。 然后选择Exit,退出Main Menu。 19.进入File Systems菜单: 确认选择/dev file system support(EXPERIMENTAL)和它的子选项(Automatically mount at boot和Debug devfs)。然后退出此菜单。 20.在Main Menu里选择Character Devices选项。进入Character Devices子菜单后,选择LED和DIP的状态为M(编译器会把这个驱动编译成一个独立的内核module,可以在系统中动态加载和移除―――使用insmod加载/rmmod移除这个驱动模块) 21. 然后在主菜单中选择退出,将出现以下界面:选择yes,保存设置。 22. 接着,出现Vendor/user定制的界面: 23. 选择进入core applications菜单,选择其中的enable console shell项,并取消agetty项的选择。然后选择Exit,退到Main Menu。 24. 再进入Filesystem Applications菜单,取消flatfsd选项。然后选择Exit,退到Main Menu。 然后进入Network Applications菜单,取消dhcpcd-new模块的选择。 然后选择Exit,退到Main Menu。 25. 然后进入BusyBox菜单,选择ping及httpd及其所有相关选项。然后选择Exit,退到Main Menu。 26. 回主画面,进入Miscellaneous Applications子菜单内。选中mknod选项,然后选中zmodem utils及lrz(NEW),lsz(NEW)子选项。 最后选择Exit,退到Main Menu。 27. 然后在Main Menu中选择退出,将出现以下界面: 选择yes,保存vendor/user设置。 28. 接着进行uClinux内核的编译工作。首先建立依赖关系,输入命令: >make dep 29. 对修改后的配置进行内核编译,输入命令: >make 若无错误出现,编译完成后,会在当前images目录下产生一个image.bin文件。 8.6 添加网页素材 1. 将/Chapter8/Src/httpd下的所有文件复制到uClinux下的vendors/Xilinx/uclinux-auto/httpd文件夹下。 > cp –fr /mnt/hgfs/Data/.httpd /home/uClinux-dist/ vendors/Xilinx/uclinux-auto/ 这些文件是网页素材文件,这些文件的制作涉及HTML代码制作和JAVA代码制作,有兴趣的读者可尝试自行修改。 2. 在uClinux目录下新建一个文件夹Program用于编译cgi程序。将/Chapter8/Src/source中的getInfo.c, ledctl.c, priority.c复制到Program文件夹下。 3. 在该目录下创建一个Makefile文件,将以下内容输入这个文件内(或者从/Source目录拷贝到当前文件夹): ifndef ROOTDIR ROOTDIR = /home/uClinux-dist(此目录是ucLinux的解压目录) endif UCLINUX_BUILD_USER = 1 include $(ROOTDIR)/.config LINUXDIR = linux-2.4.x LINUX_CONFIG = $(ROOTDIR)/$(LINUXDIR)/.config include $(LINUX_CONFIG) LIBCDIR = $(CONFIG_LIBCDIR) include $(ROOTDIR)/config.arch LDFLAGS = -Wl -elf2flt PATH:=$(ROOTDIR)/tools:$(PATH) EXEC = Priority.cgi EXEC_OBJS = Priority.o all: $(EXEC) $(EXEC): $(EXEC_OBJS) $(CC) $(LDFLAGS) -o $@ $(EXEC_OBJS) $(LDLIBS) clean: -rm -f $(EXEC) *.elf *.gdb *.o %.o: %.c $(CC) -c $(CFLAGS) -I $(LINUXDIR)/include -o $@ $< 4. 将终端切换到Program文件夹,并执行make命令,生成Priority.cgi。 5. 修改Makefile EXEC = ledctl.cgi EXEC_OBJS = ledctl.o 重新执行make命令,生成ledctl.cgi 6. 修改Makefile EXEC = getInfo.cgi EXEC_OBJS = getInfo.o 重新执行make命令,生成getInfo.cgi 7. 将三个cgi文件移动到vendors/Xilinx/uclinux-auto/httpd下。 8. 将8.5中linux-2.4.x/drivers/char下已经编译成功的驱动文件xup_v2pro_led.o和xup_v2pro_dip.o复制到vendors/Xilinx/uclinux-auto/httpd下。 9. 按照8.5节中的步骤,从第6步开始接着重新坐下来,生成新的image.bin。 8.7 应用程序验证 1.将新生成的image.bin 、xup_v2pro_led.o和xup_v2pro_dip.o复制到EDK工程根目录。继续下面的配置。 2.按照下图进行连接,将一根机对机的交叉网络线连接FPGA开发板和一台PC机(此处方法不限于此,比如使用HUB相连); 3.通过“开始”菜单->程序->附件->通讯->超级终端,打开超级终端,然后进行属性配置。 一定要选对端口,每个串口连接时使用可能都不一样的,然后就是“配置”信息里面的波特率,否则不能看到正确输出。如图所示: 4.然后在EDK打开这个工程,选择Download bitstream,将bitstream下载到FPGA芯片上。 在终端上会看到如下信息: 5.在EDK上选择菜单“debug -> launch xmd”。打开XMD窗口。输入命令: >dow –data image.bin 0x30000000 其中0x30000000是DDR内存的起始地址。 6.然后输入con 0x30000000,cpu将开始启动uClinux操作系统。 >con 0x30000000 在超级终端可看到启动过程。 7.等uClinux启动完成后,切换到/tmp目录,启动zmodem接收文件。 在超级终端上输入命令: >cd /tmp >lrz(每发送一次.o文件要重新lrz一次) 8. 接着在串口终端中选择“传送->发送文件”, 文件选择为前面生成的xup_v2pro_led.o和xup_v2pro_dip.o,协议选择为zmodem,点击“发送”,则会开始发送。 等待传送完成后,则在超级终端中可以输入命令检查: >ls 查看是否有xup_v2pro_led.o和xup_v2pro_dip.o的存在 9.进行文件权限配置 >cd / >mkdir /tmp/httpd >cp /home/httpd/*.* /tmp/httpd/ >chmod 644 /tmp/httpd/*.* >chmod 755 /tmp/httpd/*.cgi >thttpd –d /tmp/httpd –c “*.cgi” & >ps(查看thttpd的进程号)如图: >kill 80(上面图中的thttpd进程号) 10. 然后向内核注册模块 >cd /tmp/httpd >insmod xup_v2pro_led.o >insmod xup_v2pro_dip.o 且可以观察开发板上是否有LED灯闪亮,来确认是否已加载LED模块成功及通过按下DIP,来确认是否已加载DIP模块。 11.接下来配置FPGA的IP地址。我们需要将主机的IP地址与FPGA的IP地址配在相同网段。例如,本机IP为192.168.238.4,则我们可以将FPGA地址分配为192.168.238.8,(最后一位可以任意选择) 输入命令: >ifconfig eth0 192.168.238.8 12.至此,所有配置已经完成,可以在浏览器内输入http://192.168.238.8/home.html开始访问网页!可以选择优先级来控制LED的亮灭,同时DIP的反馈信息将在Java类中被定期扫描。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服