Lecture 4 Debugging Technique & LKM

Slides:



Advertisements
Similar presentations
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Advertisements

을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
1 강. 안드로이드 개요 및 개발 환경 구축 - 안드로이드 개요 -JDK 설치 -Path 설정 - 이클립스 설치 -ADT, SDK 설치 Lecturer Kim Myoung-Ho Nickname 블스
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
Image & Video processing
Power Java 제3장 이클립스 사용하기.
공유메모리 int shmget(key_t key, size_t size, int permflags);
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Cross Compiler를이용한 커널 컴파일 및 포팅
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
커널 컴파일 및 개발 환경 구축 IT EXPERT 리눅스 커널 프로그래밍 Author : Byungki Kim
Power Java 제2장 자바 개발 도구.
CUDA Setting : Install & Compile
Module Programming Linux Kernel 수업 4번째.
QT 프로그래밍 발표: 김래영.
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
Ubiquitous Computing Practice - Part I (Installation) -
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
C / C++ Programming in multi platform
FTP 프로그램 채계화 박재은 박수민.
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
커널 모듈 프로그래밍 (Kernel Module Programming)
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
Sungkyunkwan University OS Project Dongkun Shin
CHAP 12. 리소스와 보안.
Cross Compiler를이용한 커널 컴파일 및 포팅
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
인터넷응용프로그래밍 JavaScript(Intro).
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
27장. 모듈화 프로그래밍.
Device Driver 임베디드 시스템 I.
영상처리 실습 인공지능연구실.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
ADC 디바이스 사용법.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
ARM Development Suite v1.2
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
Kernel, Ramdisk, JFFS2 Porting
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
제 6 강 Getting started.
OpenCV 설정 2.21 만든이 딩딩.
뇌를 자극하는 Solaris bible.
DK-128 개발환경 설정 아이티즌 기술연구소
시스템 인터페이스 Lab#5 쉡 실습.
13주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
05. General Linear List – Homework
3. 모듈 (5장. 모듈).
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
발표자 : 이지연 Programming Systems Lab.
06. 디바이스의 등록과 해제 김진홍
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Docker Study 6~7.
CCISS 어레이 형식 centos7 설치방법
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

Lecture 4 Debugging Technique & LKM Embedded Software Lab. Daejun Park, Eunsoo Park

Debugging Technique-printk Kernel Print 함수 C 라이브러리의 printf() 함수와 유사하게 동작 커널에서 언제 어디서나 호출 가능 커널 부팅 프로세스의 printk가 사용 불가능한 상황에서도 대체사항 존재 early_printk()

Debugging Technique-ftrace To enable make menuconfig Kernel function tracer /sys/kernel/debug/tracing echo 1 > tracing_on echo ext4 > set_event cat trace_pipe or cat trace

Debugging Technique-strace $ strace command Command로 인해 발생하는 system call과 parameter를 사용자에게 보여줌 System call? 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 하는 것. 시스템 호출을 부르면 사용자 모드에서 커널 모드로 바뀐다 커널에서 시스템 호출을 처리하면 커널 모드에서 사용자 모드로 바뀌어 작업을 계속한다.

Debugging Technique-proc cpuinfo devices filesystems meminfo version /proc/[PID] 각 프로세스의 정보를 알려줌 status

LKM LKM? 왜 모듈이 필요한가? Loadable Kernel Module의 약자 동적으로 Link되는 커널 컴포넌트 모든 구성요소를 한 번에 몰아넣고 사용하는 것은 비효율적! 커널 소스 코드에서 미처 지원하지 않는 (ex-NVIDIA) 하드웨어 디바이스의 경우 Driver를 동적으로 설치하여야 함.

LKM 사용 예시 3. User Process는 Device와 직접 닿아있지 않으므로, Driver를 User application으로 할 수 없음. 4. Loadable Module로 Driver를 구현하고 기존 커널에 삽입함으로써 해당 Device를 사용가능 1. 추가 2. 커널이 해당 Device 지원 X

LKM의 특징 Kernel Code들과 Dependency를 보임. Module Symbol Table이 존재 3가지 상태 Kernel 코드 내의 Function, Struct 등을 비교적 자유롭게 사용 가능. Module Symbol Table이 존재 Kernel Symbol Table과는 별개 3가지 상태 MODULE_STATE_LIVE, MODULE_STATE_COMING, MODULE_STATE_GOING License GPL 라이선스 (커널 라이선스)를 사용해야 보다 많은 Kernel symbol을 export받을 수 있음 Module간의 Dependency B Module이 A Module의 요소를 사용할 때에, A가 먼저 Insert되어야 함

Symbol Table Kernel Symbol Table: 커널에서 사용하는 모든 Symbol (함수, 변수, 자료구조 이름)들을 가지고 있음. Module Symbol Table: 모듈에서 사용하는 모든 Symbol들을 가지고 있음. EXPORT_SYMBOL( $(symbol_name))으로 Symbol을 Module Symbol Table에 등록 가능. 커널은 GPL-exported symbol들을 별도로 관리.

Module 구현 Module Code 작성 Module Object 파일로 컴파일 해당 파일을 커널 코드를 참조하여 빌드 결과로 나온 *.ko 파일을 insmod를 이용하여 Module 삽입 lsmod로 Module 검색 rmmod로 Module 삭제

insmod and rmmod insmod, rmmod는 모듈을 관리하기 위한 External program 본 프로그램들은 init_module(), delete_module()이라는 시스템 콜을 호출하여 Module을 Link. 활성화된 모듈을 보는 것은 ‘lsmod’

Module Code 구현 http://nyx.skku.ac.kr의 oslab_module.c 참고

환경변수 설정 build.sh 참고 KDIR은 Kernel이 설치된 Directory를 의미 ARCH는 Target Device의 Architecture를 의미

Build Tool (Makefile) 설정 Makefile이란 Build Tool인 make program을 사용하기 위해 Build 규칙을 기술하는 파일 obj-m += oslab_module.o는 oslab_module.o라는 object 파일을 빌드에 사용하겠다는 의미. $(MAKE)는 make program 실행 명령어 $(KDIR)은 KDIR이라는 환경변수를 사용하겠다라는 의미 ${shell pwd}는 Terminal상의 pwd 명령어 결과 값을 사용하겠다는 의미 cf) pwd의 출력 결과는 현재 디렉토리의 위치 make 옵션 설명 Linux 명령어의 ‘-’는 옵션을 의미 -C: 무언가를 하기 전에 Driectory를 변경 make modules를 하되 KDIR의 디렉토리를 참조하고 현재 디렉토리의 코드들을 빌드할 것이라는 의미.

결과 간단한 Module 구현 결과

HW2 Built-in Module 구현 Built-in Module을 사용하면? 참고 오늘 배운 모듈은 Loadable Kernel Module을 구현하여 insmod를 통해 직접 커널에 Link하는 작업을 하였다. 그러나, 해당 모듈을 커널이 항시 지원하도록 하기 위하여 커널 코드에 해당 모듈 코드를 아예 Built-in 시켜놓는 방법이 있다. Built-in Module을 사용하면? 매번 insmod하는 번거로움을 없앨 수 있다. Module Loading Overhead가 없다. 그러나, 동적으로 삽입하지 않으므로 커널을 재 빌드하여야 한다. 참고 driver/ 소스들을 참고할 것. 구현 후, 커널 재빌드하고 빌드 이미지 및 모듈을 Odroid에 인스톨할 것. 결과는 어떻게 구현하였는지 1Page 내의 보고서와 결과 스크린샷을 조교에게 이메일로 제출.