在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

ZYNQ Linux操作系統移植四個部分說明文檔

電子設計 ? 來源:Felven的博客 ? 作者:Felven的博客 ? 2020-12-14 14:59 ? 次閱讀

一、組成
ZYNQ上面移植Linux操作系統包括四個部分,uboot,devicetree,kernel,ramdisk.

其中uboot類似于bios,負責對設備進行簡單的初始化,devicetree以樹的形式對zynq相連的硬件設備進行描述,kernel是加載的操作系統內核,ramdisk是操作系統啟動之后掛載的文件系統。

二、啟動過程
移植操作系統后zynq的啟動過程如下,首先加載bootrom(zynq中自帶,用戶無法修改),然后執行fsbl(這個根據硬件在sdk中創建),然后執行uboot,uboot會將kernel、devicetree和ramdisk載入ddr,跳轉到內核入口處執行,這樣linux就啟動了。

o4YBAF9uELeAVxYlAACA6TM13kY883.png

對bootrom、fsbl和uboot詳細描述如下。

o4YBAF9uELuABxXtAAQSHlX-gg8443.png

三、uboot設置
uboot可以從xilinx 官方github上面下載,地址是:

通常uboot不需要升級,目前使用的版本為xilinx 2015年底發布的版本2015.4.不過針對不同的模塊uboot需要進行修改,主要修改下面幾個地方。

1、參考時鐘修改
地址位于arch/arm/cpu/armv7/zynq/clk.c

由于ZYNQ設計大多使用50M參考時鐘,需要更改參考時鐘

# define CONFIG_ZYNQ_PS_CLK_FREQ 33333333UL更改為

# define CONFIG_ZYNQ_PS_CLK_FREQ 50000000UL

2、串口配置修改
地址位于include/configs/zynq_zc70x.h

根據硬件串口情況進行配置

#define CONFIG_ZYNQ_SERIAL_UART1 使用串口1

#define CONFIG_ZYNQ_SERIAL_UART0 使用串口0

如果兩個串口都啟用,一起配置即可。

3、DDR配置修改
地址位于include/configs/zynq_zc70x.h

根據DDR實際大小地址修改配置參數

#define CONFIG_SYS_SDRAM_SIZE (1024 * 1024 * 1024) 1GB DDR

#define CONFIG_SYS_SDRAM_SIZE (512 * 1024 * 1024) 512MB DDR

4、PHY地址配置
地址位于include/configs/zynq_zc70x.h

根據硬件PHY地址進行配置,通常硬件會將PHY地址設置為0

#define CONFIG_ZYNQ_GEM_PHY_ADDR0 0

如果硬件啟用了兩個網卡,則需要設置兩個PHY的地址

#define CONFIG_ZYNQ_GEM0

#define CONFIG_ZYNQ_GEM_PHY_ADDR0 1


#define CONFIG_ZYNQ_GEM1

#define CONFIG_ZYNQ_GEM_PHY_ADDR1 18

5、啟動方式配置
地址位于include/configs/zynq_common.h

如果使用QSPI flash方式啟動,需要配置QSPI FLASH對應地址,如下。

"sf probe 0 0 0 && " /

"sf read 0x3000000 0x400000 ${kernel_size} && " /

"sf read 0x2A00000 0x900000 ${devicetree_size} && " /

"echo Copying ramdisk... && " /

"sf read 0x2000000 0x920000 ${ramdisk_size} && " /

"bootm 0x3000000 0x2000000 0x2A00000/0" /

6、IP地址配置
地址位于include/configs/zynq_common.h

#define CONFIG_IPADDR 192.168.100.12 //uboot啟動時板子的IP地址

#define CONFIG_SERVERIP 192.168.100.6 //uboot啟動時能訪問的遠程服務器地址,若采用TFTP加載,需要將本地電腦配置為該地址

7、啟動延遲設置
地址位于include/configs/zynq_common.h

#define CONFIG_BOOTDELAY 7 /* -1 to Disable autoboot */

Uboot默認延遲7s再從QSPI flash中加載操作系統,如果設置為-1表明禁止自動加載

8、初始化設置
地址位于net/eth.c 和 arch/arm/lib/board.c

Uboot中需要對5396進行初始化,同時使用GPIO對PHY或NOR FLASH等進行復位,可以在eth.c中增加代碼

void mygpio_init()

{ }

然后將Mygpio_init()加入到arch/arm/lib/board.c中

9、Uboot編譯
修改完成后,可以使用下列命令編譯產生uboot

進入u-boot文件夾

$ make distclean //文件夾清理

$ make zynq_zc70x_config // 載入配置,通常使用zynq_zc70x.h文件

pIYBAF9uEL6AMFBQAALA61J4tLc224.png

$ make

編譯完成后文件夾下會出現u-boot文件,將其修改為u-boot.elf

pIYBAF9uEMGAVTaHAAEUBK1PLhE618.png

四、devicetree設置
devicetree源文件可以從xilinx官方下載,地址:https://github.com/Xilinx/device-tree-xlnx/releases

不同板子的devicetree可以根據xilinx sdk生成,操作過程如下。

1、在XILINX SDK中打開板子的ZYNQ工程,在xilinx tools中添加devicetree的源文件地址

o4YBAF9uEMKAd6XkAAD_9qCZ7T0945.png

2、創建devicetree BSP文件

o4YBAF9uEMWAa6t6AAGDcllJTKE440.png

創建完成后得到文件如下

pIYBAF9uEMiACjpUAAJ1w0Kz-40516.png

3、將dtsi,dts文件拷入linux系統下,使用dts工具制作devicetree.dtb文件

o4YBAF9uEMqAG0PrAACzS2-9Wm4844.png

4、如果需要修改devicetree文件,可以通過dtc工具轉換為可讀文件dts

pIYBAF9uEMyAFFBeAAD4aKdvEPw344.png

生成的1.dts可打開,里面能看到zynq端的外設信息和啟用情況。通常需要修改網卡配置,如下,下例中phy地址為0

ethernet@e000b000 {

compatible = "xlnx,ps7-ethernet-1.00.a";

reg = ;

status = "okay";

interrupt-parent = ;

interrupts = ;

clocks = ;

clock-names = "ref_clk", "aper_clk";

#address-cells = ;

#size-cells = ;

enet-reset = ;

local-mac-address = [00 0a 35 00 00 00];

phy-mode = "rgmii";

phy-handle = ;

xlnx,eth-mode = ;

xlnx,has-mdio = ;

xlnx,ptp-enet-clock = ;

mdio {

#address-cells = ;

#size-cells = ;

phy@0 {

compatible = "marvell,88e1111";

device_type = "ethernet-phy";

reg = ;

linux,phandle = ;

phandle = ;

};

};

};

當對dts修改完成后,再次使用dtc工具編譯產生devicetree.dtb即可

五、文件系統設置
文件系統一般隨zynq開發板發布,可以從prebuit中找到文件系統的tar文件

o4YBAF9uENGAdTbqAANeO7N49Ds478.png

解壓后得到的文件如下

o4YBAF9uENKAaN0UAAB4NNelZFk463.png

在文件系統中,如果需要添加用戶自定義的shell腳本或可執行程序,可以放在/usr/bin目錄下。如果要設置系統自啟動項,可以在/etc/rc5.d中增加shell腳本。

pIYBAF9uENSAcBMKAAEaKMBjqkE746.png

這里進行了IP地址的配置

o4YBAF9uENeAbdCcAAImwuHNbn0338.png

1、文件系統制作
當修改完rootfs后,可以通過下面命令制作uramdisk文件系統

$sh -c 'cd rootfs/ && find . | cpio -H newc -o' | gzip -9 > new_initramfs.cpio.gz

$mkimage -A arm -T ramdisk -C gzip -d new_initramfs.cpio.gz uramdisk.image.gz

執行完畢將會得到uramdisk.image.gz

六、內核配置
內核可以從xilinx官方git下載,地址:

目前linux內核中已經集成了常見的驅動,驅動源碼位于drivers文件夾下。針對內核的修改位于 arch/arm/configs/xilinx_zynq_defconfig文件中,該文件中定義了內核所包含的驅動程序。

1、調試輸出打印
在xilinx_zynq_defconfig中,需要根據硬件設計正確配置串口打印。

CONFIG_DEBUG_LL=y

CONFIG_DEBUG_ZYNQ_UART0=y //使用串口0打印輸出

CONFIG_EARLY_PRINTK=y

2、內核編譯
修改完xilinx_zynq_defconfig后,可以使用下面命令編譯內核

$sudo //編譯內核需要運行在root權限下

$make distclean //清理文件

$make ARCH=arm xilinx_zynq_defconfig //讀取內核配置信息,即xilinx_zynq_defconfig中的內容

$make ARCH=arm menuconfig //進入內核菜單進行可視化配置,如果xilinx_zynq_defconfig中對內核配置準確時,該步驟可以省略

$make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage -j4 //編譯產生uImage

產生的文件位于arch/arm/boot文件夾內

pIYBAF9uENmAV0RkAACFVqGhqHM345.png

七、常見驅動
1、I2C驅動
目前板子上都會用到I2C,首先需要知道I2C從設備的地址,如2/4/8這些.在devicetree中進行設置

pIYBAF9uENuAGShtAAFJWxUxz6M774.png

在內核中添加1848的驅動

o4YBAF9uEN2AFbyuAADO0KtUlZM540.png

編譯內核的時候加入該驅動,同時修改makefile和kconfig文件

pIYBAF9uEN-AKuG6AAGcZ2UjQwE993.png

這樣在編譯內核的時候就能看到將驅動編進內核的選項了。

pIYBAF9uEOGAXXKOAAEK6FT4Fow752.png


o4YBAF9uEOOAQ4COAACr1JAXrW0025.png

編譯完內核后,啟動時就能看到1848的從設備

pIYBAF9uEOWAZDR_AAGCWbxSXJY608.png

2、ADC驅動
ADC為ZYNQ用來監測電壓或電流的通道,目前ZYNQ中集成了16個通道,首先需要在devicetree中設置啟用的通道,圖中啟用的是0,1,8三個通道

o4YBAF9uEOeAdkVvAACePOBUXc0956.png

內核中啟用ADC驅動

o4YBAF9uEOqALkYuAALM8Wgyf4A920.png


pIYBAF9uEO6AXrTEAAMBiRFhPxo365.png


o4YBAF9uEPGAaSz7AANXI02i7CY601.png

系統啟動后就能看到輸出了,這里輸出的是溫度值

o4YBAF9uEPaAHSDgAAQdG9ZhonQ882.png


pIYBAF9uEPiAd_iDAAGNdVMKyk4343.png

實際溫度還需要進行換算,結果如下

o4YBAF9uEPyAMSGCAANgyEvE1UQ029.png

3、NOR FLASH驅動
NOR FLAHS驅動主要實現文件系統的掛載,這里不需要設置devicetree,只需要在內核中添加掛載文件系統的代碼

pIYBAF9uEP-AAG3pAAH3lfykgbw288.png

上圖中將NOR FALSH分為2個區,大小分別為32MB和64MB,需要注意的是NOR FLASH的起始地址和容量大小設置

#defineWINDOW_ADDR 0x80000000 //和vivado里面的emc起始地址一致

#defineWINDOW_SIZE 0x8000000 //nor flash大小

在makefile中將該驅動編譯進內核即可

o4YBAF9uEQGAOZtOAACRtPBXfVg765.png

啟動后就能看到掛載的文件系統了

pIYBAF9uEQOAGBC4AAG4TWrQZhs322.png

4、外部中斷驅動
當zynq接收來自外部的GPIO中斷時,需要使用UIO機制及時響應中斷,首先在devicetree中模擬出四個GPIO設備

o4YBAF9uEQaADY5IAAJODkPcmHg981.png

注意上面的中斷號0x1e-0x21要與硬件實際相連的中斷管腳一致。

同時在devicetree中啟用UIO機制

o4YBAF9uEQeAHuLQAACje5Q-BBs547.png

在編譯內核時將UIO驅動編譯進內核

pIYBAF9uEQmAXjB-AAESSskar1E386.png

當操作系統啟動完成后就能看到四個外部GPIO設備產生的中斷了

pIYBAF9uEQ6ANu9GAAQIdcAuZOA931.png

八、啟動文件制作
如下圖所示,在SDK中創建boot.bin需要包含下面五個文件

Fsbl.elf

Zynq_top.bin

u-boot.elf

uImage

devicetree.dtb

uramdisk.image.gz

制作過程中需要正確配置uimage,devicetree.dtb,uramdisk.image.gz的地址,讓其與u-boot中從QSPI flash加載地址匹配

pIYBAF9uEROALacYAAS3fSaHpCI455.png


pIYBAF9uERaAU2V8AANG7gbqJ-g675.png


o4YBAF9uERuADv8pAAPaaMcltz0247.png

制作完成后將boot.bin通過下載電纜燒入QSPI FLASH中即可。
編輯:hfy


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

    關注

    87

    文章

    11479

    瀏覽量

    213046
  • 操作系統
    +關注

    關注

    37

    文章

    7113

    瀏覽量

    125115
  • Zynq
    +關注

    關注

    10

    文章

    614

    瀏覽量

    48085
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    stellar studio按照說明文檔進行編譯器環境配置,為什么會報錯?

    已經是按照說明文檔進行編譯器環境配置,但是還是會報錯,問題大概可能是文件系統操作錯誤,無法訪問打開文件,看樣子像系統問題,但是其他同學有和我系統
    發表于 06-12 07:49

    在cypress 3014進行多種分辨率刷新率切換的操作,是否可行?

    我想在cypress 3014進行多種分辨率刷新率切換的操作,不知道是否可行,有無相關demo或者說明文檔可提供
    發表于 05-09 08:25

    鴻道Intewell操作系統Linux實時拓展方案

    鴻道Intewell操作系統是科東軟件自主研發的新型工業實時操作系統,歷經30多年研發積累,采用業界領先的微內核架構,具備高實時、高安全及強擴展的特性,是目前國內唯一通過汽車、工業控制、醫療儀器、軌道交通項功能安全認證的
    的頭像 發表于 02-27 10:08 ?350次閱讀
    鴻道Intewell<b class='flag-5'>操作系統</b>的<b class='flag-5'>Linux</b>實時拓展方案

    deepin操作系統介紹

    希望從自己的能力和對桌面操作系統的理解,能給 Linux 的用戶與開發者更多的選擇。我們也相信 deepin 能夠得到更多用戶的認可與喜愛,成為開源世界的最佳選擇。? 一、 deepin 操作系統 先說
    的頭像 發表于 12-23 09:08 ?2188次閱讀
    deepin<b class='flag-5'>操作系統</b>介紹

    IP2368寄存器說明文檔

    轉換芯片,轉到 3.3V;? IP2368 INT 應用說明:IP2368 休眠時檢測到 INT 為高就會喚醒,喚醒之后,IP2368 主動拉高 INT,100ms之后,MCU 可進行 I2C 通信,進行寄存器的讀寫操作;IP2368 在進入休眠之前,會切換為輸入高阻來檢
    發表于 12-04 14:30 ?21次下載

    linux是實時系統還是分時操作系統

    大家平時玩單片機基本上對于μC/OS、FreeRTOS、ThreadX這些操作系統非常熟悉了,他們都屬于實時操作系統(RTOS),在工業領域比較廣泛;然而對于linux這樣的基于時間片劃分的非實時
    的頭像 發表于 11-11 11:43 ?1135次閱讀

    【北京迅為】i.mx8mm嵌入式linux開發指南第篇 嵌入式Linux系統移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發指南第篇 嵌入式Linux系統移植篇第六十九章uboot
    的頭像 發表于 10-22 14:46 ?1109次閱讀
    【北京迅為】i.mx8mm嵌入式<b class='flag-5'>linux</b>開發指南第<b class='flag-5'>四</b>篇 嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>系統</b><b class='flag-5'>移植</b>篇第六十九章uboot<b class='flag-5'>移植</b>

    linux操作系統安裝步驟 linux操作系統的特點及組成

    Linux操作系統安裝步驟 Linux操作系統是一種開源的操作系統,它以其穩定性、安全性和靈活性而聞名。以下是安裝
    的頭像 發表于 10-21 11:24 ?1152次閱讀

    請問TAS6424E-Q1和TAS6424-Q1的區別主要有什么 是否有官方的說明文檔

    請問TAS6424E-Q1和TAS6424-Q1的區別是否有官方的說明文檔,除了數據手冊之外,多謝!
    發表于 10-09 10:11

    IP5385應用說明文檔

    IP5385 應用說明文檔
    發表于 10-08 09:25 ?15次下載

    Linux操作系統份額創歷史新高,逼近4.5%里程碑

    在最新的全球操作系統市場份額報告中,市調機構StatCounter于8月27日發布了令人矚目的數據:2024年7月,Linux系統實現了歷史性的飛躍,其市場份額首次逼近4.5%的關口,達到了4.44%的新高。這一成就標志著
    的頭像 發表于 08-27 17:05 ?1957次閱讀

    Linux操作系統運行參數自動調整技術

    Linux操作系統運行參數的自動調整是一復雜而關鍵的技術,它可以顯著提高系統性能、穩定性和資源利用率。通過使用自適應算法特別是內核態的機器學習框架、性能監控工具和配置管理工具,能夠在
    的頭像 發表于 08-22 09:53 ?724次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>運行參數自動調整技術

    超低功耗 AT方案說明文檔 新增716s/718p芯片模塊的固件獲取以及測試方法

    超低功耗 AT方案說明文檔 新增716s/718p芯片模塊的固件獲取以及測試方法
    的頭像 發表于 07-18 09:36 ?1952次閱讀
    超低功耗 AT方案<b class='flag-5'>說明文檔</b> 新增716s/718p芯片模塊的固件獲取以及測試方法

    16306鉦銘科通用協議說明文檔V1.2

    16306鉦銘科通用協議說明文檔V1.2
    發表于 07-09 11:52 ?1次下載

    工業實時操作系統對比:鴻道Intewell跟rt-linux有啥區別

    Intewell和RT-Linux是兩種不同的實時操作系統(RTOS),它們具有各自獨特的特點和優勢。以下是Intewell操作系統的一些關鍵特性,以及與RT-Linux的比較:
    的頭像 發表于 07-03 10:00 ?882次閱讀
    工業實時<b class='flag-5'>操作系統</b>對比:鴻道Intewell跟rt-<b class='flag-5'>linux</b>有啥區別
    主站蜘蛛池模板: 一级a性色生活片毛片 | 在线免费视频一区二区 | 色老头·com| 天天色综合社区 | 久久99爰这里有精品国产 | 久久精品免看国产 | 三级视频国产 | 免费一级毛片不卡在线播放 | 亚洲欧美卡通 动漫 丝袜 | 免费在线a视频 | 黄色网址 在线播放 | 色老头永久免费网站 | 波多野结衣在线视频观看 | 日本小视频免费 | 欧美午夜视频 | 人成xxxwww免费视频 | 久久99精品久久久久久臀蜜桃 | 亚洲五月综合缴情婷婷 | 天堂在线视频 | 一卡二卡卡四卡无人区中文 | 双性人皇上被c到哭 | 天天干天天色综合 | 一级毛片免费在线观看网站 | 天天天干 | 久99频这里只精品23热 视频 | www激情com| 日韩a级毛片 | 国产综合视频 | 欧美成人免费全部观看天天性色 | 天天拍拍天天爽免费视频 | 四虎国产成人亚洲精品 | 手机看片国产福利 | 亚洲精品久 | 桃桃酱无缝丝袜在线播放 | 亚洲产国偷v产偷v自拍色戒 | 五月婷婷久久综合 | 在线免费看黄 | 欧美影院在线 | 日本成人a视频 | 国产精品乳摇在线播放 | 久久婷婷国产一区二区三区 |