zynqsd的读写数据_Zedboard使用评测+HDMI显示与SD读取

上次搭好了硬件平台,后面立马开始了软件方面的调试。本文引用地址:http://www.eepw.com.cn/article/193059.htm

因为以前做的都是些用HDL做过显示,比如VGA,以及最近用FPGA做的LVDS屏的显示。其工作原理的就是讲数据写入到显存(DRAM)中,然后再按照行场模式或者是使能DE模式读出DRAM中的数据,按照屏的显示时序,发送给屏完成显示。

具体的功能框图如下:

ZYNQ作为整个系统的控制核心,提供HDMI的显示数据,以及时读写显存的控制,以及DDC的数据产生。PL部分主要是ADV7511的控制,还有将24bit的RGB数据转换为16bit的YCBCR422的数据发送给ADV7511

EDK中的数据到显存的函数如下:

#define img_length 2073600 //1920*1080

void ddr_video_wr(u32 write_addr){

u32 n;

u32 dcnt;

dcnt = 0;

xil_printf(DDR write start:nr);

for (n=0; n img_length; n++){

Xil_Out32((write_addr+(dcnt*4)),write_data); //RGB

dcnt = dcnt + 1;

}

Xil_DCacheFlush();

xil_printf(DDR write: completed (total %d)nr, dcnt);

}

说明:write_data的数据位十六进制的RGB数据的组合。整个一幅图片的RGB值的大小为1920*1080的数据。

因为此时没有存取数据的地方,所以测试的图片显示的时候,将write_data 设定为固定值,让全篇显示红色的背景。

当时的设想是从SD卡中国读取过数据,毕竟以前用HDL语言做过读取SD的数据,实际上就是把他单过flah来操作。

于是在zynq_fsbl/src/下看到了关于SD卡两个文件,sd.c以及sd.h

在SD.C中看到了能使用的3个函数,如下:

1.InitSD(char *filename) 功能是读取sd中的指定的文件

2.u32 SDAccess( u32 SourceAddress,u32 DestinationAddress,u32 LengthWords); 功能就是讲原地的数据,复制一定长度的数据到目的地址。算作读数据。

3.void ReleaseSD(void); 功能就是算作释放掉SD卡操作完成。

于是就想用来试试看,新建了一个功能,当然还是用14.2.

程序如下:

#include stdio.h>

#include platform.h

#include sd.h

#include xbasic_types.h

void xil_printf( const char *ctrl1, ...);

int main(){

u32 data;

init_platform();

InitSD(“123.bin”);

xil_printf(@@read 123.bin success!@@@);

cleanup_platform();

return(0);

};

功能就是读取SD卡文件中的123.bin的文件。记过一编译就开始缺少文件,然后我就在电脑里找啊找,找了7.8文件的.h

到目前为止还剩下ff.h下的integer.h还没找到。

我想既然能从SD卡boot启动,应该可以自己操作SD卡,可是遇到这文件找不到,一切都没辙了。上次AET提醒过14.2容易少静态库,这次编译的时候特地选上所有standalone。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值