rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest
RT-Preempt Patch是在Linux社區kernel的基礎上,加上相關的補丁,以使得Linux滿足硬實時的需求。
一、向內核打RT-Linux補丁
1、下載內核補丁包
下載與自己內核相應的補丁包,以下是下載網址:https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
這里有各種內核版本的補丁包。
我用的內核版本是4.6.0的,因此找到4.6的目錄下找對應的版本
哎?這里還沒有,older里面看看,果然這才是4.6最全的。選擇一個下載。
2、打補丁
將補丁包解壓到源碼目錄下
打開終端,輸入以下命令打入補丁:
xzcat ../patch-4.6-rt19.patch.xz | patch -p1
或者
patch -p(n) < [補丁包路徑]patch_name
n=0時,從當前目錄查找文件(夾)(直接使用補丁文件里指定的路徑)
n=1時,忽略掉第一層目錄,從當前目錄查找(去掉補丁文件指定路徑最左的第一個斜杠及前面的所有內容)
校驗
編譯內核后,上電啟動系統,uname -a命令查看 有 RT 字樣內核替換成功
打出補丁
patch -p1 -R < ../patch_name
二、編譯RT-test進行Linux實時性測試(cortex9,arm7)
1、下載
git clone git:// git.kernel.org / pub / scm / utils / rt-tests / rt-tests.git
cd rt-tests
git checkout stable / v1.0
2、安裝庫
直接make會報錯
報錯: src/cyclictest/rt_numa.h:29:18: fatal error: numa.h: 沒有那個文件或目錄
解決:
1)安裝apt-file 來找到依賴庫
apt-get install apt-file
apt-file update #更新源
2)尋找 numa.h
apt-file install numa.h
3) 安裝相應的庫
apt-get install libnuma-dev
3、編譯arm平臺的cyclictest
直接make的話編譯出的二進制文件是x86_64的,在zynq7平臺將無法執行。在網上也看別人博客說修改makefile文件中的編譯器選項,我修改之后編譯的仍然是x86_64的。無奈之下,只得將cyclictest源文件拿出來單獨編譯。
4、在yocto下用poky_sdk,autotool編譯
4.1 新建文件夾cyclictest
4.2 在上面下載的rt-tests中找到以下文件,復制到cyclictest文件夾下。
4.3 創建空的README文件,這是GNU編碼標準所要求的:
touch README
4.4 使用autoscan生成一個configure.scan輔助編寫configure.ac
4.5 創建configure.ac文件
AC_INIT(cyclictest, 2.69)
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS(config.h)
AM_PROG_CC_C_O
AC_PROG_INSTALL
AC_OUTPUT([Makefile])
2.69 就是從4.4步驟得來的。
4.6 創建Makefile.am文件
bin_PROGRAMS = cyclictest
cyclictest_SOURCES = cyclictest.c error.c rt-utils.c rt-sched.c
4.7 修改cyclictest.c,rt-utils.c文件
在頭文件聲明前增加 ? ? ? #define _GNU_SOURCE ? #define __USE_GNU
因為要使用GNU的編譯器,但是在編譯的時候卻發現一直報錯,找不到features.h里面的定義,因此需手動在頭文件聲明之前加上以上內容。
5、獲取跨工具鏈環境設置文件
source /home/jf-yt/poky_sdk/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
6、創建configure腳本:?使用該autoreconf命令生成configure腳本。
autoreconf
該autoreconf工具將正在運行的其他自動工具,如護理?aclocal,?autoconf和?automake。
注意:
如果出現錯誤的?configure.ac,它?autoreconf運行時,指示丟失的文件,使用“-i”選項,從而確保丟失的輔助文件復制到構建主機。
7、交叉編譯項目:此命令使用交叉編譯器編譯項目。該?CONFIGURE_FLAGS?環境變量為GNU配置的最小參數:
$ ./configure $ {CONFIGURE_FLAGS}
8、修改Makefile文件
在CC = ....加入 -lpthread -lrt,分別鏈接線程庫和rt庫。
9、編譯
make
10、驗證二進制文件,運行該命令將打印可以運行二進制文件的體系結構。此體系結構應與已安裝的跨工具鏈支持的體系結構相同。
$ file ./cyclictest
輸出如下
./cyclictest: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=c5d2416a3e22086474128ba1377e142b542a5353, not stripped
果然是ARM架構的,基本可以用了。
總結
以上是生活随笔為你收集整理的rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VScode 删除远程资源管理器中SSH
- 下一篇: 沈师 Java程序设计 PTA 填空题、