Zynq開發實踐(SDK之第一個純PS工程)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】

? ? ? ? 學編程的時候,大家一般都比較重視第一個項目的創建和執行。第一個fpga程序一般是led閃爍,第一個c程序一般就是hello world程序。今天就介紹下,zynq下面的hello world應該怎么編寫。和其他soc程序不一樣,zynq編寫c代碼之前,需要先創建一個block design,這就是最大的不同。整個流程稍微多了一點,不過熟能生巧就好。

1、創建zynq工程

? ? ? ? 第一步還是創建zynq工程。這一步和之前fpga沒有什么區別,唯一需要注意的地方就是對zynq芯片的選擇。我們習慣于直接用020clg400-1搜索,搜到的最后一個結果就是我們需要的芯片。

2、創建block design,添加cpu

? ? ? ? fpga開發是添加verilog代碼和約束文件。而zynq的軟件,則是需要先添加block design,這是一個頂層設計的框架,這個框架里面有cpu、有總線、有復位,還有可能有各種各樣的外設。當然目前為止,作為入門,我們一開始不弄那么復雜。添加block design之后,直接添加cpu即可。

3、去除不必要的ps連接線

? ? ? ? 因為沒有ps之外的其他外設,所以可以去除下面三部分內容,

? ? ? ? 1)FCLK_RESET0_N;

? ? ? ? 2)M_AXI_GP0 interface;

? ? ? ? 3)FCLK_CLK0。

? ? ? ? 去除之后,就是這樣的形式,即只有ddr和54個fixed io,這些接口是不需要添加端口約束的。

4、添加打印串口,配置ddr參數

? ? ? ? 既然是hello world程序,那么串口肯定是少不了的。這里我們選擇了uart0串口,作為輸出的接口。但是uart0本身可以放在很多其它的位置,所以我們首先需要通過電路圖,來確認最終的位置。

????????這里,我們把uart0放在了pin14、15引腳上面,即MIO14、MIO15。

? ? ? ? 除了uart之外,ddr也是少不了的。因此哪怕用zynq做純mcu開發,ddr也是很大的優勢。一般來說,這里配置的是ddr3控制器。通常只要選擇好ddr芯片型號即可,最多設置一下數據位。我們這里選用的是最后一個選項,即MT41J256M16 RE-125,數據寬度是16。大家可以根據自己的開發板,靈活做出選擇。

5、保存block design,開始生成文件

? ? ? ? block design保存好之后,最好利用validate 按鈕確認下、保存下。接下來生成的文件有兩個,一個是右擊,選擇“Generate Output Products”生成文件。結束之后,繼續右擊,選擇“Create HDL Wrapper”生成文件。兩個都ok之后,代表block designer就創建結束了。

6、導出硬件環境,打開sdk軟件

? ? ? ? 這里導出硬件環境比較簡單,直接單擊“File”-》“Export”-》"Export Hardware"即可,不用包含bitstream文件,因為沒涉及到pl開發。完畢之后,繼續單擊“File”-》“Launch SDK”,即可打開sdk軟件。

7、創建hello world軟件

? ? ? ? 打開sdk之后,一般已經有一個design_1_wrapper_hw_platform_0工程了。我們只需要繼續創建hello world工程即可。創建的過程中,系統會幫我們自動匹配一個bsp工程。而且工程創建以后,sdk會自動編譯好,幫助生成elf文件。如果我們需要用jtag運行程序,只需要單擊這個elf,右擊選擇“”Run as”-》“Launch on hardware(System Debug)”即可,這樣程序就可以跑起來,用mobaxterm看到串口打印了。

? ? ? ? 當然在此之前,需要連接好兩根type c線,一根是jtag,一根是usb轉串口。

8、可能會出現的問題

? ? ? ? 假設ddr沒有初始化好的話,可能會出現write memory 0x100000 error這樣的錯誤。出現錯誤之后,有兩種解決辦法,一種是繼續去尋找ddr配置失敗的原因。還有一種就是修改link file,刪掉原來的ps7_ddr_0,把現在的ps7_ram_1修改成ps7_ddr_0,這樣程序也是可以跑起來的。

? ? ? ? 大家不知道的是,zynq內部也有一段ram空間,同樣可以跑代碼、執行程序,不一定非得運行在ddr上面。改了之后,不需要初始化ddr,重新run一下jtag,自然就可以跑起來了。

9、jtag做了哪些工作

? ? ? ? 我們發現程序啟動的時候,本身是運行在ddr上面的,那么ddr是誰初始化的? 答案就是jtag。jtag不僅可以初始化ddr,還可以初始化其他外設,甚至可以幫助debug程序。但是如果程序需要發布給客戶的話,就不能依賴jtag了,這個時候就需要準備fsbl程序了。當然,這就是后面的話題了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/923686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/923686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/923686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EJS(Embedded JavaScript)(一個基于JavaScript的模板引擎,用于在HTML中嵌入動態內容)

文章目錄**1. 什么是 EJS?****2. 核心特點**- **接近原生 HTML**- **動態渲染**- **輕量高效**- **與 Express 深度集成****3. EJS 的基本語法****4. 示例代碼****HTML 模板(views/user.ejs)****Express 中渲染模板****5. 使用場景**1. **服務…

Linux:基于阻塞隊列的生產者消費模型

文章目錄一、生產者消費者模型的基本原則💕💕生產者-消費者模型的 321 原則💕💕二、為何要使用生產者消費者模型1. 解耦2. 支持并發 (提高效率)3. 忙閑不均的支持三、基于 BlockingQueue 的生產者消費者模型…

ensp啟動路由器報錯40

1. 先關閉 eNSP 模擬器、關閉 Virtualbox2. 在everything里面搜索 .VirtualBox文件夾,然后刪掉3. 再打開 eNSP,不添加任何模擬設備,單擊“菜單-工具-注冊設備”,將 AR_Base 重新注冊。4. 關閉 eNSP 模擬器

代碼隨想錄二刷之“圖論”~GO

A.深搜與廣搜(重點掌握!!!!) 深搜類似于回溯法 搜索方向,是認準一個方向搜,直到碰壁之后再換方向換方向是撤銷原路徑,改為節點鏈接的下一個路徑,回溯的過程…

基于Echarts+HTML5可視化數據大屏展示-白茶大數據溯源平臺V2

效果展示&#xff1a;代碼結構&#xff1a;主要代碼實現 index.html布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta n…

Linux 系統網絡配置及 IP 地址相關知識匯總

Linux 系統網絡配置及 IP 地址相關知識匯總 一、IP地址基礎 IP地址&#xff1a;在計算機網絡中用來唯一標識一臺設備的一組數字。 二、IPv4相關知識 1. IPv4的表示方法 采用點分十進制表示&#xff0c;即由4個0-255的十進制數通過點分隔組成&#xff08;如192.168.1.1&#xff…

百度股價突破120美元創年內新高,AI云成為增長新引擎

美東時間9月16日&#xff0c;百度&#xff08;NASDAQ: BIDU&#xff09;美股大漲近8%&#xff0c;收盤價突破120美元&#xff0c;站上124美元高位&#xff0c;創2023年10月以來新高。北京時間9月17日港股開盤&#xff0c;百度&#xff08;09888.HK&#xff09;港股再次暴漲&…

《彩虹六號:圍攻》“Siege X”發布會3月14日舉行!

使用jQuery的常用方法與返回值分析 jQuery是一個輕量級的JavaScript庫&#xff0c;旨在簡化HTML文檔遍歷和操作、事件處理以及動畫效果的創建。本文將介紹一些常用的jQuery方法及其返回值&#xff0c;幫助開發者更好地理解和運用這一強大的庫。 1. 選擇器方法 jQuery提供了多種…

[從青銅到王者] Spring Boot+Redis+Kafka電商場景面試全解析

互聯網大廠Java開發崗技術面試實錄&#xff1a;嚴肅面試官VS搞笑程序員謝飛機 文章內容 第一輪&#xff1a;基礎框架與并發控制&#xff08;電商系統基礎能力&#xff09; 面試官&#xff08;嚴肅&#xff09;&#xff1a;歡迎進入面試環節&#xff0c;首先請用3句話總結Spring…

【DMA】DMA架構解析

目錄 1 DMA架構 1. 芯片架構圖一覽 2. AHB總線矩陣掛載 3. AHB1/APB1的橋和AHB1/APB2的橋 4. DMA1 和 DMA2 的區別 2 AHB總線矩陣 1 DMA架構 1. 芯片架構圖一覽 2. AHB總線矩陣掛載 stm32F411 芯片的 AHB 總線矩陣上共掛載了 6 主 5 從 六主&#xff1a; Icode-bus、D…

GPS 定位器:精準追蹤的“隱形守護者”

GPS 定位器&#xff1a;精準追蹤的“隱形守護者” 一、什么是 GPS 定位器&#xff1f; GPS 定位器是一種基于 全球定位系統&#xff08;Global Positioning System, GPS&#xff09; 的智能追蹤設備。 通過接收衛星信號并結合通信模塊&#xff08;如 4G、NB-IoT&#xff09;&am…

前端拖拽排序實現

1. 使用 HTML5 事件 觸發時機 核心任務 dragstart 開始拖拽時 準備數據&#xff0c;貼上標簽 dragover 經過目標上方時 必須 preventDefault()&#xff0c;發出“允許放置”的信號 dragleave 離開目標上方時 清理高亮等臨時視覺效果 drop 在目標上松手時 接收數據…

arm coresight

這是一個arm設計的調試基礎架構&#xff0c;我們常用的debug基本都包含在內。比如ETM、PTM、ITM、HTM、ETB等。 注意ETM、PTM、ITM、HTM、ETB是coresight的子集。這些工具相比普通debug的斷點調試&#xff0c;需要更高的專業水平&#xff0c;因此也用于復雜軟件故障定位、性能…

《華為基本法》 —— 企業發展的導航儀

當一家企業從 “小作坊” 向 “規模化組織” 跨越時&#xff0c;最需要的是什么&#xff1f;華為的答案&#xff0c;藏在 1998 年出臺的《華為基本法》里。1998 年&#xff0c;《華為基本法》正式頒布&#xff0c;這部凝結華為早期經營智慧的綱領性文件&#xff0c;不僅為華為從…

【完整源碼+數據集+部署教程】傳統韓文化元素分割系統: yolov8-seg-GFPN

背景意義 研究背景與意義 隨著全球化的加速&#xff0c;傳統文化的保護與傳承面臨著前所未有的挑戰。尤其是韓國的傳統文化&#xff0c;作為東亞文化的重要組成部分&#xff0c;蘊含著豐富的歷史、藝術和哲學內涵。然而&#xff0c;隨著現代化進程的推進&#xff0c;許多傳統文…

構建AI智能體:三十五、決策樹的核心機制(一):刨根問底鳶尾花分類中的參數推理計算

一、初識決策樹想象一個生活中的場景&#xff0c;我們去水果店買一個西瓜&#xff0c;該怎么判斷一個西瓜是不是又甜又好的呢&#xff1f;我們可能會問自己一系列問題&#xff1a;首先看看它的紋路清晰嗎&#xff1f;如果“是”&#xff0c;那么它可能是個好瓜。如果“否“&…

c語言中實現線程同步的操作

線程 常見問題 同步權限 在多線程 / 多進程并發時&#xff0c;為避免共享資源&#xff08;如內存變量、硬件設備、文件&#xff09;被同時修改導致的數據不一致&#xff0c;需要通過 “同步機制” 控制誰能訪問資源 ——“獲取同步權限” 就是線程 / 進程申請這種訪問資格的過程…

一臺設備管理多個 GitHub 賬號:從配置到切換的完整指南

一臺設備管理多個 GitHub 賬號&#xff1a;從配置到切換的完整指南 在日常開發中&#xff0c;我們經常需要在同一臺電腦上使用多個 GitHub 賬號&#xff08;比如個人賬號和工作賬號&#xff09;。但默認情況下&#xff0c;Git 會優先使用全局配置的賬號&#xff0c;導致推送代…

即插即用,秒入虛擬:TouchDIVER Pro 觸覺手套 賦能 AR/VR 高效交互

一、即插即用&#xff0c;零門檻開啟沉浸之旅 在XR&#xff08;擴展現實&#xff09;技術高速發展的今天&#xff0c;用戶對“真實感”的追求愈發迫切。Weart公司旗下旗艦產品TouchDIVER Pro觸覺手套&#xff0c;憑借無需適配器、無需復雜設置的極簡設計&#xff0c;打破傳統觸…

GitHub熱榜項目 - 日榜之應用場景與未來發展趨勢

一、引言GitHub熱榜項目 - 日榜呈現出豐富多樣的技術成果&#xff0c;這些項目蘊含著巨大的應用潛力&#xff0c;并且對未來數智化技術的發展有著重要的指示作用。深入探究其應用場景以及未來發展趨勢&#xff0c;能讓我們更好地把握技術發展方向&#xff0c;將這些前沿技術應用…