目录

  • 写在前面
  • Vivado工程建立
  • petalinux工程建立
  • 下载程序,开机测试
  • 没成功的话看这里

写在前面

  做类嵌入式开发很久了,从51到STM32,Arduino,ESP8266,ESP32,树莓派,ZYNQ,做了很多小项目,虽然根本没有牛到有资格写博客,但也是记录下自己的工作给以后做一个备忘吧。
  本文记录的是一个以太网转同步串口的活,导师给了一块7z030的板子,让在这上面做,这块板子的以太网居然是航空接插件接口,而且供电也得找电源,太麻烦了我还是用手里的7z010的黑金开发板吧,PS部分都一样完成之后再移植就是了。
  文章中有大量部分参考了黑金的教程,本来不打算写重复的部分,但考虑到也许会有比我基础更差的同学需要学习,就把自己的工程建立流程分享出来。

Vivado工程建立

  这里选择与黑金相同的版本2017.4,需要有配套的Ubuntu,petalinux以及linux-xilinx版本。

  选择自己的芯片,这里本来贴了很多建立工程的详细过程,图太多了就删掉了。

  建立一个block design

  添加IP核ZYNQ7 PS。

  双击IP核进行配置,先在PS-PL Configuration里面取消m axi GP0,图片里的标注有问题,应该默认勾选的是m。

  之后进行IO的配置,从FLASH里启动Linux以及挂载jffs2文件系统,所以spi flash需要勾选,以太网透传,以太网0也需要勾选,注意选上下面的MDIO。还需要选上UART1作为系统控制台。所有的IO要根据自己的硬件来选择。

  在下面还有以太网的复位管脚,这里要根据原理图,连上了的话就需要勾选。
  在MIO Configuration里调整以太网的IO速度为fast。

  选择相近的DDR型号。

  确认调整后点击run block automation引出IO,我这里截的图没有取消勾选m axi gp0,如果取消了的话没有左边这部分。

  切换到sources选项卡,右键选择create hdl wrapper。


  生成bit文件。

  将硬件信息导出。

  如果大家有PL部分需要勾选包含bit文件。

petalinux工程建立

  把刚才建立工程目录下的sdk文件夹复制到Linux主机。

  首先配置环境,这里应该要根据大家的安装位置来,Linux真的不熟。

source /opt/pkg/petalinux/settings.sh
source /opt/Xilinx/Vivado/2017.4/settings64.sh


  使用petalinux建立新的工程

petalinux-create --type project --template zynq --name 7z010_jffs2


  进入工程目录。

cd 7z010_jffs2/

  根据硬件信息建立工程,这里路径要正确,sdk文件夹在工程的上层目录中。

petalinux-config --get-hw-description ../7z010_jffs2.sdk/


  之后会弹出config界面,这个界面可以通过petalinux-config命令重复进入。因为学校环境没有网络,需要更改Linux Components Selection为本地内核文件,如果使用的是有外网环境的Linux主机,这里可以使用默认配置从git上面下载Linux内核。



  需要调整flash配置,我们需要预留一部分flash空间作为系统“硬盘”。在Sbusystem AUTO Hardware Settings -> Flash Settings。具体的size大家可以自己测试一下,这里的数字应该是扇区大小,spi flash在大学时研究过现在记不清也懒得看了,size过大会在erase为jffs2文件系统时破坏掉系统。这里的大小是测试出来的,能用就没研究了。这里我们并不需要将文件系统修改为jffs2,这个设置不知道对应的教程在哪里,直接配置成jffs2系统后我无法开机进入Linux系统了,不知道该如何解决,官方应该有教程吧,又找到的同学可以提供一下。

  配置Linux内核,如果不需要加入额外驱动这里就不需要修改,直接保存退出就OK。

petalinux-config -c kernel


  拷贝黑金提供的startup文件夹到工程目录下。

  修改project-spec/meta-user/recipes-core/images/petalinux-image.bbappend文件,在最后加入一行

IMAGE_INSTALL_append = " startup"


  我们需要修改一下7z010_jffs2/project-spec/meta-user/recipes-apps/startup/files下的startup.sh文件,这个文件就是开机后会执行的命令。黑金提供的内容是开机后自动挂载SD卡的第一分区到/sd文件夹下。这里我们修改为开机后挂载flash的mtd4,这个mtd4就是上面配置flash的第四分区jffs2。判断里面的-f路径写错了,就当没看见吧,这句不关键。。

  回到petalinux工程的命令行,配置根文件系统。

petalinux-config -c rootfs

  在apps中选择startup,按下‘y’键。保存退出。

  编译工程

petalinux-build

  这里需要的时间比较久了。

  生成BOOT文件,因为只有flash启动,所以一切包括内核都要打包到BOOT中,因为我这里还没有PL部分,所以命令没有–fpga,PL部分有工程的同学记得加上–fpga

petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --u-boot --kernel --force


  至此就完成了工程的建立。

下载程序,开机测试

  我使用Vivado进行boot文件的烧写,打开硬件管理器,自动连接。

  在PL部分右键选择add configuration memory device,选择你用的flash型号。
  添加生成的boot.bin文件,在工程目录的7z010_jffs2/images/linux/下,添加FSBL elf文件,说实话这个文件的作用不太清楚是什么,猜测是根据flash的分区写入boot文件?那么是否修改了flash的前几个分区后需要使用不同的elf文件呢?没有测试过。

  完成后上电进入系统,插上串口线查看控制台信息,由于我是边尝试边记录,不能保证这一套操作之后可以实现描述的功能。我这里目前已经成功了,挂载mtdblock4之后在/home/root/flash下vi一个文件,reboot或者断电再开机后这个分区都能正确挂载,并且vi的文件内容正常。

没成功的话看这里

  写的第一个版本把flash_eraseall语句也放到startup.sh里面了,开机时控制台输出擦除信息立刻就反应过来,每次开机都擦除那我的文件不是都没了。。修改后直接挂载就可以正确挂载成功了,但是我认为没有进行eraseall的分区是不能正确作为jffs2文件系统挂载的(猜测,懒得试了。。)。所以没有挂载成功的同学可以在开机进入petalinux后输入

cat /proc/mtd

先看一下flash的分区是否和自己在petalinux-config里面配置的一样,一样的话可以直接把mtd4格式化为jffs2。

flash_eraseall -j /dev/mtd4

大家可以输入

flash_eraseall --help

查看一下信息,上面的-j就是format the device for jffs2,这也是为什么我猜测必须先eraseall一下,毕竟Windows也需要先按文件系统格式化不是?

已经存在jffs2系统的flash在重新分区为其他大小时,可以在下载boot.bin文件是选择全盘。

贴两个需要的文件,elf和startup
https://download.csdn.net/download/fadepurple/11196759
https://download.csdn.net/download/fadepurple/11196765

ZYNQ开机挂载SPI FLASH中的jffs2文件系统相关推荐

  1. NUC972 SPI Flash启动+内核+Cramfs文件系统

    NUC972 作为一个低成本linux方案,有片内SDRAM,又有茫茫多的外设,简直工控神U. 为了追究更低成本,考虑放弃使用NAND,把uboot, 内核,文件系统都放在SPI FLASH.这样画板 ...

  2. STM32移植Littlevgl(LVGL)V8.0.2使用文件系统+BMP解码显示外部FLASH中图片

    说明:选择BMP解码图片的方式,是因为此方式不需要占用太多的RAM 一.主要参数及版本 MCU:STM32F103ZET6 LCD:2.8寸ILI9341,使用FSMC驱动 SPI FLASH:W25 ...

  3. AM335x SPI Flash启动说明

    本文主要描述如何在EVB335X-II上实现从SPI Flash启动系统,包括启动方式的修改,u-boot编译,SPI Flash的烧写.EVB335X-II使用的SPI Flash型号为W25Q32 ...

  4. ADSP-SC589开发板更换SPI FLASH并从flash引导内核与文件系统

    前情提要:目前本人正在用ADSP-SC589开发板做开发,希望实现内核与文件系统都从SPI FLASH启动,但板子上原来的SPI FLASH太小了,于是更换了镁光的MT25QU01GBBB FLASH ...

  5. FPGA配置 - 基于SPI FLASH的FPGA多重配置(Xilinx)

    原文地址:http://www.elecfans.com/emb/fpga/20140124334884_2.html IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用 ...

  6. Keil(MDK)下用仿真器烧程序的同时烧写附加数据到SPI FLASH

    之前在i.MX rt板块经常看到i.MX RT最新支持XXX Flash的下载算法,于是冒出一个问题,下载算法是啥.故花时间研究了一下. 一.了解下载算法 研究过程中参考了这篇文章:更进一步的了解Ke ...

  7. ADSP-BF531的SPI FLASH BOOT

    昨天写这篇文章写的差不多的时候,改了Windows Explorer的文件夹选项,气愤的是IE居然也跟着刷新了,我写的还没有保存--今天重新来. 到昨天为止,我毕设的几个关键技术的研究,包括超声测距. ...

  8. 嵌入式linux系统中常用的文件系统

    原文:https://blog.csdn.net/li_wen01/article/details/80090624 嵌入式linux系统中常用的文件系统: 闪存主要有NOR和NAND两种技术:因为F ...

  9. flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现

    摘要: 文件系统是Linux操作系统的重要组成部分.而本文对于面向大容量Flash文件系统高效性的研究则主要侧重于对于嵌入式Linux操作系统文件系统的研究.由于嵌入式设备介质的特殊性,电源系统的不稳 ...

最新文章

  1. linux - centos yum安装LAMP环境
  2. go linux 源码编译环境,Linux 源码安装 GO 环境
  3. Confluence 6 Home 和其他重要的目录
  4. 使用Powershell将PST导入Exchange 2007
  5. .NET Core微服务之基于Consul实现服务治理(续)
  6. cisco 2911 GRE ***
  7. 手机安装(Fiddler)证书
  8. GraphQL一些hello world级别的例子
  9. C语言中的“悬空指针”和“野指针”是什么意思?
  10. 前端学习(1170):findIndex
  11. linux修改默认发布目录,Linux环境更改Jenkins默认主目录
  12. Sharepoint2010 表单认证常见问题
  13. 推到 旋转矩阵公式_想知道旋转矩阵的带入公式
  14. 2000款学校教师课件培训PPT模板免费下载网址
  15. python可以用于工业机器人编程与操作_非常实用的工业机器人编程语言有哪些?这些编程好用吗?...
  16. ST7920 12864液晶图片取模,显示你想显示的图片。
  17. Microsoft Office Home and Student 2007产品密匙
  18. LVDT/RVDT(线性/旋转可变差动变压器)、Resolver(旋转变压器)仿真方案
  19. OS X EI Captan 中Rootless
  20. VTP-------详解

热门文章

  1. html语法-style=“vnd.ms-excel.numberformat:@“
  2. 冰峰上市IPO,能冲破“本地品牌”的束缚吗?
  3. 综述(五)无人驾驶中决策系统的工作流程及原理
  4. 关于《利用Lex进行词法分析》
  5. 孙悟空与白骨精的写信
  6. 自定义桌面小部件【搞定小米MIUI小部件】
  7. GameFramework框架——辅助工具
  8. Matlab中cell2mat函数使用
  9. window7安装python3.7
  10. 商业合伙人和技术合伙人之间的矛盾与解决-评估商业合伙人和技术合伙人的能力和价值