logo资料库

ZedBoard移植Linux(精简版)及BOA服务器的搭建.pdf

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
ZedBoard 移植 Linux(精简版)及 BOA 服务器的搭建 作者:江仲鸣 时间:2016-04-22 一、移植之前 http://www.wiki.xilinx.com/ https://github.com/Xilinx Xilinx 提供了可用于 ZedBoard 的现成的嵌入式 Linux(可在第一个链接找到),主要包含四个文件: boot.bin、devicetree.dtb、uImage 和 uramdisk.image.gz。 另外,ZedBoard 自带 SD 卡的 Demo 系统主要包含四个文件:BOOT.BIN、devicetree_ramdisk.dtb、 zImage 和 ramdisk8M.image.gz。 其中,uImage 和 zImage 文件可由 Linux 源码编译得到,BOOT.BIN 由下文的方法生成。此外,.dtb 文件是设备树文件,可采用官方 pre-built;ramdisk 是根文件系统,也可以采用官方的 pre-built。 (uImage 是 uboot 专用的映像文件,它是在 zImage 之前加上一个长度为 64 字节的“头”,说明这个内核 的版本、加载位置、生成时间、大小等信息;其 0x40 之后与 zImage 没区别。) 【注意】 有一个包含全部移植 Linux 所需文件的“全家桶”:petalinux-v2015.2.1-final-installer.run。采用此 “全家桶”可省去从 git 下载 u-boot、Linux 等源码的步骤,比较方便。为方便起见,下文相关操作采用 此包进行。因此,读者需要先安装此包。 安装方法:终端中输入以下内容: $ mkdir <安装目录> $ <包的目录>/petalinux-v2015.2.1-final-installer.run <安装目录> 二、移植环境 Ubuntu15.10(其他版本也可以,如 12.04 等) Vivado 2014.2(其他版本也可) Xilinx SDK 2014.2(其他版本也可) 三、移植步骤 (1)安装 Ubuntu 并搭建交叉编译环境 1)安装 32 位库【如果 PC 安装的是 32 位的 Linux,可省去此步骤】 由于这个环境是为 32 位系统设计的,所以 64 位系统需要先安装 32 位库。在 Ubuntu 终端 (Ctrl+Alt+T 打开终端)中进入 root 权限(输入 su root,输入 UNIX 密码即可[如果事先没有设置密码, 先通过 sudo passwd root 设置 UNIX 密码])。 - 1 -
Ubuntu12.04 及更老的版本可以在终端中输入 apt-get install ia32-libs。Ubuntu12.04 之后 ia32- libs 被取消了。12.04 之后的版本可以输入 apt-get install libgtk2.0-0:i386 试试。 2)将 dash 改成 bash 在终端输入 dpkg-reconfig dash,选择 no。 3)下载并安装 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 链接:https://pan.baidu.com/s/1qWWv6Cs,提取密码 65nw。下载完成后,将其放到/home/user 目 录下,在终端中输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,如果执行失败,先输入 chmod +x xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,将其转换为可执行程序,再输入./xilinx-2011.09- 50-arm-xilinx-linux-gnueabi.bin。 4)设置环境变量 在终端中输入 gedit /etc/bash.bashrc 指令打开 bash.bashrc 文件,在末尾增加内容: export ARCH=arm export CROSS_COMPILE=arm-xilinx-linux-gnueabi- export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH 并运行 source /etc/bash.bashrc 指令使设置立即生效。通过 echo $PATH 指令可以看到我们刚才设置 的路径 arm-xilinx-linux-gnueabi-gcc -v。如果可以打印出交叉编译器的版本信息,说明设置成功了。还可 以在终端中输入 arm-xilinx,按下 TAB 键,看看有没有东西出来:arm-xilinx-linux-gnueabi-。 5)测试交叉编译环境 找个地方新建一个 hello.c 文件,用 gedit 编辑,代码如下: #include int main(void) { } printf("Hello ZedBoard!\n"); return 0; 在 C 文件所在目录下,在终端输入 arm-xilinx-linux-gnueabi-gcc hello.c,然后将生成的 a.out 文 件拷到 U 盘上,插到 ZedBoard 搭 USB OTG 上。用 micro USB 线把 ZedBoard 的 UART 口连到电脑 USB。板子上电后,打开串口调试工具(如 SecureCRT),等板子自带系统启动之后,(如果未出现出 现 zynq>,回车即可),在串口工具中输入: mount /dev/sda1 /mnt/ /mnt/a.out 将看到如下结果: - 2 -
图 1 测试交叉编译环境 (2)编译 U-BOOT 在安装好的“全家桶”中,把 u-boot 拷贝出来,依次在终端中输入 cd u-boot 和 make zynq_zed_config 配置 u-boot,最后输入命令 make,编译 u-boot,成功后出现 “configuration written to .config”的提示信息。 在 u-boot 目录下可以看到新生成的文件 u-boot。将文件 u-boot 添加后缀.elf(或通过命 mv ./u- boot ./u-boot.elf)并保存好。生成的 u-boot.elf 可用于生成 BOOT.BIN。 【注意】为了后续生成 uImage 文件,cd 到 U-BOOT 源码目录下的 tools 目录下,执行 cp mkimage /usr/local/bin 将生 成 uImage 的工具 mkimage 拷贝到/usr/local/bin 目录下。 (3)编译 Linux 内核源码 从安装好的“全家桶”中,把 linux 源码拷出来。 cd 进源码目录。输入 make ARCH=arm xilinx_zynq_defconfig 以配置内核,成功后将看到以下信 息,如图 2 所示: 图 2 配置内核成功 配置成功后,输入 make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage 以编译内核(中间的 UIMAGE_LOADADDR=0x8000 必须加上,不然生成的 uImage 不能正常启动)。 内核编译完毕后,可在源码目录的/arch/arm/boot/子目录下找到 uImage 文件并自行保存好。如果找 不到,将整个源码目录删除,重新将源码拷出来,重新编译(重新编译前先 cd 出源码目录,再重新 cd 入源码目录)。 (4)硬件环境搭建 首先,创建 zynq 工程,如图 3 所示: - 3 -
点击 next,选择 RTL Project,并勾上“Do not specify sources at this time”。继续 next,选择板 图 3 创建 zynq 工程 子,如图 4 所示: 点击左边的 Create Block Design 以新建设计,如图 5 和图 6 所示: 图 4 选择 ZedBoard - 4 -
图 5 Create Block Design 然后,点击 Add IP,如图 7 所示: 图 6 输入工程名 - 5 -
在搜索框中输入 zynq,选择结果列表里的第一个,如图 8 所示: 图 7 添加 IP 核 然后点击 Run Block Automation,在弹出的对话框中直接点 OK,得到图 9 所示的界面: 图 8 选择处理器 图 9 - 6 -
双击 ZYNQ 的模块,在弹出的对话框中,点击左边的 Clock Configuration,取消 FCLK_CLK0 前面 的勾,如图 10 所示: 然后,分别取消 TTC、QSPI、32b GP AXI Master Ports,如图 11 所示: 图 10 - 7 -
取消办法(以 TTC 为例):图 11 中点击 TTC,取消图 12 中 Timer0 前面的勾: 图 11 取消 TTC、QSPI、32b GP AXI Master Ports - 8 -
分享到:
收藏