SlideShare a Scribd company logo
1 of 19
RasPiでRT-Linux


Raspberry PiでRT-Linux
       @azarashi55
0. 今日の内容
 自己紹介
 Raspberry Pi(RasPi)について

 RTLinuxに挑戦したきっかけ

 RasPiでRTLinuxカーネル動作

 まとめ
1. 自己紹介
 GVC開発(現在三名体制)の一人
 本業はとある中小企業のシステム

  管理者(と言う名の何でも屋)
 GVC開発は趣味(キリッ
2.Raspberry Pi
   名刺サイズのシングルボードコンピュータ
    ($35)
2-1. 別角度から見てみる
   気になる端子群がありますね~
3. Raspberry Piについて
   コンピュータ科学教育を促進するため
    に開発された
   CPUプロセッサコアとして
    BCM2835(ARM1176JZF-S 700 MHz
    +GPU)
   メインメモリーは256MB
   OSはLinux(Raspbian,Fedoraなど)
   入出力端子が豊富(GPIOポートなど)
4. 入出力端子について
 電源端子はmicroUSB
 →電源スイッチはありません
 HDMI端子がありフルHDでの出力が可能

  →と言いつつCUI環境でしか使っていなかっ
  たり・・・
 GPIO(General Purpose Input/Output)

 →CPU直結、3.3Vでの入力(Arduinoと一部
  異なるので注意)
5. RasPiでRTLinuxのきっかけ
 Arduinoの赤外線リモコン受信スケッチ
  をRas Piに移植しようと思った
 すでにwiringPiというライブラリーがリ

  リースされていた
→これを使えば簡単に移植できる!
 で、移植してみました(いろいろ込み

  で実質数時間)
5-1-1. RasPiでRTLinuxのきっかけ
   移植方法を簡単に大雑把に説明します
Arduinoでのスケッチはこんな感じ
void setup(){
// セットアップ処理(ピンのアサインなどいろいろ)
}


void loop(){
// 実際の処理
}
5-1-2. RasPiでRTLinuxのきっかけ
    wiringPiを使ったC,C++でのコーディング
#include <wiringPi.h> ←wiringPiを使う
#include <stdio.h>
#include <stdlib.h>

/* プロトタイプ宣言 */

void loop(void);


int main()
{
int wiringPiSetup();
loop();
exit(0);
}
void loop(){


}
5-2. Ras PiでRTLinuxのきっか
け
 移植自体は問題なし、コンパイルもOK
→やっほーい!ということで実行
 撃沈

→うまくデコードできない
 原因

→100μs単位でのデータ取得部分に問題
  があり、赤外線受信データを取りこぼ
  していた
5-3. RasPiでRTLinuxのきっかけ
 wiringPiのソースを見てみると
→delayMicroseconds()関数を
  nanosleep()で実装していた
→nanosleep()は名前に偽りありで、実
  際にタイマー割り込みは10ms単位でし
  かこない
 つまり

→100μs単位でのデータ取得は到底無理
6. RasPiでRTLinuxに挑戦

RTLinuxの実装にはいくつか種類があ
 る
→Xenomai,RTAI,Real-Time Linuxパッ
 チなど
一番無難そうなReal-Time Linuxパッチ
 で挑戦
 
7. RasPiでRTLinux

   Linux kernel ソース(rpi-3.2.27)の
    取得
    https://github.com/raspberrypi/linux
   Real Time Linuxパッチの取得
http://www.kernel.org/pub/linux/kernel/pr
  ojects/rt/3.2/older/patch-3.2.27-
  rt40.patch.bz2
7-1. RasPiでRTLinux

 Real Time Linuxパッチを当てる
 母艦のクロスコンパイル環境でコンパ

  イル
→RasPi上でコンパイルすると5,6時間
  かかる
 RasPiに転送、カーネル入れ替え、カー

  ネルモジュールインストール
8. RasPiでRTLinux
   できあがったカーネルはこんな感じ
$ uname -a
Linux raspberrypi 3.2.27-rt40 #1 PREEMPT RT Thu
   Aug 23 23:55:37 JST 2012 armv6l GNU/Linux 
   早速テスト(裏でstressというソフトで負荷をかけてま
    す)
$ sudo ./cyclictest -t1 -p 80 -n -i 10000 -l 10000
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.83 0.89 0.59 1/132 1746


T: 0 ( 1746) P:80 I:10000 C: 10000 Min:       27 Act:
  40 Avg: 42 Max:       66
8-1. Ras PiでRTLinux
   テスト結果を見て・・・
policy: fifo: loadavg: 0.83 0.89 0.59 1/132 1746
T: 0 ( 1746) P:80 I:10000 C: 10000 Min:      27 Act:   40
    Avg:   42 Max:   66    
→おおっ66ns!と思ったら勘違いで66μsでした
   ちなみに、標準のカーネルだと2桁ぐ
    らい違う
policy: fifo: loadavg: 0.21 0.30 0.14 2/122 1566
T: 0 ( 1566) P:80 I:10000 C: 10000 Min:      28 Act:   46
   Avg: 49 Max: 4143
9. まとめ
 wiringPi+RT-Linuxである程度ま
  ではArduinoのソフトウェア資産を
  流用できる目処が付いた
→例えば、Arduinoと異なりアナロ
  グ入力ができないので、この部分
  は別回路でA/D変換が必要
 きっかけであった赤外線受信につ

  いても目処が立った
RasPiでRT-Linux
     終わり

ありがとうございました
     @azarashi55

More Related Content

What's hot

続・SECDマシン
続・SECDマシン続・SECDマシン
続・SECDマシンt-sin
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~nullnilaki
 
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)Naoto MATSUMOTO
 
あるキャッシュメモリの話
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話nullnilaki
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~Preferred Networks
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。(^-^) togakushi
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングt-sin
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009Hiro Yoshioka
 
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Masaru Oki
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)ashigirl ZareGoto
 
import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28th0x0472
 
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについてSECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについてt-sin
 
FPGAでゲーム機を作ろう! 第6回
FPGAでゲーム機を作ろう! 第6回FPGAでゲーム機を作ろう! 第6回
FPGAでゲーム機を作ろう! 第6回yoshimitsusudoh
 

What's hot (20)

続・SECDマシン
続・SECDマシン続・SECDマシン
続・SECDマシン
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
 
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
あるキャッシュメモリの話
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
 
仮想記憶の構築法
仮想記憶の構築法仮想記憶の構築法
仮想記憶の構築法
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Scapy presentation
Scapy presentationScapy presentation
Scapy presentation
 
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
 
Arch TCP/IP BOOTP
Arch TCP/IP BOOTPArch TCP/IP BOOTP
Arch TCP/IP BOOTP
 
160713
160713160713
160713
 
import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28
 
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについてSECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
 
FPGAでゲーム機を作ろう! 第6回
FPGAでゲーム機を作ろう! 第6回FPGAでゲーム機を作ろう! 第6回
FPGAでゲーム機を作ろう! 第6回
 

Viewers also liked

Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編Kazuhiro Takahashi
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介NSaitoNmiri
 
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)Kazuhiro Takahashi
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようShigeo Ueda
 
Ohotech特盛#13 スマホで操作する カメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作する カメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―Jun-ichi Sakamoto
 
ITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみたITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみたboropon
 
Spring camp2013 group2
Spring camp2013 group2Spring camp2013 group2
Spring camp2013 group2openrtm
 
自動アングル機能を有したロボットカメラSi
自動アングル機能を有したロボットカメラSi自動アングル機能を有したロボットカメラSi
自動アングル機能を有したロボットカメラSiShogo Namatame
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法Takeshi Yamamuro
 
Building your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry PiBuilding your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry PiJeff Prestes
 
スマートファクトリーを支えるIoTインフラをつくった話
スマートファクトリーを支えるIoTインフラをつくった話スマートファクトリーを支えるIoTインフラをつくった話
スマートファクトリーを支えるIoTインフラをつくった話Keigo Suda
 
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?人工知能と機械学習の違いって?
人工知能と機械学習の違いって?Shuyo Nakatani
 

Viewers also liked (13)

Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
 
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
 
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
 
mrubyOSチラシ
mrubyOSチラシmrubyOSチラシ
mrubyOSチラシ
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
 
Ohotech特盛#13 スマホで操作する カメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作する カメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
 
ITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみたITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみた
 
Spring camp2013 group2
Spring camp2013 group2Spring camp2013 group2
Spring camp2013 group2
 
自動アングル機能を有したロボットカメラSi
自動アングル機能を有したロボットカメラSi自動アングル機能を有したロボットカメラSi
自動アングル機能を有したロボットカメラSi
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
 
Building your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry PiBuilding your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry Pi
 
スマートファクトリーを支えるIoTインフラをつくった話
スマートファクトリーを支えるIoTインフラをつくった話スマートファクトリーを支えるIoTインフラをつくった話
スマートファクトリーを支えるIoTインフラをつくった話
 
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
 

Similar to Ras piでrt linux

Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Kazuo Asano (@kazuo_asa)
 
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門Takenori Matsumoto
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料Yasutaka Hamada
 
あるブートローダの話
あるブートローダの話あるブートローダの話
あるブートローダの話nullnilaki
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回Ryuichi Ueda
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
Security workshop 20131213
Security workshop 20131213Security workshop 20131213
Security workshop 20131213Yuuki Takano
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Coreslankdev
 
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきことmao999
 
ロボットシステム学2015年第8回
ロボットシステム学2015年第8回ロボットシステム学2015年第8回
ロボットシステム学2015年第8回Ryuichi Ueda
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き
[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き
[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引きRapidRadioJP
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
RISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチRISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチYutaka Yasuda
 

Similar to Ras piでrt linux (20)

Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
 
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
 
あるブートローダの話
あるブートローダの話あるブートローダの話
あるブートローダの話
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
Security workshop 20131213
Security workshop 20131213Security workshop 20131213
Security workshop 20131213
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
RISC-V User level ISA
RISC-V User level ISARISC-V User level ISA
RISC-V User level ISA
 
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
 
ロボットシステム学2015年第8回
ロボットシステム学2015年第8回ロボットシステム学2015年第8回
ロボットシステム学2015年第8回
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き
[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き
[bladeRF + MATLAB/Simulink] SDRデバイス利用の手引き
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
0622
06220622
0622
 
RISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチRISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチ
 

More from Hideki Aoshima

20150227 Raspberry Pi 2 at OSC/Tokyo Spring
20150227 Raspberry Pi 2 at OSC/Tokyo Spring20150227 Raspberry Pi 2 at OSC/Tokyo Spring
20150227 Raspberry Pi 2 at OSC/Tokyo SpringHideki Aoshima
 
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)Hideki Aoshima
 
簡単に楽しく始めよう!Raspberry Pi入門
簡単に楽しく始めよう!Raspberry Pi入門簡単に楽しく始めよう!Raspberry Pi入門
簡単に楽しく始めよう!Raspberry Pi入門Hideki Aoshima
 
楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~
楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~
楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~Hideki Aoshima
 
Big Raspberry JAM TOKYO 2013 Hardware
Big Raspberry JAM TOKYO 2013 HardwareBig Raspberry JAM TOKYO 2013 Hardware
Big Raspberry JAM TOKYO 2013 HardwareHideki Aoshima
 
Preview of Pidora18 at Big Raspberry JAM TOKYO 2013 Networking
Preview of Pidora18 at Big Raspberry JAM TOKYO 2013 NetworkingPreview of Pidora18 at Big Raspberry JAM TOKYO 2013 Networking
Preview of Pidora18 at Big Raspberry JAM TOKYO 2013 NetworkingHideki Aoshima
 
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUGOSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUGHideki Aoshima
 
Raspberry Jam #1 20121229
Raspberry Jam #1 20121229Raspberry Jam #1 20121229
Raspberry Jam #1 20121229Hideki Aoshima
 

More from Hideki Aoshima (8)

20150227 Raspberry Pi 2 at OSC/Tokyo Spring
20150227 Raspberry Pi 2 at OSC/Tokyo Spring20150227 Raspberry Pi 2 at OSC/Tokyo Spring
20150227 Raspberry Pi 2 at OSC/Tokyo Spring
 
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
 
簡単に楽しく始めよう!Raspberry Pi入門
簡単に楽しく始めよう!Raspberry Pi入門簡単に楽しく始めよう!Raspberry Pi入門
簡単に楽しく始めよう!Raspberry Pi入門
 
楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~
楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~
楽しく使おう・始めよう!Raspberry Pi入門〜基礎編~
 
Big Raspberry JAM TOKYO 2013 Hardware
Big Raspberry JAM TOKYO 2013 HardwareBig Raspberry JAM TOKYO 2013 Hardware
Big Raspberry JAM TOKYO 2013 Hardware
 
Preview of Pidora18 at Big Raspberry JAM TOKYO 2013 Networking
Preview of Pidora18 at Big Raspberry JAM TOKYO 2013 NetworkingPreview of Pidora18 at Big Raspberry JAM TOKYO 2013 Networking
Preview of Pidora18 at Big Raspberry JAM TOKYO 2013 Networking
 
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUGOSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
 
Raspberry Jam #1 20121229
Raspberry Jam #1 20121229Raspberry Jam #1 20121229
Raspberry Jam #1 20121229
 

Ras piでrt linux

  • 2. 0. 今日の内容  自己紹介  Raspberry Pi(RasPi)について  RTLinuxに挑戦したきっかけ  RasPiでRTLinuxカーネル動作  まとめ
  • 3. 1. 自己紹介  GVC開発(現在三名体制)の一人  本業はとある中小企業のシステム 管理者(と言う名の何でも屋)  GVC開発は趣味(キリッ
  • 4. 2.Raspberry Pi  名刺サイズのシングルボードコンピュータ ($35)
  • 5. 2-1. 別角度から見てみる  気になる端子群がありますね~
  • 6. 3. Raspberry Piについて  コンピュータ科学教育を促進するため に開発された  CPUプロセッサコアとして BCM2835(ARM1176JZF-S 700 MHz +GPU)  メインメモリーは256MB  OSはLinux(Raspbian,Fedoraなど)  入出力端子が豊富(GPIOポートなど)
  • 7. 4. 入出力端子について  電源端子はmicroUSB  →電源スイッチはありません  HDMI端子がありフルHDでの出力が可能 →と言いつつCUI環境でしか使っていなかっ たり・・・  GPIO(General Purpose Input/Output)  →CPU直結、3.3Vでの入力(Arduinoと一部 異なるので注意)
  • 8. 5. RasPiでRTLinuxのきっかけ  Arduinoの赤外線リモコン受信スケッチ をRas Piに移植しようと思った  すでにwiringPiというライブラリーがリ リースされていた →これを使えば簡単に移植できる!  で、移植してみました(いろいろ込み で実質数時間)
  • 9. 5-1-1. RasPiでRTLinuxのきっかけ  移植方法を簡単に大雑把に説明します Arduinoでのスケッチはこんな感じ void setup(){ // セットアップ処理(ピンのアサインなどいろいろ) } void loop(){ // 実際の処理 }
  • 10. 5-1-2. RasPiでRTLinuxのきっかけ  wiringPiを使ったC,C++でのコーディング #include <wiringPi.h> ←wiringPiを使う #include <stdio.h> #include <stdlib.h> /* プロトタイプ宣言 */ void loop(void); int main() { int wiringPiSetup(); loop(); exit(0); } void loop(){ }
  • 11. 5-2. Ras PiでRTLinuxのきっか け  移植自体は問題なし、コンパイルもOK →やっほーい!ということで実行  撃沈 →うまくデコードできない  原因 →100μs単位でのデータ取得部分に問題 があり、赤外線受信データを取りこぼ していた
  • 12. 5-3. RasPiでRTLinuxのきっかけ  wiringPiのソースを見てみると →delayMicroseconds()関数を nanosleep()で実装していた →nanosleep()は名前に偽りありで、実 際にタイマー割り込みは10ms単位でし かこない  つまり →100μs単位でのデータ取得は到底無理
  • 13. 6. RasPiでRTLinuxに挑戦 RTLinuxの実装にはいくつか種類があ る →Xenomai,RTAI,Real-Time Linuxパッ チなど 一番無難そうなReal-Time Linuxパッチ で挑戦  
  • 14. 7. RasPiでRTLinux  Linux kernel ソース(rpi-3.2.27)の 取得 https://github.com/raspberrypi/linux  Real Time Linuxパッチの取得 http://www.kernel.org/pub/linux/kernel/pr ojects/rt/3.2/older/patch-3.2.27- rt40.patch.bz2
  • 15. 7-1. RasPiでRTLinux  Real Time Linuxパッチを当てる  母艦のクロスコンパイル環境でコンパ イル →RasPi上でコンパイルすると5,6時間 かかる  RasPiに転送、カーネル入れ替え、カー ネルモジュールインストール
  • 16. 8. RasPiでRTLinux  できあがったカーネルはこんな感じ $ uname -a Linux raspberrypi 3.2.27-rt40 #1 PREEMPT RT Thu Aug 23 23:55:37 JST 2012 armv6l GNU/Linux   早速テスト(裏でstressというソフトで負荷をかけてま す) $ sudo ./cyclictest -t1 -p 80 -n -i 10000 -l 10000 # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 0.83 0.89 0.59 1/132 1746 T: 0 ( 1746) P:80 I:10000 C: 10000 Min: 27 Act: 40 Avg: 42 Max: 66
  • 17. 8-1. Ras PiでRTLinux  テスト結果を見て・・・ policy: fifo: loadavg: 0.83 0.89 0.59 1/132 1746 T: 0 ( 1746) P:80 I:10000 C: 10000 Min: 27 Act: 40 Avg: 42 Max: 66   →おおっ66ns!と思ったら勘違いで66μsでした  ちなみに、標準のカーネルだと2桁ぐ らい違う policy: fifo: loadavg: 0.21 0.30 0.14 2/122 1566 T: 0 ( 1566) P:80 I:10000 C: 10000 Min: 28 Act: 46 Avg: 49 Max: 4143
  • 18. 9. まとめ  wiringPi+RT-Linuxである程度ま ではArduinoのソフトウェア資産を 流用できる目処が付いた →例えば、Arduinoと異なりアナロ グ入力ができないので、この部分 は別回路でA/D変換が必要  きっかけであった赤外線受信につ いても目処が立った
  • 19. RasPiでRT-Linux 終わり ありがとうございました @azarashi55