me main - osaka city universitytakiyama/... · 2013-09-03 · power.mech.eng.ocu init module p q r...

38
POWER.mech.eng.OCU (Linux !!) – 1 / 38 (Linux !!) 2009.09.29

Upload: others

Post on 30-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� � � � � � � � �

(Linux

� � � � � � � � �

!!)– 1 / 38

� � � � � � � � �(Linux

� � ! " # $ % & '!!)( ) * + , - . / 0 1 2

2009.09.29

Page 2: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

3 4 5 6

� � � � � � � � �

(Linux

� � � � � � � � �

!!)– 2 / 38

7 8 9 : ; < = > ; ? @ A

?* B C D E B?n

< = A F GH @ I J K L M N @ O 8 K P Q R S : ; ? @ T A K U V A W X YZ [ @ \ R

(JIS) ]

n

< = A ^ _

u

F ` < =

(

a b c a B d):

e f S 7 g h ) i j ( N @ A Y k lF ` K m n N @ ]u

o p < =

(

E B q):

h ) A I r ` i j s > k t u K l v w x @< = ]

u

* B C D + < =:

y z k { | K } ~ ; W X ]

n

< = A � �I J K } ~ � k w � � � S < = � � ]

Page 3: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� � � � � � � � � �

?

� � � � � � � � �

(Linux

� � � � � � � � �

!!)– 3 / 38

n 2000

� � � �

:: PC98::BIOS,

� � � B � , � � � � �(C-BUS)

MS-DOS

g �

IO

� � a + k � � d Y � � �

outp(

� �   ¡,

� �¢

),

� � ¢

=inp(

� �   ¡

),peek,poke,(BASIC)

£ ¤ ¥ ¦ §I/F

¨I/O-port

© ª « ¬ ¡ ­ � � � ¢ ® ¯ ° ± ² ³ ´I/F

µ � ¶ · ²n 2000

¸ ¹ º »

::DOS/V(AT

¼ ½ ¾

)

¨ ¿ À ¥C

Á ¡ Â Ã,ISA

Ä ÂÃ

,32bit

Å

(

ª ¶   ¡

?) Æ BIOS

Ç È Å(

É ° £ �?) ²

OPEN BIOS:Free BIOS by Richard Stallman(FSF)Ê Ë ¨

OS(Lin,Xp..)

¥ Ì ³ Í ¥ Î Ï � Ð ­ � � Á Ñ ¡ Ò Ó ²Ê Ë ¨ Á ¡ Ì

PCI

© £ Ô Æ Õ Ö,

× Ø Ù Ú ² ³ ´ Û Ü ² ¤ ¨ Ý Þ ©­ ± ß Æ PC

à

PCI

Á ¡ Ú ¨I/F

µ á ¶ â ã ¥ ä á ¢ ® ¯ ° å æ

?

u I/F

ç á è é ê ¨ ë ì í ® î ° ï ¥ ð å ñ ¤ Æ ò ó à ô õ ö æß £ � ²

u

Ê Ë ¨

OS:

÷ ¡ ø ù ú û ü ý á þ á ú û © ÿ � � � ²

I/O

Ì ÷ � ø ù ú û � ¯ � � � å Ý Þ � ñ

...

É ° �

...ç è í � � ÷ � ø ù � � ¨ � � � �

Page 4: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� � � � � � � �

(mechatronics system)

� � � � ! " # $ % &

(Linux

' ( ) * + , - . / 0

!!)– 4 / 38

mechanics + electronics

ç è 1 « �

(

¾ 2

)+

3 4 « í � 1 « �(

5 6)¨ 7 8 ²9 á ¶ : ; ª ü ë ì í : ; ª < = 8 > ? @ A B C D E F G � H � IJ K L M N 9 O P : ; Q R S G : ; QE F 1 T U V W XY Z [

(

\)

] ^ _ ` aQ T b c d O ef g [d h T G i j T U k l m n o pE q r s t u v m u w x v

OSy ? z {

(

| }

)~ � � � � ? @

Page 5: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� � � � � � �

(

)

�� � � � � � � � � � �

(Linux

� � � � � � � � �  

!!)– 5 / 38

¡ ¢ £ ¤ ¥ ¦ § ¨ © ª «

:

¬ ­ ® ¯ ° ± ² ³ ´ µ § ¨ © ª «:­ ® ¯ ° ¶ · ´ ¸ ¹ º ¯ » ¼ ½ ¾¿ À Á ~ Â Ã Ä Å Æ Â Ç È Å Æ É Ê Ë Â Ì Í � W X Î f Ï [ Ð Ñ Ò ÓÔ Õ Ö × Ø Ù Ú Û r Ü c Ý e Þß à Ò á â ^ Û ã →

Û ä ^ å Ú e ãæ ç è é ê ë ì íî ï ð ñ ò ó ô õ ö Ý ( ÷ í ø

) →

ù õ ú û ü ý þ ÿ �þ ÿ è é � þ ÿ � ê ë � í

� � � � � ý � � � ý

MT →� � � � � � ö

,AT,CVT� � � � � � è é � � � � �� è é � � ! ê ë � í" # $ % ê ë � í& ' ( ) * � � + � ô õ � ò , - . /

(ABS,ALB)� , 0 � � � � + � � , - . /

(TRC)(

� � 1,

2 � 1 3 ö û 4 5 6 7 8

)ë 9 3 � � , - . /:Advanced Safty Vehicle, Interigent Traffic System: ; < ; = > ? ; @

(

A B C D)

E F,

G ; H I J ; K L M N O D P Q R S T G ; U V W E F

,

X Y Z [ M\ ] ^ _ Q ` a b c d,

G e f ] ^ _ Q < ; M g h i j,

Page 6: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

k l m n o p q r s

e G = ? K t u v W w x

(Linux

y z { | } ~ � � � �

!!)– 6 / 38

� 3 � � � � � ü � � *

(

� � � � * � � � � � � CPU)� � � 3 �� � ù � � � � *

(OS,

* � � � � /

)

� 3 � � � 3 � � � � � � � �� � � � �� � ü � � * ù � � � � *�   ¡ - ¢ £ ¤� � ¥

(

¦

)

� � � § ¨* © ª � � « �¬ ­ ¥®¯ ®� ° © ± ²¡ © ³ ´ µ ¶ · ¸ ¹º » ¼ ½ ¾ ¿ À ¶ ¿ Á  À

OSÃ Ä Å Æ

(

Ç È

)É Ê Ë Ì Í Î Ï Ð © ª Ñ Ò « Ó Ô Õ Ö × Ø

..

Page 7: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

Ù Ú Û Ü

Ý Þ ß à á â ã ä å æ ç

(Linux

è é ê ë ì í î ï ð ñ

!!)– 7 / 38

ò ó ¾ ô ¬ õ Á ö ÷ ø ùò ó ¾ Ì Í Î Ô ú û ü õ Á öý · þ Ê ÿ � � �� � �� � � � ü ý Ë � � � � Ô Ì Í Î� � Ò Í � � � � � �� � � � � Ó ¼ Ò Í � � �� � � �

(

� � � �)

MEMS

Ì Í Î� ¼ � Í ¹ ÷ ! " �Ì Í Î ô # $ ü ý% � Ë & � � ' � ( ) CCD,CMOS

* º + , -

Page 8: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

. / 0 1 2 3 4

Ý Þ ß à á â ã ä å æ ç

(Linux

è é ê ë ì í î ï ð ñ

!!)– 8 / 38

ü õ " � Á ö 5 Ë ! ô 6 %ü õ Á ö 7 ó 89 : � ; ü ý < = 8

(

> + � ?

)� @ Ô A B� � � C D E F G � H I J(PWM)

K � L M � N� � � = O P Q � > R S TU V W X W H Y Z [ \ M ] N

ON/OFF High/Low,

^/

_ W ` Y a,

b Y c F ] N

Page 9: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

d e f g h i g j k

CPU

l m n o p q r s t u v

(Linux

w x y z { | } ~ � �

!!)– 9 / 38

� [ K � � � a G � ] N E � � � � \ � � E U V W � � � � E � � � �` [ N ] � � ] W � �� � U V W� [ K

A/D

� � U V W � � [ c� � X/

� � � �� � a G � ] N

D/A

� � U V W � � �  ¡ ] ¢ £ ¤(ITU)

A/D

� �

,D/A

� �

,

¥ ` ¦ � � [ ¥ � § ¨ ©   ] ¥(

ª « ¬

)

�   ­¥ V

(CPU)

® � � � � � ¯ ° ± ² � ³ ´ µ �¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À:

Á Â Ã Ä Å Æ Ç È É ¼ ¸ Ê Ë Ì OS(

Í Î Ï Î Ð

)

Ñ Ò

Page 10: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

A/D

Ó Ô

,D/A

Ó Ô

,

Õ Ö × Ø Ù Ú Õ Û Ü Ý Þ ß à ál m n o p q r s t u v

(Linux

w x y z { | } ~ � �

!!)– 10 / 38

n

â ã ¦ ` ä [ å æ ç µ � (

  ] ¥ � è é å ê ë ì í î å ï ð ñ)

n

¦ ` ä ò ® ó ô   õ ¥

(

ö ÷

)

ø

PC

å ù ú í µ ûLAN(UDP,TCP/IP),USB,COM(232C)

ø ü ý ô þ ÿ ûn PC

î � � å � ò ¥ õ � � õ � � õ � ø � � ã PC

� ê ë � û

CPU

� ò � õ � � õ � � �/

� �� � � ò

A/D,D/A,ITU� � � � � ý � � ý� õ � � �� � ! õ � � � " # $ � õ � ø % & ' ( )

ITU:Integrated Timer Unit:

* + , - . / 0 1

PWM

2 3 4 5

Page 11: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

6 7 8 9 : ; < = > 7 ? @ A B C ; < A @ D

E F G H I J K L M N O

(Linux

P Q R S T U V W X Y

!!)– 11 / 38

I Z [ \

8001 9801 VX RA2 21AP H8 SH2 SH4CPU z80 V30(86) 286 386 486DX2 3048 7145 7764clk

(MHz) 2.5(4) 5 10 16 66 25 50 320

ROM 24 128 192 128k 2M 16MRAM 16 640 640 1.6M 3.6M 4K 1M 64M] ^ _

1979 1982 1986 1988 1993 ` a bARM9

c d e f g

H8-3048Fone MS104-SH2

h i

/

j k l 2 m n o p q

Page 12: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

B C ; < @

E F G H I J K L M N O

(Linux

P Q R S T U V W X Y

!!)– 12 / 38

r s t u v w xu y � z { | } } � ~ � � � �

SH4(

� � � � �)

SH2(

� � �)

HORP3(2

� � �

)

� � �

SH4� � | � � � � � � � �

SH2(

� � �)+PC(

� � �)� { � �� � y � � ' � �

H8� { � � � �   ¡

n OS:

¢ £

,Linux,ITRON

¢ ¤n

¥ ¦

:

§ z ¨ © � ¥ ¦ ª C¥ ¦ ª (Java?)

¢ ¤

n TOPPERS(µITRON):RISC CHIP

� « � ¬ ­ s ® � ¯ ª ° ±

JOB² ³ ´ µ ¶

Page 13: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

· ¸ ¹ º » ¼ ½ ¾

¿ À Á Â Ã Ä Å Æ Ç È É

(Linux

Ê Ë Ì Í Î Ï Ð Ñ Ò Ó

!!)– 13 / 38

PC

Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ßÛ à á â   ¡ ã ¨ ä å æ ç å Ý(

è æ Ú

)

ã ¨ ä å æ ç å Ý(

é å ¯)

GUI

MATLABsimulink

RealTimeWorkshop(MathWorks)

ControlDesk(dSPACE)

Autobox(dSPACE)

LabView(NI) ê ë

PCI

ì å ¯

Kylix(glibc)/Qt,gtk+CUI gcc(glibc)

AutoBox(dSPACE):68

íCPU

î ï ð ñ ò ó ô õ ö ÷ ø ò

glibc

ù ú û ü ý þ

glibc ÿ free

Page 14: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU�

I/F � � � � � � � �¿ À Á Â Ã Ä Å Æ Ç È É

(Linux

Ê Ë Ì Í Î Ï Ð Ñ Ò Ó

!!)– 14 / 38

Ü Ý Þ ß

(

Ù å �

:

)

� � � � � ² � � � � � ã Ý � � ã � � �� � � �

Windows

� � � ! " � # $ % & ' ( Ö ) * + , � � - Ö � . /0 1 2 3 ( Ö �

windows

Ç 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H ? I J Ç K L M N O P Q R S T U V WX

(usb

Y Ã Â

)

Linux

� � Z [ \ - ] + � ^ _ è å Ý 0 1 3 * . / 0 ` Ö �Ý â � á a & ' * b c d e Ü Ý Þ ß f g h [ � i � * b c d e� j 3 k * � � Z # $ % & � � lLinux I/F m n o p mq

Page 15: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

r s t u r

v w x y z { | } ~ � �

(Linux

� � � � Î Ï Ð � � �

!!)– 15 / 38

n Linux

I/F

� � � � � � � �

(

� �

)

� � � � � � � � � � � f �� � � � �   � � � � � � � � � � ¡ ¢ � £ ¤n

� � � � � � � � � � OS

¥ ¦ § ¨ � � � ©I/F

� � � ªI/O

« �¬ � ­ ® § � ¯ � ­ ° ± �

I/F

� � � ¥ « ² ³ � � � � � ´ ­ µ¶ · £ ¤� � � � � � � � ª ¸ ¹

n

º » � ² ´ � � � �¼

(

½

)

� � ¾ ¿ À ª � � ´ ª j § Á § ¤n

 � à ² � � � � � à ² Ä Å � � � ´ ª j § Á § ¤HDD

Æ Ç

n

È Ã ¾ É � ² � � � �Ê Ë Ã ¾ � Ì ´ � Í Î � � Æ Ç ­ ° ± � Ï Ð � Ñ £ � � � � ¤Ò � � � Ó © Æ ± ¤

Page 16: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

Ô Õ Ö × Ø Ù

Ú Û Ü Ý Þ ß à á â ã ä

(Linux

å æ ç è é Ï Ð ê ë ì

!!)– 16 / 38

デバイスドライバ

カーネル

アプリケーション

ハードウェア

ローダブルモジュール

カーネル

アプリケーション

ハードウェア

スタティックリンクのドライバ ローダブルモジュールのドライバ

ダイナミックロードIF

í î ï ð ñ(

ò

)

ó ô õ ß ö ÷ õ ô ø ù ú

Linux Kernel Conference 2004

û ü ý þ

insmod

ÿ � � � Â � � � � � � � � � � � £

Page 17: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

kernel

Ù � �

..PC

� � �

..

Ú Û Ü Ý Þ ß à á â ã ä

(Linux

å æ ç è é Ï Ð ê ë ì

!!)– 17 / 38

less /proc/bus/pci/devices� �0118 114718b2 a fe5ff000 fe5fec00 00000000 00000000 00000000

00000000 00000000 00001000 00000040 00000000 00000000 00000000

00000000� �� � �

ID

� � � � � � �

8086:

� � � � � � � �

ID1147:

� � � � ! � � � � � �

ID,18b2(h)=6322:

" � � # $ � �(PCI-632206)

less /proc/pci� �Bus 1, device 3, function 0:

Class ff00: PCI device 1147:18b2 (Interface Corp) (rev 1).

IRQ 10.

Master Capable. Latency=64. Min Gnt=64.Max Lat=176.

Non-prefetchable 32 bit memory at 0xfe5ff000 [0xfe5fffff].

Non-prefetchable 32 bit memory at 0xfe5fec00 [0xfe5fec3f].� �% � & ' ( ) �fe5ff000,fe5fec00

* + , - . / 0 1 2 3 4

Page 18: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

PCI I/F Ö 5 6 7 8

Ú Û Ü Ý Þ ß à á â ã ä

(Linux

å æ ç è é 9 Ð ê ë ì

!!)– 18 / 38

PCI

: � ; < ) � = > �

31 24 23 16 15 8 7 0� � � �

ID

� � �ID 00h� � � � � � � � � : ? � (

04h@ A � : � ( B C D > �ID 08hE � � � & F G � � � H I õ à J Þ K õ L M N O Þ P ÷ õ J Q õù 0ch� � � ' ( ) � ) D � �

10h...� � � ' ( ) � ) D � �

24hR S = � � T

IDR S = � � T � � �

ID 2chU V

ROM

� � � ' ( ) �30h+ , W X Y � + , W X A � �

3ch

PCI� � � � Z [ \ ]

fchPCI

^ � ( _ `PCI

a G H b c � � �ID

� � � � �

ID

d e * f g W h 0 1 2 3 4

Page 19: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

i j k l m n 5 j m 6 op q r s t u v w x y z

(Linux

å { | } ~ 9 � � � �

!!)– 19 / 38

insmod

� � � � � � � � � � � � � � � � � �� � � � � � � �

(init module)

� � � � � � � � � � �   �insmod hoge 

ノード(/dev/hoge)がなければ メジャー番号,マイナー番号 を指定して作成 

init_module()

モジュールコマンド

カーネル

venderID,deviceIDから、該当のPCIインターフェースを探す

割付られているアドレスを探す

デバイス登録:メジャー番号 デバイス名 ファイルオペレーション

hoge.o(hoge.c)

ベンダID=venderIDデバイスID=deviceID

init_module が成功すれば lsmodで、デバイス名が現れる

¡ ¢ £ ¤ ¥ ¦ §kernel

¨ © ª « ¬ ­ ® (

¯ ° ± ² ³ ¬ ´

...)

Page 20: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

init module

p q r s t u v w x y z

(Linux

å { | } ~ µ � � � �

!!)– 20 / 38

less /proc/devices¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç ÈÉ Ê · Ë Ì Í Î » ¼ ½ ¾ Ï Â Ð Ñ Ò Ó Ô Õ� �Character devices:

1 mem

2 pty

3 ttyp

4 ttyS

180 usb

250 pci6202

251 pci6105

252 pci3310

253 pci2512

254 adm681

Block devices:

1 ramdisk

2 fd

3 ide0

9 md

� �

less /proc/ioportsÖ × Ë ¾ Â Ø Ù Ô Õ� �0000-001f : dma1

0020-003f : pic1

0040-005f : timer

1000-107f : eth0

2400-2413 : usb-uhci

2c00-2c1e : pci7404v

3000-300e : pci6202

f400-f41f : adm681� �

Page 21: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

Ú l Û Ü

/dev/hoge

p q r s t u v w x y z

(Linux

Ý { | } ~ µ � � � �

!!)– 21 / 38

» Ë º ¿ Þ ß à

:node(

Þ ß à á â

)

ã É Ê · Ë Ì Í á ä ½ å Ë Ì Í Î æ ç Ò è Å é êë Ô Õ

ls /dev/pci*� �crw-rw-rw- 1 root root 253, 0 Sep 1 17:17 /dev/pci2512

crw-rw-rw- 1 root root 252, 0 Sep 1 17:17 /dev/pci3310

crw-rw-rw- 1 root root 251, 0 Sep 1 17:17 /dev/pci6105

crw-rw-rw- 1 root root 250, 0 Sep 1 17:17 /dev/pci6202

crw-rw-rw- 1 root root 249, 0 Sep 1 17:17 /dev/pci7404v� �

n /dev/hoge

Â Þ ß à

(

ì é ê) Õ

n

É Ê · Ë Ì Í í » ¼ ½ ¾ î ¸ ½ ¼ ã ï ð ë Ô Ç ñ ò ó ì Õ

kernel

Â Ì Í ã ô ß õ ö Ô Õn c:

¶ · ¸ ¹ º ÷ ã Ñ ë Õ/dev/ttyS0(

ø Ö ù ú û Ë ü),/dev/lp0(

ý Ö þ º)

 ÿ � � È Ó Å Æ Ô Õ

Page 22: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� � � � � Ú �

� � � � w � � �

(Linux

Ý � � � � µ � � � �

!!)– 22 / 38

insmod

ê � Ã » ¼ ½ ¾ î ¸ ½ ¼ Î � Ó Ô � � ò � � Ç ¿ Ã á Ë î ! " ù(I/F# Ë î

)

Î $ � Ó Ô Õ

デバイス入出力システムコール処理の流れ

ユーザ空間

システム空間

トラップ

システムコール・インターフェイス

デバイスドライバ モジュール

カーネル

ハードウェア

アプリケーション

システムコール・ライブラリ

ユーザ・ライブラリ

% & ' ( )

(

*

)

+ , - . / - , 0 1 2

Linux Kernel Conference 2004

3 4 5 6

Page 23: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

7 8 9 : ; � < 8 ; Û =

(2)

� � � � w � � �

(Linux

Ý � � � � µ � � � �

!!)– 23 / 38

> ? @ A B C

(I/F

D ? @

)

E F G H I J K Lrmmod hoge  cleanup_module()

モジュール

デバイス登録抹消

hoge.o(hoge.c)

プログラム

fdev=open(/dev/hoge,mode)

close(fdev) hoge_close()

hoge_open()

ioctl(fdev, func, arg) ioctl(node,file,func,arg) func_fuga() outb(データ,アドレス) inw(アドレス) copy_from_user(*arg,data.sizeof(data)) copy_to_user(*arg,data.sizeof(data)) etc..... (ファイルオペレーション)

インターフェースボードとおしゃべり

M N O P Q

open,read,write,ioctl

R Sfops(

T U V W X Y Z ? [ \ ]

)

^_ ` ` a L b c Gioctl

F d e(func)

^ f g h i j k l N L

Page 24: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

m : n o p p

( )(2)

� � � � q � � �

(Linux

r � � � � s � � � �

!!)– 24 / 38

デバイス入出力システムコール処理の流れ(推測)

ユーザ空間

システム空間

トラップ

システムコール・インターフェイス

デバイスドライバ モジュール

カーネル

ハードウェア

アプリケーション

システムコール・ライブラリ

ユーザ・ライブラリ

open,ioctl

/dev/hoge

open,ioctl(fops)

copy_{to|from}_user

inw,outb

ioctl

^ t u v w x y z x f copy {to|from} user

^ { ? | } ~

(

� �

) L� � w Qfile

E � � � z L

Page 25: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� m � n � � � � �� � � � � � � q � � �

(Linux

r � � � � s � � � �

!!)– 25 / 38

Linux

� �   W ¡ � ¢ \ ] £ ¤ i ¥ ¦ § ¨ © ª « ¬ ­ N Lkernel 2.2 2.4 2.6® ¯ ° ±² ³ ´ µ pci find device pci find device pci register driver¶ · � ¸ ¹ º �» ¼ ´ µ pdev

½ ¾ ¿ À Á Â Ã

pci read config dword pci resource startÄ Å Æ �Ç È ´ µ register chrdev devfs regiter chrdev cdev add(

É Ê

)

n fops

k

init module

R S Ë © Ì Í Î ¬ ­ Ï Ðn kernel2.6

Ñ Ò

udev

Ó Ô Î Õ Ö Ð(/dev/*

« × Ø Ù Ú Û Û Ü,devfs

Òudev

Ý Þ Ì ß Ø à á x z § á âã â Ï

)n

ä à Ý å | æ ç æ è ¢ é � ê ë ì í î Ø Ï Õ ï « ð Ï Ð

Page 26: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

ñ ò ó ô õ

� � � � � � � ö � � �

(Linux

÷ � � � � ø � � � �

!!)– 26 / 38

ù ú û ü ý þ ÿ � � � Ñ å � ë � � � � í � ë � � å ç é � �� í � Ù Ï Ð� � � � � ÿ �

(realtime)

Ñ � � � ì � � � �(

� ) Ð

1.

� ë � é � � � � � ç � � ç í � � Ï(

� � ë) !

2. REAL-TIME

" � ð #

OS

í � � # !(a) Linux: RT-Linux,ART-Linux(b) µITRON(TOPPERS)� � ë $ % � � &(c)

' � (

Page 27: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

Real Time Linux

) * + , - . / ö 0 1 2

(Linux

÷ 3 4 5 6 ø 7 8 9 :

!!)– 27 / 38

n RT-Linux:

; � < � = � % >

::GNU

� ? @ A B C � D � E F GH C � I J K L M

HDD

F N � � O P Q # C R..,non-free?

n Advanced Real Time Linux(ART Linux):

S T U V W X ý Y Z [ \L ] ^

(source-forge)

u 2009.3.16:kernel-2.6

_ ` a Z b c d ] !debian-4.0(etch,kernel-2.6.24.6),Ubuntu8.04

L _ Q #PATCH

ef g h i !

2.4→2.6

% j k l P � �(

m J n o) I � p j � q � C R rs t !

u 2.4

u M ; � < � v � j L _ Q # w � e f g h i !x y

:

J z {

M/B(chipsetp965

| })

Mkernel2.4

u % M ~ � C�

–2.6

_ ` F � � �SMP

L M � _ ` �

Page 28: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

ART-Linux

) * + , - . / � 0 1 2

(Linux

� 3 4 5 6 � 7 8 9 :

!!)– 28 / 38

kernel

L

PATCH

Z � g � e I 3

@ { � � � � � � � � � � �� �#include <linux/art_task.h>

art_enter(ART_PRIO_MAX, ART_TASK_PERIODIC,1000);

/*

� � � � � � � � � � � � � � � � � � � � �   ¡ ¢ £ ¤ ¥ ¦ �§ ¨ � � � § ¨

(usec) © */

for(;;){

art_weight(); /*

§ ¨ � ª « ¬ £ ­ ® � ¯ ° ± ²*/

/*

³ ´   ¡ � µ ¶ ·*/

}

art_exit();

� �for

¸ ¹ º » b ¼ ½ ¾ � ¿ À � Á Â � Ã Ä ¼ � Å � { Æ Ç È É » Ê Ë �

jiffles

Ì Í Î Ï Ð Ñ Ò � Ó Î � Ô »....(

Õ Ö × Ø Ù × Ú Û Ü

) �

Page 29: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

Ý Þ ß à

á â ã ä å æ ç è é ê ë

(Linux

ì í î ï ð ñ ò ó ô õ

!!)– 29 / 38

ö ÷ ø ù ú û

(

ü ý ø þ ü ÿ � ø þ ú û

)� � � � � � � � � � à � � Ì � � �� � � � � à � � � � � � � � �� ÷ ø ù ú û

(

ü ý ø þ � � � ú û

)� � � ! � � " � � � � # $ % & �1. PID

' (

(

) * + , -

) �2.

) * + # . / 0 ) * + 1 2 � ' ( 3 # 4 5 �6 7 ' ( 8 9 # : ; < = & � > : ? @ A B C ? : � D E �

Page 30: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

PID

F G H I J K L M N O P

(Linux

Q R S T U V W X Y Z

!!)– 30 / 38

[ \ @ ]

PID

' ( ^ _ ` < a b c d & �

Gc(s) =U(s)

E(s)= kc{1 +

1

Tis+ Tds}

E(s) = R(s) − Y (s)

R(s)

� � �

Y (s)

e f 3 ! �

U(s)

' ( 3 ! �(

e f 3 g � � �)

kc

h i jTi I

k l m nTdD

k l m nτ

' ( o p(s)

k

q r s t

KP

u v h i j

KI

w x h i j

KD

y x h i jh i j z $ % { | 8 9 ^ } ~ ? � � � � < � � d � � & �

Page 31: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

PID

� � � �

F G H I J K L M N O P

(Linux

Q R S T U V W X Y Z

!!)– 31 / 38

� � } { �

(It works!!)

� � � � � ] � � � � � � z { � � CHR

z {� � � � d � � � �

�X�e�b�v�����Å�å�ù�z

1

Ky

time sL

kc Ti Td

P

� � 1

KL- -

PI

� � 0.9

KL3.3L -

PID� � 1.2

KL2L 0.5L�   ¡ ¢ } £ ¤ � � � ¥ ¦ � § ¨ � © �

PID

ª ¤ « ¬ �

u(k) = KP{r(k) − y(k)} + KI

k∑

i=0

{r(i) − y(i)} + KD{y(k − 1) − y(k)}

KP = kc −1

2KI , KI = kc

τ

Ti

, KD = kc

Td

τ

Page 32: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

­ ® ¯ ° ±

² ³ ´ µ ¶ · ¸ ¹ º » ¼

(Linux

½ ¾ ¿ À Á Â Ã Ä Å Æ

!!)– 32 / 38

Ç | È É � Ê Ë Ì Í Î

(

Ï Ð Í

) Ñ

1.

Ò ¨ � Ó Ô Õ Ö �

(a)

× Ø � Ù Ì £ Ú Û Ü Ý

F = mα = mv = mx

(b)

Þ ß à á ¤ â Ú ¡ ¢

:: ã ä å æ+

ç è é ê 1

1 + Tse−Ls

2.

Ò ¨ � ¤ � � Ú � ë � ì í î ï(a)

ð ñ ò ó ô õ ö î ÷ ø ù ú � Ñ →

� � û ü ý þ

(b)

ÿ � � � Ø � ø � � ù ú � Ñ →

� � û ü ý þ

n

� � � �:LQ

n

� � � � �::H

� � �,µ

� �,

� � � � � � � � � �

n

� ! " � # � �::STR(

$ % & ' ( � ) � � * + ( * � ,

),MRACS(

� � % - . / � 0 )1 2 ü 3 4 Ô Õ ü 3 5 6 Ï 7 8 � ø 4 9 2 : Ó ; û ü < 4ÿ � = ò ï > ? @ A B C ù D E ø F G H I

Page 33: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

J K L

:

M N O O P J K QR S T U V W X Y Z [ \

(Linux

] ^ _ ` a b c d e f

!!)– 33 / 38

FuelInjectorThrottle

Valve

TWC

吸気質量 燃料質量

混合爆発

排気Ignite

Pi

Te

TeTe=f(θ,ne)

Te

ne

Te =

Pi

CA

TVO(θ)

ne

θ

time

time

K1+Tsθ

g h i j 4 k l m n o p(Te = f(θ, ne))

7 q l r s 1

1 + Ts

t 4 ? uv u w x y A z { 5 | } x < I

Page 34: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCUL

:GUI

~ �R S T U V W X Y Z [ \

(Linux

] ^ _ ` a b c d e f

!!)– 34 / 38

� = � u � � � � � w � � u � � � � � �

GUI(Kylix)

Page 35: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCUM

R S T U V W X Y Z [ \

(Linux

] ^ _ ` a b c d e f

!!)– 35 / 38

Image

SteeringMotor DrivingMotor

SpeedSensor

YawrateSensor1394 ART-Linux

P-M 2.0GHzA/D

A/D

PWM

PulseCount

FB target

θ LLx

FFtarget

50pixel

FBtarget

FFtarget

Ly

Page 36: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� L � � L ~ P � � �R S T U V W X Y Z [ \

(Linux

] ^ _ ` a b c d e f

!!)– 36 / 38

Modelcar

Monitoring Camera PCCable

Wireless LAN

PC

WiPort

CPUボード(H8/3048F)

モータドライブ基盤

モータサーボ

ロータリエンコーダヨーレートセンサ

無線LANボード

模型車両

CPU

モニタ

駆動系電源制御系電源

WiPort用電源

カメラ画像データ

カメラ

画像センサデータ

制御命令センサデータ

センサデータ

センサデータ

センサデータ

制御命令

制御命令

制御命令

5V

3.3V

5V

運動制御

Page 37: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� L � � L ~ P � � �R S T U V W X Y Z [ \

(Linux

] ^ _ ` a b c d e f

!!)– 37 / 38

0(x0,y0) 2(x2,y2)

8(x8,y8)5(x5,y5)

4(x4,y4)

6(x6,y6)

3(x3,y3)

7(x7,y7)

R2

R140pixel

① ①②

Θ'

(1)Θ'>=0°かつΘ'<=90°のとき 減速

(2)Θ'>90°のとき

Θ' 停止または旋回して回避

(3)衝突しないとき

そのまま走行

Page 38: me main - Osaka City Universitytakiyama/... · 2013-09-03 · POWER.mech.eng.OCU init module p q r s t u v w x y z (Linux å µ !!) – 20 / 38 less /proc/devices ¶ · ¸ ¹ º »

POWER.mech.eng.OCU

� � �

R S T U V W X Y Z [ \

(Linux

] ^ _ ` a b c d e f

!!)– 38 / 38

Linux&GNU free !!