本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹基于F3實例的RTL(Register Transfer Level)的開發流程。
前提條件
已創建F3實例。
已在F3實例所在安全組中添加規則放行SSH(22)端口。具體操作,請參見添加安全組規則。
登錄ECS管理控制臺,在F3實例的詳情頁上,獲取實例ID。
已創建一個OSS Bucket專門用于FaaS服務。若尚未創建OSS Bucket,具體操作,請參見創建一個OSS Bucket。
已獲取命令行工具faasutil。若尚未獲取faasutil工具,具體操作,請參見獲取faasutil。
使用RAM用戶操作FPGA時,必須先完成以下操作:
創建RAM用戶并為RAM用戶授權。具體操作,請參見創建RAM用戶和為RAM用戶授權。
您需要為RAM用戶授予
AliyunOSSFullAccess
權限。獲取AccessKey ID和AccessKey Secret。具體操作,請參見創建AccessKey。
警告僅支持通過RAM用戶的AccessKey使用FaaS服務,可有效降低AccessKey泄露的風險。強烈建議您不要將AccessKey ID和AccessKey Secret明文保存至工程代碼里或者任何容易被他人明文獲取到的地方,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
注意事項
本文中所有操作必須由同一個賬號在同一個地域執行。
如果您為普通用戶,建議管理員將鏡像中的/root/xbinst_oem目錄拷貝至用戶根目錄下。
如果您為普通用戶,請聯系管理員給普通用戶添加/dev/virtio-ports/FaaS.agent的使用權限。
您只能使用RAM用戶操作FPGA實例。為了最大程度地保護您數據的安全性,建議您按照必要且最小化原則對RAM用戶進行授權,用于操作指定的ECS實例。
操作步驟
- 重要
編譯工程時需要2~3小時。建議您使用nohup或者VNC連接實例,以免編譯時意外退出。
下載并解壓RTL參考設計。
配置環境。
如果驅動為
xdma
,則需要運行以下命令來配置環境。sudo source /home/user1/xbinst_oem/F3_env_setup.sh xdma #每打開一個終端窗口就需要執行該命令一次
如果驅動為
xocl
,則需要運行以下命令來配置環境。sudo source /home/user1/xbinst_oem/F3_env_setup.sh xocl #每打開一個終端窗口就需要執行該命令一次
說明配置環境主要包括安裝xdma驅動或安裝xocl驅動、設置vivado環境變量、檢查vivado license、檢測aliyun-f3 sdaccel平臺、授予2018.2 runtime配置。
指定OSS存儲空間。
faasutil config --id=<HereIsYourSecretId> --key=<HereIsYourSecretKey> #將<HereIsYourSecretId>和<HereIsYourSecretKey>替換為您的RAM用戶AK信息 faasutil auth --bucket=<HereIsYourBucket> # 將<HereIsYourBucket>替換為您創建的OSS Bucket名稱
運行以下命令,編譯RTL工程。
cd <您之前解壓的路徑>/hw/ #進入解壓后的hw路徑 sh compiling.sh
說明編譯工程需要2~3小時,請您耐心等待。
編譯完成后,顯示如下所示:
上傳網表文件,并下載FPGA鏡像。
使用faasutil工具上傳網表文件并下載FPGA鏡像。關于faasutil命令的使用方法,請參見使用faasutil。
依次運行以下命令,將壓縮包上傳到您個人的OSS Bucket,再將存放在您個人OSS Bucket中的壓縮包上傳到FaaS管理單元的OSS Bucket中。
faasutil put_object --object=bit.tar.gz --file=bit.tar.gz #--object(Object file in oss bucket) --file(Local file need to put) faasutil create_image --object=bit.tar.gz --fpgatype=xilinx --name=<HereIsFPGAImageName> --tags=<HereIsFPGAImageTag> --encrypted=false --shell=<hereIsShellVersionOfFPGA> #<HereIsFPGAImageTag>可選(鏡像Tag) encrypted可選,鏡像加密 <HereIsShellVersionOfFPGA>默認版本
運行以下命令,查看FPGA鏡像是否處于可下載狀態。
faasutil list_images
在返回結果中:
如果FPGA鏡像的"State"為"compiling",表示FPGA鏡像處于編譯狀態,您需要繼續等待。
如果FPGA鏡像的"State"為"success",表示FPGA鏡像已經可以下載,您需要找到并記錄FpgaImageUniqueId,用于后續下載鏡像(download_image)時使用。
運行以下命令。在命令返回結果中,您需要找到并記錄fpga bdf。
faasutil list_instances
運行以下命令,下載FPGA鏡像。
faasutil download_image --bdf=<fpga_bdf> --fpgaImageUniqueId=<image_uuid> #<fpga_bdf>由上一步所得 <image_uuid>鏡像uuid
運行以下命令,查看鏡像是否下載成功。
faasutil fpga_status --bdf=<fpga_bdf>
以下為返回結果示例。如果顯示的imageuuid與您獲取的FpgaImageUniqueId一致,并且fpgaStatus參數顯示valid,說明鏡像下載成功。
FAQ
上傳鏡像時出現異常,如何查看異常詳情?
如果您的工程在上傳生成鏡像的過程中出現異常,例如云上編譯服務器編譯報錯,您可以通過faasutil工具查看編譯log文件。
如何重新加載鏡像?
卸載驅動。
如果您安裝了
xdma
驅動,則需要在實例中運行sudo rmmod xdma
命令卸載驅動。如果您安裝了
xocl
驅動,則需要在實例中運行sudo rmmod xocl
命令卸載驅動。
下載鏡像。
faasutil download_image --bdf=<fpga_bdf> --fpgaImageUniqueId=<image_uuid> #<fpga_bdf>由上一步所得 <image_uuid>鏡像uuid
安裝驅動。
如果您需要安裝
xdma
驅動,請運行以下命令。sudo depmod sudo modprobe xdma
如果您需要安裝
xocl
驅動,請運行以下命令。sudo depmod sudo modprobe xocl