Size: px
Start display at page:

Download ""

Transcription

1 The Linux Serial Programming HOWTO 리눅스시리얼프로그래밍하우투 Peter H. Baumann, v1.0, 22 January 1998 전성민, 2000 년 2 월 24 일 이문서는리눅스시스템에서시리얼통신을어떻게프로그래밍하는가를설명하는하우투문서이다. 1. 소개 1.1 저작권 1.2 이문서의최신버전 1.3 Feedback 2. 시작하기 2.1 디버깅 2.2 포트세팅 2.3 시리얼장치의입력방법 3. 프로그램예제 3.1 Canonical 입력처리 (Canonical Input Processing) 3.2 Non-Canonical 입력처리 (Non-Canonical Input Processing) 3.3 비동기입력 3.4 입력장치멀티플렉싱 4. 다른유용한정보 5. 기여한사람들

2 1. 소개 이문서는리눅스시스템에서시리얼통신을어떻게프로그래밍하는가를설명하는하우투문서이다. 다양한시리얼통신프로그램기법들 (Canonical I/O, 비동기 I/O, I/O 멀티플렉싱 ) 을설명한다. 시리얼포트를셋업하는방법에대해서는 Greg Hankins 의 Serial-HOWTO 문서를읽어보기바란다. 나는이분야의전문가가아님을먼저밝혀둔다. 그러나프로젝트를하면서많은문제들에부딪혔다. 이문서에소개된코드예제들은 LDP(Linux Document Project) 프로그래머가이드 ( ftp://sunsite.unc.edu/pub/linux/docs/ldp/programmers-guide/lpg-0.4.tar.gz 및미러사이트들 ) 에서구할수있는 miniterm code 에근거하여만들었다 년 6 월에이문서를작성한뒤에나는고객의요구에의해 Win NT 환경으로옮기게되어서더이상깊은지식을얻을수없었다. 누구든지커맨트가있으면이문서를관리하는데에기꺼이활용하겠다.(Feedback 부분을볼것 ) 또한이문서의유지및관리를맡고싶거나 version UP 을원한다면 을주기바란다. 이문서의모든예제는 i386 Linux Kernel 에서테스트를하였다. 1.1 저작권 The Linux Serial-Programming-HOWTO is copyright (C) 1997 by Peter Baumann. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice si retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to thes rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs. If you have questions, please contact Tim Bynum, the Linux HOWTO coordinator, at linux-howto@sunsite.unc.edu via 이문서의최신버전 이문서의최신버전은 ftp://sunsite.unc.edu/pub/linux/docs/howto/serial- Programming-HOWTO 와미러사이트에서찾을수있다. PostScript 및 DVI 버전도다른포맷들을갖고있는디렉토리에있다. Programming-HOWTO.html 에서도구할수있으며, comp.os.linux.answers 에매달포스

3 팅될것이다. 1.3 Feedback 오류, 질문, 커맨트, 건의사항이나그외추가할사항이있다면알려주기바란다. 이 HOWTO 를계속적으로업데이트하기를원한다. 당신이정확히이해하지못하는부분이있거나더명확해야할부분이있다면알려줘라. 내 주소는 이다. 이문서에관한 을보낼때는문서의버전도같이알려줘라. 이문서버전은 1.0 이다.

4 2. 시작하기 2.1 디버깅 코드를디버깅하는가장좋은방법은또하나의리눅스박스를셋업하고두리눅스박스를 null-modem 케이블로연결하는것이다. Miniterm 프로그램을이용하여문자들을전송해보라. Miniterm 은컴파일하기도쉽고, 키보드에서입력되는문자들 ( 특수문자포함 ) 을시리얼포트로전송할수있다. 컴파일할때체크해야할것은 #define MODEMDEVICE "/dev/ttys0" 문장이제대로설정되어있는가하는것이다. COM1 으로맞추려면 /dev/ttys0, COM2 로하려면 /dev/ttys1 으로수정한다. 테스팅을할때가장중요한것은문자가시리얼포트로출력될때데이터가출력데이터처리 (output processing) 을하지않고그대로 (raw) 전송이되는가를확인하는것이다. 테스트과정은다음과같다. 두대의리눅스박스에서각각 miniterm 프로그램을실행시키고키보드를쳐본다. 한곳에서타이핑한문자가다른곳에서그대로나타나는지확인한다. Null-modem 케이블의 TxD 와 RxD 가서로 cross 연결이되어야한다. 잘모르겠으면 Serial-HOWTO 문서의 7 장을본다. 위의테스트는한대의컴퓨터만갖고도가능하다. 사용할수있는시리얼포트가두개있다면케이블을각각의시리얼포트에연결하고 miniterm 을두개실행하여테스트하면된다. 2.2 포트세팅 장치파일인 /dev/ttys* 는리눅스에서터미널을연결하기위한목적으로사용된다. 이사실은시리얼통신프로그래밍을하는데반드시기억해야할사항이다. 예를들어, 시리얼포트도문자에코를하도록설정되어있다. 이설정은보통데이터전송시에바꿔야할사항이다. ( 역자주 : 시리얼장치파일도터미널장치로분류되기때문에초기설정은일반터미널에서사용되는에코가되도록설정되어있는것이다.) 모든파라미터들은프로그램코드에서쉽게설정할수있다. 파라미터들은 <asm/termbits.h> 에정의되어있는 struct termios 구조체에저장되어있다. #define NCCS 19 struct termios { tcflag_t c_iflag; /* input mode flags tcflag_t c_oflag; /* output mode flags tcflag_t c_cflag; /* control mode flags tcflag_t c_lflag; /* local mode flags cc_t c_line; /* line discipline cc_t c_cc[nccs]; /* control characters ; 이파일은모든 flag 들을정의하고있다. c_iflag( 입력모드 flag) 는모든입력처리 (input processing) 를정의한다. 입력처리란 read() 함수에의해시리얼포트로들어온데이터를 read 에의해읽기전에데이터들을 c_iflag 에정의한대로처리하는것을의마한다. c_oflag

5 ( 출력모드 flag) 는출력처리 (output processing) 하는방법을정의한다. c_cflag( 제어모드 flag) 는 baudrate, data bits, stop bits 등의포트세팅을정의한다. c_lflag(local 모드 flag) 는 echo 를할것인지등을결정한다. 마지막으로 c_cc( 제어문자 ) 배열은 EOF(End of File), STOP 등의제어동작들을어떤문자로정의할것인가를설정한다. 제어문자의디폴트문자는 <asm/termios.h> 에정의되어있다. 위 flag 들에관한설명은 termios(3) man page 에나와있다. termios 구조체의 c_line 항목은 POSIX 호환시스템에서사용되지않는다. 2.3 시리얼장치의입력방법 이섹션에서는세가지의입력방법을기술하기로한다. 응용분야에따라서알맞은방법을사용해야한다. 한문자씩읽는루프를돌려서전체문자열을받는방법은가능하다면피해야한다. 내가이런방법으로했을때, 문자를잃어버리는경우가생긴반면, 전체문자열을한번에읽을때는에러가발생하지않았다. Canonical 입력처리 (Canonical Input Processing) Canonical 입력처리는터미널의기본처리방법이다. 이방법은한줄단위로처리하는다른프로그램과통신하는데에사용할수있다. 한줄은디폴트로 NL(New Line, ASCII 는 LF) 문자, EOF(End of File) 문자, 혹은 EOL(End of Line) 에의해종료되는문자열을의미한다. CR(Carriage Return, DOS/Windows 의디폴트 EOL 문자임 ) 문자는디폴트세팅에서한줄의종료문자로인식되지않는다. 또한 Canonical 입력처리모드에서는 ERASE, DELETE WORD, REPRINT CHARACTERS 문자들을처리할수있고, CR 문자를 NL 문자로변환처리를할수있다. Non-Canonical 입력처리 (Non-Canonical Input Processing) Non-Canonical 입력처리모드에서는한번읽을때마다정해진크기의문자만을읽어낼수있다. 또한타이머를두어서일정시간까지 read() 가리턴하지않는경우강제리턴을할수있다. 이모드는항상정해진크기의문자들만을읽어내거나대량의문자들을전송하고자할때사용한다. 비동기입력 위에서설명한두가지모드는동기방식이나비동기방식으로사용될수있다. 동기방식은 read 의조건이만족될때까지 block 되는방식으로서디폴트로설정되어있다. 비동기방식에서는 read() 함수가바로리턴되며, 호출한프로그램에게 signal 을보낸다. 이 signal 은 signal handler( 시그널처리함수 ) 로보내진다. 입력장치멀티플렉싱 위에서설명한입력모드에해당하진않지만여러개의장치들을다루고자할때유용하다. 예를들어내응용프로그램에서 TCP/IP 소켓과시리얼통신에서동시에입력을받아야했다. 아래 3.4 의예제는두개의서로다른장치로부터동시에입력을기다리는코드이다. 둘중한개의장치에서입력이들어오면처리를하고또다시새로운입력이올때까지기다린다. 아래 3.4 의예제는복잡해보일수있지만, 리눅스가 multi-processing OS 임을알고있기에매우중요하다. select() 시스템호출함수는입력을기다리는동안 CPU 에부하를주지않는다. 반면입력이들어왔는지루프를돌면서체크하는 polling 방식은시스템에부하를주게되어다른프로세스의수행속도를저하시키게된다.

6

7 3. 프로그램예제 여기의모든예제는 miniterm.c 에서따왔다. Canonical 입력처리에서처리할수있는최대길이의문자는 255 개 (<linux/limits.h> 혹은 <posix1_lim.h> 에정의됨 ) 로서버퍼의최대길이는 255 로제한된다. 여러입력처리모드의사용법에대한설명을원하면코드내의 comment 를참조하라. 코드가이해하기쉽기를바란다. Canonical 입력처리모드의예제는 comment 를가장잘해놓았다. 다른예제는 canonical 모드예제와다른부분에만 comment 를달았다. 설명이완벽하진않지만, 이예제로직접테스트를해보면당신의프로그램에적용할때최적의방법을찾을수있을것이다. 시리얼포트장치파일의선택을제대로했는가를다시한번확인하고, 파일접근허가는제대로되어있는지보기를바란다. ( 예 : chmod a+rw /dev/ttys1) 3.1 Canonical 입력처리 (Canonical Input Processing) #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> /* Baudrate 설정은 <asm/termbits.h> 에정의되어있다. /* <asm/termbits.h> 는 <termios.h> 에서 include 된다. #define BAUDRATE B38400 /* 여기의포트장치파일을바꾼다. COM1="/dev/ttyS1, COM2="/dev/ttyS2 #define MODEMDEVICE "/dev/ttys1" #define _POSIX_SOURCE 1 /* POSIX 호환소스 #define FALSE 0 #define TRUE 1 volatile int STOP=FALSE; main() { int fd,c, res; struct termios oldtio,newtio; char buf[255]; /* 읽기 / 쓰기모드로모뎀장치를연다.(O_RDWR) 데이터전송시에 <CTRL>-C 문자가오면프로그램이종료되지않도록하기위해 controlling tty 가안되도록한다.(O_NOCTTY) fd = open(modemdevice, O_RDWR O_NOCTTY ); if (fd <0) {perror(modemdevice); exit(-1); tcgetattr(fd,&oldtio); /* save current serial port settings bzero(&newtio, sizeof(newtio)); /* clear struct for new port settings /* BAUDRATE: 전송속도. cfsetispeed() 및 cfsetospeed() 함수로도세팅가능 CRTSCTS : 하드웨어흐름제어. ( 시리얼케이블이모든핀에연결되어있는

8 경우만사용하도록한다. Serial-HOWTO의 7장을참조할것.) CS8 : 8N1 (8bit, no parity, 1 stopbit) CLOCAL : Local connection. 모뎀제어를하지않는다. CREAD : 문자수신을가능하게한다. newtio.c_cflag = BAUDRATE CRTSCTS CS8 CLOCAL CREAD; /* IGNPAR : Parity 에러가있는문자바이트를무시한다. ICRNL : CR 문자를 NL 문자로변환처리한다. ( 이설정을안하면다른컴퓨터는 CR 문자를한줄의종료문자로인식하지않을수있다.) otherwise make device raw (no other input processing) newtio.c_iflag = IGNPAR ICRNL; /* Raw output. newtio.c_oflag = 0; ICANON : canonical 입력을가능하게한다. disable all echo functionality, and don't send signals to calling program newtio.c_lflag = ICANON; /* 모든제어문자들을초기화한다. 디폴트값은 <termios.h> 헤어파일에서찾을수있다. 여기 comment에도 추가로달아놓았다. newtio.c_cc[vintr] = 0; /* Ctrl-c newtio.c_cc[vquit] = 0; /* Ctrl- newtio.c_cc[verase] = 0; /* del newtio.c_cc[vkill] = 0; newtio.c_cc[veof] = 4; /* Ctrl-d newtio.c_cc[vtime] = 0; /* inter-character timer unused newtio.c_cc[vmin] = 1; /* blocking read until 1 character arrives newtio.c_cc[vswtc] = 0; /* ' 0' newtio.c_cc[vstart] = 0; /* Ctrl-q newtio.c_cc[vstop] = 0; /* Ctrl-s newtio.c_cc[vsusp] = 0; /* Ctrl-z newtio.c_cc[veol] = 0; /* ' 0' newtio.c_cc[vreprint] = 0; /* Ctrl-r newtio.c_cc[vdiscard] = 0; /* Ctrl-u newtio.c_cc[vwerase] = 0; /* Ctrl-w newtio.c_cc[vlnext] = 0; /* Ctrl-v newtio.c_cc[veol2] = 0; /* ' 0' /* 이제 modem 라인을초기화하고포트세팅을마친다. tcflush(fd, TCIFLUSH); tcsetattr(fd,tcsanow,&newtio); /* 터미널세팅이끝났고, 이제는입력을처리한다. 이예제에서는한줄의맨첫문자를 'z' 로했을때프로그램을종료한다. while (STOP==FALSE) { /* 종료조건 (STOP==TRUE) 가될때까지루프 /* read() 는라인종료문자가나올때까지 255 문자를넘어가더라도 block 된다. read 하고자하는문자개수가입력가능한문자개수보다

9 적은경우에는또한번의 read 를하여나머지를읽어낼수있다. res 는 read 에의해서실제로읽혀진문자의개수를갖게된다. res = read(fd,buf,255); buf[res]=0; /* set end of string, so we can printf printf(":%s:%d n", buf, res); if (buf[0]=='z') STOP=TRUE; /* restore the old port settings tcsetattr(fd,tcsanow,&oldtio); 3.2 Non-Canonical 입력처리 (Non-Canonical Input Processing) Non-Canonical 입력처리모드에서는입력이한줄단위로처리되지않는다. erase, kill, delete 등의입력처리도수행되지않는다. 이모드에서설정하는파라미터는 c_cc[vtime] 과 c_cc[vmin] 두가지이다. c_cc[vtime] 은타이머의시간을설정하고, c_cc[vmin] 은 read 할때리턴되기위한최소의문자개수를지정한다. MIN > 0, TIME = 0 MIN 은 read 가리턴되기위한최소한의문자개수. TIME 이 0 이면타이머는사용되지않는다.( 무한대로기다린다.) MIN = 0, TIME > 0 TIME 은 time-out 값으로사용된다. Time-out 값은 TIME * 0.1 초이다. Time-out 이일어나기전에한문자라도들어오면 read 는리턴된다. MIN > 0, TIME > 0 TIME 은 time-out 이아닌 inter-character 타이머로동작한다. 최소 MIN 개의문자가들어오거나두문자사이의시간이 TIME 값을넘으면리턴된다. 문자가처음들어올때타이머는동작을시작하고이후문자가들어올때마다재시작된다. MIN = 0, TIME = 0 read 는즉시리턴된다. 현재읽을수있는문자의개수나요청한문자개수가반환된다. Antonino 씨에의하면 read 하기전에 fcntl(fd, F_SETFL, FNDELAY); 를호출하면똑같은결과를얻을수있다. newtio.c_cc[vtime] 과 newtio.c_cc[vmin] 을수정하여위네가지방식을테스트할수있다. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> #define BAUDRATE B38400 #define MODEMDEVICE "/dev/ttys1" #define _POSIX_SOURCE 1 /* POSIX compliant source #define FALSE 0 #define TRUE 1

10 volatile int STOP=FALSE; main() { int fd,c, res; struct termios oldtio,newtio; char buf[255]; fd = open(modemdevice, O_RDWR O_NOCTTY ); if (fd <0) {perror(modemdevice); exit(-1); tcgetattr(fd,&oldtio); /* 현재설정을 oldtio 에저장 bzero(&newtio, sizeof(newtio)); newtio.c_cflag = BAUDRATE CRTSCTS CS8 CLOCAL CREAD; newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; /* set input mode (non-canonical, no echo,...) newtio.c_lflag = 0; newtio.c_cc[vtime] = 0; /* 문자사이의 timer를 disable newtio.c_cc[vmin] = 5; /* 최소 5 문자받을때까진 blocking tcflush(fd, TCIFLUSH); tcsetattr(fd,tcsanow,&newtio); while (STOP==FALSE) { /* loop for input res = read(fd,buf,255); /* 최소 5 문자를받으면리턴 buf[res]=0; /* ' 0' 종료문자열 (printf 를하기위해 ) printf(":%s:%d n", buf, res); if (buf[0]=='z') STOP=TRUE; tcsetattr(fd,tcsanow,&oldtio); 3.3 비동기입력 #include <termios.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/signal.h> #include <sys/types.h> #define BAUDRATE B38400 #define MODEMDEVICE "/dev/ttys1" #define _POSIX_SOURCE 1 /* POSIX compliant source #define FALSE 0 #define TRUE 1 volatile int STOP=FALSE; void signal_handler_io (int status); /* signal handler 함수정의 int wait_flag=true; /* signal을받지않은동안은 TRUE main() { int fd,c, res; struct termios oldtio,newtio;

11 struct sigaction saio; /* signal action 의정의 char buf[255]; /* Non-blocking 모드로시리얼장치를연다 (read 함수호출후즉각리턴 ) fd = open(modemdevice, O_RDWR O_NOCTTY O_NONBLOCK); if (fd <0) {perror(modemdevice); exit(-1); /* install the signal handler before making the device asynchronous /* 장치를비동기모드로만들기전에 signal handler saio.sa_handler = signal_handler_io; saio.sa_mask = 0; saio.sa_flags = 0; saio.sa_restorer = NULL; sigaction(sigio,&saio,null); /* SIGIO signal 을받을수있도록한다. fcntl(fd, F_SETOWN, getpid()); /* file descriptor 를비동기로만든다. (manual page 를보면 O_APPEND 와 O_NONBLOCK 만이 F_SETFL 에사용할수있다고되어있다.) fcntl(fd, F_SETFL, FASYNC); tcgetattr(fd,&oldtio); /* save current port settings /* canonical 입력처리를위한포트세팅 newtio.c_cflag = BAUDRATE CRTSCTS CS8 CLOCAL CREAD; newtio.c_iflag = IGNPAR ICRNL; newtio.c_oflag = 0; newtio.c_lflag = ICANON; newtio.c_cc[vmin]=1; newtio.c_cc[vtime]=0; tcflush(fd, TCIFLUSH); tcsetattr(fd,tcsanow,&newtio); /* loop while waiting for input. normally we would do something useful here while (STOP==FALSE) { printf(". n");usleep(100000); /* after receiving SIGIO, wait_flag = FALSE, input is available and can be read if (wait_flag==false) { res = read(fd,buf,255); buf[res]=0; printf(":%s:%d n", buf, res); if (res==1) STOP=TRUE; /* stop loop if only a CR was input wait_flag = TRUE; /* wait for new input /* restore old port settings tcsetattr(fd,tcsanow,&oldtio); /*************************************************************************** * signal handler. sets wait_flag to FALSE, to indicate above loop that * * characters have been received. * ************************************************************************** void signal_handler_io (int status) { printf("received SIGIO signal. n"); wait_flag = FALSE;

12 3.4 입력장치멀티플렉싱 이섹션은간략한설명만을하겠다. 어떻게하는지에대한간단한힌트만을주기위한것이므로짧은예제코드만을담았다. 이방법은시리얼포트에만적용되는것이아니라 file descriptor 를사용하는모든입출력에사용할수있다. select() 시스템호출함수와해당하는매크로함수들은 fd_set 을사용한다. fd_set 는 bit array 로서 file descriptor 의 bit entry 로작용한다. select() 는해당하는 file descriptor 의 bit 들을세팅한 fd_set 을입력파라미터로받아서입력, 출력혹은예외발생이일어난경우리턴한다. fd_set 은 FD_ 로시작하는매크로함수들을통해서관리한다. select(2) 의 man page 를참조하라. #include <sys/time.h> #include <sys/types.h> #include <unistd.h> main() { int fd1, fd2; /* input sources 1 and 2 fd_set readfs; /* file descriptor set int maxfd; /* maximum file desciptor used int loop=1; /* loop while TRUE /* open_input_source opens a device, sets the port correctly, and returns a file descriptor fd1 = open_input_source("/dev/ttys1"); /* COM2 if (fd1<0) exit(0); fd2 = open_input_source("/dev/ttys2"); /* COM3 if (fd2<0) exit(0); maxfd = MAX (fd1, fd2)+1; /* maximum bit entry (fd) to test /* loop for input while (loop) { FD_SET(fd1, &readfs); /* set testing for source 1 FD_SET(fd2, &readfs); /* set testing for source 2 /* block until input becomes available select(maxfd, &readfs, NULL, NULL, NULL); if (FD_ISSET(fd1, &readfs)) /* input from source 1 available handle_input_from_source1(); if (FD_ISSET(fd2, &readfs)) /* input from source 2 available handle_input_from_source2(); 위의예제코드는입력이들어올때까지계속 block 되는동작을보여준다. Time-out 이필요하다면, 다음과같이바꾼다. int res; struct timeval Timeout; /* set timeout value within input loop Timeout.tv_usec = 0; /* milliseconds Timeout.tv_sec = 1; /* seconds res = select(maxfd, &readfs, NULL, NULL, &Timeout); if (res==0) /* number of file descriptors with input = 0, timeout occurred.

13 이예제는 1 초후에 time-out 이되는것을보여준다. Time-out 이일어나면 select() 는 0 을반환한다. 여기서주의할점은, 설정한 Timeout 값은 select() 에의해서감소하기때문에다시 select() 를호출한다면 Timeout.tv_usec 과 Timeout.tv_sec 값을다시설정해야한다. Timeout 값이 0 이되면 time-out 이발생하고 select() 는즉시리턴된다.

14 4. 다른유용한정보 Serial-HOWTO 문서는시리얼포트를어떻게셋업하는지를설명하고하드웨어정보를제공한다. Michael Sweet 의 Serial Programming Guide for POSIX Compliant Operating Systems. 이링크는옛날것이고최신위치를찾을수가없다. 이거찾아줄분누구없수? 이문서는매우잘정리된것이다. ( 역자주 : 다시이위치가부활했다. 예전에잠시폐쇄된적이있었다.) termios(3) man page 는 termios 구조체의모든 flag 에대해정의되어있다.

15 5. 기여한사람들 1 장의소개부분에서언급했듯이, 나는이분야의전문가가아니다. 그러나여러문제에부딪혔었고, 다른이들의도움을받아서문제들을해결했다. Strudthoff 씨, Michael Carter (mcarter@rocke.electro.swri.edu) 씨및 Peter Walternberg(p.waltenberg@karaka.chch.cri.nz) 씨의도움에감사한다. Antonino Ianella(antonino@usa.net) 씨는내가이문서를작성할때 Serial-Port- Programming Mini HOWTO 를썼다. Greg Hankins 씨는 Antonino 의 Mini-HOWTO 를이문서에넣으라고권했다. 이문서의구조와 SGML 포맷은 Greg Hankins 씨의 Serial-HOWTO 에서따왔다. 이글에서오류를수정할수있도록도와주신많은분들이있다. Dave Pfaltzgraff (Dave_Pfaltzgraff@patapsco.com), Sean Lincolne(slincol@tpgi.com.au), Michael Wiedmann (mw@miwie.in-berlin.de), Adrey Bonar(andy@tipas.lt) 씨에게감사한다.

Microsoft Word doc

Microsoft Word doc 1. Serial 프로그램예제 1.1. 개요 타겟보드자체에메인콘솔용으로사용되는통신포트이외에두개의다른포트를지원하고있다. 일반적으로메인콘솔용으로사용되는포트는통신용으로부적합하다. 왜냐하면커널에서발생되는메세지가메인콘솔로출력되기때문에통신에방해를받을수있기때문이다. 이런이유로타겟보드에는통신시험이나응용통신에이용할수있도록 MCU 의통신포트에 MAX2421 레벨변환기를추가하였다.

More information

<BDBAB8B6C6AE2D C5EBBDC52E >

<BDBAB8B6C6AE2D C5EBBDC52E > 시리얼제어 Linux Serial Port 2013년도과정 2013.09.11. 차례 통신방식 Linux Serial 통신 Serial Port 설정용구조체 Serial 통신프로그래밍기법 샘플프로그램작성 2 통신방식 Parallel 한번에 8bit 씩데이터를송수신 전송속도가빠르나케이블이굵음 주로프린터와의접속에이용 구현하기힘들고고가 거리에제한적임 Serial

More information

슬라이드 1

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

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

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

API 매뉴얼

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

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

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

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

Chapter_06

Chapter_06 프로그래밍 1 1 Chapter 6. Functions and Program Structure April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 문자의입력방법을이해한다. 중첩된 if문을이해한다. while 반복문의사용법을익힌다. do 반복문의사용법을익힌다.

More information

The OSI Model

The OSI Model Advanced Socket Programming Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 다중처리기술 2 다중처리기술 Multitasking Multi-process Multi-thread Multiplexing Polling Selecting Interrupt

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

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

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

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

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

/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

제1장 Unix란 무엇인가?

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

More information

임베디드시스템설계강의자료 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

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

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - 09-Pipe 9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include

More information

제1장 Unix란 무엇인가?

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

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

PowerPoint 프레젠테이션

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

More information

Microsoft PowerPoint APUE(File InO).pptx

Microsoft PowerPoint APUE(File InO).pptx Linux/UNIX Programming 문양세강원대학교 IT대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous

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

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

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

Chap04(Signals and Sessions).PDF

Chap04(Signals and Sessions).PDF Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

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

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

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

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 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

슬라이드 1

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

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

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

<32B1B3BDC32E687770>

<32B1B3BDC32E687770> 008년도 상반기 제회 한 국 어 능 력 시 험 The th Test of Proficiency in Korean 일반 한국어(S-TOPIK 중급(Intermediate A 교시 이해 ( 듣기, 읽기 수험번호(Registration No. 이 름 (Name 한국어(Korean 영 어(English 유 의 사 항 Information. 시험 시작 지시가 있을

More information

Microsoft PowerPoint APUE(File InO).ppt

Microsoft PowerPoint APUE(File InO).ppt 컴퓨터특강 () [Ch. 3] 2006 년봄학기 문양세강원대학교컴퓨터과학과 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 1 What is a File? A file is a contiguous

More information

untitled

untitled 1... 2 System... 3... 3.1... 3.2... 3.3... 4... 4.1... 5... 5.1... 5.2... 5.2.1... 5.3... 5.3.1 Modbus-TCP... 5.3.2 Modbus-RTU... 5.3.3 LS485... 5.4... 5.5... 5.5.1... 5.5.2... 5.6... 5.6.1... 5.6.2...

More information

hd1300_k_v1r2_Final_.PDF

hd1300_k_v1r2_Final_.PDF Starter's Kit for HelloDevice 1300 Version 11 1 2 1 2 3 31 32 33 34 35 36 4 41 42 43 5 51 52 6 61 62 Appendix A (cross-over) IP 3 Starter's Kit for HelloDevice 1300 1 HelloDevice 1300 Starter's Kit HelloDevice

More information

Microsoft PowerPoint APUE(File InO)

Microsoft PowerPoint APUE(File InO) Linux/UNIX Programming 문양세강원대학교 IT특성화대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

More information

제12장 파일 입출력

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

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

(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

좀비프로세스 2

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

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

BMP 파일 처리

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

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

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 9 장. 파이프 Unix 프로그래밍및실습 1 강의내용 1 절개요 2 절이름없는파이프 3 절이름있는파이프 http://lily.mmu.ac.kr/lecture/13u2/ch09.pdf 책에나온내용반드시 man 으로확인할것! UNIX, LINUX 등시스템마다차이가있을수있음을반드시인식 2 기본실습 #1 [ 예제 9-1] ~ [ 예제 9-7] ( 각 10점 ) 과제개요

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

슬라이드 1

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

More information

Microsoft PowerPoint - chap9 [호환 모드]

Microsoft PowerPoint - chap9 [호환 모드] 제 9 장프로세스관계 숙대창병모 1 Contents 1. Logins 2. Process Groups 3. Sessions 4. Controlling Terminal 5. Job Control 숙대창병모 2 로그인 숙대창병모 3 터미널로그인 /etc/ttys: 1 line per terminal device getty: opens terminal device

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

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

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

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 6 th Lecture 유명환 ( yoo@netplug.co.kr) 1 2 통신 관련이야기 시리얼통신 관련이야기 INDEX 3 ATmega128 시리얼통신회로도분석 4 ATmega128 시리얼통신컨트롤러 (USART) 분석 5 ATmega128 시리얼통신관련레지스터분석 6 ATmega128 시리얼통신실습 1 통신 관련이야기 동기

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

untitled

untitled CAN BUS RS232 Line Ethernet CAN H/W FIFO RS232 FIFO IP ARP CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter ICMP TCP UDP PROTOCOL Converter TELNET DHCP C2E SW1 CAN RS232 RJ45 Power

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

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 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

MR-3000A-MAN.hwp

MR-3000A-MAN.hwp ITS Field Emulator for Traffic Local Controller [ MR-3000A ] User's Manual MORU Industrial Systems. www.moru.com - 1 - 1. 개요 MR-3000A는교통관제시스템에있어서현장용교통신호제어기의개발, 신호제어알고리즘의개발및검증, 교통신호제어기생산 LINE에서의자체검사수단등으로활용될수있도록개발된물리적모의시험장치이다.

More information

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_ Sena Technologies 백서 : Latency/Throughput Test September 11, 2008 Copyright Sena Technologies, Inc 2008 All rights strictly reserved. No part of this document may not be reproduced or distributed without

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

휠세미나3 ver0.4

휠세미나3 ver0.4 andromeda@sparcs:/$ ls -al dev/sda* brw-rw---- 1 root disk 8, 0 2014-06-09 18:43 dev/sda brw-rw---- 1 root disk 8, 1 2014-06-09 18:43 dev/sda1 brw-rw---- 1 root disk 8, 2 2014-06-09 18:43 dev/sda2 andromeda@sparcs:/$

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

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

More information

Microsoft Word - LKP-RTD 사용자 설명서

Microsoft Word - LKP-RTD 사용자 설명서 LKP-RTD 보드 사용자설명서 Version Information H/W Version : Version 1.0 소속 : ( 주 ) 엘케이일레븐연구소주소 : 성남시중원구상대원동 190-1 SKn테크노파크메가센터 1306호전화 : 031-776-4120 / FAX : 031-766-4119 목차 1. 개요... 5 2. 사양... 6 3. 블록도... 7 4.

More information

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서 PowerChute Personal Edition v3.1.0 990-3772D-019 4/2019 Schneider Electric IT Corporation Schneider Electric IT Corporation.. Schneider Electric IT Corporation,,,.,. Schneider Electric IT Corporation..

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 6 장 중급소켓프로그래밍 (2) 목차 제 6 장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수신자처리 2 시그널 (Signal) 시그널이란? 예상치않은이벤트발생에따른일종의소프트웨어인터럽트 Ex) ctrl + c, ctrl + z, 자식프로세스의종료 외부에서프로세스에게전달할수있는유일한통로

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

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 Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0 for loop array {commands} 예제 1.1 (For 반복변수의이용 ) >> data=[3 9 45 6; 7 16-1 5] data = 3 9 45 6 7 16-1 5 >> for n=data x=n(1)-n(2) -4-7 46 1 >> for n=1:10 x(n)=sin(n*pi/10); n=10; >> x Columns 1 through 7

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

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

PA for SWE2007

PA for SWE2007 Programming Assignment #0: Making own "my_string.h" SWE2007: Software Experiment II (Fall 2016) Due: 21st Sep. (Wed), 11:59 PM 1. Introduction 이번과제에선, 앞으로있을다른과제들을수행하기위한필요할함수들을구현한다. 그대상은, 문자열조작 / 검사 / 변환함수들을담은

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

OCW_C언어 기초

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

More information

목차 1. 개요... 3 2. USB 드라이버 설치 (FTDI DRIVER)... 4 2-1. FTDI DRIVER 실행파일... 4 2-2. USB 드라이버 확인방법... 5 3. DEVICE-PROGRAMMER 설치... 7 3-1. DEVICE-PROGRAMMER

목차 1. 개요... 3 2. USB 드라이버 설치 (FTDI DRIVER)... 4 2-1. FTDI DRIVER 실행파일... 4 2-2. USB 드라이버 확인방법... 5 3. DEVICE-PROGRAMMER 설치... 7 3-1. DEVICE-PROGRAMMER < Tool s Guide > 목차 1. 개요... 3 2. USB 드라이버 설치 (FTDI DRIVER)... 4 2-1. FTDI DRIVER 실행파일... 4 2-2. USB 드라이버 확인방법... 5 3. DEVICE-PROGRAMMER 설치... 7 3-1. DEVICE-PROGRAMMER 실행파일... 7 4. DEVICE-PROGRAMMER 사용하기...

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

LCD Display

LCD Display LCD Display SyncMaster 460DRn, 460DR VCR DVD DTV HDMI DVI to HDMI LAN USB (MDC: Multiple Display Control) PC. PC RS-232C. PC (Serial port) (Serial port) RS-232C.. > > Multiple Display

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation 1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation Board(EVB B/D) 들과 TCP/IP Protocol로연결되며, 연결된 TCP/IP

More information

Microsoft Word - ASG AT90CAN128 모듈.doc

Microsoft Word - ASG AT90CAN128 모듈.doc ASG AT90128 Project 3 rd Team Author Cho Chang yeon Date 2006-07-31 Contents 1 Introduction... 3 2 Schematic Revision... 4 3 Library... 5 3.1 1: 1 Communication... 5 iprinceps - 2-2006/07/31

More information