衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于zynq7000的linux系統搭建設計

電子設計 ? 來源:AI加速微信公眾號 ? 作者:AI加速微信公眾號 ? 2020-11-30 11:56 ? 次閱讀

Zynq器件將armFPGA結合,利用了兩者各自的優勢,arm可以實現靈活的控制,而FPGA部分可以實現算法加速,這大大擴展了zynq的應用。比如深度學習加速,圖像處理等等。PL側表示FPGA的邏輯部分,PS側為arm端以及一些AXI接口控制部分,二者實際上通過AXI接口實現通信和互聯。PS可以通過AXI來對PL邏輯部分進行配置和控制,PL側通過AXI和PS進行數據交互。本章基于zynq7020器件來搭建Linux系統,描述搭建Linux系統過程中PL側的配置以及對u-boot,kenel,桌面系統的配置和編輯。

1. vivado工程創建

本文使用的是黑金的zynq7020開發板。搭建一個最基本的linux系統需要以下基本配置:

1)arm核的添加和配置。

打開vivado,新建工程。然后創建block,添加zynq processing system。圖中iic是后邊在開發IIC驅動時添加的,最基本的linux系統可以不適用IIC。

圖1.1 添加zynq系統

2) bankIO電壓設置。

根據原理圖設置bank IO的電壓。如圖1.2所示。SD卡配置。

Linux系統安裝在SD卡中,所以需要完成SD卡配置,根據原理圖選擇SD卡的使用引腳。

圖1.2 IO電壓和SD卡配置

3) UART口配置。

需要用到串口進行調試,所以配置串口MIO引腳。

圖1.3 串口引腳配置

4) DDR配置。

內存是必須的。這里面已經有內存型號供你選擇,不需要在對DDR參數做配置,只選擇MT41J256M16RE-125就行了。

圖1.4 DDR配置

這樣就完成了一個Linux系統啟動需要的最基本配置。接下來對工程進行綜合和實現,生成bit,并在file菜單項中選擇export/export hardware,選擇include bitstream,點積OK就生成了linux系統需要的硬件工程。

接下來還需要生成啟動u-boot的fsbl。這里簡單說一下linux系統啟動的基本過程:

FSBL(完成IO電壓,SD卡,UART等硬件的檢測和基本配置,然后啟動u-boot。)->U-boot(這個主要完成arm硬件的一些更進一步檢測和配置,然后去啟動kernel)->kernel(這個是linux系統需要的所有驅動)->文件系統。

我們launch SDK,打開SDK生成fsbl和需要的設備樹。

New->application project->zynq FSBL,然后進行編譯,就生成了fsbl.elf文件。如果我們也已經生成了u-boot文件,就可以用SDK來制作boot.bin。我們可以選擇fsbl的工程,右鍵create boot image,然后選擇u-boot的路徑,partition type選擇dtafile。然后create image就會生成boot.bin了。我們在fsbl工程目錄中的bootimage文件夾下看到boot.bin。

圖1.5 選擇u-boot路徑

生成devicetree需要zynq的基本divecetree文件,可以在git上下載:https://github.com/Xilinx/device-tree-xlnx。下載的設備樹文件添加到SDK中的repositories中:

圖1.6 添加設備樹文件來生成設備樹

然后new->board support package project->device_tree,這樣就生成了設備樹源文件。源文件有以下幾個:

Zynq-7000.dtsi,這個是zynq-7000的默認硬件配置,通常不需要修改。

pcw.dtsi,這個文件是針對自己的硬件平臺進行進一步配置的。比如在zynq-7000中sdhci都是不使能的,在pcw.dtsi中就需要進行使能,并配置sdhci0的statue為okay。

System-top.dtsi,其配置一些別名,并配置chosen,這個主要是選擇在啟動硬件的時候如何和操作系統進行通信,比如stdout-path選擇boot輸出介質,一般都是串口輸出。

用這三個文件就可以了。

圖1.7 設備樹源文件生成

以上就完成了linux系統啟動的硬件工程搭建,設備樹產生,以及fsbl產生。

2. u-boot編譯

下載u-boot源碼:https://github.com/Xilinx/u-boot-xlnx。

主要配置u-boot中的./configs/*_defconfig文件,這個主要是對arm端硬件進行配置。這里我們就使用zynq_zc702_defconfig,當然這里可以修改默認設備樹文件和board_name. 比如將defconfig文件命名為board_name_defconfig,相應有文件./include/configs/board_name.h來描述板卡信息

然后在./include/configs中復制一份zynq_zc70x.h為你想要的板級名稱。這個時候我們需要修改zynq_common.h中的配置。由于我們的文件系統在SD卡的第二分區,所以需要修改宏定義:CONFIG_EXTRA_ENV_SETTINGS,去除了ramdisk的啟動。

然后建立uEnv.txt,在其中設置環境變量。如圖2.3所示。指定了文件系統所在位置為SD卡分區2。文件系統格式為ext3。

圖2.1 defconfig文件,紅框可以修改成為你的板卡的名字和設備樹名字


圖2.2 sdboot變量修改前和修改后

圖2.3 uEnv.txt中設置

接下來就是編譯u-boot了。需要用到交叉編譯工具arm-xilinx-linux-gnueabi。目前的vivado工具中已經沒有這個交叉編譯工具了,可以到網上下載這個工具鏈。然后export PATH=$PATH: dir/bin。可以在Makefile中設置默認的編譯工具:

圖2.4 Makefile中設置編譯工具

然后make board_name_defconfig進行配置,最后make就可以編譯出u-boot了。根目錄下的u-boot.elf正是我們需要的文件,用于合成boot.bin。在1節中已經介紹了。

3. 編譯kernel

Kernel可以到git上下載,kernel包含所有的驅動,如果進行驅動修改的話,可以在其中進行配置。比如篩選某些驅動。通常開發新的驅動,并不需要在其中進行修改。因為驅動可以通過命令行在系統啟動后動態加載。所以只僅僅對驅動編譯就行了,在Makefile中添加編譯工具,這個核u-boot一樣。然后make uImage LOADADDR=0x00008000就可以了。編譯完成后再arch/arm/boot中產生uImage,這個是我們要用到的內核文件。

設備樹文件的編譯也很簡單,就是通過設備樹編譯工具dtc將dtsi文件編為dtc文件就行了,這里注意dtc文件名稱要和在u-boot中zynq-common.h中的設備樹文件名稱一樣。通常都為devicetree。編譯命令為:

dtc –I dtx –O dtb –o devicetree.dtb your.dts

文件系統可以使用linaro Ubuntu文件系統,從網上下載,解壓。這個時候需要對SD卡進行分區,1區為fat格式,有200M就夠了,存放boot.bin,uImage,devicetree.dtb,uEnv.txt文件。第二區用ext3格式,存放linaro Ubuntu文件系統。

4. linux系統啟動過程

圖4.1 fsbl啟動

圖4.2 fsbl完成

圖4.3 u-boot啟動:讀取env,uImage和設備樹

圖4.4 啟動kernel

圖4.5 文件系統的啟動

總結

本篇在zynq7000的基礎上,制作一個最基本的linux系統。整個流程包括工程創建,fsbl和設備樹生成,u-boot的配置和編譯,kernel編譯以及文件系統制作。

linux系統

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210399
  • Zynq
    +關注

    關注

    10

    文章

    610

    瀏覽量

    47298
收藏 人收藏

    評論

    相關推薦

    基于Xilinx ZYNQ7000 FPGA嵌入式開發實戰指南

    電子發燒友網站提供《基于Xilinx ZYNQ7000 FPGA嵌入式開發實戰指南.pdf》資料免費下載
    發表于 12-10 15:31 ?2次下載

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有?

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有? tsw1400_lvds_dac_sample_wise_restored的代碼寫的實在太難度了,一句注釋都沒有
    發表于 11-25 06:04

    使用ZYNQ驅動評估板的子板搭建一個簡單采集系統遇到的幾個問題求解

    最近我們正想做一個多通道腦電采集系統,使用ZYNQ驅動評估板的子板搭建一個簡單采集系統。我們使用信號發生器產生正弦波,能夠采集到數據。但是還有如下幾個問題: 1、我們
    發表于 11-22 07:53

    當ADC3663的LVDS輸出給到ZYNQ-7000的LVDS接收這兩者之間可以直連嗎?

    ADC3663的LVDS差分輸出與xilinx的ZYNQ-7000的LVDS輸入的電平匹配問題 ADC3663的供電是1.8V,ADC3663的LVDS輸出給到ZYNQ-7000的BANK12
    發表于 11-14 07:43

    ZYNQ核心板學習筆記

    此款開發板使用的是 Xilinx 公司的 Zynq7000 系列的芯片,型號為 XC7Z020-2CLG484I,484 個引腳的 FBGA 封裝。
    的頭像 發表于 10-24 18:08 ?1075次閱讀
    <b class='flag-5'>ZYNQ</b>核心板學習筆記

    Xilinx ZYNQ 7000系列SoC的功能特性

    本文介紹下Xilinx ZYNQ 7000系列SoC的功能特性、資源特性、封裝兼容性以及如何訂購器件。
    的頭像 發表于 10-24 15:04 ?1276次閱讀
    Xilinx <b class='flag-5'>ZYNQ</b> <b class='flag-5'>7000</b>系列SoC的功能特性

    zynq7000 BSP無法在u-boot加載運行怎么解決?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf 4、采用u-boot tftp下載到板子th
    發表于 09-27 09:26

    基于VDMA的遠程圖像采集系統參考設計

    本文參考設計基于 AMD ZYNQ 7000 Device, 使用 VDMA 做原始圖像采集系統,在 Petalinux 下做服務器,通過 Socket 發送圖像至 Windows 或者 Li
    的頭像 發表于 09-18 10:11 ?563次閱讀
    基于VDMA的遠程圖像采集<b class='flag-5'>系統</b>參考設計

    正點原子ZYNQ7015開發板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強悍,資料豐富!

    ! 正點原子Z15 ZYNQ開發板,搭載Xilinx Zynq7000系列芯片,核心板主控芯片的型號是XC7Z015CLG485-2。開發板由核心板+底板組成,外設資源豐富,板載1路PS端千兆以太網
    發表于 09-14 10:12

    zynq7000 BSP無法在u-boot加載運行,為什么?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf 4、采用u-boot tftp下載到板子th
    發表于 09-13 07:06

    [XILINX] 正點原子ZYNQ7035/7045/7100開發板發布、ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2!

    正點原子FPGA新品ZYNQ7035/7045/7100開發板,ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2! 正點原子Z100 ZYNQ開發板,搭載Xilinx
    發表于 09-02 17:18

    簡談Xilinx Zynq-7000嵌入式系統設計與實現

    今天給大俠帶來簡談Xilinx Zynq-7000嵌入式系統設計與實現,話不多說,上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對立面的思想的融合,ARM處理器的串行執行+FPGA
    發表于 05-08 16:23

    Zynq-7000為何不是FPGA?

    Zynq-7000可擴展處理平臺是采用賽靈思新一代FPGA(Artix-7與Kintex-7FPGA)所采用的同一28nm可編程技術的最新產品系列。
    發表于 04-26 11:30 ?1358次閱讀
    <b class='flag-5'>Zynq-7000</b>為何不是FPGA?

    簡談Xilinx Zynq-7000嵌入式系統設計與實現

    今天給大俠帶來簡談Xilinx Zynq-7000嵌入式系統設計與實現,話不多說,上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對立面的思想的融合,ARM處理器的串行執行+FPGA
    發表于 04-10 16:00

    請問FX3的UART口和Xilinx ZYNQ7000的PS端的UART進行硬件連接需要TTL電平轉換嗎?

    想讓FX3的UART口和Xilinx ZYNQ7000的PS(Processor system)端的內置UART相互通信,兩個芯片使用的是同一個電源(同在一塊板子上或分別在兩塊相互連接的板子上),請教一下它們之間的硬件連接需要TTL電平轉換(使用2塊MAX3232ESE芯片,如下圖所示)么?謝謝
    發表于 02-28 08:32
    博盈娱乐场| 盛世国际| 百家乐解密软件| 百家乐官网规则好学吗| 威尼斯人娱乐城极好| 斗首24山择日天机择日| 百家乐官网娱乐注册就送| 大发888song58| 澳门百家乐登陆网址| 信誉百家乐官网平台| 网络棋牌赌博| 威尼斯人娱乐网站| 真人百家乐澳门娱乐城| 百家乐官网赌场| 百家乐官网赌博机假在哪里 | 百家乐百姓话题| 百家乐视频打麻将| 玩百家乐官网有何技巧| 百家乐官网打印机分析| 优博平台代理开户| 大发888官网e世博官方网站| HG百家乐大转轮| 百家乐注册优惠平台| 百家乐官网那里可以玩| 百家乐官网怎样出千| 上海德州扑克俱乐部| 大发888手机版下载安装| 威尼斯人娱乐 老品牌| 百家乐预约| 闲和庄百家乐官网赌场娱乐网规则 | 百家乐推荐| 休闲百家乐的玩法技巧和规则| 高科技百家乐牌具| 百家乐凯时娱乐场| 百家乐算牌方| 百家乐网上真钱娱乐| 迪威百家乐娱乐平台| 宝马会百家乐娱乐城| 百家乐街机| 全景网百家乐的玩法技巧和规则| 重庆百家乐的玩法技巧和规则|