日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ZYNQ开机挂载SPI FLASH中的jffs2文件系统

發布時間:2024/1/18 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZYNQ开机挂载SPI FLASH中的jffs2文件系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 寫在前面
  • 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文件系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。