linux:ubuntu 14.04+3.13, 替換核心,核心版本:3.14.17
xenomai:2.6.4
$ sudo apt-get install kernel-package
$ sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
$ sudo apt-get build-dep linux
$ sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
linux-3.14.17
xenomai-2.6.4
a.把軟體移到 /usr/src/
b.解壓:tar –xvf (不要一起解壓,乙個乙個來,否則報錯)
a.預處理核心,進入xenomai目錄
$ cd xenomai-2.6.2
$ ./scripts/prepare-patch.sh --linux=../linux-3.14.17/--adeos=./ksrc/arch/x86/patches/ipipe-core-3.14.17-x86-4.patch
b.進入linux-3.14.17目錄
$ make menuconfig 裁減核心,不做設定直接退出(暫時沒搞懂要裁剪哪部分)此步會生成乙個 .config 的配置檔案
輸入以下命令編譯核心,並建立安裝包,等待約2小時至編譯完成:
=-xenomai kernel_image kernel_headers
// 這裡是生成 兩個.deb 的安裝包,還可以使用
// $ make bzimage modules ----- 編譯核心與模組
// $ make modules_install 安裝模組
// $ make install 安裝核心
xeno_nucleus
xeno_posix
xeno_native
xeno_rtdm
在/etc/default/grub檔案中加入以下內容:
grub_cmdline_linux="quiet acpi_osi=linux acpi_backlight=vendor"
把timeout=-1
更新啟動項:update-grub
進入/usr/src
sudo dpkg -i *.deb
uname -r 檢視核心是否已經更換
沒換就去改改啟動項,這裡搞了半天,沒搞懂ubuntu的grub是怎麼回事 應該是虛擬機器vmware的問題,
修改timeout後,關機(ubuntu),開機,不要用init 6重啟。
(補充:grub啟動項設定可以檢視另一篇blog《ubuntu grub設定》,之前是在虛擬機器上用init 6重啟,不會在啟動項介面停留)
sudo dpkg-reconfigure bash
cd /usr/src /xenomai-2.6.4
sudo ./configure --enable-dlopen-skins
sudo make
sudo make install
至此,完成了xenomai實時擴充套件的安裝。
此時可進入/usr/xenomai/bin目錄下使用自帶的測試命令完成測試。
如xeno latency
直接修改/etc/enviroment,修改的是root的path,重啟
ex01.c 程式用來建立和執行「demo」的任務,demo任務是用來輸出hello world
程式**:
#include #include #include #include #include #include #include rt_task demo_task;
void demo(void *arg)
int main(int argc, char* argv)
編譯此程式:
編譯頭路徑和動態庫路徑
$ xeno-config --xeno-cflags
$ xeno-config --xeno-ldflags
$ export cflags=`xeno-config --xeno-cflags`
$ export ldflags=`xeno-config --xeno-ldflags`
$ gcc $cflags ex01.c $ldflags -lnative -lxenomai -o ex01 //注意順序,否則會錯
執行之前,告訴linux動態庫的位置
$ export ld_library_path=/usr/xenomai/lib
$ ./ex01
預處理核心時:
錯誤:prepare-kernel.sh: cannot read i-pipe patch from /dev/null
原因:之前準備安裝xenomai-3.3.0,結果在安裝的時候,配置—adeos時,找不到ipipe的位置。
網上說在./ksrc/arch/x86/patches/目錄下,但是3.3.0的沒有此目錄。
於是換了個2.6.4的版本,同時換了ipipe-core-3.14.17-x86-4.patch對應的linux 3.14.17的核心,
此時即沒問題了。具體原因可檢視 參考[3]。
解決:換版本 linux-3.14.17 xenomai-2.6.4
ipipe的目錄:/usr/src/xenomai-2.6.4/ksrc/arch/x86/patchs/ipipe-core-3.14.17-x86-4.patch
錯誤:安裝完成後,必須在/usr/xenomai/bin目錄下才能使用xenomai的命令
檢視核心 name –r ,詳見安裝步驟
[1] 安裝步驟
[2] 安裝步驟
[3] i-pipe錯誤
[4] 修改grub啟動項
[5] 修改path
[6] xenomai程式設計筆記
[7] xenomai使用手冊很好,由於版本問題有點錯誤(gcc那句,正確見上文),要翻牆
[8] 利用xenomai api程式設計時,編譯錯誤的解決方案
[9]
LINUX作業系統嵌入Xenomai實時核
由於linux系統的實時響應達不到更高要求,所以要嵌入xenomai實時核 可以去官網看看適不適合你的硬體處理器 我的xenomai解壓在 usr src資料夾下,開啟資料夾cd usr src xenomai 3.0.2執行指令scripts prepare kernel.sh linux usr...
常用的Xenomai 原生API
常用的xenomai 原生api 1 任務管理 xenomai 本身提供的一系列多任務排程機制,主要有以下一些函式 int rt task create rt task task,const char name,int stksize,int prio,int mode 任務的建立 int rt t...
幾類常用的Xenomai 原生API
幾類常用的xenomai 原生api 1 任務管理 xenomai 本身提供的一系列多任務排程機制,主要有以下一些函式 intrt task create rt task task,const char name,int stksize,int prio,intmode 任務的建立 int rt t...