Zynq的AMP开发流程说明(基于OCM)
目錄
一.平臺說明
二.軟件安裝
三.基本開發流程
3.1.AMP模式介紹
3.2.開發流程框圖
四.具體開發流程
4.1.下載官方Demo源碼
4.2.Vivado工程創建(Windows 64位環境)
4.2.1.工程創建
4.2.2.配置ARM系統:
4.2.3.工程編譯并導出
4.3.Petalinux工程(Ubuntu 16.04環境)
4.4.SDK工程(Windows 64位環境)
4.4.1.CPU1程序(app_cpu1.elf)創建:
4.4.2.softUart.elf創建(使用petalinux更方便):
4.5.生成SD卡下載文件(Windows 64位環境)
五.SD卡啟動配置
1.SD 系統啟動卡說明
2.SD系統啟動卡制作步驟
六.板卡雙核系統驗證
6.1.poke和peek命令
附錄
一.平臺說明
1、硬件平臺:ZYNQ7z202clg400-2的創龍核心板
2、軟件平臺:
Windows 64位環境下:
Vivado 2017.04版本+SDK 2017.04版本
??? Linux環境下(Ubuntu 16.04):
Petalinux 2017.04版本
二.軟件安裝
Vivado+SDK+Petalinux是xilinx針對SOC FPGA芯片而設計的專用開發方式。Vivado進行ARM系統配置和FPGA硬件電路設計,SDK進行用戶應用程序設計,Petalinux進行linux的uboot、kernrl和rootfs的集成式設計。
軟件安裝:
(1)Vivado+SDK安裝流程:《Vivado2017.4安裝教程》
(2)Petalinux安裝教程:《Petalinux2017.4安裝教程》
三.基本開發流程
3.1.AMP模式介紹
從軟件的角度來看,多核處理器的運行模式有三種:
AMP(非對稱多進程):
多個核心相對獨立的運行不同的任務,每個核心可能運行不同的操作系統或裸機程序,但是有一個主要核心,用來控制整個系統以及其它從核心。
SMP(對稱多進程):
一個操作系統同等的管理各個內核,例如PC機。
BMP(受約束多進程):
與SMP類似,但開發者可以指定將某個任務僅在某個指定內核上執行 。
默認情況下,ZYNQ僅運行一個CPU,這里主要研究AMP模式下,即兩個CPU同時運行,其中CPU0運行linux系統,CPU1運行裸機程序。
3.2.開發流程框圖
四.具體開發流程
4.1.下載官方Demo源碼
本文檔采用官方提供的Demo進行AMP模式的開發和測試,資源鏈接:
https://xilinxwiki.atlassian.net/wiki/spaces/A/pages/18841653/XAPP1078+Latest+Information
下載文件:xapp1078_2014.04.zip
目錄介紹:
??? xapp1078_2014.04---------------- design:設計所需的所有源文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|---------------- docs:相關源文件的使用介紹????????
AMP開發視頻講解:https://www.youtube.com/watch?v=xoNRZ1Q_h1k
4.2.Vivado工程創建(Windows 64位環境)
4.2.1.工程創建
Vivado可使用2種方法創建用戶工程:圖形組件手動搭建或是采用tcl命令創建,這里通過修改Demo提供的tcl文件,創建能夠在Vivado 2017.04運行的ZYNQ7z020clg400-2系列工程(注意:修改部分見文檔中備注)。
4.2.2.配置ARM系統:
??? 根據創龍核心板進行最小系統配置,配置內容包括:時鐘系統、外設與引腳復用、外部DDR、PS-PL中斷等部分。需要修改的部分主要有:
??? 時鐘系統:與創龍保持相同配置
??? DDR:與創龍保持相同配置,為512M
外設與引腳復用:與創龍保持相同配置
PS-PL中斷等部分:保持Demo配置,使能fpga對cpu1的中斷
4.2.3.工程編譯并導出
工程創建完成后,經Vivado綜合實現可生成后續使用文件:
| 文件名稱 | 作用 | 文件位置 |
| design_1_wrapper.bit | FPGA的燒寫文件 | /(工程文件夾)/(工程名).runs /impl_1文件夾下 |
| design_1_wrapper.hdf | 系統硬件描述文件 | /(工程文件夾)/(工程名).sdk文件夾下 |
| SDK工程目錄 | 包含SDK軟件設計所需的源文件 | /(工程文件夾)/(工程名).sdk文件夾 |
?
4.3.Petalinux工程(Ubuntu 16.04環境)
??? Petalinux使用Vivado生成的hdf文件,進一步配置并生成linux系統相關文件:uboot、kernel和rootfs等。具體流程如下:
Step1:拷貝hdf文件:將Vivado工程下的hdf拷貝到hwdef目錄下
??? mkdir /home/用戶/Desktop/hwdef
Step2:設置Petalinux運行環境:
??? source <Petalinux安裝目錄>/settings.sh
Step3:創建Petalinux工程
??? cd /home/用戶/Desktop
??? petalinux-create -t project -n plnx-project --template Zynq
Step4:導出hdf文件并配置
??? petalinux-config --get-hw-description=../hwdef?
出現如下配置界面:
配置系統從SD卡啟動:
| Linux Components Selection | [*] First Stage Bootloader:默認配置,生產FSBL文件 |
| Auto Config Settings | 保持默認配置 |
| Subsystem AUTO Hardware Settings | Memory Settings --->檢查是否與Vivado中配置一樣(0x18000000); Serial Settings --->系統默認為串口1,波特率115200 SD/SDIO Settings --->: 設置主SD為SD0 Advanced bootable images storage Settings中: boot image settings --->選擇SD卡 uboot-env選擇flash????????????????????????????????????????????????????????????????????????? kernel image settings --->選擇SD卡? jffs2 rootfs:選擇flash dtb image:選擇sd卡???????????????????????????????????????????????????????????????????????????????????? |
| DTG Settings | Kernel Bootargs:內核啟動參數 console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 mem=384M maxcpus=1 (注意:這里限制了系統使用內存為384M,剩余128M留給CPU1的裸機程序) |
| u-boot Configuration | 保持默認配置 |
| Image Packaging Configuration | Root filesystem type --->選擇SD類型 |
| Firmware Version Configuration | 固件版本控制,可修改,保持默認配置 |
| Yocto Settings | 保持默認配置 |
Step5:配置 u-boot
??? petalinux-config -c u-boot
出現如下配置界面:
進行如下配置:
| Architecture select (ARM architecture) | 系統構架選擇,默認ARM |
| ARM architecture | 構架配置選項,保持默認配置 |
| General setup | 通用配置,保持默認配置,可修改 |
| Boot images | Boot鏡像,保持默認配置 |
| Boot timing | Boot時間,保持默認配置 |
| Boot media | Boot介質,配置從SD卡啟動 |
| delay in seconds before automatically booting | Boot自啟動時間,默認4s,可修改 |
| Console | Console控制臺配置,保持默認 |
| Default fdt file | 默認FDT文件,無 |
| Disable support for parallel NOR flash | NOR flash支持,無支持 |
| add U-Boot environment variable vers | U-Boot環境變量添加,無 |
| Display information about the CPU during start up | 啟動階段顯示CPU信息,可選 |
| Display information about the board during start up | 啟動階段顯示板卡信息,可選 |
| SPL / TPL | SPL / TPL支持,保持默認配置 |
| Command line interface | 命令行配置,用戶可進一步配置 |
| Device Tree Control | 設備樹控制,保持默認配置(embeded) |
| Networking support | Net支持,保持默認配置 |
| Device Drivers | 設備驅動,保持默認配置 |
| File systems | 文件系統,保持默認配置 |
| Library routines | 庫程序,保持默認配置 |
| Unit tests | 單元測試,保持默認配置 |
Step6:配置kernel
出現如下配置界面:
保持所有的默認配置并退出。
Step7:創建CPU0應用程序softuart
??? petalinux-create -t apps --template c --name softuart
軟件會創建softUart應用程序目錄并產生softuart.c文件,用官方提供的softuart.c文件將其替換,可通過配置rootfs將cpu0的應用程序直接配置進系統。
Step7:配置rootfs
出現如下配置界面:
進行如下配置:
| Filesystem Packages | 系統擴展工具配置:可增加,如lrzsz,make等 |
| apps | Xilinx提供的2個APP [ ] gpio-Demo:不配置 [*] peekpoke:配置,用于AMP模式測試 [*] softuart:配置,用于AMP模式測試 |
| user packages | 用戶app,無 |
| PetaLinux RootFS Settings | Root password:設置root用戶密碼,默認為root |
Step8:編譯工程并生成系統文件
petalinux-build
工程編譯完成后,產生的所有可執行文件均在/工程目錄/image/linux下:
4.4.SDK工程(Windows 64位環境)
通過Vivado打開SDK(不要獨立打開),在SDK中設計CPU0和CPU1的應用程序:
- app_cpu1.elf:CPU1裸機程序,與CPU0進行通信且接受FPGA的中斷信號
- softUart.elf:CPU0應用程序,與CPU1進行通信,并產生FPGA中斷(已通過Petalinux設計)
4.4.1.CPU1程序(app_cpu1.elf)創建:
Step0:Xilinx Tools-->Repositories-->New???? //導入sdk_repo(重要,包必須正確)
Step1:File-->New-->Board Support Package??????? //生成bsp
如下顯示中出現:“standalone”,說明sdk_repo導入生效
在編譯選項中增加:-g -DUSE_AMP=1 -DSTDOUT_REDIR=1
?
Step2:File-->New-->Application Project?????? //生成cpu1的app程序
Step3:Next-->Empty Application
Step4:app_cpu1-->sr+右鍵-->Import? ???????? //導入官方cpu1的app源文件
查看lscript.ld文件:512M外部DDR時的CPU1應用程序鏈接地址配置。
Step5:SDK自動生成可執行文件app_cpu1.elf
4.4.2.softUart.elf創建(使用petalinux更方便):
Step1:File-->New-->Application Project
Step2:點擊Next-選中空的應用
Step3:softUart -->src右鍵-->Import:導入softUart.c文件
Step4:SDK自動生成可執行文件softUart.elf
?
4.5.生成SD卡下載文件(Windows 64位環境)
使用SD卡啟動系統時,需要如下的相應下載文件:
| 文件名 | 文件功能 | 來源 |
| BOOT.bin | 由如下文件合并而成: Zynq_fsbl.elf:fsbl啟動文件 system.bit:fpga燒寫文件 u-boot.elf:u-boot文件 app_cpu1.elf:cpu1裸機程序 | Zynq_fsbl.elf: petalinux system.bit:Vivado u-boot.elf:petalinux app_cpu1.elf:SDK |
| devicetree.dtb | 設備樹文件 | petalinux |
| zImage | 內核文件 | petalinux |
| rootfs | 根文件系統 | petalinux |
上述文件中,需要使用SDK生成BOOT.bin文件,生成步驟如下:
Step1:將Zynq_fsbl.elf、system.bit 、u-boot.elf 和app_cpu1.elf拷貝到如下目錄:Demo目錄\design\src\bootgen
Step2:用記事本打開bootimage.bif,將合并文件的名稱進行修改,已匹配上述文件。
Step2:打開Vivado -->launch SDK???????? //通過Vivado打開SDK
Step3:SDK -->xilinx-->launch shell???????? //打開命令行界面,并用cd命令切換到bootgen目錄
Step4:執行createBoot.bat即可生成BOOT.BIN文件
五.SD卡啟動配置
1.SD 系統啟動卡說明
SD 卡啟動是開發板系統啟動方式的一種。SD 系統啟動卡共有 FAT32、EXT4 兩個格
式分區。其中 FAT32 格式分區在 Windows 系統下可見,EXT4 格式分區在 Windows 系統
下不可見,兩分區在 Linux 系統下均可見。FAT32 格式分區存放 Bootloader、內核、設備
樹、PL 端 bit 文件等,EXT4 格式分區存放文件系統。
開發板出廠時已經提供一個正常使用的 Linux SD 系統啟動卡。以下步驟是 Linux SD
系統啟動卡的制作過程。
2.SD系統啟動卡制作步驟
詳見《3-1-Linux SD系統啟動卡制作方法.pdf》。
?
六.板卡雙核系統驗證
6.1.poke和peek命令
???????? poke命令:向指定地址寫入數值data
格式:poke???? data????????? address
???????? Peek命令:讀取指定地址的內容
格式:peek???? address
6.2. 板卡驗證
(1)拷貝文件到SD卡
???????? 第一分區:BOOT.bin、devicetree.dtb和zImage
???????? 第二分區:rootfs文件系統
(2)連接開發板和配置好串口設置,波特率:115200
(3)進去linux系統:root用戶登錄,密碼:root
操作如下:
#poke 0xfffffff0 0x18000000??? //啟動cpu1(cpu1啟動原理參看ug585)
#peek 0xffff8000???????????????????????? //查看cpu1的heart beat變量值,每秒加1
#softuart &????????????????????????????????? //后臺運行cpu0的應用程序
#poke 0x78600000 0x00000001????? //cpu0向控制fpga向cpu1發起中斷
如上圖,雙核進行正常通信且cpu1完成對fpga的中斷響應,Zynq的AMP模式驗證完畢!
?
?
附錄
1. Zynq的AMP模式開發主要有如下參考文檔:《xilinx官方參考文檔》
2.Vivado、SDK和Petalinux軟件安裝:《xilinx軟件安裝說明》
3. Petalinux的uboot、kernel和rootfs配置詳解:《Petalinux的配置界面詳解.vsd》
4. linux系統啟動SD卡制作說明:《3-1-Linux SD系統啟動卡制作方法.pdf》
5. 官方Demo的使用說明:《xapp1078_2014.04\docs\Vivado instructions.txt》
6. 官方Demo文件:《xapp1078_2014.04.zip》
總結
以上是生活随笔為你收集整理的Zynq的AMP开发流程说明(基于OCM)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uboot 命令使用
- 下一篇: uboot的环境变量分析(printen