第二周

经过将近两个星期的摸索,对zedboard板的工作相对了解了一些些,Vivavo  这个设计工具使用起来相对于,ISE 来说会简单一些,方便一些。大笑进入正题。

使用到的工具:vivado 2013.4 +SDK

一)、LED流水灯 ,IP 核的调用(跟着书上P97页)

1)打开VIvado 2013.4 ,根据向导创建新的工程(注意:确保Create project subdirectory勾上),next

2)选择RTL,确保不能勾Do not specify sources.....,next

3)一路默认,选择板型号。。。finish。

4)点击左边IP Integrator -> Create Block Design  。这个就有点像quartus II 里面的原理图设计,在Diagram 里面空白的地方就可以添加现有的IP核进行设计。(具体设计步骤见书本)

5)拉完IP核器件,连好线,在Sourcs -> 下面工程名字 右击 Generat Out....,再右击生成顶层文件Create HDL Wrapper...

6)点击Generate Bitstream -> yes,进行有点像编译生成*.bit 的文件。这个过程有点久,我电脑要10多分钟.弹出Bitstream Generation successfully completed。表示成功了,点ok,然后  Export to SDK ,就可以进行C语言编程了。下面是源程序 《这个是加入了PWM IP核的,流水灯程序被改了下》

#include <stdio.h>
#include"platform.h"
<span style="color:#ff0000;">#include"axi_pwm.h"</span>
#include"xparameters.h"
#include"xgpio.h"
#include"xil_printf.h"
#include"xil_cache.h"
#define GPIO_BITWIDTH 8 
#define GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID//device id
#define LED_DELAY 10000000/* times delay*/
#define LED_MAX_BLINK 0x1 
#define LED_CHANNEL 1/* GPIO channel*/
#define printf xil_printf /* A smaller footprint printf */
<span style="color:#ff0000;">#define PWM_BASEADDR XPAR_AXI_PWM_0_S00_AXI_BASEADDR</span>
XGpio Gpio; 
XGpio GpioOutput;
int GpioMarquee (u16 DeviceId, u32 GpioWidth)
{
	volatile int Delay;
	u32 LedBit;
	u32 LedLoop;
	int Status;
	Status = XGpio_Initialize(&GpioOutput, DeviceId);
	 if (Status != XST_SUCCESS) {
		 return XST_FAILURE;
	 }
	 //输出口
	 XGpio_SetDataDirection(&GpioOutput, LED_CHANNEL, 0x0);
	 // 输出低电平
	 XGpio_DiscreteWrite(&GpioOutput, LED_CHANNEL, 0x0);
	 for (LedBit = 0x0; LedBit < GpioWidth; LedBit++) {
		 for (LedLoop = 0; LedLoop < LED_MAX_BLINK; LedLoop++) {
			 //Set the GPIO Output to High
			 XGpio_DiscreteWrite(&GpioOutput, LED_CHANNEL, 1 << LedBit);
			 //Wait a small amount of time so the LED is visible
			 for (Delay = 0; Delay < LED_DELAY; Delay++);
			 //Clear the GPIO Output
			 XGpio_DiscreteClear(&GpioOutput, LED_CHANNEL, 1 << LedBit);
			 // Wait a small amount of time so the LED is visible
			 for (Delay = 0; Delay < LED_DELAY; Delay++);
		 }
	 }
	 return XST_SUCCESS;
}
int main(void)
{//Application start
	/* loop forever*/
	init_platform();
	print("HELLO WORD\n\r");
<span style="color:#ff0000;">	AXI_PWM_mWriteReg(PWM_BASEADDR,AXI_PWM_S00_AXI_SLV_REG0_OFFSET,10);
	AXI_PWM_mWriteReg(PWM_BASEADDR,AXI_PWM_S00_AXI_SLV_REG1_OFFSET,0x80000000+5);</span>
	u32 status;
	while(1){

		status = GpioMarquee (GPIO_DEVICE_ID,GPIO_BITWIDTH);
		if (status == 0)
			printf("SUCESS!.\r\n");
		else
			printf("FAILED.\r\n");
	}
	return XST_SUCCESS;
}


二)、Vivado 硬件调试debug(书P115页)按书本上做就OK了   中间好象有个错误 ,但是好像没影响到使用。

三)、建立自己的IP核 PWM输出(P170)

1)打开VIOADO2013.4 新建工程,选择RTL,注意勾Do not specify sources..... 跟上面不一样,next,选好板型号,finish

2)跟着书走,一直到P178页 IP Ports 注意看里面是否有pwm_out   如果没有要要更新顶层文件,否则到后面会出错。

3)新建完IP 然后基本跟添加 LED 模块一样,添加PWM进来,EXPORT SDK进行编程,可以修改 周期,占空比。。。

四)、介绍下对zedboard板跑Linux系统的自己的一些理解。

zedboard 跑Linux系统是通过从SD卡启动,调用SD中的文件(ZImage,BOOT.BIN,devicetree_ramdisk.dtb,ramdisk8M.image.gz)进行启动的。但这是FPGA,不是完全的arm,所以跟ARM还是有点区别的。因为要进行FPGA先关硬件的配置,所以就要用到了之前在VIVADO 生成的那个*.bit的文件,来配置FPGA,所以SD卡中的BOOT.BIN 文件就是由(u-boot.elf+****.bit+FSBL.elf)三个文件合成的,包涵了启动的引导信息,和FPGA硬件的配置信息。然后Zimage 这个文件就是编译Linux内核生成的。devicetree_ramdisk.dtb,是设备树,具体什么作用还不是很了解。然后是ramdisk8M.image.gz 文件系统,通过改这个文件已成功更改了启动时OLED上显示的logo,添加自己的文件夹。。。。还有一个疑问就是,zedboard启动了Linux系统,通过串口终端 ,进行文件夹的创建啊,文件修改啊,好像在重启以后就会消失,这可以通过改ramdisk8M.image.gz 文件解决,但是很麻烦不知道还有没别的简单的方法。


五)文件系统的创键ramdisk8M.image.gz

这是根据一步一步学ZedBoard & Zynq(七):制作ZedBoard上linux根文件系统(ramdisk),这篇文档做的。

目前碰到的问题是,SD中的4个文件中BOOT.BIN自己制作的话,Linux系统启动不起来。个人分析是在制作*.bit 文件时,硬件信息没配置全,导致的。现在使用官方给的BOOT.BIN文件和自己的文件系统是可以使用的,不知道会不会出什么问题。待下周继续。



下周的任务目前计划是,结合那块AD板子,配置好相关的启动文件SD卡中的4个文件。。。。还有写Linux上的第一个驱动点灯。。由于还没自己写过Linux驱动,所以可能这里就要花很多时间在里面。。。如果这个也做好,尽量看能不能让AD芯片工作起来。。。。




这就是这周总结2014年9月26日————桥







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值