Xilinx PetaLinux創(chuàng)建linux工程,并使用debian系統(tǒng)

1. 準(zhǔn)備SD卡
將一張SD卡分為兩個(gè)分區(qū),一個(gè)為 fat32 一個(gè)為 ext4
將 fat32 系統(tǒng)命名為 boot,將 ext4 系統(tǒng)命名為 rootfs
shell 運(yùn)行 lsblk

boot 分區(qū)為sdc1,rootfs 分區(qū)為 sdc5。故 rootfs 在新建的 linux 中的位置為 /dev/mmcblk1p5
若 FPGA 板上沒(méi)有自帶的emmc或其他內(nèi)存,則為 /dev/mmcblk0p5
2. 創(chuàng)建項(xiàng)目
xsa file 為 vivado 工程導(dǎo)出的文件
在vivado中 File -> Export ->Export Hardware... 即可導(dǎo)出
3. 修改配置
在執(zhí)行完petalinux-config后彈出的guine內(nèi)
3.1 修改mac地址
Subsystem AUTO Hardware Setting -> Ethernet Settings -> Ethernet MAC address
3.2 修改文件系統(tǒng)的存儲(chǔ)方式
從在內(nèi)存中修改為在EXT4文件系統(tǒng)內(nèi),默認(rèn)的啟動(dòng)方式會(huì)把文件系統(tǒng)放到ram內(nèi),所以每一次的修改在重啟后都會(huì)消失。選擇ext4模式,將文件系統(tǒng)固化到 flash 內(nèi)。
Image Pachaging Configuration -> Root filesystem type -> EXT4
3.3 修改文件系統(tǒng)所在的分區(qū)
u-boot 會(huì)根據(jù)該參數(shù)引導(dǎo)操作系統(tǒng)
Image Pachaging Configuration -> Device node of SD device
此處填入在開(kāi)頭創(chuàng)建SD卡時(shí)的rootfs的分區(qū)名?
\dev\分區(qū)名
3.4 修改緩存鏡像(可選)
在 xilinx 的 petalinux 下載界面最下面可以找到 cache 的下載。

若為32位的zynq則下載 sstate-cache
64位則下載 aarch64 sstate-cache
修改使用本地鏡像,可以加快編譯速度。否則可能由于網(wǎng)絡(luò)原因?qū)е戮幾g失敗等問(wèn)題
取消選項(xiàng)
保存并退出
3.5 編譯項(xiàng)目
編譯完成后運(yùn)行
進(jìn)入linux kernel配置
3.6 配置Linux kernel
1. CMA內(nèi)存
配置連續(xù)內(nèi)存(CMA)大小,給DMA等設(shè)備使用
? ? 板上共有8G內(nèi)存,由于要使用DMA32模式,故最大能使用4G內(nèi)存給DMA。修改大小為1024MB
2. 啟用DMA32
DMA只能分配到低4G的內(nèi)存,高4G DMA無(wú)法訪問(wèn)
3. NVME硬盤(pán)支持
? ? 若不需要,可以不配
4. spi設(shè)備支持
5. 保存并退出
4. 修改設(shè)備樹(shù)
鏈接設(shè)備樹(shù)目錄
修改 system-user.dtsy
此文件為用戶定義設(shè)備樹(shù)文件,在該文件內(nèi)的修改不會(huì)因?yàn)楣こ痰淖儎?dòng)如xsa的更行而被刪除
添加SD卡槽配置
由于ZU19EG的SD部分使用了電平轉(zhuǎn)換模塊,故需要添加以下選項(xiàng),否則在linux啟動(dòng)時(shí)會(huì)報(bào)錯(cuò),無(wú)法正確讀取roofs
添加其他 linux 設(shè)備樹(shù)
根據(jù)自身的項(xiàng)目需求與FPGA內(nèi)的IP核配置,添加除xilinx IP以外的設(shè)備樹(shù)內(nèi)容
5. 構(gòu)建系統(tǒng)
再次編譯工程
打包linux文件
將生成的文件放到 boot 分區(qū)
在以下網(wǎng)址下載debian文件系統(tǒng)
https://rcn-ee.com/rootfs/eewiki/minfs/
將debian解壓到 rootfs 分區(qū)即可
將SD卡插到卡發(fā)板,即可啟動(dòng)debian