zynq - ubuntu桌面系统的建立 - 图文

更新时间:2024-04-09 23:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

UbuntuontheZynq?-7000SoCFeaturingthe Avnet ZedBoard

这个指南提供了一种集合几个不同的技术在一个平台的方法,使用Avnet ZedBoard,我们拥有800Mhz ARM-9 Cortex 32位双核处理芯片,联合Xilinx FPGA 无与伦比的灵活性实施自定义用户系统。我们使用一个Linux内核作为基础操作系统在处理器内核运行,同时添加一个全性能的桌面架构Ubuntu,在根文件系统中控制。这个桌面允许ZedBoard像个人计算机一样工作,使用USB接口的键盘和鼠标,和一个HDMI接口的显示器。

实验1: FPGA硬件平台

1,在网站:http://wiki.analog.com/resources/fpga/xilinx/kc705/adv7511下找到cf_adv7511_zed_edk_14_4_2013_02_05.tar.gz链接,下载得到 HDL Reference Design,解压并将cf_adv7511_zed和cf_lib拷贝到目录L:\%ubuntu_linux下。 2,打开cf_adv7511_zed文件下的system.xmp文件

3,在XPS下,点击Generate BitStream产生syste.bit文件,将在Zynq_Ubuntu\\cf_adv7511_zed\\implementation\\system.bit 4,在xps下,点击左边的SDK Export Design 图标,勾选上include bitstream and BMM files,点击Export and Launch SDK按钮。选择工作区间为l:\%ubuntu_linux\\ f_adv7511_zed\\SDK\\SDK_Workspace,ok

5,在SDK下,新建一个应用工程zynq_fsbl_0

选择Zynq FSBL ,finish。将在Zynq_Ubuntu\\cf_adv7511_zed\\SDK\\SDK_Workspace\\zynq_fsbl_ 0\\Debug\\zynq_fsbl_0.elf

6,在zynq_ubuntu目录下新建一个文件夹bootfile,将system.bit文件和zynq_fsbl_0.elf文件都复制到bootfile文件夹下。

实验2:创建Second Stage Boot Loader(u-boot)

1,克隆 Xilinx U-Boot Git repository for Zynq,在PC机的Linux系统下 $ cd ~

$ git clone git://git.xilinx.com/u-boot-xlnx.git(克隆) $ cd u-boot-xlnx (切换路径到U-boot-xlnx下) $ git checkout -b xilinx-v14.4 xilinx-v14.4(检查出最新的版本):u-boot和linux内核有着密切的关系,所以我们需要匹配正确U-boot和我们打算用的内核版本。 2,针对ZedBoard目标板配置u-boot $ cd ~/u-boot-xlnx/

$ make distclean(删除所有由config、make创建的中间文件,这是清理过期配置的一个好方法。

修改zynq_zed.h文件需要参考的二级文件/include/configs/zynq_common.h.,所有Zynq板共同拥有的参数在该文件配置

$ gedit include/configs/zynq_commom.h 定位到sdboot处 修改成如下:

“sdboot=echo Copying Linux kernel from SD to RAM…RFS in ext4;” \\

“mmcinfo;” \\

“fatload mmc 0 0x3000000 ${kernel_image};” \\ “fatload mmc 0 0x2A00000 ${devicetree_image};” \\ “bootm 0x3000000 - 0x2A00000\\0” \\

保存,关闭

修改SD默认启动配置(搜索sdboot并定位它)从SD卡复制根文件系统到memory。这就是Xilinx如何启动他们的内核,但是ADI内核是使用在SD卡中的内核,所以它不进行复制。

$ make zynq_zed_config(进行配置,配置文件zynq_zed.h可以在~/u-boot-xlnx/include/configs/zynq_zed.h下找到,z这个配置包含对ZedBoard目标的和所有报头的)

3,对已经配置了的资源建立U_Boot $ cd ~/u-boot-xlnx $ make

正常将在~/u-boot-xlnx下生成u-boot文件

将它拷贝到主机的L:\\zynq_ubuntu\\bootfile文件下,并更名为u-boot.elf

如果出现错误 $ cd ~

$ source .bash_profile $ cd u-boot-xlnx/ $ make distclean

$ make zynq_zed_config $ make

$ echo $PATH(可用于查看环境变量)

实验3:为启动对SD卡分区

使用GParted/Disk Utility对4GB的SD卡进行分区,分成两个区,第一个分区为52MB/500MB的FAT32格式,剩下的部分格式化为ext4格式

具体步骤略。

实验4:创建FSBL(BOOT.BIN) 1,打开ISE下的SDK,选择工作空间为L:\\Zynq_Ubuntu\\cf_adv7511_zed\\SDK\\DK_Workspace。选择菜单标签Xilinx Tool—》Create Boot Image

依次添加如下文件

1. FSBL (Stage 1 boot loader)

2. Programmable Logic (PL) Hardware Bitstream 3. U-Boot (Stage 2 boot loader)

选择Biffile路径和文件名L:\\linux_ubuntu\\bootfile\\bootimage.bif 输出文件为L:\\linux_ubuntu\\bootfile\\boot.bin

将生成了的boot.bin文件拷贝到SD卡的第一分区。

2,用已经生成的boot.bin启动zedboard。连接硬件,串口,电源,插入SD卡到开发板 在我电脑上的port端口为COM6

点击OK,在TERATERM Setup–》Save setup 菜单选择并覆盖已经存在的 TERATERM. INI 文件

进入U-Boot命令行之后,添加sdboot命令,并且保存环境变量

实验5:配置和建立Linux内核

1,克隆ADI(美国模拟器件)linux 内核仓库到家目录并检查我们打算建立的分支

$ cd ~

$ git clone git://github.com/analogdevicesinc/linux.git ubuntu $ cd ubuntu

$ git checkout xcomm_zynq(检出代码分支兼容14.4 Xilinx工具,这个设置xcomm_zynq分支为远程跟踪)

2,配置和建立内核 $ cd ~/ubuntu/

$ make ARCH=arm distclean

$ make ARCH=arm zynq_xcomm_adv7511_defconfig(配置文件的目录如下,这个文件是对HDMI vedio的配置ubuntu/arch/arm/configs/zync_xcomm_adv7511_defconfig) $ make ARCH=arm(编译内核)

$ cd arch/arm/boot(生成的内核zImage所在的文件目录) $ gzip zImage(压缩文件zImage为.zip格式)

mkimage 工具的目录为~/u-boot-xlnx/tools/mkimage,为了执行方便可以将mkimage拷贝到/bin/.下

$Sudo cp ~/u-boot-xlnx/tools/mkimage ~/bin/.

$ mkimage –A arm –a 0x8000 –e 0x8000 –n ‘Linux kernel’ -T kernel –d zImage.gz uImage 其中:

-A arm Set the architecture to Arm -O u-boot Program type

-T standalone / kernel Operating system -C gzip Compression method

-a 40000 Load address at 0x40000 -e 40004 Execution address at 0x40004 -n ‘any text’ Image description -d Input file Output file

执行完成之后,将目录ubuntu/arch/arm/boot下的文件uImage拷贝到SD卡的第一分区

本文来源:https://www.bwwdw.com/article/ko6r.html

Top