-
Notifications
You must be signed in to change notification settings - Fork 1
An example of hardware/software co-design using ZedBoard: Let ARM Linux work with FPGA
License
concise/zedboard-hwswcodesign-example
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
### 操作流程示範 13-min 螢幕錄影 ### https://www.youtube.com/watch?v=lFkBfxsl93g ### Homework ### 在重現一次課堂上我們示範的 ARM Linux 內一個程式與 FPGA 的 IP core 協作的情境後, 請修改範例程式以 FPGA 1024-bit 蒙哥馬利模乘法器求 A * B * R**-1 % N 值,其中: R = 2**1040 N = 0xa3954d818a1d0f4edd554761a7bc4bd3ae1d07f5bdd0c60e3fc9184ed02b0d7d796fca442c46c7566738b0d9a257324f0ab5f4e843e6a7c9cfc8bba397cd5d9b19d33a578cca78cc0f8dfe5dc64721365f037d6e64340b3ee10a14974b83b4f7bdd11b5305132e8f75837017762ae4eb992a79a5364c96e135eae9e07013df4d A = 0x8a5f0ab2e2d32f612c7a36b141f50ab65a258318dfb17c8ffda809f46ce1d6091e987d092ca6ab6d5ff3cf195ed1622f295283b837932253625c6901dc8d1483e6fdc6700c6a42995c828e2f2f0ffc52962fac6503898eb37cc5adb224373bbdceaa424e8745a2cb621995165a4b5c5e1c1aaa6fd7881e24b0e886665543b2ff B = 0x9ab05a89280104cdef290ee8e8cd9f29419f2fd3231b589a08081107a419de141652bb37cea658a03b31b1f9b5cf614a6035dd4286dbfc4c5e072f6ef81284109c5ced4cde0430d5f49ed8639155dd5be6c7bec7a6cd3f3d9c540919fafb0e227a07e9f7cbf48473173224e677416bfb13370064a95ed1b81c0d617a2317698c 請將這個答案上傳至課程網站。 用 Python 程式語言來講的話,正確答案是那個唯一的 C 值,使得我們可以通過 assert 0 <= C < N and 0 == (A*B - C*R) % N ### 範例工作環境 ### 一張 ZedBoard 一張 SD 卡 建議至少 2 GB 容量 一台筆記型電腦 SD card slot USB port Wi-Fi connectivity 硬碟建議至少 128 GB 容量 一個工作環境 有電源 有 Wi-Fi 無線網路 (連線至 CIC license server) 已經安裝好 x64 Ubuntu 16.04 Desktop 已經安裝好 Xilinx Vivado & SDK 2016.4 (update: 2020.1 tested) 在 bash shell 裡有 vivado、bootgen、hsi (for 2016.4) / xsct (for 2020.1) 等三個指令可以用 在 bash shell 裡有 dtc、git、screen 等指令可以用 (sudo apt-get install device-tree-compiler git screen) ### 下載檔案 ### 1. 下載本 git repository git clone https://github.com/concise/zedboard-hwswcodesign-example 2. 下載 git repository "device-tree-xlnx" 並切換版本到 xilinx-v2016.4 標籤 git clone https://github.com/Xilinx/device-tree-xlnx --branch xilinx-v2016.4 --depth 1 3. 下載 2016.3-zed-release.tar.xz 或 2016.3-zc706-release.tar.xz (根據你的開發板而定) wget http://www.wiki.xilinx.com/file/view/2016.3-zed-release.tar.xz/601464782/2016.3-zed-release.tar.xz wget http://www.wiki.xilinx.com/file/view/2016.3-zc706-release.tar.xz/601464760/2016.3-zc706-release.tar.xz 4. 下載 linaro-vivid-developer-20151215-714.tar.gz wget https://releases.linaro.org/archive/ubuntu/images/developer/15.12/linaro-vivid-developer-20151215-714.tar.gz ### 從 mm1024 專案生成 bitstream ### 請根據你的開發板,使用 microzed 或 zc706 或 zedboard 版本的 TCL 腳本 cd mm1024 vivado -mode batch -source generate_system.zedboard.tcl 根據你的電腦的運算資源,你可能需要等待 5 ~ 30 分鐘 前述指令結束後,確認新生成的 .bit 檔案與 .hdf (for 2016.4) / .xsa (for 2020.1) 檔案的位置 find . -name '*.bit' -or -name '*.hdf' find . -name '*.bit' -or -name '*.xsa' ### 將 SD 卡設置為兩個分割區 ### 假設 SD 卡裝置會被命名為 /dev/mmcblk0 MBR partition table 劃分兩個分割區: 第一個分割區 /dev/mmcblk0p1 檔案系統為 FAT32 容量至少 100 MB 可開機 第二個分割區 /dev/mmcblk0p2 檔案系統為 ext4 容量至少 1 GB SD 卡第一個分割區將用來放置開機相關程式 SD 卡第二個分割區將用來放置完整的 Linux 根目錄檔案系統 (Linaro) ### 可開機 SD 卡製作攻略示意圖 ### 請參考本 git repo 內的圖檔 bootpartgen-explained.png ### 填入 SD 卡第一個分割區的內容 ### 請在當前工作目錄下準備以下檔案、子目錄 device-tree-xlnx/ <= 剛才下載的 git repository fpga.bit <= 剛才用 vivado 生成的檔案 fpga.hdf / fpga.xsa <= 剛才用 vivado 生成的檔案 fsbl.elf <= 來自 2016.3-zed-release.tar.xz original-devicetree.dtb <= 來自 2016.3-zed-release.tar.xz u-boot.elf <= 來自 2016.3-zed-release.tar.xz uImage <= 來自 2016.3-zed-release.tar.xz uramdisk.image.gz <= 來自 2016.3-zed-release.tar.xz 在這個目錄,執行 bootpartgen (for 2016.4) / bootpartgen-2020.1 (for 2020.1) 腳本 bash /path/to/bootpartgen bash /path/to/bootpartgen-2020.1 腳本執行結束後,會產生一個子目錄 bootpart cd bootpart 將這個目錄下的五個檔案複製到 SD 卡的第一個分割區 (假設 /dev/mmcblk0p1 被掛載到 /mnt/BOOT) sudo cp BOOT.BIN devicetree.dtb uEnv.txt uImage uramdisk.image.gz /mnt/BOOT sync ### 填入 SD 卡第二個分割區的內容 (此步驟只需要做一次) ### 假設 /dev/mmcblk0p2 被掛載到 /mnt/LINARO sudo tar xpf linaro-vivid-developer-20151215-714.tar.gz --strip-components=1 -C /mnt/LINARO sync 將測試程式複製到 SD 卡上 sudo cp setclock test.c /mnt/LINARO/root sync ### 開機進入 Linaro Linux (based on Ubuntu 15.04) ### 設定跳線,使 ZedBoard 以 SD 卡開機,連接 UART USB 線至工作電腦 假設該裝置被命名為 /dev/ttyACM0 使用 GNU Screen 以 115200 baudrate 連線到 UART serial console sudo screen /dev/ttyACM0 115200 註:常用 GNU Screen 鍵盤綁定 ^A k 離開 ^A a 送出 ^A 字元 ^A C 清除畫面 有時候,遇到 UART serial console 不正常顯示的狀況,只要多 echo 幾次,搭配 reset 就可以搞定 UART serial console 預設會直接進入 root 的 bash shell ### 設定時脈,編譯並執行測試程式 ### bash setclock gcc test.c ./a.out ### (optional) 重置 U-Boot 環境變數 ### 進入 U-Boot 的指令列 env default -a env save reset ### 一些檔案連結與 MD5 雜湊值 ### ubuntu-16.04.1-desktop-amd64.iso SIZE = 1513308160 MD5 = 17643c29e3c4609818f26becf76d29a3 URL = http://releases.ubuntu.com/xenial/ubuntu-16.04.1-desktop-amd64.iso ---------------------------------------------------------------- Xilinx_Vivado_SDK_2016.4_1215_1.tar.gz SIZE = 22071293967 MD5 = 4a21b34b4105fe31893b572d14a1df48 URL = https://www.xilinx.com/support/download.html ---------------------------------------------------------------- 2016.3-zed-release.tar.xz SIZE = 45967360 MD5 = e3a7c86a4621bcbaf4d6cdc6a26ee86d URL = http://www.wiki.xilinx.com/file/view/2016.3-zed-release.tar.xz/601464782/2016.3-zed-release.tar.xz ---------------------------------------------------------------- 2016.3-zc706-release.tar.xz SIZE = 55592960 MD5 = 7218245f287998d7f335844a6ec57580 URL = http://www.wiki.xilinx.com/file/view/2016.3-zc706-release.tar.xz/601464760/2016.3-zc706-release.tar.xz ---------------------------------------------------------------- xilinx-v2016.4.zip SIZE = 196485 MD5 = 79538621dffeceb600fa56a3bc4b7790 URL = https://github.com/Xilinx/device-tree-xlnx/archive/xilinx-v2016.4.zip ---------------------------------------------------------------- linaro-vivid-developer-20151215-714.tar.gz SIZE = 233649127 MD5 = bd19b93bde4fba93bdeea2451276dce2 URL = https://releases.linaro.org/ubuntu/images/developer/15.12/linaro-vivid-developer-20151215-714.tar.gz
About
An example of hardware/software co-design using ZedBoard: Let ARM Linux work with FPGA
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published