Brise
arm보드(raspberry pi)에 Xenomai 설치 본문
Xenomai 설치를 위해 설치해야 하는 것은 총 3개이다.
1. Xenomai API
2. linux Kernel
3. adeos ipipe patch
대략적인 설치 순서는 다음과 같다.
1) linux kernel에 adeos패치와 xenomai 패치를 한다.
2) linux kernel을 타겟과 맞게 configure한다.
3) linux kernel을 build한다.
4) linux kernel을 교체한다.
5) Xenomai를 configure한다.
6) Xenomai를 build한다.
7) Xenomai를 설치한다.
8) test
>> 완벽한 순서는 아니지만, 대략적으로 이런 식으로 진행된다.
전체 순서는 http://code.google.com/p/picnc/wiki/RPiXenomaiKernel 와 같은 방법을 취하고 있다.
일단, 라즈베리파이가 저성능이라 시간이 오래 걸리기 때문에 일반 리눅스 컴퓨터(x86)에서 최대한 빌드를 한다. (크로스 컴파일링)
<x86 리눅스 ; 크로스 컴파일링>
> 커널 빌드와 menuconfig하기 위한 패키지 설치 (한 줄씩 붙여 넣을것)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core -y
sudo apt-get install ncurses-dev -y
sudo apt-get install kernel-package -y
sudo apt-get install ia32-libs -y
> Install cross compiler
> Download and untar the crosscompiler from https://github.com/raspberrypi/tools/archive/master.tar.gz
cd <working dir>
wget https://github.com/raspberrypi/tools/archive/master.tar.gz
tar xzf master.tar.gz
>Download source files and patches
>Download kernel
git clone -b rpi-3.8.y --depth 1 git://github.com/raspberrypi/linux.git linux-rpi-3.8.y
>Download Xenomai
git clone git://git.xenomai.org/xenomai-head.git xenomai-head
>Download minimal config
wget https://www.dropbox.com/s/dcju74md5sz45at/rpi_xenomai_config
> 사실 나머지는 다 할 수 있지만, 바로 위에있는 config조정하는게 사실 가장 힘든 것 같다. 만약 다른 보드에 포팅하고 싶다면 저 config를 잘 조정해야 할 것같다.
>Apply patches
>Apply ipipe core pre-patch
(cd linux-rpi-3.8.y; patch -Np1 < ../xenomai-head/ksrc/arch/arm/patches/raspberry/ipipe-core-3.8.13-raspberry-pre-2.patch)
>Apply Xenomai ipipe core patch
cd ..; xenomai-head/scripts/prepare-kernel.sh --arch=arm --linux=linux-rpi-3.8.y \
--adeos=xenomai-head/ksrc/arch/arm/patches/ipipe-core-3.8.13-arm-4.patch
* 3.13.15 수정 3.8.13-arm-3 --> 4
>Apply ipipe core post-patch
(cd linux-rpi-3.8.y; patch -Np1 < ../xenomai-head/ksrc/arch/arm/patches/raspberry/ipipe-core-3.8.13-raspberry-post-2.patch)
cd ..
>이제 리눅스 커널에 제노마이 패치가 되었고 리눅스를 빌드해야한다.
>Compile kernel
>Create build directory
mkdir linux-rpi-3.8.y/build
(* 자신이 직접 config를 조정하고싶다면 아래와 같이 하자)
>Configure kernel
cd linux-rpi-3.8.y
make mrproper
make ARCH=arm O=build menuconfig
/*
menuconfig 조정 옵션
1. Enable loadable module support - Module versioning support : off V
2. Processor type and features - Support sparse irq numbering : off ?
3. " " - Processor family : select your processor type V BCM2708
4. " " - Maximum number of CPUs : set correct number of cores 1?
5. " " - Preemption Model : select "Preemptible Kernel(Low-Latency Desktop)" >Kernel option V
6. " " - High Memory Support : set correctly ?
7. Power management and ACPI option - CPU Freqency scaling - CPU Frequency scaling : off V
8. 기타 파티션과 같은 등등의 옵션 -> 원래의 config파일을 참조하시길
> 미리 만들어진 config파일 사용
>Or use the minimal configuration file
cp rpi_xenomai_config linux-rpi-3.8.y/build/.config
cd linux-rpi-3.8.y
make mrproper
make ARCH=arm O=build oldconfig
>Compile
make ARCH=arm O=build CROSS_COMPILE=../../tools-master/arm-bcm2708/arm-\
bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-
>Install modules
make ARCH=arm O=build INSTALL_MOD_PATH=dist modules_install
>Install headers
make ARCH=arm O=build INSTALL_HDR_PATH=dist headers_install
find build/dist/include \( -name .install -o -name ..install.cmd \) -delete
USB FIQ fix
(taken from http://www.xenomai.org/pipermail/xenomai/2014-March/030412.html)
Download patch
cd <working dir>
wget https://gist.githubusercontent.com/kinsamanka/10256843/raw/4d5d3e02a443e4d17d9b82a1fe027ef17fb14470/usb_fiq.patch
Apply patch
cd linux-rpi-3.8.y
patch -p1 < ../usb_fiq.patch
Re-compile kernel
make ARCH=arm O=build CROSS_COMPILE=../../tools-master/arm-bcm2708/arm-\
bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-
* 추가 : usb FIQ?? 패치를 해줘야 한다.
>이제 빌드된 이미지 파일(zImage)는 linux-rpi-3.8.y/build/arch/arm/boot/ 에 위치하게 된다.
> 이 파일을 라즈베리파이의 /boot(fat32파티션)에 있는 kernel.img와 바꾸면 된다.
>The linux-rpi-3.8.y/build/dist directory contains the kernel headers and modules while the kernel image is located at linux-rpi-3.8.y/build/arch/arm/boot/ .
>> 여기서 linux-rpi-3.8.y/dist/lib와 xenomai-head 폴더는 라즈베리파이에서 필요하므로 옮길 수 있도록 하자.
<그림 : latency 테스트 결과 -p 100 >
결과값이 그리 좋지가 않네요.. 제가 포팅을 잘못한것인지는 잘 모르겠습니다.
만약 lat값이 음수가 나온다면
echo 0 > /proc/xenomai/latency
'Linux' 카테고리의 다른 글
환경변수 종류 (0) | 2014.10.06 |
---|---|
ssh 서버 설치 (0) | 2014.10.02 |
리눅스 라이브러리 PATH 설정 (0) | 2014.10.02 |
Jimi handless : 무인 기타 연주기 (0) | 2014.09.20 |
Raspberry pi (아이디어)- arduino Project : 무인 기타 연주기 (0) | 2014.09.11 |
Raspberry Pi 와 PC 공유기 없이 직접 연결하기 (0) | 2014.08.28 |
리눅스 패키지 (0) | 2014.07.27 |