ZedBoard

xilinx-arm-linux交叉编译链 安装总结

首先,说明为什么要装xilinx-arm-linux编译链,我使用的是Xilinx的Zedboard开发。

在Zynq上运行Linux后,如果还要对PS操作,有两个办法:

(1)、在Windows系统上面,使用SDK新建C Project SDK自带编译环境,编译后自动产生elf文件。使用U盘将elf拷贝到Zedboard,运行即可。这个方法今后会详细说明。

(2)、在Linux系统上面,使用xilinx-arm-linux交叉编译链,编译C文件,将编译后的文件拷贝到Zedboard即可。今天主要讲这一部分,安装步骤如下:
1.在linux系统根目录下新建一个目录,mkdir /zedboard
2.将下载的xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin拷贝到目录下
3.更改 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin权限,sudo chmod 777 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
4.安装“./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin”,若出现下面错误执行如图所示命令

ZYNQ-ZedBoard USB HOST问题二探

上一次讲到USB不启动问题是由与Vivado工程中的EMIO引脚未正确配置造成的,那么软件上又是如何使用这个引脚的呢?

首先,Xilinx提供的Linux 开发包中已经包含了gpio的驱动和sysfs进行配套,并在设备树文件中对OTG-RESETN进行了初始化配置和声明。

其次,在实际使用中,USB-OTG的驱动向系统申请了OTG-RESETN的使用权,用来对PHY芯片完成配置。

启动后,查看sysfs中GPIO的相关状态信息:
root@linaro-ubuntu-desktop:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 906-1023, parent: platform/e000a000.gpio, zynq_gpio:
gpio-991 ( |ulpi resetb ) out hi
root@linaro-ubuntu-desktop:~#

991号gpio正被使用,标签为“ulpi resetb”,从字面意思可以知道,它与USB-PHY和复位信号有一定关系。该gpio为输出状态,电平为高。

USB-PHY芯片是低复位,此时是正常工作的。

ZYNQ-ZedBoard USB HOST问题初探

在用Vivado (2015.4.2)在ZedBoard上搭建如图所示的PS最小系统时,USB-OTG无法正常使用且在启动LOG中报错。

经过与原厂的各个启动文件进行对比替换,最后确定是Vivado工程生成的bit流出了问题。也就是说建立的工程不对。

USB 启动错误提示信息:外置PHY芯片初始化失败,载入模块失败。
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic

Zedboard移植QT

参照《嵌入式系统软硬件协同设计实战指南》这本书第十四章 系统级设计案例的14.2.7节 在ZedBoard上运行QT程序。

一、关于QT在PC Ubuntu上的安装与使用
一个简单的例子可以参照 懒兔子 ZedBoard学习手记(八) 更大的目标!在Linux下开发图形用户界面,建立一个简单的工程,编译后生成的可执行文件效果如下图:

工程文件夹下的源文件如下:

作为Zedboard移植的测试工程

二、Zedboard移植QT

Zedboard安装与移植OpenCV

参照《嵌入式系统软硬件协同设计实战指南》这本书第十三章13.5 OpenCV移植与sanwan的一篇博客中的相关内容;

主要分为两个大部分,OpenCV在PC Ubuntu上的安装和OpenCV在Zedboard上的移植。

一、OpenCV在PC Ubuntu上的安装

采用的是Ubuntu 14.04系统,在OpenCV官网下载的源码版本为2.3.1

1. 安装第三方库

获取su权限进行操作。安装第三方库,命令如下:
apt-get install build-essential
apt-get install cmake cmake-gui
apt-get install libgtk2.0-dev
apt-get install libavcodec-dev libavformat-dev libswscale-dev
apt-get install libdc1394-22-dev
apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev

2. 新建安装文件夹

将OpenCV解压到自建目录/home/linux/OpenCV-2.3.1下,新建目标build。这是个临时文件夹,安装完成后可以删除。

进入build目录。进行命令配置:

Zedboard使用Linaro Ubuntu图形界面

参照《嵌入式系统软硬件协同设计实战指南》这本书第一章 初试Zedboard的 1.2节 Linaro Ubuntu动手玩。

1. SD卡分区

采用的是Kingston SD4/16GB卡,在Ubuntu14.04系统下进行操作。使用Ubuntu自带硬盘工具(Disk Unity)将SD卡格式化后,分为两个分区:FAT格式分区(500M)和EXT4分区(15GB)。

2. 文件拷贝

首先将SD卡挂载到Ubuntu的某个目录下,此处和书上一致:
sudo mkdir -p /tmp/sd_ext4
sudo mount /dev/ /tmp/sd_ext4

对于不清楚SD卡位置的可以在Disk Unity中查看,或通过sudo fdisk -l命令查看,样例输出如下:
Disk /dev/sdb: 4007 MB, 4007657472 bytes
255 heads, 63 sectors/track, 487 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

zedboard平台结构(PS、PL、硬件互联)

zedboard可以将逻辑资源和软件分别映射到PS和PL中,这样可以实现独一无二和差异换的系统功能,主要分为两大部分,处理系统和可编程逻辑。以及二者之间的互联特性。这篇笔记主要记录zedboard的大体架构。

1. 处理系统(PS)
应用处理单元(APU)
存储器接口
I/O外设,包括静态存储器和Flash存储器接口,可以通过共享一个54引脚的多路复用io(MIO)
互联,也可以扩展访问PL中的IO

2. 可编程逻辑(PL)
PS和PL使用了大量的借口和信号可以满足几乎所有的连接。

系统的启动

zynq的启动过程包含多个阶段,启动过程至少包含启动rom和第一级的启动引导代码( first-stage boot loader FSBL ),t同时包含可启动的rom,这个rom用户不可修改,完成了启动rom之后,然后执行FSLB .复位之后,zynq可以自动的从外部的引导设备中启动设备,根据需要,用户可以配置zynq的PS和PL,可以使用jtag借口,用于启动时的调试。

在使用过程中,可以选择性的关闭PL一侧的电源,以降低功耗,当然也可以降低PS内的时钟。

处理系统的PS特性
1. 应用处理单元(APU)

搭建Zedboard交叉编译环境

关于搭建zedboard的编译环境这个话题我也有点无奈了,开发的过程中遇到电脑出故障,虚拟机损坏等问题,为了避免再次繁琐的去搜索别人的配置命令,我还是自己写一个吧,留作笔记。

配置环境:

vm虚拟机:VMware Workstation 12 Player

Ubuntu操作系统:ubuntu-16.04.1-desktop-amd64.iso

1.第一步:虚拟机上安装Ubuntu 64bit操作系统

这一步我们就省略了,比较都是下一步,下一步就可以完成的。

2.第二步:安装编译器依赖库

在Xilinx Wiki网站(http://wiki.xilinx.com/zynq-tools)下载Sourcery CodeBench,由于这个环境是为32-bit系统设计的,64-bit系统的用户需要先安装部分32-bit库,在Ubuntu终端中进入root权限,输入下面命令:
sudo su
apt-get install ia32-libs ia32-libs-gtk

但有可能会出错,根据提示信息输入下面的命令:
apt-get install lib32ncurses5 lib32z1

安装完成后,接着输入命令:
dpkg-reconfigure dash

ZedBoard之中断interrupt详解

Interrupt中断

概述:
1. Zynq的中断类型有:
软件中断(Software Generated Interrupt, SGI,中断号0-15)(16–26 reserved)
私有外设中断(Private Peripheral Interrupt, PPI,中断号27-31),
共享外设中断(Shared Peripheral Interrupt, SPI,中断号32-95).
2. 私有外设中断(PPI):每个CPU都有一组PPI,包括全局定时器、私有看门狗定时器、私有定时器和来自PL的FIQ/IRQ.
3. 软件中断(SGI)被路由到一个或者两个CPU上,通过写ICDSGIR寄存器产生SGI.
4. 共享外设中断(SPI)由PS和PL上的各种I/O控制器和存储器控制器产生,这些中断信号被路由的CPU.

作者:Sleibso,编译:Stark ‎

软件定义无线电(Software Defined Radio, SDR)是一种现代无线电广播通信技术,它采用软件定义的无线通信协议而非“纯硬件电路”实现各种通信和信号采集功能,这种方式打破了有史以来设备的通信功能的实现只能依赖于硬件发展的格局。与模拟电路相比数字电路具有更多的优势,能够提供更好的性能比如灵敏度、动态范围、处理速度和精确度等,现在半导体的发展已经突破了摩尔定律,更多性能强大的半导体器件涌现,我们只需要相对较少的操作就可以实现非常精确的数字信号采集和处理。

Panoradio是一款基于Zedboard和AD9467 ADC器件的SDR设备,具有最大250MHz的采样带宽,0—100MHZ还支持信号直接采样接收,该设备移植了Linux嵌入式操作系统,提供了全面的解调软件事例。此外Panoradio是一项开源工程,相关设计资料提供下载(下载地址)。

同步内容