玩转赛灵思Zedboard开发板(6):如何在Zedboard上运行linux下的应用程序?
:ZedBoard开发板上的Zynq是一个ARM PS(processing system, 双核A9 + 存储管理 + 外设)+ PL(programable Logic) 结构,如果不使用PL,zynq的开发和普通的ARM 开发一样。不同的是ARM PS是可配置,因而硬件信息是不固定的。这也是zynq灵活性的一个表现。电子发烧友网编辑现为读者整合《玩转赛灵思Zedboard开发板》系列文章, 其中包括在ZedBoard开发板上的一些应用实例。其内容包括:
玩转赛灵思Zedboard开发板(1):ZedBoard详解
玩转赛灵思Zedboard开发板(2):ZedBoard最简单的测试工程
玩转赛灵思Zedboard开发板(3):基于Zynq PL的流水灯
玩转赛灵思Zedboard开发板(4):如何使用自带外设IP让ARM PS访问FPGA?
玩转赛灵思Zedboard开发板(5):基于AXI Lite 总线的从设备IP设计
从本小节开始,讲着重介绍Zedboard上的嵌入式linux应用,包括使用SDK设计最简单的linux应用程序、linux交叉编译环境搭建、设备驱动编写等内容。本小节使用的linux系统是Digilent官方提供的OOB设计,它是Digilent官网给出的一个完整的、Zedboard可运行的linux 系统,包含了Zedboard上的几个重要的设备驱动如串口、USB、以太网、OLED、HDMI等。当linux在Zedboard上运行起来后,Zedboard就是一个小型的嵌入式系统,使用SDK及Xilinx ARM Linux工具链编译生成的可执行文件可以在这个系统执行。
硬件平台:Digilent ZedBoard;开发环境:Windows XP 32 bit;软件: SDK 14.2。
一、获取Zedboard可运行的linux
Digilent官网给出Zedboard的可运行linux设计ZedBoard_OOB_Design包,可从http://www.digilentinc.com/Data/Documents/Other/ZedBoard_OOB_Design.zip获取,下载后解压,可以看到包的结构和内容:
boot_image目录:
-- system.bit – 配置FPGA的bit文件
-- u-boot.elf – 引导linux需要的Second-Stage boot loader
-- zynq_fsbl.elf – 配置ARM PS系统的First-Stage boot loader(FSBL)
doc目录:
-- README.txt – 说明文件
hw目录:
-- EDK 14.1版本的XPS工程,用来生成硬件文件和bit文件
linux目录:
-- devicetree_ramdisk.dts – 设备树源代码
-- .config – Linux内核配置文件,用来生成zImage
sd_image目录:
-- BOOT.BIN – 使用boot_images中的三个文件生成的Zynq配置文件
-- devicetree_ramdisk.dtb – 编译后的设备树文件
-- ramdisk8M.image.gz – 编译后的文件系统
-- README – 介绍如何运行OOB设计的说明文档
-- zImage – 编译后的内核
sw目录:
--硬件配置
--FSBL源代码
其中sd_image目录中包含了ZedBoard上能够运行linux的所有文件。将SD卡格式化为Fat32,把sd_image目录文件拷贝到SD 卡根目录下;然后将JP7~JP11设置为SD卡启动模式,将JP2短路,JP3断开,这样可以下一步我们可以把U盘作为USB 从设备挂载到Zedboard上。
图 Zedboard的连接和短路块设置
上电后,等待ARM PS的配置、FPGA的配置(蓝色LED DONE 亮起),之后开始引导Linux系统了。可以从超级终端上看到一系列的引导信息:
1 U-Boot 2012.04.01-00297-gc319bf9-dirty (Sep 13 2012 - 09:30:49)
2
3 DRAM: 512 MiB
4 WARNING: Caches not enabled
5 MMC: SDHCI: 0
6 Using default environment
7
8 In: serial
9 Out: serial
10 Err: serial
11 Net: zynq_gemHit any key to stop autoboot: 0
12 Copying Linux from SD to RAM.。。
13 Device: SDHCI
14 Manufacturer ID: 1b
15 OEM: 534d
16 Name: 00000
17 Tran Speed: 25000000
18 Rd Block Len: 512
19 SD version 1.0
20 High Capacity: Yes
21 Capacity: 3.7 GiB
22 Bus Width: 1-bit
23 reading zImage
24
25 2479640 bytes read
26 reading devicetree_ramdisk.dtb
27
28 5817 bytes read
29 reading ramdisk8M.image.gz
30
31 3694108 bytes read
32 ## Starting application at 0x00008000 。。。
33 Uncompressing Linux.。。 done, booting the kernel.
34 [ 0.000000] Booting Linux on physical CPU 0
35 [ 0.000000] Linux version 3.3.0-digilent-12.07-zed-beta (tinghui.wang@DIGILENT_LINUX) (gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-50) )