HelloDevice Super Series

Similar documents
Sena Technologies, Inc. HelloDevice Super 1.1.0

vi 사용법

PowerPoint 프레젠테이션

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

2009년 상반기 사업계획

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

강의10

ISP and CodeVisionAVR C Compiler.hwp

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

The Pocket Guide to TCP/IP Sockets: C Version

1. 자바프로그램기초 및개발환경 2 장 & 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

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

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

vi 사용법

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

6주차.key

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Mango220 Android How to compile and Transfer image to Target

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

PowerPoint 프레젠테이션

본 강의에 들어가기 전

Microsoft Word - Armjtag_문서1.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

The Pocket Guide to TCP/IP Sockets: C Version

untitled

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

untitled

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Report Designer V3.0 사용설명서 2장

chap 5: Trees

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

vRealize Automation용 VMware Remote Console - VMware

untitled

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

Report Designer V3.0 사용설명서 2장

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

작성자 : 기술지원부 김 삼 수

chap7.key

10.

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

/chroot/lib/ /chroot/etc/

The Pocket Guide to TCP/IP Sockets: C Version

MF3010 MF Driver Installation Guide

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

슬라이드 제목 없음

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

untitled

The Pocket Guide to TCP/IP Sockets: C Version

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Webtob( 멀티도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

KEY 디바이스 드라이버

Microsoft PowerPoint - lab14.pptx

슬라이드 1

untitled

Interstage5 SOAP서비스 설정 가이드

서현수

제1장 Unix란 무엇인가?

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

C++ Programming

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

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>


MF Driver Installation Guide

BMP 파일 처리

Microsoft Word - src.doc

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

MySQL-Ch10

Adobe Flash 취약점 분석 (CVE )

슬라이드 1

View Licenses and Services (customer)

Microsoft PowerPoint APUE(Intro).ppt

Microsoft Word - Network Programming_NewVersion_01_.docx

PowerPoint 프레젠테이션

Install stm32cubemx and st-link utility

Copyright 2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A..,,. Sun. Sun. Berkeley BSD. UNIX X/Open Company, Ltd.. Sun, Su

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

슬라이드 1

Tcl의 문법

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

PowerPoint 프레젠테이션

Transcription:

HelloDevice STS 시리즈 사용자커스터마이제이션가이드 버전 1.1.1 1

저작권 Copyright 1998-2015, 세나테크놀로. All rights reserved. 세나테크놀로지는자사제품을사전통보없이변경및개선할수있는권리를가지고있습니다. 상표정보 HelloDevice 는 세나테크놀로지의상표입니다. 기술지원 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senaindustrial.com Website: http://www.senaindustrial.com 2

Revision history Revision Date Name Description V0.0.1 2003-09-09 H. Yeom Initial Draft V1.0.0 2003-09-22 H. Yeom Initial Release V1.1.0 2004-01-12 H. Yeom GDB 지원및샘플필터프로그램추가 V1.1.1 2015-09-09 W.K. Kim 기술지원연락처및링크갱신 3

목차 1. 개요... 5 2. SDK ( 소프트웨어개발키트 )... 6 3. 사용자프로그램을구축하는방법... 7 3.1. 준비... 7 3.2. 코딩... 7 3.3. 파일업로드하기... 7 3.4. 구축및실행... 7 4. 사용자웹커스터마이징... 8 4.1. HTML 파일... 8 4.2. CGI 파일... 8 4.3. 자바애플릿과그외파일들... 10 5. 사용자필터커스터마이징... 10 5.1. 필터프로그램이해하기... 10 5.2. 필터프로그램구축하기... 11 5.3. 필터샘플... 12 6. GDB로디버깅하기... 13 6.1. GDB을이용한샘플필터프로그램디버깅... 13 4

1. 개요 HelloDevice STS 시리즈는프로그래밍가능한시리얼-이더넷통신게이트웨이로서 RS- 232 기반의시리얼장치에사용되며다양한커스터마이징옵션을가지고있습니다. 세나테크놀로지는 HelloDevice STS 시리즈용사용자어플리케이션개발을위해사용하기쉬운소프트웨어개발키트 (SDK) 환경을제공합니다. 사용자는웹관리인터페이스를커스터마이징할수있으며, 프로그램된동적웹페이지를웹메뉴로통합할수있습니다. 또한, 사용자는시리얼장치에서소켓으로, 혹은소켓에서시리얼장치로통하는데이터흐름을관리할수있습니다. 사용자설정필터프로그램은 FIFO 방식을사용하여시리얼포트와소켓을읽고쓸수있는 (read/write) 다른프로그램들과통신하며, 이를통해사용자는시리얼포트나소켓과관련된프로그래밍없이도시리얼데이터를쉽게다룰수있게됩니다. HelloDevice STS 시리즈는임베디드 Linux OS에서실행되며, UNIX / Linux 명령어를이용하여코멘드-라인인터페이스또는준비된여러개의스크립트들을이용한프로그래밍이가능합니다. 5

2. SDK ( 소프트웨어개발키트 ) 사용자가어플리케이션코드를생성하려면 HelloDevice STS 시리즈용 SDK가필요합니다. HelloDevice STS 시리즈 SDK는 PC CF 카드의형태또는웹다운로드의형태로제공됩니다. HelloDevice STS 시리즈용 SDK가필요하시면 세나테크놀로지기술지원센터에연락하십시오. SDK는컴파일러, 링커, 라이브러리파일, 헤더파일및 C 파일샘플파일들을포함합니다. SDK의디렉토리구조는다음과같습니다. /mnt/flash bin Binary files can be executed. gcc, ld, ar, as,... include Header files for SS applications. lib Library files for SS application sample web Sample C files for web customization. filter Sample C files for filter customization. 6

3. 사용자프로그램을구축하는방법 3.1. 준비 커스터마이징을위한개발환경을준비하기위해다음과정을따릅니다. 1) CF 카드형태의 HelloDevice STS 시리즈용 SDK를준비합니다. 2) STS 장치의 PCMCIA (PC 카드 ) 슬롯에 SDK를삽입합니다. 3) 설정메뉴에서 PC 카드를찾고, 이를저장한뒤적용합니다. 3.2. 코딩 C 언어로된소스파일을제작합니다. 소스파일은 HelloDevice STS 시리즈 CLI 에서편집할수있지만, 사용이불편할경우 PC 에서도할수있습니다. Linux 라이브러리는 /mnt/flash/lib 디렉토리에위치해있습니다. 3.3. 파일업로드하기 HelloDevice STS 시리즈 CLI에서파일을편집할경우에는이부분을읽지않으셔도됩니다. PC 에서소스파일을작성한후, 소스파일을컴파일하려면, 반드시 HelloDevice STS 시리즈장치에파일을업로드해야합니다. 다음의세가지방법으로파일을업로드할수있습니다. - SCP - FTP - 설정메뉴더자세한정보가필요하시면사용자가이드를참조하십시오. 3.4. 구축및실행 프로그램을다음과같이컴파일및링크한후실행합니다. ( 아래예는 proga.c 와 progb.c 라는 두개의 C 소스파일로구성된 prog 이라는프로그램이라고가정한것입니다.) # gcc o prog proga.c progb.c #./prog 7

4. 사용자웹커스터마이징 4.1. HTML 파일 HelloDevice STS 시리즈에사용자가만든 HTML 파일들을추가함으로써웹관리인터페이스를사용자가커스터마이징할수있습니다. 모든 HTML 파일들은반드시 /usr2/usrweb 디렉토리내에있어야합니다. index.html이라는 HTML 파일샘플을 /usr2/usrweb 으로복사하면, 아래와같은 HTML 페이지를볼수있습니다. 4.2. CGI 파일 4.2.1 CGI 파일구축하기 CGI 파일을구축하는절차는다음과같습니다. CGI 소스파일의샘플은 /mnt/flash/sample/web/cgi/shell.c 입니다. 1 단계. CGI 파일을구축합니다. # cd /mnt/flash/sample/web/cgi # make 2 단계. CGI 파일을복사합니다. # cp shell.cgi /usr2/cgi-bin/ 3 단계. 웹브라우져를실행하고, STS400/800/1600 에접속하여로그인합니다. 8

4 단계. 웹브라우져에서 http://192.168.1.2/cgi-bin/shell.cgi 로이동합니다. (HelloDevice STS 시리즈의 IP 주소는 192.168.1.2 라고가정합니다.) 4.2.2 CGI 파일사용하기 CGI 파일은반드시 /usr2/cgi-bin 디렉토리내에있어야합니다. 만약 default 라는 CGI 파일이있으면, 그파일은커스텀페이지의시작페이지가될수있습니다. 아래는 Shell.c 를만들기위한 Makefile 입니다. CC = gcc BIN = shell.cgi OBJS = shell.o util_cgi.o LDFLAG = -L/mnt/flash/lib BIN : $(OBJS) $(CC) -o $(BIN) $(OBJS) $(LDFLAG) c.o : $(CC) -c $< all : $(BIN) clean : rm -f $(BIN) $(OBJS) util_cgi.h 와 util_cgi.c 는 Appendix A 에첨부하였습니다. 이러한 CGI 프로그램은반드시 /usr2/cgi-bin 디렉토리내에있어야합니다. 9

4.3. 자바애플릿과그외파일들 자바애플릿역시사용할수있습니다. CGI 프로그램을제외한애플릿파일과모든웹파일들은반드시 /usr2/usrweb 디렉토리내에있어야합니다. 5. 사용자필터커스터마이징 5.1. 필터프로그램이해하기 HelloDevice STS 시리즈는 FIFO 방식을사용하여프로세스간통신을합니다. 사용자는시리얼장치에서소켓으로, 혹은소켓에서시리얼장치로통하는데이터흐름을관리하기위해서프로그램을삽입할수있습니다. 사용자가설정한필터프로그램은 FIFO 방식을사용하여시리얼포트와소켓을읽고쓰는 (read/write) 다른프로그램들과통신합니다. Remote Hosts Socket Read/Write App. FIFOs Filter App. FIFOs Serial port Read/Write App. Serial Port 사용자가설정한필터는시리얼포트데이터를스트리밍하는 FIFO를읽고, 데이터를처리한뒤처리된데이터를소켓으로전송되는 FIFO에기록합니다. 소켓에서시리얼포트로가는데이터의흐름도같은방식으로처리됩니다. 두경우모두반드시다음의조건을만족시켜야합니다. 10

1) 시리얼포트로가는데이터흐름을 /tmp/port_fifos/portx_f2s라는 FIFO에기록합니다 ( 단, X는 1을기준으로한포트인덱스 ). 2) 시리얼포트로가는데이터흐름을 /tmp/port_fifos/portx_f2e라는 FIFO에기록합니다. 3) 시리얼포트로부터 /tmp/port_fifos/portx_s2f라는 FIFO에들어오는데이터흐름을동일한 FIFO로부터읽습니다. 4) 소켓으로부터 /tmp/port_fifos/portx_e2f라는 FIFO에들어오는데이터흐름을동일한 FIFO로부터읽습니다. 5) 종료하지않는한, 실행되고있는네개의 FIFO를닫지마십시오. 6) 한개이상의변수가있어야하며, 첫번째변수는포트번호로지정해야합니다. 7) /var/run/portx_filter.pid 라는파일에 PID(Process ID) 를기록합니다. ( 이 PID 파일은필터어플리케이션을종료하는데쓰이지만, 포트가비활성화 (disable) 상태일경우에만종료합니다.) 8) SIGTERM 신호를받으면종료됩니다. 5.2. 필터프로그램구축하기 필터프로그램을구축하는절차는아래와같습니다. 샘플프로그램은 /mnt/flash/sample/filter/ 디렉토리에있습니다. 1 단계. 필터프로그램을구축합니다. # cd /mnt/flash/sample/filter # make 2 단계. 필터프로그램중하나의샘플을사용자공간으로복사합니다. # cp data_conversion /usr2/sample_filter 11

3 단계. 필터어플리케이션구성을다음과같이설정합니다 : 5.3. 필터샘플 모든샘플프로그램은메인 Thread, 시리얼포트를읽는 Thread 및소켓을읽는 Thread 등총세개의 Thread로구성되어있습니다. 메인 Thread는다른 Thread를만들고, SIGTERM 신호를받을때까지기다립니다. 메인 Thread는 SIGTERM 신호를받으면다른 Thread들을취소합니다. 시리얼포트 / 소켓을읽는 Thread는목적에따라수정될수있습니다. - empty.c 이샘플필터는시리얼포트읽기 / 쓰기어플리케이션과소켓읽기 / 쓰기어플리케이션을 FIFO로연결합니다. 그러나데이터를다루지는않습니다. - periodic_command.c 이샘플필터는시리얼포트읽기 / 쓰기어플리케이션과소켓읽기 / 쓰기어플리케이션을 FIFO로연결하며, 시리얼포트에주기적으로명령을기록합니다. - data_conversion.c 이샘플필터는프로토콜변환에대한예제입니다. - data_calibration.c 이샘플필터는주기적으로들어오는시리얼포트데이터들의평균을계산하고 ( 예 : 온도계데이터, 습도계데이터 ) 계산값을보내주는예제입니다. - data_storing.c 이샘플필터는시리얼포트데이터를감시하고 ( 예 : 온도계데이터, 습도계데이터 ) RAM 디스크 (/tmp 디렉토리아래 ) 에저장하는예제입니다. 12

- data_event_handling.c 이샘플필터는시리얼포트데이터를감시하고 ( 예 : 온도계데이터, 습도계데이터 ) SNMP 트랩으로보내는예제입니다. - cq.c Circular queue 용유틸리티루틴. 6. GDB 로디버깅하기 HelloDevice STS 시리즈용 SDK는 GNU GDB 디버거를지원하므로사용자프로그램이실행되는동안그내부에서일어나고있는일을사용자가볼수있습니다. ( 참고 : GDB 지원은 SDK v1.1.0 및후속버전부터포함됩니다.) GDB 는네가지방법으로실행중인버그를발견합니다 : 프로그램을시작하여실행에영향을미칠수있는것들을찾아냅니다. 사용자의프로그램을특정조건에서멈추도록합니다. 사용자의프로그램이멈추었을때, 어떤일이일어났는지조사합니다. 사용자의프로그램내용을변경하여버그하나를고쳤을때의결과를보여주며또다른버그를찾도록합니다. GDB는쉘명령 gdb 로실행됩니다. 한번시작하면, GDB는사용자가 quit 이라는 GDB 명령어를사용하여나가도록지시할때까지단말기로부터명령을읽습니다. 사용자는 help라는명령어로 GDB 자체로부터온라인상의도움을받을수있습니다. 사용자는인수나옵션없이 GDB를구동시킬수있습니다. 그러나흔히 GDB는인수로서실행가능한프로그램을지정하여한개또는두개의인수로시작합니다. 사용자프로그램을 GDB로구동하기전에, 사용자는 -g 옵션으로프로그램을컴파일해야합니다. 6.1. GDB 을이용한샘플필터프로그램디버깅 이장에서는 GDB를이용한샘플필터프로그램디버깅방법을단계별로설명합니다. 샘플필터프로그램을제대로디버그하려면, 사용자는 Web UI나 editconf 같은설정도구를사용하여시리얼포트에대한각각의매개변수를미리설정해야합니다. 또한, 사용자가각각의 13

포트기능을적절한시점에일일이구동할수있도록설정도구를사용하여모든시리얼 포트를선택해제해야합니다. 1 단계. 샘플프로그램을사용자공간으로복사하십시오. # cp /mnt/flash/sample/filter/makefile /usr2/ # cp /mnt/flash/sample/filter/data_conversion.c /usr2/ # cp /mnt/flash/sample/filter/cq.c /usr2/ # cp /mnt/flash/sample/filter/cq.h /usr2/ 2 단계. 프로그램을 g 옵션으로컴파일하기위해 Makefile 을수정합니다. g 옵션을 CFLAGS 변수에추가합니다. # cd /usr2/ # vi Makefile... //CFLAGS = -pipe CFLAGS = -pipe g... 3 단계. 소스프로그램을 GDB 디버거와함께구동되도록수정합니다. do_daemon() 및 save_pid(portnum) 기능호출을제거합니다. 사용자는 GDB 로디버그하기위해 프로그램을포그라운드 (foreground) 에서실행해야 합니다. # vi data_conversion.c... int main(int argc, char **argv) { if (argc < 2) { fprintf(stderr, "\nusage: %s [portnumber] [echo no_echo]\n\n", get_program_name(argv[0])); return -1; } portnum = atoi(argv[1]); if (argc>2 &&!strcmp(argv[2], "no_echo")) echo_flag = 0; (void) signal(sigterm, handle_sigterm); (void) signal(sigpipe, handle_sigterm); // Remark following two lines to run this program on the foreground // do_daemon(); // save_pid(portnum); do_filter(); close_fifos(); return 0; 14

}... 4 단계. 샘플필터프로그램을컴파일합니다. # make data_conversion 5 단계. 시리얼포트데몬 (ss.port) 과 tcp 소켓데몬 (ss.tcp) 프로그램을수동으로 시작합니다. ss.port 는시리얼포트용데몬프로그램이며, ss.tcp 는 TCP 포트용 데몬프로그램입니다. 이두가지프로그램들은 STS 장치의 /bin 디렉토리에위치해 있습니다. 인수 1 은 1 번포트에서구동되고있음을의미합니다. # ss.port 1 # ss.tcp 1 # ps ef PID Uid Stat Command 1 root S init 2 root S [keventd] 3 root S [kswapd] 4 root S [kreclaimd] 5 root S [bdflush] 6 root S [kupdate] 8 root S [mtdblockd] 35 root S [jffs2_gcd_mtd5] 57 root S /sbin/cardmgr 80 root S dhcpcd eth0 87 root S /etc/rc.d/rc2.d/s19sslogger start 97 root S /usr/sbin/inetd 100 root S /usr/local/sbin/webs 110 root S /usr/local/sbin/snmpd -c /usr/local/share/snmp/snmpd.conf 113 root S /bin/linkupchecker -c 1 118 root R /etc/rc.d/rc2.d/s53sts800mand start 126 root S /etc/rc.d/rc2.d/s53sts800mand start 128 root S /usr/sbin/cron 129 root S -bash 523 root S ss.port 1 524 root S ss.port 1 525 root S ss.port 1 526 root S ss.port 1 527 root S ss.port 1 529 root S ss.tcp 1 530 root S ss.tcp 1 532 root S ss.tcp 1 533 root S ss.tcp 1 534 root S ss.tcp 1 535 root R ps -ef 6 단계. GDB 를사용하여샘플필터프로그램을구동합니다. # /mnt/flash/bin/gdb data_conversion 15

7 단계. GDB 를구동한후, 사용자는 GDB 명령을이용하여프로그램을제어할수있습니다. 이예제에서, 사용자는먼저샘플필터프로그램의인수를다음과같이설정해야합니다. GNU gdb 5.0 Copyright 2000 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "powerpc-hardhat-linux"... (gdb) set args 1 인수 1 은샘플필터프로그램이 1 번포트에서구동되고있음을의미합니다. 8 단계. 프로그램실행을정지시킬적절한위치에정지지점을설정합니다. 예를들어, 사용자는정지지점을 *e2s_thread 함수에설정하여, TCP 포트로부터무엇이들어오는가를확인할수있습니다. (gdb) break *e2s_thread Breakpoint 1 at 0x10003054: file data_conversion.c, line 255. 그후에프로그램을 r 명령어로구동합니다. (gdb) r Starting program: /usr2/data_conversion 1 [New Thread 539 (manager thread)] [New Thread 538 (initial thread)] [New Thread 540] [New Thread 541] [Switching to Thread 541] Breakpoint 1, e2s_thread (arg=0x0) at data_conversion.c:255 255 { (gdb) 9 단계. 잠시후, 프로그램은 *e2s_thread 함수의시작점에서정지하게됩니다. 사용자는 n ( 다음 ) 명령어를입력하여다음단계를구동시킬수있습니다. e2s_thread (arg=0x0) at data_conversion.c:257 257 int nread=0; 261 pthread_setcancelstate(pthread_cancel_enable, NULL); 262 pthread_setcanceltype(pthread_cancel_asynchronous, NULL);... 10 단계. 프로그램실행이 274 번째줄에도달하면, 사용자는 STS 장치의 1 번시리얼포트에 TCP 를연결해주고, TeraTerm Pro 나 Hyper Terminal 과같은단말기에뮬레이션 16

프로그램을사용하여 1 번시리얼포트에데이터를전송합니다. 이렇게하면, 샘플필터프로그램이 TCP 버퍼로부터데이터를읽고다음단계로진행할수있습니다... 270 if (f2s_fd < 0) pthread_exit(null); 272 while(!exit_flag) { 274 nread = read(e2f_fd, buf, sizeof(buf)); 275 if (nread<=0) continue; (gdb) 11 단계. 정지지점을 275 번째줄에설정하고표시변수 buf[0] 를설정함으로써, 사용자는 TCP 포트로부터오는데이터가있을때에언제라도그것을모니터할수있습니다. (gdb) display buf[0] 1: buf[0] = 97 'a' (gdb) break 275 Breakpoint 2 at 0x10003160: file data_conversion.c, line 275. 277 if (echo_flag) { 1: buf[0] = 97 'a' (gdb) c Continuing. Breakpoint 2, e2s_thread (arg=0x0) at data_conversion.c:275 275 if (nread<=0) continue; 1: buf[0] = 50 '2' (gdb) c Continuing. Breakpoint 2, e2s_thread (arg=0x0) at data_conversion.c:275 275 if (nread<=0) continue; 1: buf[0] = 51 '3' (gdb) 12 단계. 사용자는 GDB 디버거를 quit 명령어를사용하여중지시킬수있습니다. (gdb) quit The program is running. Exit anyway? (y or n) y 샘플필터프로그램을다시구동하려면 ss.port 와 ss.tcp 데몬을삭제한후에, 5 단계부터다시시작합니다. # killall ss.port # killall ss.tcp GDB 디버거에대한자세한정보는 GNU 다큐멘테이션페이지를참조하십시오. (http://www.gnu.org/software/gdb/documentation/) 17