zynq事始

冬休み中はひまなのでzynqで遊ぶ。

準備

  • vivadoのインストール
  • digilentから情報の取得

LEDチカチカ

とりあえず、ざっくりとプロジェクトを作成
下記から、zybo用のzynqインポートファイルをダウンロード
http://digilentinc.com/Data/Products/ZYBO/ZYBO_def.zip
axi-gpioを配置してzynqと結ぶ。
f:id:ippei-r:20141230122246p:plain

vivadoから「file→launch_SDK」でSDKを起動
xparameters.hを確認し、GPIOのベースアドレスを調べる。

/* Definitions for driver GPIO */
#define XPAR_XGPIO_NUM_INSTANCES 1

/* Definitions for peripheral AXI_GPIO_0 */
#define XPAR_AXI_GPIO_0_BASEADDR 0x41200000
#define XPAR_AXI_GPIO_0_HIGHADDR 0x4120FFFF
#define XPAR_AXI_GPIO_0_DEVICE_ID 0
#define XPAR_AXI_GPIO_0_INTERRUPT_PRESENT 0
#define XPAR_AXI_GPIO_0_IS_DUAL 1

とりあえず適当にLチカプログラムを作成

/*
 * led_flash.c
 *
 *  Created on: 2014/12/30
 *      Author: ippei
 */

#include <stdio.h>
#include "xil_types.h"
#include "xparameters.h"
#include "xil_io.h"
#include "xil_exception.h"
#include "xscugic.h"

int main()
{
	volatile int i = 0;
	Xil_Out32((u32)(XPAR_AXI_GPIO_0_BASEADDR+4),0x00000000);
	while(1) {
		Xil_Out32((u32)(XPAR_AXI_GPIO_0_BASEADDR),0x00000004);
		for(i=0;i<0xFFFFFFFF;i++);
		Xil_Out32((u32)(XPAR_AXI_GPIO_0_BASEADDR),0x00000000);
		for(i=0;i<0xFFFFFFFF;i++);

	}

}

んでプログラムダウンロードしたらエラー
とりあえず調べます

sdkデバッグ設定

どうやら、ps7_init.tclを読み込ませて、Run ps7_initとRun ps7_post_configにチェックを入れて初期化をしなければならないみたい。
f:id:ippei-r:20141230215107p:plain
とりあえず、できた。