Zynq7010基于qspi flash linux移植笔记(1)

一、Zynq7010平台相关

下图本文所用开发板
所使用开发板
qspi flash:
开发板配有一片 32MB 大小的 Quad-SPI FLASH 芯片,型号为W25Q128,它使用3.3VCMOS电压标准。

芯片类型容量厂家
W25Q256BV32M byteWinbond

QSPI FLASH 连接到 ZYNQ 芯片的 PS 部分 BANK500 的 GPIO 口上, 在系统设计中需要配置这些 PS 端的 GPIO 口功能为 QSPI FLASH 接口。
qspi与zynq连接原理图

二、uboot相关源码修改

1、qspi flash分区表

存放内容偏移地址占用空间
FSBL+FPGA bit文件+uboot0x00x80000(8MByte)
kernel0x8000000x400000(4MByte)
devicestree0xC000000x4000
ramdisk0xC040000x8000040(8MByte)

根据上述分区表,修改./include/configs/zynq_ax7010.h文件。
在这里插入图片描述

kernel_size=0x400000
devicetree_size=0x4000
ramdisk_size=0x800040

其次,按照上图所示的qspi flash分区表,修改下图所示的偏移地址值。同时去掉sf probe后面的三个0,这里没有任何作用。
在这里插入图片描述

"qspiboot=echo Copying Linux from QSPI flash to RAM… && "
"sf probe && "
"sf read ${kernel_load_address} 0x800000 ${kernel_size} && "
"sf read ${devicetree_load_address} 0xC00000 ${devicetree_size} && "
"echo Copying ramdisk… && "
"sf read ${ramdisk_load_address} 0xC04000 ${ramdisk_size} && "
“bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0” \

sf,即spi flash,指令解释:“sf 内存首地址 flash偏移地址 大小“

2、将W25Q256 flash驱动编入uboot

观察到./driver/mtd/spi/sf_params.c文件中有关于W25Q256芯片的相关定义,但CONFIG_SPI_FLASH_WINBOND这个宏定义是没定义的,因此需要修改./configs/zynq_ax7010_defconfig文件,添加CONFIG_SPI_FLASH_WINBOND=y

该开发板就是利用该配置文件生成Makefile文件。

3、编译uboot

在命令行输入命令"make CROSS_COMPILE=arm-xilinx-linux-gnueabi-zynq_ax7010_defconfig", 生成 Makefile 文件。

在命令行输入命令" make CROSS_COMPILE=arm-xilinx-linux-gnueabi-", 编译器会自动编译 u-boot。完成后会在uboot根目录下生成u-boot文件,将其更名为u-boot.elf,留待后面制作启动文件。

4、生成启动文件

这里忽略zynq平台的fsbl文件和system bit文件的生成。打开已经准备好的Xilinx SDK工程,生成mcs文件如下:
在这里插入图片描述
然后连接下载器,如下:
在这里插入图片描述
等待烧写结束,写入过程比较慢,估计需要几分钟。烧写结束后后期,连接调试串口,上电可看见已正常进入uboot。若出现下面的打印语句,说明uboot驱动没有识别过该flash芯片,则需要查看上述第二步./driver/mtd/spi/sf_params.c文件,打开相应的宏定义即可。

SF: Unsupported flash IDs: manuf 00, jedec 0000, ext_jedec 0000
Failed to initialize SPI flash at 0:0 (error -93)

正常的uboot打印如下:

U-Boot 2016.07 (Mar 27 2019 - 20:58:16 +0800)
Model: ALINX AX7010 Development Board
Board: Xilinx Zynq
I2C: ready
DRAM: ECC disabled 512 MiB
MMC: sdhci@e0100000: 0
SF: Detected W25Q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
*** Warning - bad CRC, using default environment
In: serial@e0001000
Out: serial@e0001000
Err: serial@e0001000
Model: ALINX AX7010 Development Board
Board: Xilinx Zynq
Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id
Warning: ethernet@e000b000 MAC addresses don’t match:
Address in SROM is ff:ff:ff:ff:ff:ff
Address in environment is 00:0a:35:00:01:22
eth0: ethernet@e000b000
Hit any key to stop autoboot: 0
Zynq>

未完待续。。。

### 回答1: zynq-linux移植学习笔记应包含以下内容: 1. 对zynq架构和硬件资源的理解,包括PS和PL部分的特点。 2. 如何使用Xilinx SDK来编译和配置u-boot和Linux内核。 3. 如何在硬件平台上运行和调试Linux系统。 4. 怎样在Linux系统中配置和使用各种硬件资源,如DMA、Ethernet、Flash等。 5. 如何在Linux系统中移植和运行应用程序,并与硬件资源进行交互。 6. 如何进行系统优化和资源管理,以提高系统性能和稳定性。 ### 回答2: Zynq是一款Xilinx公司开发的一种嵌入式系统芯片,其使用了双核Cortex-A9处理器和可编程逻辑器件(FPGA)的组合。移植LinuxZynq芯片中,可以使其具备无限的扩展能力,极大地拓展了其应用领域,因此掌握Zynq-Linux移植技术是非常重要的。 Zynq-Linux移植分为四个主要步骤: 第一,准备工作 在移植前,需要确认硬件平台是否支持Linux运行,并且需要对硬件进行配置,最好使用Zynq开发板的官方配置; 第二,内核移植 内核移植是整个移植过程中最关键的一步。需要根据硬件平台的特性对内核进行选择和配置。可以从内核源代码库中获取内核代码,然后进行交叉编译。移植内核的过程中需要注意内核配置参数的设置,同时也要确保内核模块和驱动程序的编写。 第三,文件系统移植移植Linux的过程中,文件系统也是非常重要的。可以使用开发板官方Linux镜像,也可以自己编译镜像。移植文件系统还涉及到root文件系统的配置、挂载方式、网络配置和各种服务的配置等问题。 第四,驱动移植 驱动程序是连接硬件和软件的关键部分,需编写相应的驱动程序来实现对硬件的控制。移植驱动程序的过程中需要关注各种硬件接口和设备驱动API的使用,确保驱动程序与硬件配合良好。 总结来说,Zynq-Linux移植技术的掌握需要具备较强的Linux基础知识、驱动开发经验和交叉编译工具链的使用能力。同时,还需要有耐心和细心,对每个步骤进行仔细的分析和处理。 在学习中,需要结合实际开发项目,多进行实践操作才能更好地掌握Zynq-Linux移植技术,为后续项目的开发和应用提供更好的支持。 ### 回答3: Zynq-7000系列是一种由Xilinx开发的SoC(系统级芯片),它将双ARM Cortex-A9处理器和可编程逻辑(FPGA)集成在一起。这使得开发人员可以使用硬件加速加速器来加速运行在Linux上的各种应用。然而,实现这个目标需要进行移植。 在开始Zynq Linux移植学习笔记之前,需要一些基本的知识。首先,需要了解Linux内核的基本工作原理和Linux驱动程序的编写技术。然后,需要了解FPGA和SoC体系结构。 在开始移植之前,需要为SoC开发板选择正确的Linux发行版。这通常需要考虑处理器体系结构,内存大小和设备驱动程序的可用性。另外,还需要考虑是否需要自定义内核或驱动程序以满足应用程序的需求。 接下来,需要编写设备树文件(DT)来描述SoC架构。设备树文件是一种描述硬件配置信息的特殊语言。它会告诉内核有哪些设备可用以及如何访问这些设备。 接下来,需要配置Linux内核以支持Zynq-7000处理器。这可能包括启用适当的内核配置选项,编写设备驱动程序以及配置启动过程。 最后,需要启动Zynq板并验证Linux系统稳定运行。这些步骤包括在启动过程中将设备树文件加载到内存中,以及启动用户空间应用程序。 总之,移植Zynq Linux是一项复杂的任务,需要广泛的专业知识和技术。但是,它可以为开发人员提供强大的硬件加速支持,使他们能够加速处理一系列计算密集型应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值