精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

Linux + Xenomai實時操作系統創建方案

454398 ? 來源:csdn ? 作者:Huster-ty ? 2020-12-26 10:34 ? 次閱讀

作者:Huster-ty

Xenomai是一種采用雙內核機制的Linux 內核的強實時擴展。由于Linux 內核本身的實現方式和復雜度,使得Linux 本身不能使用于強實時應用。在雙內核技術下,存在一個支持強實時的微內核,它與Linux 內核共同運行于硬件平臺上,實時內核的優先級高于Linux 內核,它負責處理系統的實時任務,而Linux 則負責處理非實時任務,只有當實時內核不再有實時任務需要處理的時候,Linux內核才能得到運行的機會。所以Xenomai與傳統Linux組成雙內核以彌補Linux實時性差的缺陷。

準備內容
Linux源碼:
Linux-4.9.24版本,下載地址:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapsho...

Xenomai源碼:
xenomai-3.0.5版本,下載地址:https://gitlab.denx.de/Xenomai/xenomai/-/archive/master/xenomai-master.zip

3.0.5不是最新版本,讀者可以嘗試最新版本的xenomai。Xenomail官網:http://www.cs.ru.nl/lab/xenomai/

Ipipe補丁:
ipipe-core-4.9.24版本,下載地址:https://xenomai.org/downloads/ipipe/v4.x/arm/older/

打補丁是系統移植的關鍵點,所以Ipipe補丁最好與Linux版本號對應,我們在構建的過程中遇到的問題就會少很多。

開發板:
本次移植是基于創龍zynq7020開發板(ARM A9雙核+FPGA),但是本教程也適用zynq7000系列的板子,可能某些操作不太一樣,這就需要大家來驗證了。

除了以上所必須的所需條件外,我們還需要安裝Petalinux,(Petalinux是Xilinx公司推出的嵌入式Linux開發工具),這里不在詳述Petalinux的安裝,請讀者自行解決。

以上內容都準好之后,我們就可以進行系統移植了。

在移植之前還要說一點,最好用開發板提供的liunx版本上構建xenomai,這樣你就可以省去很多麻煩,比如U-BOOT.BIN文件、devicetree.dtb文件、根文件系統都不需要更新,只需要更新zImage文件就可以,但是前提你能找到和linux源碼相對應的補丁。

給Linux源碼打補丁
第一步Linux和xenomai源碼解壓
將他們解壓到同一個文件夾中
tar -xzvf linux-xlnx-4.9.24.tar.gz
unzip xenomai-3.0.5.zip

同時我們在這個文件夾下建立一個patch文件夾來存放補丁,并把補丁拷貝進去

至此這個文件夾中有linux-xlnx-4.9.24、xenomai-3.0.5、patch三個文件夾

第二步開始打補丁

先進入xenomai源碼目錄,再打補丁
./scripts/prepare-kernel.sh --arch=arm --ipipe=../patch/ipipe-core-4.9.24-arm-2.patch --linux=/home/huster/Zynq/linux-4.9.24

其中prepare-kernel.sh為shell腳本,可以將相應版本的xenomai的補丁打到相應版本的內核源碼包中,不過此處用的補丁是單獨下載的,不是xenomai-3.0.5中自帶的,可能有人會問,既然是單獨補丁為什么不用 patch -p1

如果沒有出現錯誤說明打補丁成功。

第三步內核配置

內核配置之前我們需要使能環境變量

在Petalinux目錄下執行
./source settings.sh

(Petalinux為petalinux安裝目錄) ,才能使交叉編譯工具鏈生效。使能之后,輸入arm-后按兩下Tab會出現很多編譯工具,如下圖

我們進入到linux-4.9.24內核目錄,執行以下命令
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig

可能這一步你會失敗,因為linux源碼中沒有xilinx_zynq_defconfig這個配置文件,正常來說買開發板送的linux源碼都會有這個文件,直接拷貝過來就可以,有一點需要注意,必須要拷到arch/arm/configs目錄中,如果實在沒有,我單獨拷貝出來供大家下載了,鏈接: https://pan.baidu.com/s/1aefuY1kFx1AHM7EG5eGiIw

除此之外,我們還需要再menuconfig中進行一些自定義配置,這是個界面配置,在linux源碼目錄中執行以下命令
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

我們可以看到xenomai的一些額外配置選項,還會看到一些警告

接下來我們要選中CPU Power Management—>CPU Frequence scaling,按下enter進入,按下N鍵靜止這個選項;返回到主界面,選中Kernel Features—>Contiguous Memory Allocator,然后按下N鍵禁止,最后別忘了選中save進行保存。

Linux補丁內核編譯
Linux內核編譯

執行以下命令對補丁過的Linux內核進行編譯
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage

(zImage中第二個單詞字母為大寫形式的i)

編譯完成后,在Linux內核源碼安裝目錄的”arch/arm/boot”路徑下,會生成內核鏡像文件zImage。

這個過程會很漫長,需要我們耐心等待,或者你可以打一局王者或吃把雞。

設備樹編譯

如果你用的linux源碼、xenomai源碼、補丁以及開發板都和我的一樣,那么這一步你可以不做,直接用開發板提供的devicetree.dtb就可以,否則你需要執行以下操作。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

編譯完成后,在linux內核安裝目錄的“arch/arm/boot/dts/”路徑下,會生成很多的設備樹文件,找到和你開發板相對應的即可。

U-BOOT編譯

一般U-BOOT.BIN文件各個開發板公司已經提供好了,不需要我們自己去制作,這里只說下基本思路。首先要將U-BOOT源碼解壓,其次清理U-Boot,然后使能環境變量,然后配置U-Boot,然后編譯U-Boot,最后基于Petalinux將編譯生成的u-boot.elf和一級引導Bootloader程序zynq_fsbl.elf合并生成BOOT.BIN。

Xenomai安裝
我們現在需要創建我們的Linux系統需要運行的Xenomai庫和工具,先回到Xenomai源代碼樹,我們需要執行以下命令
./scripts/bootstrap

這將使Xenomai源準備好構建我們的工具和庫,如果以上過程中提示要安裝一些軟件和庫,我們只需要按照提示要求安裝即可。

接下來進入xenomai源碼目錄,執行以下命令
./configure CFLAGS="-march=armv7-a -mfpu=vfp3 -mfloat-abi=hard" LDFLAGS="-march=armv7-a" --build=i686-pc-linux-gnu --host=arm-none-linux-gnueabi --with-core=cobalt --enable-smp --enable-tls CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld

繼續執行命令
make DESTDIR=/home/huster/Zynq/xenomai-3.0.5/ install

編譯完成后,會在xenomai源目錄usr/xenomai中找到我們需要的bin工具文件夾和lib庫文件。

注意上一條命令中,install前面有一個空格,而且install是命令不是文件夾,我之前在這里卡了好久,一直沒有生成bin和lib文件夾。

然后直接將bin和lib目錄中的文件直接拷貝到Linux根文件系統中的bin和lib目錄下。如果你想直接將xenomai文件夾直接拷貝到linux根文件系統中的usr中也可以,只不過需要將
export LD_LIBRARY_PATH=/usr/xenomai/lib:$LD_LIBRARY_PATH

添加到~/.bashrc文件中
source ~/.bashrc

然后執行生效
echo $LD_LIBRARY_PATH

查看是否成功

xenomai運行測試
至此,我們已經得到linux鏡像zImage文件、U-BOOT.BIN啟動引導文件、rootfs根文件系統、devicetree.dtb設備樹文件、FPGA的Z-7020.bit文件、以及lib庫和工具。將上述文件拷到SD卡相應的存儲區,按照燒寫教程進行燒寫,這里不在詳述。

啟動開發板,會發現與普通linux系統啟動稍有不同。

系統啟動之后,執行以下工具,運行延遲測試
./usr/xenomai/bin/latency

會打印出有關系統延遲的一些統計信息

說明xenomai系統移植成功,但是由于某種原因,我們的延遲是負的,這是令人困惑的,而且這是不正確的。后續將繼續解決這個問題。

編輯:hfy


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

    關注

    87

    文章

    11227

    瀏覽量

    208924
  • Xilinx
    +關注

    關注

    71

    文章

    2163

    瀏覽量

    121008
  • 實時操作系統

    關注

    1

    文章

    196

    瀏覽量

    30738
  • Zynq
    +關注

    關注

    9

    文章

    608

    瀏覽量

    47126
收藏 人收藏

    評論

    相關推薦

    國產實時操作系統:和RT-Linux,Zephyr的實時性對比

    基于RT-Thread內核,并具備POSIX用戶態運行環境的高性能實時操作系統。它類似Linux、Windows的架構,具備用戶態和內核態(并相分離),用戶態具備全地址空
    的頭像 發表于 11-12 01:07 ?329次閱讀
    國產<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>:和RT-<b class='flag-5'>Linux</b>,Zephyr的<b class='flag-5'>實時</b>性對比

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

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

    航電實時測試系統解決方案

    航電實時測試系統主要應用于航空座艙的實時測試。座艙測試過程中,輸入和輸出信號的實時性至關重要,尤其是在多任務操作時,必須保證
    的頭像 發表于 10-23 15:34 ?214次閱讀
    航電<b class='flag-5'>實時</b>測試<b class='flag-5'>系統</b>解決<b class='flag-5'>方案</b>

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

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

    面向功能安全應用的汽車開源操作系統解決方案

    在SAE 2024國際汽車安全大會上,Elektrobit的Linux專家王紅燕在操作系統與芯片技術的分論壇上為大家帶來了“面向功能安全應用的汽車開源操作系統解決方案”主題演講。
    的頭像 發表于 09-27 09:21 ?407次閱讀
    面向功能安全應用的汽車開源<b class='flag-5'>操作系統</b>解決<b class='flag-5'>方案</b>

    簡單認識RTOS實時操作系統

    RTOS(Real Time Operating System,實時操作系統)是一種專門設計用于在嚴格時間限制內處理任務的操作系統。它以其高實時性、多任務處理能力和資源管理能力在工業自
    的頭像 發表于 08-20 11:20 ?2384次閱讀

    3568F-翼輝SylixOS國產操作系統演示案例

    與vxWorks一樣的實時性,與Unux一樣的兼容性。并且SylixO S應用編程接口符合IEEE、IS0、IEC相關操作系統編程接口規范,兼容POSX 1003.1b實 時編程標準,因此基于Linux
    發表于 07-25 15:52

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

    Intewell和RT-Linux是兩種不同的實時操作系統(RTOS),它們具有各自獨特的特點和優勢。以下是Intewell操作系統的一些關鍵特性,以及與RT-
    的頭像 發表于 07-03 10:00 ?461次閱讀
    工業<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>對比:鴻道Intewell跟rt-<b class='flag-5'>linux</b>有啥區別

    微內核實時操作系統的介紹

    微內核實時操作系統(Microkernel Real-Time Operating System, μRTOS)是一種專為實時設計的操作系統。它采用微內核架構,以提高
    的頭像 發表于 05-11 17:13 ?470次閱讀

    帶你認識實時操作系統(rtos)

    實時操作系統(RTOS)是為嵌入式系統實時應用提供一個穩定、可預測和高效運行環境的操作系統實時
    的頭像 發表于 04-16 16:30 ?1159次閱讀
    帶你認識<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>(rtos)

    鴻道(Intewell)新型操作系統為CNC數控系統提供國產解決方案

    5us,滿足CNC數控系統高精高速的實時操作系統需求。同時,針對智能測量、視覺檢測、3D加工軌跡顯示、誤差補償、AI智能控制分析等場景,Linux
    的頭像 發表于 03-13 16:31 ?585次閱讀
    鴻道(Intewell)新型<b class='flag-5'>操作系統</b>為CNC數控<b class='flag-5'>系統</b>提供國產解決<b class='flag-5'>方案</b>

    鴻道(Intewell)操作系統為運動控制系統提供國產工業軟件替代方案

    Intewell操作系統運動控制解決方案,采用Windows或者Linux實時擴展架構,滿足在Windows系統或者
    的頭像 發表于 03-13 16:12 ?558次閱讀
    鴻道(Intewell)<b class='flag-5'>操作系統</b>為運動控制<b class='flag-5'>系統</b>提供國產工業軟件替代<b class='flag-5'>方案</b>

    Linux操作系統上的射頻測試模式應用指南

    電子發燒友網站提供《Linux操作系統上的射頻測試模式應用指南.pdf》資料免費下載
    發表于 02-19 09:39 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>上的射頻測試模式應用指南

    Linux操作系統中如何按下PCIe的復位鍵

    Linux操作系統中,看如何按下PCIe的復位鍵
    的頭像 發表于 01-20 09:31 ?1454次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>中如何按下PCIe的復位鍵

    詳解實時操作系統和非實時操作系統

    實時操作系統,當外界事件和數據產生時,系統能以足夠快的速度予以處理,其處理結果能在規定的時間內控制生產結果或對系統做出響應,并控制所有實時
    的頭像 發表于 12-26 09:54 ?4506次閱讀
    詳解<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>和非<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>