赛灵思zynq 读取qspi数据怎么使用8-bit parallel qspi 配置

博客访问: 275558
博文数量: 172
博客积分: 0
博客等级: 民兵
技术积分: 1752
注册时间:
相信自己,只有不想做的,没有做不到的。
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
1 SPI闪存& 配置
参考文档:官方文档
1.1通读官方文档
把官方文档读几遍,熟悉官网上的运行Linux 的启动流程,官网上只是介绍了制作可启动的Linux的图像QSPI的操作步骤没有用到fpga 的bitstream ,这里我们要把bitstream 加入到生成的qspi_image.bin 中,启动linux 操作系统,运行应用程序。
官网下载参考PDF:ug873-的的Zynq-ctt.pdf
1.2生成qspi_image.bin
使用SDK中的赛灵思工具--->创建的的Zynq启动映像
点击创建??图像& 会生成的的u-boot.bin U-boot.mcs bootimage.bif 。
这里把的的u-boot.bin 修改为qspi_image.bin。
这里注意的什么。文件个结果排列顺序及偏移。
这里的偏移量是qspi_image.bin 的偏移地址,当通过JTAG 下载到SPI闪存后,这个qspi_image.bin 在SPI闪光地址为0xFCC00000 ,ramdisk8M.image.gz 在SPI闪存地址为0xFCC20000 。
打开的uboot的源码目录下包含/ CONFIGS / zynq_zed.h
“qspiboot=echo Copying Linux from QSPI flash to RAM...; \
&&&&&&&&&&&&&&&&CP 0xFCx8000 $ {kernel_size}; \
&&&&&&&&&&&&&&&&CP 0xFCC0; \
& & & & & & & &&echo Copying ramdisk...; \
&&&&&&&&&&&&&&&&CP 0xFCC000 $ {ramdisk_size}; \
&&&&&&&&&&&&&&&&go 0x8000 \ 0“\
驱动开机会把SPI闪存的zImage等( 0xFC700000),devicetree.dtb,( 0xFCC00000),radisk8M.image.gz(0xFCC20000),拷贝到RAM 中,在去为0x8000& 启动内核。
注意生成qspimage.bin 要与引导搬移的偏移量要对应。
1.3下载qspi_image.bin
首先把zedboard 启动方式的跳线J7 - J11 全部接地,上电。
这里使用到的工具为XMD控制台。
打开SDK 的赛灵思工具---> XMD控制台。
会在SDK中的右边出现一栏:
红色部分是打印信息的输出窗口。
蓝色部分是命令行窗口。
xmd% connect arm hw / /&连接硬件&
xmd% source ps7_init.tcl / /&初始化
xmd% ps7_init&&&&&&&&&&&&&/ /&下载qspi_image.bin&到RAM&中。
xmd% dow -data qspi_image.bin 0x / /&下载的U-boot.elf&到RAM中&
xmd% dow u-boot.elf / /&启动的uboot的&
使用启动的命令把0x8000000 中的qspi_image.bin& 搬移到0 地址,大小为到到0x00FFFFFF 。
pele-boot> sf probe 0 0 0
pele-boot> sf erase 0 0x
pele-boot> sf write 0x 0x00FFFFFF
这样就把qspi_image.bin 烧写到SPI闪存中了。
1.4 SPI闪存启动的Linux的系统
在断电,把zedboard 的启动方式的跳线的J10 接3.3V ,即SPI 启动。
SPI 启动信息如下:
从QSPI闪光的Linux的拷贝到RAM中...
复制RAMDISK ...
##启动应用程序为0x ...
解压缩的Linux的...完成,启动内核。
[0.000000]启动的Linux上的物理CPU 0
[0.000000] Linux下的版本3.6.0-Digilent公司的-13.01(根@郭-VM)(4.6.1的gcc版本(的的Sourcery为Codebench完成精简版))#8 SMP PREEMPT周二4月15日15: 26:05 CST 2014
[0.000000] CPU:用于ARMv7的处理器[413fc090]修订0(ARMv7体系的),CR = 18c5387d
[0.000000] CPU:PIPT / VIPT nonaliasing数据缓存,VIPT走样指令缓存
[0.000000]机:赛灵思的的Zynq平台,型号:赛灵思的的Zynq ZED
[0.000000]内存政策:ECC禁用,数据缓存writealloc
[0.000000] PERCPU:嵌入式7页/ CPU @ c76 r u32768
[0.000000]内置1 zonelists中区秩序,调动分组上。总页数:130048
[0.000000]内核命令行:控制台= ttyPS0,115200根=的的/ dev / ram的的RW的的initrd =从从0xM的的init = / init的的earlyprintk rootwait devtmpfs.mount = 1
[0.000000] PID哈希表项:2048(顺序:1,8192字节)
[0.000000]的dentry的缓存哈希表项:65536(顺序:6,262144字节)
[0.000000]索引节点高速缓存哈希表项:32768(顺序为:5,131072字节)
[0.000000]内存:512MB = 512MB总
[0.000000]内存:6296k可用,17992k保留,0K HIGHMEM
[0.000000]虚拟内核内存布局:
[0.000000]载体:为0xFFFF0000地址 -
0xffff1000(4 KB)
[0.000000] fixmap:0xfff00000
0xfffe KB)
[0.000000] vmalloc的的:0xe0800000
0xfd6 MB)
[0.000000] LOWMEM:为为0xc0000000
[0.000000] pkmap:0xbfe00000
- 为为0xc MB)
[0.000000]模块:0xbf000000
0xbfe00000(14 MB)
[0.000000]文字:0xc0008000的的 -
0xc78 KB)
[0.000000] INIT:0xc049a000
0xc04bfb40(151 KB)
[0.000000]数据:0xc04c0000
0xc04f9fa0(232 KB)
[0.000000] BSS:0xc04f9fc4
[0.000000]抢占层次RCU实现。
[0.000000]转储堆栈任务阻断RCU-抢占大奖赛。
[0.000000] RCU限制的CPU从NR_CPUS = 4?nr_cpu_ids = 2。
[0.000000] NR_IRQS:512
[0.000000]的的Zynq时钟初始化
[0.000000] XLNX,PS7-TTC-1.00.a#0在0xe0800000,IRQ = 43
[0.000000] sched_clock:32位在100赫兹,分辨率ns,每包ms
[0.000000]控制台:颜色哑设备80x30
[0.090000]校准延迟循环... 1332.01 bogoMIPS的的(LPJ = 6660096)
[0.090000] PID_MAX:默认值:32768最低:301
[0.090000]摩缓存哈希表中的条目:512
[0.090000] CPU:测试写入缓冲区的一致性:确定
[0.090000] CPU0:螺纹-1,CPU 0,插槽0,mpidr
[0.090000]汉王perfevents:用的ARMv7体系的的Cortex-A9 PMU驱动器,7计数器可启用
[0.090000]设置静态身份映射0x346e08
[0.090000]启用L310高速缓存控制器
[0.090000] l2x0:8路,的的cache_id 0x,AUX_CTRL 0x,缓存大小:524288乙
[0.130000]地图SLCR寄存器
[0.130000] CPU1:引导辅助处理器
[0.220000] CPU1:螺纹-1,CPU 1,插槽0,mpidr
[0.220000]带来了2个CPU
[0.220000] SMP:共有2个处理器激活(2664.03 bogoMIPS的的)。
[0.220000] devtmpfs:初始化
[0.220000]网:注册协议族16
[0.220000] DMA:预分配256 KB增入池原子相干分配
[0.230000]注册平台设备'PL330'ID 0
[0.230000]注册平台设备的手臂,PMU'ID 0
[0.230000]注册平台设备“的的Zynq-DVFS'ID 0
[0.230000]&
[0.230000]###############################################
[0.230000]##
[0.230000]#板ZED INIT#
[0.230000]##
[0.230000]###############################################
[0.230000]&
[0.230000] HW-断点:找到5(+1保留)断点和1个观察点寄存器。
[0.230000] HW-断点:最大观察点大小为4个字节。
[0.250000] xslcr xslcr.0:在0xF8000000映射到0xF8000000
[0.260000]生物:打造平板 0
[0.260000] SCSI子系统初始化
[0.270000] usbcore:注册新接口驱动程序USBFS
[0.270000] usbcore:注册新接口驱动程序枢纽
[0.270000] usbcore:注册新的设备驱动程序的USB
[0.270000]高级的Linux声音架构驱动程序版本1.0.25。
[0.270000] cfg80211:调用档案室以更新全球监管领域
[0.270000]切换至clocksource xttcpss_timer1
[0.280000]网:注册协议族2
[0.280000]建立的TCP哈希表项:16384(顺序为:5,131072字节)
[0.280000] TCP绑定的哈希表项:16384(顺序为:5,131072字节)
[0.280000] TCP:配置哈希表(设立16384绑定16384)
[0.280000] TCP:雷诺注册
[0.280000] UDP的哈希表项:256(顺序:1,8192字节)
[0.280000] UDP的精简版的哈希表项:256(顺序:1,8192字节)
[0.280000]网:注册协议族1
[0.280000]试图解开根文件系统的形象的initramfs中...
[0.280000]根文件系统的形象是不是initramfs中的(无CPIO的魔法); 看起来像一个initrd的
[0.320000]释放的initrd的内存:8192K
[0.320000] PL330开发的0探头成功
[0.320000]参数msgmni时已被设置为1004
[0.320000] IO调度NOOP注册
[0.320000]注册的IO调度的最后期限
[0.320000] IO调度CFQ注册(默认)
[0.320000] e0001000.serial:ttyPS0在MMIO 0xe0001000(IRQ = 82)是xuartps
[0.810000]控制台[ttyPS0]启用
[0.820000] xdevcfg f8007000.ps7-DEV-CFG:ioremap的的f8007000到e084e000大小为1000
[0.820000] [DRM]初始化DRM 1.1.0
[0.840000] BRD:模块加载
[0.850000]循环:模块加载
[0.850000] xqspips e000d000.ps7-QSPI:大师是unqueued,这已被弃用
[0.860000] xqspips e000d000.ps7-QSPI:在0xE000D000映射到0xE0850000,IRQ = 51
[0.870000] libphy:XEMACPS MII总线:探测
[0.870000] xemacps e000b000.ps7以太网:PDEV-> ID -1,baseaddr 0xe000b000,IRQ 54
[0.880000] ehci_hcd:USB 2.0'增强'主机控制器(EHCI)驱动程序
[0.890000] usb_hcd_xusbps_probe:无OTG分配!
[0.890000] usb_hcd_xusbps_probe:OTG现在分配!
[0.900000] xusbps-EHCI xusbps-ehci.0:赛灵思PS的USB EHCI主控制器
[0.910000] xusbps-EHCI xusbps-ehci.0:新的USB总线的登记,分配总线号1
[0.940000] xusbps-EHCI xusbps-ehci.0:IRQ 53,IO纪念品
[0.960000] xusbps-EHCI xusbps-ehci.0:USB 2.0开始,EHCI 1.00
[0.960000] USB USB1:发现新的USB设备,idVendor = 1d6b,idProduct = 0002
[0.970000] USB USB1:新的USB设备的字符串:MFR = 3,产品= 2,序列号= 1
[0.980000] USB USB1:产品:赛灵思PS的USB EHCI主控制器
[0.980000] USB USB1:制造商:Linux下的3.6.0-Digilent公司的-13.01 ehci_hcd
[0.990000] USB USB1:序列号:xusbps-ehci.0
[0.990000]枢纽1-0:1.0:USB集线器发现
[1.000000]枢纽1-0:1.0:检测1口
[1.000000]初始化USB大容量存储驱动程序...
[1.010000] usbcore:注册新接口驱动程序的USB存储
[1.010000] USB大容量存储支持注册。
[1.020000] MOUSEDEV:PS / 2鼠标适用于所有鼠标设备
[1.020000] sdhci:安全数字主机控制器接口驱动程序
[1.030000] sdhci:版权所有(C)皮埃尔Ossman
[1.030000] sdhci-pltfm:SDHCI平台和驱动帮手
[1.080000] MMC0:SDHCI上e0100000.ps7-SDIO [e0100000.ps7-SDIO]使用ADMA控制器
[1.090000] usbcore:注册新接口驱动程序USBHID
[1.100000] USBHID:USB HID核心驱动力
[1.110000] TCP:立方注册
[1.120000]网:注册协议族17
[1.120000] lib80211:为IEEE 802.11通用的驱动程序例程
[1.130000] VFP支持V0.3:实现者41架构3部分30变9转4
[1.130000]注册SWP / SWPB仿真处理
[1.140000]注册taskstats第1版
[1.140000]司机/ RTC / hctosys.c:无法打开RTC设备(rtc0)
[1.150000] ALSA的设备列表:
[1.150000]没有声卡发现。
[1.160000] RAMDISK:在块0找到的gzip的图像
[1.240000] MMC0:新型高速SDHC存储卡在地址AAAA
[1.250000] mmcblk0:MMC0:AAAA SU04G 3.69吉布&
[1.270000] mmcblk0:P1
[1.320000] USB 1-1:新的高速USB设备数量2使用xusbps-EHCI
[1.490000] USB 1-1:发现新的USB设备,idVendor = 0bda,idProduct = 8194
[1.490000] USB 1-1:新的USB设备的字符串:MFR = 1,商品= 2,序列号= 3
[1.500000] USB 1-1:产品:802.11n标准的网卡
[1.510000] USB 1-1:制造商:瑞昱
[1.510000] EXT4-FS(RAM0):不能因功能不兼容挂载为ext3的
[1.520000] USB 1-1:序列号:00e04c000001
[1.550000] EXT4-FS(RAM0):安装使用的ext4的子系统的ext2文件系统
[1.550000] EXT4-FS(RAM0):挂载的文件系统没有网上日记说明Select采用:(空)
[1.560000] VFS:安装根(EXT2文件系统)上的装置1:0。
[1.570000] devtmpfs:安装
[1.570000]释放初始化内存:148K
请按回车键来激活此控制台。&
这里即SPI闪存启动的linux的平台了。
阅读(4255) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。你的位置:
&& 详细内容
Zynq Qspi控制器应用笔记
热度112票&&浏览4183次
时间:日 20:35
1 Zynq Qspi控制器& & & & Zynq Qspi控制器支持三种模式:I/O模式、线性地址模式和传统SPI模式,其中线性地址模式双片选支持最大的线性地址空间为32MB,可通过PS DMA读取。1.1 线性地址模式& & & & 线性地址模式只可从Qspi Flash中读数。在配置QSPI BOOT时,BOOT ROM工作在线性地址模式,且访问时钟为ARM接入的晶振时钟,因此在选用晶振时频率不能大于Flash的最高访问时钟频率。& & & &线性地址模式下IO可以配置为单片选4bit接口、双片选8bit并行接口和双片选stacked 接口,单片器件时必须接到QSPI0上。单片QSPI Flash线性地址映射空间为0xFC00_0000~0xFCFF_FFFF,若采用两片,必须是同一生产厂家,保证协议相同,在配置为双片选8bit并行接口时,两片Flash必须要是同样容量同一厂家器件,保证访问完全同步,寻址空间为0xFC00_0000~0xFDFF_FFFF。& & & & 配置为双片选stacked 接口时,容量可以不同,但必须是相同协议的器件。但第一片器件建议使用128Mb器件,这样不会存在地址空区。线性地址模式的读操作极为简单,在确保TxFIFO和RxFIFO为空的情况下设置qspi.Config_reg[Man_start_en]和qspi.Config_reg[PCS]为0,qspi.LQSPI_CFG.[LQ_MODE]为1即可。1.2 &IO模式& & & & 在IO模式下,访问QSPI Flash的命令、地址和数据都根据SPI Flash数据手册的规定由用户软件组织写到FIFO中,控制器负责将其串行化后从总线发出。在IO模式下,可选择自动和手动两种操作模式,手动模式下又有自动片选和手动片选两种模式。自动模式由发数据转为收数据时存在一定局限,因此在实际使用中多为手动模式。& & & & &QSPI控制器提供了四个可将数据写到FIFO的TXD寄存器,如下表1所示。& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&表1 TXD寄存器寄存器数据格式功能[31:24][23:16][15:0][7:0]TXD0Data3Data2Data1Data0/CMD传输1byte命令3byte数据或4byte数据TXD1保留保留保留Data0/CMD传输1byte命令& TXD2保留保留Data1Data0/CMD传输1byte命令和1byte数据TXD3保留Data2Data1Data0/CMD传输1byte命令和2byte数据& & & & &这样就提供了丰富的选择,无论是按字写、按字节、按双字节三字节都可以,但需要注意的是在不同寄存器间切换时需要等待FIFO已经为空状态。TxFIFO和RxFIFO使用同一个门时钟,因此对于每一个字节,包括命令和地址,每从TxFIFO取出一个字节,一个自己的数据也会写入到RxFIFO中。& & & & &为了从SPI Flash读数据,软件除了写入相关的命令、地址、模式、dummy等外,还必须向TxFIFO写和读数据个数等额的Dummy数据,这样才会有控制器写RxFIFO的时钟。& & & & &需要特别注意的是,在IO模式下,控制器自动识别用户指令,在控制器使能,且片选有效的情况下写入FIFO的第一条指令被控制器认为是命令,命令总是通过数据线D0发出,命令+数据最长为4字节,也就是说在发出读写命令时,有效地址位总是3字节,只能访问16MB地址空间。& & & & &控制器自动识别含义的命令如表2所示。& & & & & & & & & & & & & & & & & &表2 控制器自动识别含义的命令命令含义描述READ读数据,CMD=0x03命令通过D0发出;数据通过D0接收FAST_READ快速读数据,CMD=0xB命令通过D0发出;数据通过D0接收DOR双IO读数据,CMD=0x3B命令通过D0发出;数据通过D[1:0]接收QOR四IO线读数据,CMD=0x6B命令通过D0发出;数据通过D[3:0]接收DIOR双IO命令,四IO数据,CMD=BB命令通过D[1:0]发出,数据通过D[3:0]接收QIOR四IO命令,四IO数据,CMD=EB命令通过D[3:0]发出,数据通过D[3:0]接收PP页编程命令,CMD=02命令通过D0发出,数据通过D0发出QPP四IO页编程命令,CMD=32或38命令通过D0发出,数据通过D0[3:0]发出& & & & & 无论是线性地址模式还是IO模式访问QSPI,控制器均只支持表2所示的命令并自动切换控制器工作模式。在表2所列命令之外的,控制器均默认通过D0发出和接收。2 QSPI Flash选择& & & & &Zynq Qspi Flash控制器并不支持所有的Qspi Flash器件,因此在选择Qspi Flash时必须满足:① & 支持QOR命令:BootRom默认方式;② & 支持3字节地址模式:默认最大支持16MB,超出16MB部分通过地址寄存器设置后仍可通过3字节地址模式访问的。不支持Qspi Flash器件见UG585 12.2.6小节的描述。2.1 QSPI Flash操作实例& & & & 以镁光的N25Q512 Qspi Flash为例,简要说明要点:& & & & N25Q512 QspiFlash支持Extended、Dual和Quad三种SPI协议模式,默认为Extended模式,默认模式即和Zynq QSPI 控制器访问协议匹配。& & & & N25Q512 QspiFlash共512Mb的密度,分成4个BANK,每个BANK密度为16MB,可以通过Extended Address Register或者切换到4字节地址模式来对16MB以上的空间进行访问。因为Zynq Qspi Flash仅支持3字节地址模式,因此访问高地址空间时,通过切换Extended Address Register来实现。通过该方式存在一定的风险,那就是BootRom只能访问低16MB空间,为避免镜像写到高地址空间去,在每次用Xilinx工具烧写Flash前一定要重新断电重启,使Flash的Extended AddressRegister恢复到默认状态。& & & & N25Q512 QspiFlash在Erase、Program和访问内部寄存器前一定要先发出写使能命令(06H);Erase、Program命令发出后一定要读FlagStatus寄存器。& & & & N25Q512 QspiFlash,擦除可以是子页擦除(4KB)、页擦除(64KB)和Die擦除(32MB)。一页大小为256B,因此每个Program命令只能写256字节的数据。3 作为BOOT器件的考虑在使用Qspi Flash需要注意:①&&&&BootROM只能访问低16M(单SS)或低32M(双SS),因此镜像必须存储下可访问空间内;②&&&&单SS时,启动器件必须挂在QSPI控制0上;③&&&&双SS并行8bit模式时BootROM的搜索步长是64KB,其模式为32KB,因此为减少搜索时间,启动镜像最好从地址0开始。4 资源Xilinx提供裸机板级支持包、Uboot驱动和Linux驱动。①&&&Xilinx板级支持包实例:/SDK/2015.2/data/embeddedsw/XilinxProcessorIPLib/drivers/qspips_v3_2/②&&&Uboot驱动:/u-boot-xlnx-master/drivers/spi/zynq_qspi.c③&&&Linux驱动:/dirvers/spi/zynq-qspi.c,说明文档在:来源:http://blog.csdn.net/haoxingheng/article/details/
对本篇资讯内容的质量打分:
当前平均分:0.71 (55次打分)
【已经有57人表态】
[感动最多的]
[路过最多的]
[高兴最多的]
[难过最多的]
[搞笑最多的]
[愤怒最多的]
[无聊最多的]
[同情最多的]【Zynq征文】从零开始,搭建zynq-7000的PS硬件平台--SPI Flash和SD卡接口
UID980272&帖子32&精华17&积分5571&资产5571 信元&发贴收入1953 信元&推广收入0 信元&附件收入1700 信元&下载支出172 信元&阅读权限50&在线时间99 小时&注册时间&最后登录&
【Zynq征文】从零开始,搭建zynq-7000的PS硬件平台--SPI Flash和SD卡接口
主机环境:ubuntu10.04lts X64_64bit,root
开发工具:planAhead
参考资料:Zynq-700EPP CTT(UG873)
& && && &ZedBoard(ZynqTM Evaluation and Development Hardware User’sGuide)
1,为Zynq添加QSPI支持
ZedBoard使用的是4bit SPI Flash,这种Flash的带宽是1bit Flash的4倍,因此由成为QSPI(quad-SPI)。板卡选择的是Spansion的S25FL256S,容量256Mbit,作为zynq配置Flash时,传输率为400Mbps @100Mz。当然这颗IC也向下兼容1X,2X模式。该芯片供电电压为3.3V。
Zynq以及集成了SPI接口,要配置MIO进行连接。ZedBoard的板级配置是这样的(图1):
图1,ZedBoard的SPI板级连接
&&在XPS下的Zynq选项卡中点击“I/O Peripherals”(图2红圈所示)
图2,启动I/OPeripherals配置
& &出现Zynq PS MIO Configuations窗口(图3),在左侧的Zynq PSConfiguration中使能Quad SPIFlash,右侧的MIO会自动把MIO1-6,以及MIO8标识出浅黄色。
图3,为Zynq添加QSPI
2,为Zynq添加SD卡支持
&&同样的,添加SD接口,选择“SD 0”,IO选择MIO40..45(图4),总共使用了MIO的6根信号线。ZedBoard硬件手册上写的是MIO40..47,一共8根引脚,为什么不一样呢?推测大致原因是ZedBoard上用的Zynq是csg封装,我们的14.1中并没有这个型号,所以用了clg的代替,那么引脚可能会有些不同。Csg上的多了CD和WP信号,所以多出了2个信号。我们这是“民间”的项目,这2个信号的有无不会产生大的影响,即使是生成下载文件,也不会有问题,当然,如果官方原生支持就更完美了。
实际上CSG是Xilinx ES时使用的,正式版中是没有这种封装的。而MIO[46..47]是可以用下面的办法实现:
展开SD0选项左边的“+”符号(图5),CD和WP选项使能(打上勾),然后根据电路图分别选择MIO46和MIO47引脚。
图4,添加SD 接口
图5,配置SD的CD和WP引脚
UID736280&帖子540&精华0&积分234&资产234 信元&发贴收入2870 信元&推广收入0 信元&附件收入0 信元&下载支出2652 信元&阅读权限20&在线时间70 小时&注册时间&最后登录&
用来给内部
[通过 QQ、MSN 分享给朋友]
TI信号链专区正式上线,欢迎访问!

我要回帖

更多关于 zynq qspi 的文章

 

随机推荐