37
Lee, J aeH eu n g Lee, J aeH eu n g

국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

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

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

Lee, J a e H eu n gLee, J a e H eu n g

Page 2: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

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

�����������������(D e v i c e )����� � � � , L C D � � � , P C M C I A , A u d i o , � � , � � � , � � � �, � � � �, � � � � � � � � � � � � ! "

� � # � $ % & ' ( ) * � � + , , - � # � � . � / 0 ( 12 3 �) % 4

� D e v i c e D r i v e r � 5 6 � � 7 8 9 : ; < = > ? @ � � + , � A B ; C D � E � F

G H � # � F I J K 1 L M N H � O � � + ,

� � # � P Q ' ( ) * A B ; C D � E � % R ' ) % S O "1T @

U % V $ W X Y

� Z [ 2 3 � & \ ] ^ 6 _ ` 2 3 � a � $ \ 7 8 3 � b �

� c ? � � + , � H / W F 6 � K 1 L M N D � E � 6 _

� � � d � e f 2 D � � + , g h 0 i � j "

1

Page 3: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

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

� D e v i c e D r i v e r I n t e r f a c e�Standard ���� � � �� � ��

� U N I X k l I / O < m D � E � : o p e n () , c l o s e () , re a d () , w ri t e () , i o c t l ()

� N o n -s t a n d a r d D e v i c e D r i v e r I n t e r f a c e� � � � � � ��

� C u s to m � ��� � � � � � � � � � � � � � � � � � �

2

Application

myDriver

Device

Application

IO System

osDriver

Device

Page 4: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

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

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

� � � ���� ! � � " # " � $ % & ' ( ) �

� D e v i c e � * � + � , � - .� f i l e � � " / 0 1 2 � 3 re al de v i c e � / 0 45

3

User Program

Device file

VFS

Device Driver

Real Device

.

Page 5: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� �� �� �� ����������������� � � ��� � ��� � ��� � �� (2)� � � � � �� � � � �� � � � �� � � � � ����������������

� L i nu x �6 D e v i c e 7 8 " � * � + � 9 : ; < = > , ac c e s s 4 45 ?� > ? @O F i l e o p e ra t i o n 2 ? K 1 L n

�@ ���� M aj o r nu m b e rA M i no r nu m b e r% B C ?� D e v i c e D r i v e r ���� � �� �� �� �

� D ���� � � ��

� E F ���� � � ��

� G H I J ���� � � ��

4

Page 6: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Char Device( � �� �� �� � ����������������)

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

�@U $ o p h q r � �

� / s t u F > ? � q v n

� � � $ ra w d a t a F > ? @'j 6 _� T e rm i n a l , S e ri a l / P a ra l l e l , K e y b o a rd , S o u n d C a rd , S c a n n e r, P ri n t e r

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

5

crw--w--w- 0 root root 5, 1 Oct 1 1998 consolecrw-rw-rw- 1 root root 1, 3 May 6 1998 null crw------- 1 root root 4, 0 May 6 1998 ttycrw-rw---- 1 root disk 96, 0 Dec 10 1998 pt0crw------- 1 root root 5, 64 May 6 1998 cua0

crw--w--w- 0 root root 5, 1 Oct 1 1998 consolecrw-rw-rw- 1 root root 1, 3 May 6 1998 null crw------- 1 root root 4, 0 May 6 1998 ttycrw-rw---- 1 root disk 96, 0 Dec 10 1998 pt0crw------- 1 root root 5, 64 May 6 1998 cua0

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

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

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

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

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

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

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

Page 7: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Block Device( � �� �� �� � ����������������)

� B l o c k d e v i c e � �� �� �� �� rando m ac c e s s 45� E F K L � M N O � 45 " P Q

� � R S T � �" U V P Q W X

� + � Y �Z � �� m o u nt = � [ \ = P Q���J , R am D i s k , C D -R O M ]

� � � � � �� � � � �� � � � �� � � � � B l o c k d e v i c e

6

brw------- 1 root floppy 2, 0 May 6 1998 fd0brw-rw---- 1 root disk 3, 0 May 6 1998 hdabrw-rw---- 1 root disk 3, 1 May 6 1998 hda1brw-rw---- 1 root disk 8, 0 May 6 1998 sdabrw-rw---- 1 root disk 8, 1 May 6 1998 sda1

brw------- 1 root floppy 2, 0 May 6 1998 fd0brw-rw---- 1 root disk 3, 0 May 6 1998 hdabrw-rw---- 1 root disk 3, 1 May 6 1998 hda1brw-rw---- 1 root disk 8, 0 May 6 1998 sdabrw-rw---- 1 root disk 8, 1 May 6 1998 sda1

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

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

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

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

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

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

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

Page 8: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Network Device( � � � �� � � �� � � �� � � � ����������������)� N e t w o r k d e v i c e � �� �� �� �

� � ^ � P Q + � � ) �

� G H I J 2 _ 1 2 � ` a 1 b �_ c � � P Q

� ^ � d , e f g � 2 _ h W i + � Y �Z [ j k � _ s o c k e t( ), b i nd( ) ]� Y �Z k � �

� E th e rne t, P P P , A T M , I SD N ]� � �

7

Page 9: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Major & Minor Number

� M a j o r n u m b e r ( � � �� � �� � �� � � )� l m �6 ���� � � �� % n o / p q � r � �� s h D e v i c e � t u % v w , 1 B y te ( 0 ~ 2 5 5 � �� x)� M i n o r n u m b e r ( � � �� � �� � �� � � )

����� � � �� U �6 P Q % n o � y L � � �

�@ D e v i c e � V 4� � � $ % * z { , 2 B y te ( V | } )� � * � ���� � � �� 4 3 ~ � � ���� � � 45

� $ l s -a l / d e v / h d a *

8

brw-rw---- 1 root disk May 6 1998 hda

brw-rw---- 1 root disk May 6 1998 hda1

brw-rw---- 1 root disk May 6 1998 hda2

brw-rw---- 1 root disk May 6 1998 hda3

brw-rw---- 1 root disk May 6 1998 hda

brw-rw---- 1 root disk May 6 1998 hda1

brw-rw---- 1 root disk May 6 1998 hda2

brw-rw---- 1 root disk May 6 1998 hda3

wx

wx

wx

wx

y

w

z

{

� � � � � � � � ! � ! � ! � ! �

Page 10: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

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

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

9

Application

System Call Interface

VFS

Network SubsystemBuffer Cache

Network D/DBlock D/DChar Device Driver

Device Interface

Hardware

Applicationarea

Kernelarea

Hardware

Page 11: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

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

10

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

� � � � � � � �

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

� �� �� �� �

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

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

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

�����

�����

�����

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

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

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

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

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

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

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

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

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

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

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

� � � � � � � �

�����

�����

�����

�����

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

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

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

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

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

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

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

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

�����

�����

�����

�����

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

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

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

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

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

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

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

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

�����

�����

�����

�����

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

Page 12: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� �� �� �� � � �� �� �� � (kernel Module)� � ��� ��� ��� �� � � � � ! ! ! ! " # $ %" # $ %" # $ %" # $ % l o a d i n g &&&&'''' ( )( )( )( ) * +* +* +* + � , - .� , - .� , - .� , - .

� * + /* + /* + /* + / 0 �0 �0 �0 � 1 2 31 2 31 2 31 2 3 4 5 64 5 64 5 64 5 6 � ��� ��� ��� �� � � � � � � � � &&&& 7 -7 -7 -7 - 8 �8 �8 �8 � * + �* + �* + �* + � 3 � 93 � 93 � 93 � 9

//// : ; 4 ): ; 4 ): ; 4 ): ; 4 ) < �< �< �< � = >= >= >= >

����������������� � �� � �� � �� � �� , 2 32 32 32 3 � ��� ��� ��� �� , ? @ A B? @ A B? @ A B? @ A B C % D EC % D EC % D EC % D E F �F �F �F � G H %G H %G H %G H %

I J KI J KI J KI J K

� 1 2 3 L1 2 3 L1 2 3 L1 2 3 L * +* +* +* + � M� M� M� M N O =N O =N O =N O = P Q = RP Q = RP Q = RP Q = R 4 S4 S4 S4 S , T UT UT UT U V W X SV W X SV W X SV W X S ( )( )( )( ) * +* +* +* +

� M Y� M Y� M Y� M Y 3 Z [ R3 Z [ R3 Z [ R3 Z [ R \\\\

�<l i n u x / m o d u l e . h >' A $ S � L n� | } A � O ~ Y | } '] � � � � � H � "

� 3 ]3 ]3 ]3 ] ^ �^ �^ �^ � C % _ ` Y �C % _ ` Y �C % _ ` Y �C % _ ` Y � a �a �a �a �

� m a i n () "10 � n� a � ' � � � 6 � � � � � q O "10 � �

� Loading � - int init _ m odu l e ( v oid) � ! "� U nl oading � - v oid c l e anu p _ m odu l e ( ) � ! "

11

Page 13: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Linux Device Driver � �� �� �� �

� L i n u x d e v i c e d r i v e r ���� J b #J b #J b #J b # � ,� ,� ,� ,

� a � � �

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

� a � D � E �

� # $ % & ' ( % ) * J K & + , % L M N % O . P Q �& ? @ R S D T U% & G V W F X .3 .

� a � � a � � � ] ^

� # $ % & ' ( % ) * Y Z J [\ , D T ] ^ _ ` , w ait q u e u e a b R S + ,P c & G d e [ I 3 .

� L o a d a b l e� f / 0 - J K & # $ % & ' ( % ) * + , Z g 2 P , h i [ j 2 ' k l m% n h i k : o p j q 2 ' [ I 3 .

� � A 0 i (C o n f i g u ra b l e )� J K & # $ % & ' ( % ) G + , @ r � k s t u v [ I 3 . w x y A Gzp { D : * + , p compile [j | } [ I 3

12

Page 14: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

������������ � � � � � � � � ! �! �! �! � � " #� " #� " #� " #

13

init_module( )insmod register_capability( )

capabilities[ ]

printk( )…..

cleanup_module( ) unregister_capability( )rmmod

Page 15: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

�������� � � � � � � � � $ �$ �$ �$ �

�cIcIcIcI C % _ `C % _ `C % _ `C % _ `

�a�' | } � � � � �

“h e l l o e m b e d d e d w or l d ”F � �

� | } � 6 � � � “G ood B y e ”F� �

� S ou r c e f i l e : h e l l o.c

/* h e l l o . c */

#i nc l u d e < l i nu x /m o d u l e . h > /* � � � � �! "�! "�! "�! " # $# $# $# $ */#i nc l u d e < l i nu x /k e r ne l . h > /* p r i nt k () % "% "% "% " # $# $# $# $ */

i nt i ni t _ m o d u l e (v o i d ) { // �! &�! &�! &�! & ' ( )' ( )' ( )' ( ) **** + ,+ ,+ ,+ ,

p r i nt k (“h e l l o e m b e d d e d w o r l d ����n”) ; // f r o m a t e x t c o ns o l e , no t X -t e r m i na l

r e t u r n 0 ; // 0 : s u c c e s s , - .- .- .- . - f a i l}

v o i d c l e a nu p _ m o d u l e (v o i d ) { // / 0/ 0/ 0/ 0 ))))**** + ,+ ,+ ,+ ,p r i nt k (“K E R N _ A L E R T “G o o d b y e w o r l d ”) ;

}

14

Page 16: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

�������� � � � � � � � � % & '% & '% & '% & ' 2 ( )( )( )( ) * +* +* +* +�gcc � � L� � L� � L� � L 1 2 31 2 31 2 31 2 3

�gcc -c -D _ _ K E R N E L _ _ -D M O D U L E -O 2 h e l l o . c

� M a k e f i l e //// d , 4 ed , 4 ed , 4 ed , 4 e m a k e 4 )4 )4 )4 ) f gf gf gf g

15

-c : ���� object ��� insmod��� runtime � � � � � � � � �-O2 : � � � � � , � � inline function� � � �-Wall : � � waning� � !-D__KERNEL__ : " # � � # $ % � & � (user process � % ' ( ) )-DMODULE : � � * $ + , - . � � � - / 0 1 2 3 4 5 6 7 ��� 8 9 !

CC = gccCFALGS = -D__KERNEL__ -DMODULE -O2 -WallOBJS = hello.o

all : $(OBJS)clean:

rm -f *.o *.~

Page 17: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

�������� � �� �� �� � (loading), � �� �� �� � (unloading)

� h , ih , ih , ih , i G HG HG HG H (h e l l o . o )//// % j% j% j% j

� i n s m od � . � / � .o� ~) in s mod h ello.o

� * + * + * + * + # U i# U i# U i# U i G HG HG HG H k lk lk lk l O mO mO mO m

� l s m od

� G HG HG HG H I5I5I5I5

� r m m od � . � / �

� ~)r mmod h ello (� - .o9 � : o � )

� G HG HG HG H # U n# U n# U n# U n I5 � I5 � I5 � I5 � o po po po p

�q r s�q r s�q r s�q r s t � u P�t � u P�t � u P�t � u P� v w X )v w X )v w X )v w X )

u xu xu xu x y zy zy zy z

16

Page 18: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� � � �� � � �� � � �� � � � � � � � � � � � � � � � � � � � $ � * +$ � * +$ � * +$ � * +

� * +* +* +* + G H �G H �G H �G H � { | %{ | %{ | %{ | % � � � �� � � �� � � �� � � � � � � � � � � � � � � � \ '\ '\ '\ ' d ,d ,d ,d ,

� s t r u ct f i l e _ o p e r a t i o n s �� � ? � n X� i n i t _ m o d u l e , cl e a n u p _ m o d u l e �� � ? � n X

� * + * + * + * + � � � �� � � �� � � �� � � � � � � � � � � � � � � � F lF lF lF l

� r e gi s t e r _ ch r d e v ( ) , r e gi s t e r _ b l k d e v ( ) , r e gi s t e r _ n e t d e v ( )

� 1 2 31 2 31 2 31 2 3 / % j% j% j% j

� i n s m o d

� M a k e s p e ci a l f i l e� m k n o d

� � � � x � � � x � � � x � � � x } � 4 )} � 4 )} � 4 )} � 4 ) ^ � C % _ `^ � C % _ `^ � C % _ `^ � C % _ ` d ,d ,d ,d , ~~~~ � � @� � @� � @� � @

17

Page 19: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� � � �� � � �� � � �� � � � � � � � � � � � � � � � � � � � , $, $, $, $ �-�-�-�-

18

Page 20: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

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

19

userprogram

openclosereadwrite

file operationsdev_opendev_closedev_readdev_write

isrrx_isrtx_isr

device

systemcall

interrupt

kernel

device driver

Page 21: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� �� �� �� � - � � � � � � � � � �� �� �� � ���� � �� �� �� �

� � � � � h ,h ,h ,h , - � � � � ( 2 32 32 32 3 )xxxx b [ �b [ �b [ �b [ � � v w� v w� v w� v w ' W' W' W' W

� m k n od / d e v / � \ � � � . � / � � � � k 7 � k

� �) m k n od / d e v / k e y d d c 1 2 5 0� � h � � h � � : c h m od u g + w / d e v / k e y d d

� � � � �� � � �� � � �� � � � � � � � � � � � � � � � # U# U# U# U

� i n s m od � . � / � .o� �) i n s m od k e y d d .o

� � � � �� � � �� � � �� � � � � � � � � � � � � � � � � I� I� I� I

� r m m od � . � / �

� �)r m m od k e y d d ( � $ .o0 � q v n )

� � � � � � � � � � � � � � � � � # U# U# U# U e �e �e �e �

� l s m od

20

Page 22: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� � � �� � � �� � � �� � � � � � � �� � � �� � � �� � � � - Etc.� D e v i ce ���� N O xN O xN O xN O x = u )= u )= u )= u ) F i l e PPPP

� /p r o c/d e v i ce s� R � S y s t e m ' � � S � L O D e v i c e � $ A �

� /u s r /s r c/l i n u x /D o cu m e n t a t i o n /d e v i ce s . t x t� R � L i n u x S y s t e m '] A $ S � L O D e v i c e � $ M a j or , M i n or N u m b e r � '   * A �

� /u s r /s r c/l i n u x /i n cl u d e /l i n u x /m a j o r . h� M a j or N u m b e r F d e f i n e * h e a d e r

21

Page 23: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

��� � � � � � � � �

#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>

Header Files

int device_open( … ) { … }int device_release( … ) { … }ssize_t device_write( … ) { … }ssize_t device_read( … ) { … }

Function Prototypes

static struct file_operations device_fops = { …ssize_t (*read) (…);ssize_t (*write) (…); …int (*open) (…);int (*release) (…);…

};

File Operation

int init_module(void) { … } �!�!�!�! 1 21 21 21 2 3333 4 - 54 - 54 - 54 - 5 6 76 76 76 7

void cleanup_module(void) { … } �!�!�!�! / 0/ 0/ 0/ 0 3333 8 98 98 98 9 : ; 6 7: ; 6 7: ; 6 7: ; 6 7

22

Page 24: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $ �$ �$ �$ � (1)� D e v i ce s t r u ct u r e

� � � � � n � ! : 2 � � ' � , n � � n � !� N a m e f i e l d� f i l e _ op e r a t i on f i l e s

23

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

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

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

����

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

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

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

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

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

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

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

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

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

� � � �� � � �� � � �� � � �…����

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

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

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

����

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

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

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

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

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

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

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

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

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

� � � �� � � �� � � �� � � �…����

Page 25: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $ �$ �$ �$ � (2)� � � � �� � � �� � � �� � � � � � � � � � � � � � � � F lF lF lF l

� � � � � % l m � ] F � > , + � p � 1 ��� ] � � y � � �� � � ' (

� � � � � � � 6 i n i t _ m o d u l e ( ) ? � � � ? = � � y � � �� � � � � � ] F ? �

� a�' q A S � L O c h r d e v s % V ' ¡ � ¢ c h a r d e v i c e � N

� major number : ���, 0 � �� � � � � � � �

� name : � � � � � � � � /p roc /d ev i c es � ���� fops: � � � � � � � � � � � ! " # $ % &

�n10 £ l S ¤ ¥ ¦ 0 § � ¨ n � � ©

24

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

Page 26: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(3)����������������� � �� � �� � �� � �� I 5I 5I 5I 5

�� �� � � = v � � � �� � � �

�Rmmod � � � 1 �� � 3 � � � � , �� � � �� U �c l e a n u p _ modu l e � }N= r , � � � � �6 � � � Y � Z k 1 }N

� � � �� � � ?�

25

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

Page 27: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(4)� 2 32 32 32 3 � �� �� �� �

� � � �� � � �� % � � � � + � g C � " � �� % �� � 3

[ \

�ª � # � O � \ B « � � � � ¬ , a � � � \ ­ ® � ? � ¯ I / O ­ ® 1° � M N D � E � % h

� � # � � . � / F % R * ± O ² � : ³ 7 8 � \ ­ ® % V Y ' ]) % S O ´ i � � � + µ ¶ * ± O ² $

�0: $ d u m m y c h a r a c t e r d e v i c e % R �6 ' ] $ � \ ­ ® % V Y A $�)

26

struct file_operations dummy_fops = { open : dummy_open, // openread : dummy_read, // read write : dummy_write, // write release : dummy_release, // release

};

struct file_operations dummy_fops = { open : dummy_open, // openread : dummy_read, // read write : dummy_write, // write release : dummy_release, // release

};

Page 28: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(5)

� 2 32 32 32 3 � �� �� �� � � � ; �� � ; �� � ; �� � ; � M ;M ;M ;M ; � �� �� �� �

27

struct file_operations { /* <linux/fs.h> */struct module *owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char *, size_t, loff_t *);ssize_t (*write) (struct file *, const char *, size_t, loff_t *);int (*readdir) (struct file *, void *, filldir_t);unsigned int (*poll) (struct file *, struct poll_table_struct *);int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, struct vm_area_struct *);int (*open) (struct inode *, struct file *);int (*flush) (struct file *);int (*release) (struct inode *, struct file *);int (*fsync) (struct file *, struct dentry *, int datasync);int (*fasync) (int, struct file *, int);int (*lock) (struct file *, int, struct file_lock *);ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);

};

struct file_operations { /* <linux/fs.h> */struct module *owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char *, size_t, loff_t *);ssize_t (*write) (struct file *, const char *, size_t, loff_t *);int (*readdir) (struct file *, void *, filldir_t);unsigned int (*poll) (struct file *, struct poll_table_struct *);int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, struct vm_area_struct *);int (*open) (struct inode *, struct file *);int (*flush) (struct file *);int (*release) (struct inode *, struct file *);int (*fsync) (struct file *, struct dentry *, int datasync);int (*fasync) (int, struct file *, int);int (*lock) (struct file *, int, struct file_lock *);ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);

};

Page 29: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(6)�File operations

28

loff_t (*llseek)(struct file *, loff_t, int);

���� read/write � � � � � .

ssize_t (*read)(struct file *, char *, size_t, loff_t *);

� � � � � � � � � � � � � � � � � �ssize_t (*write)(struct file*, const char*, size_t, loff_t*);

� � � � � � � � � � � � � � �int (*readdir)(struct file *, void *, filldir_t);

� � � � � � � � �unsigned int (*poll)(struct file*, struct poll_table_struct*);

��� � ! � " � # � $ � � � � � �

loff_t (*llseek)(struct file *, loff_t, int);

���� read/write � � � � � .

ssize_t (*read)(struct file *, char *, size_t, loff_t *);

� � � � � � � � � � � � � � � � � �ssize_t (*write)(struct file*, const char*, size_t, loff_t*);

� � � � � � � � � � � � � � �int (*readdir)(struct file *, void *, filldir_t);

� � � � � � � � �unsigned int (*poll)(struct file*, struct poll_table_struct*);

��� � ! � " � # � $ � � � � � �

Page 30: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(7)

�File operations

29

int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);

� � � � % & ' ( ) * + , - � � � � �Int (*mmap) (struct file *, struct vm_area_struct *);

� � � . / � � � ! . / � � 0 1int (*open) (struct inode *, struct file *);

� � � 2 3 � �� 4 5 6 7 8 9 : ; <int (*flush) (struct file *);

� � � � = � > � / ? � � � � @ .

int (*release) (struct inode *, struct file *);

� � � � = + � 4 5

int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);

� � � � % & ' ( ) * + , - � � � � �Int (*mmap) (struct file *, struct vm_area_struct *);

� � � . / � � � ! . / � � 0 1int (*open) (struct inode *, struct file *);

� � � 2 3 � �� 4 5 6 7 8 9 : ; <int (*flush) (struct file *);

� � � � = � > � / ? � � � � @ .

int (*release) (struct inode *, struct file *);

� � � � = + � 4 5

Page 31: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(8)

�File operations

3 0

int (*fsync) (struct file *, struct dentry *);

� A B � C 7 � � � � / D � � � @ int (*fasync) (int, struct file *, int);

int (*check_media_change) (kdev_t dev);

� E F � � � � � � , G H � I J K L � � �

int (*revalidate) (kdev_t dev);

� E F � � � � � � , A B M N � O � P Q O

int (*lock) (struct file *, int, struct file_lock *);

� R S � lock+ T � � � � � �

int (*fsync) (struct file *, struct dentry *);

� A B � C 7 � � � � / D � � � @ int (*fasync) (int, struct file *, int);

int (*check_media_change) (kdev_t dev);

� E F � � � � � � , G H � I J K L � � �

int (*revalidate) (kdev_t dev);

� E F � � � � � � , A B M N � O � P Q O

int (*lock) (struct file *, int, struct file_lock *);

� R S � lock+ T � � � � � �

Page 32: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(9)� D u m m y C h arac ter d ev ic e � �� � �� � �� � �� . �� . �� . �� . ��

3 1

#define DUMMY_MAJOR_NUMBER 254 /* dummy.c */struct file_operations dummy_fops = {

open : dummy_open, // openread : dummy_read, // read write : dummy_write, // write release : dummy_release, // release

};

char device_name[20];

int init_module(void) // ������������, � � � �� � � �� � � �� � � � � � � � !" #!" #!" #!" # register_chrdev$!$!$!$!{

printk("init module start \n"); strcpy(device_name, "Dummy_Device"); register_chrdev( DUMMY_MAJOR_NUMBER, device_name, &dummy_fops); return 0;

}

void cleanup_module(void) // % &% &% &% & , ' (' (' (' ( ) *) *) *) * , � � � �� � � �� � � �� � � � & + !" #& + !" #& + !" #& + !" # unregister_chrdev $$$$!!!!

{

printk("Clean Up Module\n"); unregister_chrdev(DUMMY_MAJOR_NUMBER,device_name);

}

#define DUMMY_MAJOR_NUMBER 254 /* dummy.c */struct file_operations dummy_fops = {

open : dummy_open, // openread : dummy_read, // read write : dummy_write, // write release : dummy_release, // release

};

char device_name[20];

int init_module(void) // ������������, � � � �� � � �� � � �� � � � � � � � !" #!" #!" #!" # register_chrdev$!$!$!$!{

printk("init module start \n"); strcpy(device_name, "Dummy_Device"); register_chrdev( DUMMY_MAJOR_NUMBER, device_name, &dummy_fops); return 0;

}

void cleanup_module(void) // % &% &% &% & , ' (' (' (' ( ) *) *) *) * , � � � �� � � �� � � �� � � � & + !" #& + !" #& + !" #& + !" # unregister_chrdev $$$$!!!!

{

printk("Clean Up Module\n"); unregister_chrdev(DUMMY_MAJOR_NUMBER,device_name);

}

Page 33: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(10)

� S y stem c all : d u m m y _ open� F i l e _ op e r a t i on s n � ! �6 op e n op e r a t i on n X� A p p l i c a t i on p r og r a m�6 ‘op e n ’ � �� 6 � � �

� S y stem c all : d u m m y _ release� F i l e _ op e r a t i on s n � ! �6 r e l e a s e op e r a t i on n X� A p p l i c a t i on p r og r a m�6 ‘c l os e ’ � �� 6 � � �

3 2

int dummy_open(struct inode *inode, struct file *file) {

printk("Open call for Dummy Char Device \n"); return 0;

}

int dummy_open(struct inode *inode, struct file *file) {

printk("Open call for Dummy Char Device \n"); return 0;

}

int dummy_release(struct inode *inode, struct file *file) {

printk("Release call for Dummy Char Device \n"); return 0;

}

int dummy_release(struct inode *inode, struct file *file) {

printk("Release call for Dummy Char Device \n"); return 0;

}

open : dummy_openread : dummy_readwrite : dummy_writerelease : dummy_release

Page 34: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Device Driver $�$�$�$�(11)

� S y stem c all : d u m m y _ read� F i l e _ op e r a t i on s n � ! �6 r e a d op e r a t i on n X� A p p l i c a t i on p r og r a m�6 ‘r e a d’ � �� 6 � � �

� S y stem c all : d u m m y _ w rite� F i l e _ op e r a t i on s n � ! �6 w r i t e op e r a t i on n X� A p p l i c a t i on p r og r a m�6 ‘w r i t e ’ � �� 6 � � �

3 3

ssize_t dummy_read(struct file *file, char *buffer, size_t length, loff_t *offset) {

printk("Read Call for Dummy Device \n"); buffer[0] = 0x34; return 0;

}

ssize_t dummy_read(struct file *file, char *buffer, size_t length, loff_t *offset) {

printk("Read Call for Dummy Device \n"); buffer[0] = 0x34; return 0;

}

ssize_t dummy_write(struct file *file, const char *buffer, size_t length, loff_t *offset) {

printk("Write Call for Dummy Device : [%x]\n ", buffer[0]); return 0;

}

ssize_t dummy_write(struct file *file, const char *buffer, size_t length, loff_t *offset) {

printk("Write Call for Dummy Device : [%x]\n ", buffer[0]); return 0;

}

open : dummy_openread : dummy_readwrite : dummy_writerelease : dummy_release

Page 35: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

� � � �� � � �� � � �� � � � % & '% & '% & '% & ' / . /. /. /. / / 0 �0 �0 �0 � 1 �1 �1 �1 �

����������������� � �� � �� � �� � �� 1 2 31 2 31 2 31 2 3

� g c c -c -D _ _ K E RN E L _ _ -D M O D U L E -O 2 du mmy .c

� h , ih , ih , ih , i G HG HG HG H (d u m m y . o)//// % j% j% j% j

� i n s mod du mmy .o

� � � � � h ,h ,h ,h ,

� � � �� % � � � y L � 6 � � ( + � )1   � � ¡ ?� � � ( + � )% 2 � 6 M NO � ��mk n od / de v / + � �¢ � � �� z M £ | } V | }

� m k n o d / d e v / d u m m y _ d e v i c e c 1 2 5 0�   � ¤ ¥ � ¦ § : c h mod u g + w / de v / du mmy _ de v i c e

3 4

Page 36: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

Application Program $�$�$�$�

� R ead / w rite applic ation prog ram d ,d ,d ,d ,

� � � " du mmy c h a r a c t e r de v i c e % ¨ � H�du mmy _ de v i c e % © > D © 1 r e a d / w r i t e ?� C on s ol e � l m U V � $ % 2 � ª � du mmy _ de v i c e % 2 � 6r e a d / w r i t e 4 �� � « v ¬ �

3 5

……….�������� ……..fd = open("/dev/DUMMY_DEVICE", O_RDWR); if ( fd <= 0 ) {

printf(“Dummy Char Device File Open Fail!\n"); exit(0);

}

buf[0] = 0x12; write(fd, buf, 1); read(fd, buf, 1); printf("%x\n", buf[0]); close(fd);

……….�������� ……..fd = open("/dev/DUMMY_DEVICE", O_RDWR); if ( fd <= 0 ) {

printf(“Dummy Char Device File Open Fail!\n"); exit(0);

}

buf[0] = 0x12; write(fd, buf, 1); read(fd, buf, 1); printf("%x\n", buf[0]); close(fd);

Page 37: 국립한밭대학교 반도체설계실artoa.hanbat.ac.kr/lecture_data/embedded_sw/10.pdf · 2012-08-02 · Embedded System Software I ! " #" $%&’( )˜ * +˝, -. " /01 2 3 /0 45

Embedded System Software I

mmap()� U ser L ev el � � � � K ernel���� M em ory 6666 D ev ic e P P P P � L� L� L� L � � /� � /� � /� � / 4 m4 m4 m4 m

� [� [� [� [ � �� �� �� �

� L i n u x � § ­ V i r t u a l M e mor y % � � � ® , � � � � ¯ ° ± , K e r n e l U � M e mor y � / 0 � � 45

� ª � P h y s i c a l M e mor y % L og i c a l � ² / 0 � ³ F ´ �� K e r n e l�6 D e v i c e µ � � " ¶ � \ * K e r n e l� ¶ � \ % L og i c a l � ²V 3 � 3 K e r n e l�6 M e mor y % [ \

� 7 � M e mor y D e s c r i p t i on � Re t u r n , �% �� � 3 / 0

� m m ap, m u nm ap : 2 3 �62 3 �62 3 �62 3 �6 � Z x� Z x� Z x� Z x = � t G � %= � t G � %= � t G � %= � t G � % � ^� ^� ^� ^ � )� )� )� ) [ I[ I[ I[ I

3 6