교육지원 IT시스템 선진화

Size: px
Start display at page:

Download "교육지원 IT시스템 선진화"

Transcription

1 Module 8: System Call ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부

2 주차별목표 시스템콜인터페이스이해하기 커널에시스템콜추가하는방법알아보기 커널에시스템콜추가하기 추가한시스템콜검증하기 인자를갖는시스템콜작성하기 2

3 시스템콜인터페이스 일반적으로사용자모드의프로세스 (user mode process, 또는응용프로그램 ) 는커널영역에직접접근할수없음. 즉프로세스는커널메모리에접근하거나커널함수를호출할수없음 ( 보호모드 ) 시스템콜은사용자모드의프로세스와커널간의 interface 제공 이를통해응용프로그램이 kernel 이가지고있는시스템의상태정보를열람하거나, hardware 에접근하여 hardware 를제어하기위한커널과의통신채널로사용 3

4 시스템콜인터페이스 User Application User Level API( 시스템라이브러리 ) Kernel Level System Call Interface File System Buffer Cache Process Management (IPC-interprocess Communication, Scheduling, Memory Management Process Accounting, etc) Character Device Driver Block Device Driver Hardware Interface 4

5 시스템콜인터페이스사용해보기 시스템콜테스트프로그램작성해보기 소스코드작성 /* filename: mysyscall_test.c */ #include <syscall.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> int main(void) { long ID1, ID2; /* syscall() 함수를직접사용한시스템콜 */ ID1 = syscall(sys_getpid); printf( syscall(sys_getpid)=%ld\n, ID1); /* libc 에서포장된함수를사용한시스템콜 */ ID2 = getpid(); printf( getpid()=%ld\n, ID2); return(0); } 5

6 시스템콜인터페이스사용해보기 시스템콜테스트프로그램작성해보기 컴파일하기 (i386 용 ) root@esp:~/work/systemcall# gcc -o mysyscall_test mysyscall_test.c root@esp:~/work/systemcall#./mysyscall_test syscall(sys_getpid) = 1711 getpid() = 1711 root@esp:~/work/systemcall# 6

7 시스템콜인터페이스사용해보기 시스템콜테스트프로그램작성해보기 컴파일하기 (ARM 용 ) root@esp:~/work/systemcall# arm-linux-gcc mysyscall_test.c -o arm_mysyscall_test 실행및결과확인 7

8 POSIX API & System Call POSIX API (Application Programming Interface) 유닉스운영체계에기반을두고있는일련의표준운영체계인터페이스 Application 이시스템에각서비스를요청할때에어떠한함수를사용해야하는지지정한것 표준을두어각각다른시스템에응용프로그램을 porting 하는것을용이하게하기위한목적 open(), close(), read(), write() 등 System Call 소프트웨어인터럽트를통해커널에서비스를요청하는것 Linux 에서는 POSIX API 를준수하는 library 함수안에서 system call 함수를호출함으로써 system call 을사용함 8

9 POSIX API POSIX API 의전체구조도 9

10 POSIX API POSIX API 에서시스템콜사용의개념도 10

11 시스템콜인터페이스 시스템콜호출시내부동작개념도 11

12 커널에시스템콜추가 새로운시스템콜만들기 기존커널에서제공하지않는서비스를 user application 에제공 단계 커널수정 System Call 번호할당 System Call 호출테이블등록 System Call 호출함수구현 Kernel 컴파일및 target board 에적재 User application 제작 새로구현한 System Call 을사용하는 application 제작 library 작성 ( 반드시필요한것은아님 ) 커널이미지에포함시켜서 target board 에적재 12

13 커널에시스템콜추가 커널에시스템콜을추가하는과정 13

14 커널에시스템콜추가 시스템콜번호할당 리눅스커널이제공하는모든시스템호출은각각고유번호를가지고있으며, 그번호는 [kernel]/include/asmarm/unistd.h 에정의되어있음 새로추가할시스템콜의고유번호를할당하기위해 [kernel]/arch/arm/include/asm/unistd.h 파일열기 vi /root/download/kernel / arch/arm/include/asm/unistd.h 14

15 커널에시스템콜추가관련파일들 unistd.h 파일내용 15 /* * This file contains the system call numbers. */ #define NR_restart_syscall ( NR_SYSCALL_BASE+ 0) #define NR_exit ( NR_SYSCALL_BASE+ 1) #define NR_fork ( NR_SYSCALL_BASE+ 2) #define NR_read ( NR_SYSCALL_BASE+ 3) #define NR_write ( NR_SYSCALL_BASE+ 4) #define NR_open ( NR_SYSCALL_BASE+ 5) #define NR_close ( NR_SYSCALL_BASE+ 6) ( 중략 ) #define NR_pwritev ( NR_SYSCALL_BASE+362) #define NR_rt_tgsigqueueinfo ( NR_SYSCALL_BASE+363) #define NR_perf_event_open ( NR_SYSCALL_BASE+364) #define NR_recvmmsg ( NR_SYSCALL_BASE+365) /* added for system call example */ #define NR_mysyscall ( NR_SYSCALL_BASE+366)

16 커널에시스템콜추가관련파일들 unistd.h 파일내용 시스템콜번호는 unistd.h 파일내에 NR_ 의접두어와시스템콜명으로구성된이름으로정의되어있음 ( 예 : #define NR_exit) 타겟보드에서사용되는커널 의경우 unistd.h 파일내용을보면기존에 365 번까지정의되어있는것을확인할수있음 365 번다음번호인 366 번번호를지정하고시스템콜명은 mysyscall 로함 16

17 새로운시스템콜등록 시스템콜관리테이블에등록 시스템콜을관리하는테이블인 sys_call_table 에시스템콜서비스루틴함수를등록 시스템콜테이블은 [kernel]/arch/arm/kernel/entrycommon.s 에 sys_call_table 이라는엔트리로구현되어있음 entry-common.s 파일열기 vi /root/download/kernel / arch/arm/kernel/entry-common.s 17

18 커널에시스템콜추가관련파일들 entry-common.s 파일내용 ( 생략 ) #define CALL(x).equ NR_syscalls,NR_syscalls+1 #include "calls.s" #undef CALL #define CALL(x).long x #ifdef CONFIG_FUNCTION_TRACER #ifdef CONFIG_DYNAMIC_FTRACE ( 생략 ) 18

19 커널에시스템콜추가관련파일들 entry-common.s 파일내용 시스템콜테이블에는시스템콜처리함수의시작주소들이들어있음 각함수들은 [kernel]/arch/arm/include/asm/unistd.h 에정의되어있는시스템콜번호를인덱스로하여접근 실제적인 sys_call_table 내용관리는 entry-common.s 파일내부를보면 calls.s 라는파일에서관리하고있음을알수있음 파일 entry-common.s 를닫고, calls.s 파일열기 vi /root/download/ kernel /arch/arm/kernel/calls.s 19

20 커널에시스템콜추가관련파일들 calls.s 파일내용 /* 0 */ CALL(sys_restart_syscall) CALL(sys_exit) CALL(sys_fork_wrapper) CALL(sys_read) CALL(sys_write) /* 5 */ CALL(sys_open) CALL(sys_close) 20

21 커널에시스템콜추가관련파일들 calls.s 파일내용 시스템콜서비스루틴이름은 calls.s 파일내에시스템콜고유번호순서대로순차적으로등록됨 추가하고자하는시스템콜은 366 번이므로 /* 0 */ /* 5 */ 등으로부터마크된번호를기초로하여 365 를찾고그뒤에 366 번을추가 시스템콜서비스루틴이름은시스템콜명앞에접두어 sys_ 를붙임 여기서사용된시스템콜명은 mysyscall 이므로, 이에해당하는시스템콜서비스루틴명은 sys_mysyscall 임 21

22 새로운시스템콜등록 calls.s 파일내용 /* 360 */ CALL(sys_inotify_init1) CALL(sys_preadv) CALL(sys_pwritev) CALL(sys_rt_tgsigqueueinfo) CALL(sys_perf_event_open) /* 365 */ CALL(sys_recvmmsg) /* added for system call example */ /* 366 */ CALL(sys_mysyscall) 22

23 커널에시스템콜처리함수작성 시스템콜처리함수구현 이제사용자프로그램에서요청한시스템콜을실제로처리해주는함수를구현해야함 시스템콜을처리해주는함수들은커널최상위디렉토리밑의 kernel 디렉토리, 즉 [kernel]/kernel/ 에모아져있음 추가한시스템콜 mysyscall() 에서는간단히한문장을출력하는것으로하고, test_syscall.c 파일로저장하는것으로함 test_syscall.c 파일작성하기 vi /root/download/ kernel /kernel/test_syscall.c 23

24 커널에시스템콜처리함수작성 test_syscall.c #include <linux/linkage.h> #include <linux/errno.h> #include <linux/kernel.h> asmlinkage long sys_mysyscall(void); asmlinkage long sys_mysyscall(void) { printk("welcome to the embedded system.\n"); return -ENOSYS; } 24

25 새로운커널컴파일 커널컴파일 앞서구현한 test_syscall.c 의내용이커널에반영되도록커널을컴파일해야함 커널에서시스템콜처리루틴들에대한컴파일규칙은 [kernel]/kernel/makefile 에지정되어있음 이파일을열고오브젝트생성규칙을지정하는부분에 test_syscall.o 를추가 vi /root/download/ kernel /kernel/makefile 25

26 새로운커널컴파일 커널컴파일 Makefile 내용 # # Makefile for the linux kernel. # obj-y = sched.o fork.o exec_domain.o panic.o printk.o \ cpu.o exit.o itimer.o time.o softirq.o resource.o \ sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \ signal.o sys.o kmod.o workqueue.o pid.o \ rcupdate.o extable.o params.o posix-timers.o \ kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ hrtimer.o rwsem.o nsproxy.o srcu.o semaphore.o \ notifier.o ksysfs.o pm_qos_params.o sched_clock.o cred.o \ async.o range.o test_syscall.o obj-$(config_have_early_res) += early_res.o obj-y += groups.o 26

27 새로운커널컴파일 커널컴파일 커널소스의최상위디렉토리로이동 cd /root/download/kernel / 컴파일은크게세단계로이루어짐 첫번째, 이전커널컴파일과정에서생성된파일들을 make distclean 명령어를이용하여삭제 두번째, Achro-210T 보드에맞는커널설정을해야하는데, make achro210t_defconfig 명령어를이용 마지막단계, make 명령어를이용하여커널을컴파일 27

28 새로운커널컴파일 커널컴파일 이전커널컴파일과정에서생성된파일들삭제 make distclean CLEAN arch/arm/boot/compressed CLEAN arch/arm/boot CLEAN /root/download/kernel ( 생략 ) CLEAN include/config include/generated CLEAN.config.version include/linux/version.h Module.symvers root@esp:~/download/kernel # 28

29 새로운커널컴파일 커널컴파일 Achro-210T 보드에맞게커널컴파일되도록 make achro210t_defconfig 명령어를사용하여커널설정정보를가지고있는.config 파일을생성 make achro210t_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/basic/hash.( 생략 ) HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to.config # 29

30 새로운커널컴파일 커널컴파일 make 명령어를사용하여커널이미지 (zimage) 생성 make ( 생략 ) CC arch/arm/boot/compressed/decompress.o SHIPPED arch/arm/boot/compressed/lib1funcs.s AS arch/arm/boot/compressed/lib1funcs.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zimage Kernel: arch/arm/boot/zimage is ready Building modules, stage 2. MODPOST 3 modules ( 생략 ) LD [M] drivers/scsi/scsi_wait_scan.ko root@esp:~/download/kernel # 30

31 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 이제새로생성한시스템콜인 mysyscall 을사용하려면추가된시스템콜을담고있는커널이미지 (zimage) 를타겟보드에있는 MicroSD(µSD) 카드에써야함 호스트컴퓨터와 Achro-210T 타겟보드를직렬케이블과 USB OTG 케이블로연결 USB to Serial 케이블 호스트에서타겟보드의콘솔화면연결에사용 USB OTG 케이블 zimage 파일을전송하기위해서필요 31

32 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 호스트컴퓨터와타겟보드연결 32

33 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 minicom 설정하기 minicom -s minicom 설정메뉴 [configuration] Filenames and paths File transfer protocols Serial port setup Modem and dialing Screen and keyboard Save setup as dfl Save setup as.. Exit Exit from Minicom

34 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 Serial port setup 선택화면 A - Serial Device : /dev/ttyusb0 B - Lockfile Location : /var/lock C - Callin Program : D - Callout Program : E - Bps/Par/Bits : N1 F - Hardware Flow Control : No G - Software Flow Control : No Change which setting? 설정변경된내용을 Save setup as dfl 을선택하여저장하고 Exit 을선택하여종료 34

35 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 35 minicom 실행후타겟보드전원켜기 OK U-Boot (Oct :38:07) for AchroPV210 CPU: APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz MPLL = 667MHz, EPLL = 80MHz HclkDsys = 166MHz, PclkDsys = 83MHz HclkPsys = 133MHz, PclkPsys = 66MHz SCLKA2M = 200MHz Serial = CLKUART Board: AchroPV210 DRAM: 512 MB SD/MMC: 1886MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 3

36 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 마지막의 Hit any key to stop autoboot 다음에나오는숫자가 0 이되기전에아무키나입력 부트로더명령어대기상태로들어가기 Hit any key to stop autoboot: 0 PV210 # 36

37 새로생성한커널이미지올리기 컴파일된커널이미지를타겟보드에적재하기 커널이미지전송하기 37

38 추가한시스템콜검증 시스템콜용포장함수 syscall() 사용법 라이브러리 libc 에서제공하는시스템콜함수들의포장함수 (wrapper routine) 처럼일반프로그램에서도쉽게포장함수를선언하여사용할수있도록 linux/unistd.h 헤더파일에선언되어있는매크로인 syscall() 을사용하여처리 예전커널 2.4 에서는인자개수에따라서 _syscall0() 부터 _syscall5() 까지여섯개의매크로를이용하였지만, 커널 2.6 부터는해당매크로를사용할수없음 syscall() 의경우매크로로처리하던기존커널 2.4 버전과달리, 커널 2.6 버전부터는 syscall() 자체도시스템콜로호출 38

39 추가한시스템콜검증 시스템콜용포장함수 syscall() 사용법 unistd.h 파일 #define NR_fstat ( NR_SYSCALL_BASE+108) /* 109 was sys_uname */ /* 110 was sys_iopl */ #define NR_vhangup ( NR_SYSCALL_BASE+111) /* 112 was sys_idle */ #define NR_syscall ( NR_SYSCALL_BASE+113) /* syscall to call a syscall! */ #define NR_wait4 ( NR_SYSCALL_BASE+114) #define NR_swapoff ( NR_SYSCALL_BASE+115) 39

40 추가한시스템콜검증 시스템콜용포장함수 syscall() 사용법 여러개의매크로를통해서처리되는시스템콜을하나의시스템콜을통하여효율적으로처리하기위해 "arch/arm/kernel/calls.s" 에시스템콜로등록 calls.s 파일 /* 110 */ CALL(sys_ni_syscall) /* was sys_iopl */ CALL(sys_vhangup) CALL(sys_ni_syscall) CALL(OBSOLETE(sys_syscall)) /* call a syscall */ CALL(sys_wait4) /* 115 */ CALL(sys_swapoff) CALL(sys_sysinfo) CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc))) CALL(sys_fsync) 40

41 추가한시스템콜검증 시스템콜용포장함수 syscall() 사용법 41 해당시스템콜이호출되면 "./arch/arm/kernel/entrycommon.s" 에등록된 Special system call wrappers 를실행하여시스템콜을처리 entry-common.s 파일 #include "calls.s" #undef ABI #undef OBSOLETE /*==================================================== * Special system call wrappers r0 = syscall r8 = syscall table sys_syscall: bic scno, r0, # NR_OABI_SYSCALL_BASE ( 생략 ) ENDPROC(sys_syscall)

42 추가한시스템콜검증 응용프로그램작성하기 응용프로그램에서시스템콜을호출시키는코드 no_lib_syscall.c 를작성하여실행해보기 이파일은 /root/work 디렉토리하위에 systemcall 디렉토리를만들어이디렉토리하위에저장 no_lib_syscall.c 응용프로그램에서는시스템콜호출을포장함수용시스템콜을이용 no_lib_syscall.c 파일작성 cd ~/work/ mkdir systemcall cd systemcall/ vi no_lib_syscall.c 42

43 추가한시스템콜검증 응용프로그램작성하기 no_lib_syscall.c /* File Name : no_lib_syscall.c */ #include <linux/unistd.h> #define NR_mysyscall 366 int main(int argc, char **argv) { syscall( NR_mysyscall); return 0; } 43

44 추가한시스템콜검증 추가된시스템콜확인용응용프로그램컴파일 44

45 추가한시스템콜검증 타겟보드에서검증하기 시스템콜검증용응용프로그램이제대로동작하는지를알아보기위해작성된코드들을타겟보드에서실행시켜보기 NFS 를이용하여타겟보드로파일전송 호스트와타겟보드의 IP 주소설정하기 [ 호스트에서수행 ] root@esp:~# ifconfig eth [Achro-210T 에서수행 ] root@achro210t:~# ifconfig eth

46 추가한시스템콜검증 타겟보드에서검증하기 마운트하기 mount -t nfs -o nolock :/root /root/nfs cd ~/nfs/work/systemcall Welcome to the embedded system. 타겟보드에서시스템콜검증용프로그램실행 46

47 인자를갖는시스템콜작성 두개의정수의연산자에해당하는사칙연산을수행하여정수결과값을출력하는시스템콜함수작성하기 시스템콜추가하기 [kernel]/arch/arm/include/asm/unistd.h 파일을열어 367 번을지정 시스템콜명은 mycal cd /root/download/kernel /arch/arm/include/asm/ vi unistd.h 47

48 인자를갖는시스템콜작성 시스템콜추가하기 unistd.h 파일 #define NR_perf_event_open ( NR_SYSCALL_BASE+364) #define NR_recvmmsg ( NR_SYSCALL_BASE+365) /* added for system call example */ #define NR_mysyscall ( NR_SYSCALL_BASE+366) /* added for calculator system call example */ #define NR_mycal ( NR_SYSCALL_BASE+367) 48

49 인자를갖는시스템콜작성 시스템콜추가하기 [kernel]/arch/arm/kernel/calls.s 파일을열어아래와같이새로운함수내용을추가 cd cd download/kernel /arch/arm/kernel/ vi calls.s call.s 파일 /* 365 */ CALL(sys_recvmmsg) /* added for system call example */ /* 366 */ CALL(sys_mysyscall) /* added for calculator system call example */ /* 367 */ CALL(sys_mycal) 49

50 인자를갖는시스템콜작성 시스템콜처리함수구현 mycal_syscall.c 파일 /* File Name : mycal_syscall.c */ #include <linux/linkage.h> #include <linux/errno.h> #include <linux/kernel.h> asmlinkage long sys_mycal(int a, int b, char op); 50 asmlinkage long sys_mycal(int a, int b, char op) { switch(op) { case '+' : printk("%d + %d = %d \n", a, b, a+b); break;

51 인자를갖는시스템콜작성 시스템콜처리함수구현 mycal_syscall.c 파일 } case '-' : printk("%d - %d = %d \n", a, b, a-b); break; case 'X' : case 'x' : printk("%d x %d = %d \n", a, b, a*b); break; case '/' : printk("%d / %d = %d \n", a, b, a/b); break; } return -ENOSYS; 51

52 인자를갖는시스템콜작성 커널컴파일및타겟보드에적용하기 앞서구현한 mycal_syscall.c 의내용이커널에반영되도록커널을컴파일해야함 [kernel]/kernel/makefile 을열고오브젝트생성규칙을지정하는부분에 mycal_syscall.o 를추가 cd /root/download/kernel /kernel/ vi Makefile 52

53 인자를갖는시스템콜작성 커널컴파일및타겟보드에적용하기 53 Makefile # # Makefile for the linux kernel. # obj-y = sched.o fork.o exec_domain.o panic.o printk.o \ cpu.o exit.o itimer.o time.o softirq.o resource.o \ sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \ signal.o sys.o kmod.o workqueue.o pid.o \ rcupdate.o extable.o params.o posix-timers.o \ kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ hrtimer.o rwsem.o nsproxy.o srcu.o semaphore.o \ notifier.o ksysfs.o pm_qos_params.o sched_clock.o cred.o \ async.o range.o test_syscall.o mycal_syscall.o obj-$(config_have_early_res) += early_res.o obj-y += groups.o

54 인자를갖는시스템콜작성 커널컴파일및타겟보드에적용하기 커널컴파일 (make distclean) make distclean CLEAN arch/arm/boot/compressed CLEAN arch/arm/boot CLEAN /root/download/kernel ( 생략 ) CLEAN include/config include/generated CLEAN.config.version include/linux/version.h Module.symvers 커널컴파일 (make achro210t_defconfig) 54 root@esp:~/download/kernel # make achro210t_defconfig HOSTCC scripts/basic/fixdep ( 생략 ) HOSTLD scripts/kconfig/conf # # configuration written to.config #

55 인자를갖는시스템콜작성 커널컴파일및타겟보드에적용하기 커널컴파일 (make) make.( 생략 ) OBJCOPY arch/arm/boot/zimage Kernel: arch/arm/boot/zimage is ready Building modules, stage 2. MODPOST 3 modules CC crypto/ansi_cprng.mod.o LD [M] crypto/ansi_cprng.ko CC drivers/media/video/gspca/gspca_main.mod.o LD [M] drivers/media/video/gspca/gspca_main.ko CC drivers/scsi/scsi_wait_scan.mod.o LD [M] drivers/scsi/scsi_wait_scan.ko root@esp:~/download/kernel # 55

56 인자를갖는시스템콜작성 커널업데이트 새로생성된커널이미지 (zimage) 를타겟보드로전송하여추가한시스템콜을포함하는커널로업데이트하기 호스트컴퓨터와타겟보드연결 minicom 실행 부트로더명령어모드진입 커널이미지전송 커널업데이트 56

57 인자를갖는시스템콜작성 응용프로그램작성및검증 응용프로그램에서시스템콜을호출시키는코드 test_mycal.c 를작성하여실행해보기 이파일은이전에작업하였던 /root/work/systemcall 디렉토리하위에저장 test_mycal.c 응용프로그램에서는시스템콜호출을포장함수용시스템콜을이용 cd ~/work/systemcall/ vi test_mycal.c 57

58 인자를갖는시스템콜작성 응용프로그램작성및검증 test_mycal.c /* File Name : test_mycal.c */ #include <linux/unistd.h> #include <string.h> #include <stdio.h> #define NR_mycal 367 int main(int argc, char **argv) { int a, b; char op; 58

59 인자를갖는시스템콜작성 응용프로그램작성및검증 test_mycal.c } if(argc!= 4) { printf("usage :./test_mycal num op num \n"); return 0; } a = atoi(argv[1]); b = atoi(argv[3]); op = argv[2][0]; syscall( NR_mycal, a, b, op); return 0; 59

60 인자를갖는시스템콜작성 응용프로그램작성및검증 테스트프로그램컴파일 arm-linux-gcc o test_mycal I/usr/src/kernel / test_mycal.c 호스트컴퓨터와타겟보드의 IP 주소설정 [ 호스트에서수행 ] root@esp:~# ifconfig eth [Achro-210T 에서수행 ] root@achro210t:~# ifconfig eth

61 인자를갖는시스템콜작성 응용프로그램작성및검증 마운트하기 mount -t nfs -o nolock :/root /root/nfs 테스트프로그램실행결과 61

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information

06Àå

06Àå Chapter 5 Chapter 6 Chapter 7 chapter 6 Part 1 6.1 Part 2 Part 3 145 146 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 147 148 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 149 150 Chapter 5

More information

Microsoft PowerPoint - LN_8_Linux_INT_Module.ppt [호환 모드]

Microsoft PowerPoint - LN_8_Linux_INT_Module.ppt [호환 모드] 프로젝트 1 Interrupt, Module Programming 단국대학교컴퓨터학과 2009 백승재 ibanez1383@dankook.ac.kr k k http://embedded.dankook.ac.kr/~ibanez1383 강의목표 Linux 의인터럽트처리과정이해 시스템호출원리파악 모듈프로그래밍기법숙지 인터럽트의분류 3 인터럽트 외부인터럽트 fault

More information

Microsoft PowerPoint - Chapter_05.pptx

Microsoft PowerPoint - Chapter_05.pptx 1 Interrupt, Trap and System call May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 인터럽트의분류 2 인터럽트 외부인터럽트 fault page fault, 트랩 trap int, system call, abort devide by

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 임베디드리눅스개발환경실습 Jo, Heeseung 타겟보드모니터링동작실습 호스트 PC 에서시리얼포트를통해서타겟보드를모니터링 타겟보드가프로그램을실행하는동안일어나는일을시리얼포트로메시지를출력하면호스트 PC 에서는시리얼포트를통해메시지를수신하여이를화면에출력 minicom 프로그램사용 - minicom 이정상적으로설정이되고, 타겟보드에최소한부트로더가올라간상태라면 minicom

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 Outline n n n n n n 보드개요보드연결필수패키지, Tool-Chain 설치 Kernel, file system build Fastboot 및 Tera Term설치 Kernel, file system 이미지전송및설치 - 2 - Young-Jin Kim X-Hyper320TKU

More information

Abstract View of System Components

Abstract View of System Components Operating System 4 주차 - System Call Implementation - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr yschoi@rtcc.hanyang.ac.kr shpark@rtcc.hanyang.ac.kr Contents

More information

Mango220 Android How to compile and Transfer image to Target

Mango220 Android How to compile and Transfer image to Target Mango220 Android How to compile and Transfer image to Target http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

Microsoft PowerPoint - lab14.pptx

Microsoft PowerPoint - lab14.pptx Mobile & Embedded System Lab. Dept. of Computer Engineering Kyung Hee Univ. Keypad Device Control in Embedded Linux HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착되어있다. 2 Keypad Device Driver

More information

망고100 보드로 놀아보자-4

망고100 보드로 놀아보자-4 망고 100 보드로놀아보자 -4 Minicom,tftp,nfs 설정,vnc 설정 minicom 설정 Minicom 설정 >#yum install minicom >#ls /dev/ttyusb* ># minicom s Minicom 설정 Serial Device :/dev/ttyusb0 Baudrate:115200 Hardware Flow control: NO

More information

교육지원 IT시스템 선진화

교육지원 IT시스템 선진화 Module 16: ioctl 을활용한 LED 제어디바이스드라이버 ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 ioctl() 을활용법배우기 커널타이머와 ioctl 을활용하여 LED 제어용디바이스드라이브작성하기 2 IOCTL 을이용한드라이버제어 ioctl() 함수활용 어떤경우에는읽는용도로만쓰고,

More information

교육지원 IT시스템 선진화

교육지원 IT시스템 선진화 Module 5: Installation of Development Tools ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 툴체인 (Toolchain) 또는크로스컴파일러설치하기 타겟보드와의통신설정하기 기타시스템툴설치하기 2 툴체인 (Toolchain) 이란? 크로스컴파일러를설치해야하는이유

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

More information

Microsoft PowerPoint - 03-Development-Environment-2.ppt

Microsoft PowerPoint - 03-Development-Environment-2.ppt 개발환경 2 임베디드시스템소프트웨어 I 차례 부트로더의기능, 컴파일방법 커널의기능, 컴파일방법 파일시스템의기능, 생성방법 Host-KIT 네트워크연결방법 (Bootp, TFTP, NFS) 개발환경 2 2 부트로더의기능 하드웨어초기화 CPU clock, Memory Timing, Interrupt, UART, GPIO 등을초기화 커널로드 커널이미지를 flash

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

KEY 디바이스 드라이버

KEY 디바이스 드라이버 KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

슬라이드 제목 없음

슬라이드 제목 없음 < > Target cross compiler Target code Target Software Development Kit (SDK) T-Appl T-Appl T-VM Cross downloader Cross debugger Case 1) Serial line Case 2) LAN line LAN line T-OS Target debugger Host System

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.

More information

Chap 10 안드로이드커널 (Kernel)

Chap 10 안드로이드커널 (Kernel) Chap 10 안드로이드커널 (Kernel) 1. Kernel Operating System에서 Kernel은운영체제의핵심부분이다. Bootloader에서하드웨어초기화를담당했다면, 커널은우리가사용해야할시스템자원을관리해주는기능을해준다. 아래는기본적인커널의역할을나열해보았다. 물론, 안드로이드가적용되면서기본적인커널에추가적인기능이포함되었다. 기본적인커널의역할을나열하면아래와같다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 임베디드리눅스개발환경구축 Jo, Heeseung 개발환경 HBE-SM5-S4210 개발환경 타겟보드와리눅스가설치된호스트컴퓨터가필요 임베디드리눅스개발환경 - 호스트컴퓨터환경설치 - 호스트와타겟연결 - 디버그환경 호스트컴퓨터는임베디드시스템의동작을모니터링하는디버깅환경으로서의역할도수행 임베디드시스템을위한소프트웨어를개발하기위해서호스트시스템에구축하는개발환경 교차개발환경

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Sensor Device Jo, Heeseung Sensor 실습 HBE-SM5-S4210 에는근접 / 가속도 / 컴파스센서가장착 각센서들을사용하기위한디바이스드라이버와어플리케이션을작성 2 근접 (Proximity) 센서 HBE-SM5-S4210 Camera Module 근접센서디바이스 근접센서는사물이다른사물에접촉되기이전에가까이접근하였는지를검출할목적으로사용 일반적으로생활에서자동문이나엘리베이터,

More information

Microsoft PowerPoint - em8-리눅스설치.ppt

Microsoft PowerPoint - em8-리눅스설치.ppt 임베디드리눅스커널설치개요 임베디드리눅스설치 Linux Kernel* Root File System* jffs2.img 1 2 구성요소 리눅스커널 필수구성요소 하드웨어를초기화하고 kernel image를 에올려주어수행을넘겨주는역할을하는프로그램 OS Kernel OS 의핵심프로그램 Root File System Kernel 에서사용할 File System 임베디드리눅스에서는

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

untitled

untitled if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 임베디드리눅스개발환경구축 Jo, Heeseung 개발환경 HBE-SM5-S4210 개발환경 타겟보드와리눅스가설치된호스트컴퓨터가필요 임베디드리눅스개발환경 - 호스트컴퓨터환경설치 - 호스트와타겟연결 - 디버그환경 호스트컴퓨터는임베디드시스템의동작을모니터링하는디버깅환경으로서의역할도수행 임베디드시스템을위한소프트웨어를개발하기위해서호스트시스템에구축하는개발환경 교차개발환경

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft PowerPoint - 02-Development-Environment-1.ppt

Microsoft PowerPoint - 02-Development-Environment-1.ppt 개발환경 1 임베디드시스템소프트웨어 I 차례 개발환경 Host와 Target의연결 Host 및 target 사양 Toolchain이란, 설치방법 시험 Cross Compile Minicom 설정및사용방법 JTAG 설치및사용방법 Bootloader, kernel, file system flash 방법 개발환경 1 2 개발환경 Host 시스템 임베디드소프트웨어를개발하는시스템

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

untitled

untitled GUI Programming in Embedded Linux Embedded System Lab. II GUI 1:1 Embedded System Lab. II 2 Qt QT trolltech cross GUI QT ( ),, Mac, Linux, *nix C++ Qt X11 C++ GUI. (, ). Qt. Embedded System Lab. II 3 Qt/Embedded

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

슬라이드 1

슬라이드 1 / 임베디드시스템개요 / 임베디드운영체제 / 디바이스드라이버 01 Linux System Architecture Application Area Application System Call Interface BSD Socket Virtual File System INET(AF_INET) Kernel Area Buffer Cache Network Subsystem

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 임베디드리눅스개발환경실습 Jo, Heeseung 타겟보드모니터링동작실습 호스트 PC 에서시리얼포트를통해서타겟보드를모니터링 타겟보드가프로그램을실행하는동안일어나는일을시리얼포트로메시지를출력하면호스트 PC 에서는시리얼포트를통해메시지를수신하여이를화면에출력 minicom 프로그램사용 - minicom 이정상적으로설정이되고, 타겟보드에최소한부트로더가올라간상태라면 minicom

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

망고100 보드로 놀아보자 -10

망고100 보드로 놀아보자 -10 망고 100 보드로놀아보자 -10 Kernel build 분석 http:// http://www.mangoboard.com 커널 build 환경분석 >(Top Dir)/Makefile 첫번째라인에위치 > 커널 2.6.29 버전사용 >ARCH?=arm 의미는 ARCH 의값으로 arm 있느냐묻고, 없으면, arm 문자를대입 >.cross_compile 이있으면,.cross_compile

More information

MV6410 Linux 마이크로비젼 MV6410-LCD Linux 활용가이드 마이크로비젼 MV6410 Linux 1

MV6410 Linux 마이크로비젼 MV6410-LCD Linux 활용가이드 마이크로비젼 MV6410 Linux 1 MV6410-LCD Linux 활용가이드 1 1. 리눅스환경설정 개발을하기앞서먼저환경설정을해야한다. 그중가장중요한네트워크설정부분과 GCC 설정방법을먼저설명하겠다. 참고로당사는페도라 6 리눅스로작업했다. 위의그림처럼리눅스서버와작업할유저 PC 가네트워크상태로연결되어있어야하고, 역시타겟보드도모니터링할수있게시리얼 (UART) 이연결되어있어야한다. 환경설정구축목록은다음과같다.

More information

(SW3704) Gingerbread Source Build & Working Guide

(SW3704) Gingerbread Source Build & Working Guide (Mango-M32F4) Test Guide http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오. 메 뉴 다음 사항을 꼭 확인하세요! --------------------------------- 2p 안전을 위한 주의 사항 --------------------------------- 3p 구성품 --------------------------------- 4p 각 부분의 명칭 --------------------------------- 5p 제품의 규격

More information

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E. ASF(Atmel Software Framework) 환경을이용한프로그램개발 1. New Project Template 만들기 A. STK600 Board Template를이용한 Project 만들기 i. New Project -> Installed(C/C++) -> GCC C ASF Board Project를선택하고, 1. Name: 창에 Project Name(

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

제12장 파일 입출력

제12장 파일 입출력 제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

More information

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 WEB SERVER PORTING 1 Jo, Heeseung 웹서버포팅 HBE-SM5-S4210 를임베디드웹서버로사용할수있도록웹서버를올리는작업 임베디드서버에널리쓰이는웹서버들중 GoAhead 라는웹서버를포팅 CGI 프로그램을이용하여웹에서 HBE-SM5-S4210 의 LED, 7- Segment, TextLCD 를제어실습 2 Goahead webserver 소스를다운받거나제공된

More information

좀비프로세스 2

좀비프로세스 2 Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.

More information

PA for SWE2007

PA for SWE2007 CSE3047-41: Operating System Practice (Spring 2016) Programming Assignment #2: 1. Introduction Due: 18th April. (Mon), 11:59 PM I-Campus 과제내용을필히확인하세요. 이번과제에서는 Linux kernel 에새로운 system call 을추가하고, Tizen

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - 06-CompSys-11-System.ppt

Microsoft PowerPoint - 06-CompSys-11-System.ppt 시스템포팅개요 부트로더 리눅스커널 커널컴파일 파일시스템 순천향대학교컴퓨터학부이상정 1 시스템포팅개요 순천향대학교컴퓨터학부이상정 2 시스템포팅순서 1. 타겟보드에부트로더를올림 2. 타겟보드에맞게작성된커널소스를컴파일 3. 컴파일된커널이미지를타겟보드에올림 4. 파일시스템을구성하여올림 순천향대학교컴퓨터학부이상정 3 시스템포팅과정 시 작 Loader확인 yes no

More information

망고100 보드로 놀아보자 -13

망고100 보드로 놀아보자 -13 리눅스디바이스드라이버개요 http://cafe.naver.com/embeddedcrazyboys http://www.mangoboard.com 디바이스드라이버개요 디바이스 (Device ) 네트워크어댑터, LCD 디스플레이, PCMCIA, Audio, 터미널, 키보드, 하드디스 크, 플로피디스크, 프린터등과같은주변장치들을말함 디바이스의구동에필요한프로그램, 즉디바이스드라이버가필수적으로요구

More information

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을 리눅스 취약점대응방안권고 15. 01. 29 / KISA 취약점점검팀 15. 01. 30 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE-2015-0235 지정, 도메인네임을 IP로변환하는기능이포함된서비스 ( 메일, 웹등 ) 들은해당취약점에영향을받을수있음 취약점상세분석

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

Microsoft PowerPoint - chap-02.pptx

Microsoft PowerPoint - chap-02.pptx 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 컴퓨터프로그래밍기초 프로그램작성과정 에디터 (editer) 컴파일러 (compiler) 링커 (linker) 로더 (loader) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe 통합개발환경 (IDE) 컴퓨터프로그래밍기초 2 프로그램작성단계 편집 (edit) 에디터를이용하여원하는작업의내용을기술하여소스코드작성

More information

고급 프로그래밍 설계

고급 프로그래밍 설계 UNIT 13 라즈베리파이블루투스 광운대학교로봇 SW 교육원 최상훈 Bluetooth Module 2 Bluetooth Slave UART Board UART 인터페이스용블루투스모듈 slave/device mode 라즈베리파이 GPIO 3 < 라즈베리파이 B+ 의 P1 헤더핀 GPIO 배치도 > wiringpi 라이브러리 4 라즈베리파이 GPIO 라이브러리

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information