分类: LINUX
2017-01-06 10:09:27
原文地址:zedboard spi flash启动配置流程 作者:guo443193911
参考文档:官方文档
把官方文档读几遍,熟悉官网上的运行Linux 的启动流程,官网上只是介绍了制作可启动的Linux的图像QSPI的操作步骤没有用到fpga 的bitstream ,这里我们要把bitstream 加入到生成的qspi_image.bin 中,启动linux 操作系统,运行应用程序。
官网下载参考PDF:ug873-的的Zynq-ctt.pdf
使用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 0xFC700000 0x8000 $ {kernel_size}; \
CP 0xFCC00000 0x1000000 0x8000; \
echo Copying ramdisk...; \
CP 0xFCC20000 0x800000 $ {ramdisk_size}; \
go 0x8000 \ 0“\
驱动开机会把SPI闪存的zImage等( 0xFC700000),devicetree.dtb,( 0xFCC00000),radisk8M.image.gz(0xFCC20000),拷贝到RAM 中,在去为0x8000 启动内核。
注意生成qspimage.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 0x08000000 / / 下载的U-boot.elf 到RAM中
xmd% dow u-boot.elf / / 启动的uboot的
xmd% con
启动开机
使用启动的命令把0x8000000 中的qspi_image.bin 搬移到0 地址,大小为到到0x00FFFFFF 。
pele-boot> sf probe 0 0 0 pele-boot> sf erase 0 0x01000000 pele-boot> sf write 0x08000000 0 0x00FFFFFF
这样就把qspi_image.bin 烧写到SPI闪存中了。
在断电,把zedboard 的启动方式的跳线的J10 接3.3V ,即SPI 启动。
SPI 启动信息如下:
从QSPI闪光的Linux的拷贝到RAM中...
复制RAMDISK ...
##启动应用程序为0x00008000 ...
解压缩的Linux的...完成,启动内核。
[0.000000]启动的Linux上的物理CPU 0
[0.000000] Linux下的版本3.6.0-Digilent公司的-13.01(根@郭-VM)(4.6.1的gcc版本(的的Sourcery为Codebench完成精简版2011.09-50))#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 @ c1408000 s6976 r8192 d13504 u32768
[0.000000]内置1 zonelists中区秩序,调动分组上。总页数:130048
[0.000000]内核命令行:控制台= ttyPS0,115200根=的的/ dev / ram的的RW的的initrd =从从0x800000,8M的的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]内存:506296k/506296k可用,17992k保留,0K HIGHMEM
[0.000000]虚拟内核内存布局:
[0.000000]载体:为0xFFFF0000地址 - 0xffff1000(4 KB)
[0.000000] fixmap:0xfff00000 - 0xfffe0000(896 KB)
[0.000000] vmalloc的的:0xe0800000 - 0xfd000000(456 MB)
[0.000000] LOWMEM:为为0xc0000000 - 0xe0000000(512 MB)
[0.000000] pkmap:0xbfe00000 - 为为0xc0000000(2 MB)
[0.000000]模块:0xbf000000 - 0xbfe00000(14 MB)
[0.000000]文字:0xc0008000的的 - 0xc0499408(4678 KB)
[0.000000] INIT:0xc049a000 - 0xc04bfb40(151 KB)
[0.000000]数据:0xc04c0000 - 0xc04f9fa0(232 KB)
[0.000000] BSS:0xc04f9fc4 - 0xc05108f8(91 KB)
[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赫兹,分辨率10000000ns,每包4294967286ms
[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 80000000
[0.090000]汉王perfevents:用的ARMv7体系的的Cortex-A9 PMU驱动器,7计数器可启用
[0.090000]设置静态身份映射0x346e08 - 0x346e3c
[0.090000]启用L310高速缓存控制器
[0.090000] l2x0:8路,的的cache_id 0x410000c8,AUX_CTRL 0x72360000,缓存大小:524288乙
[0.130000]地图SLCR寄存器
[0.130000] CPU1:引导辅助处理器
[0.220000] CPU1:螺纹-1,CPU 1,插槽0,mpidr 80000001
[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.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 20060810
[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纪念品00000000
[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的平台了。